Braze 입문 7편 — Canvas · Campaign 운영 (마케터 관점)

2026-05-17Braze 입문에서 운영까지

Braze 입문 7편. 마케터 관점의 운영 — Canvas 의 5 구성 요소 (Entry · Audience · Flow · Exit · Variants), Step 7 종류 (Message · Delay · Decision · Webhook · Update User · Audience Filter · Wait Until), Decision Split 3 종 (Action Path · Audience Path · Random), Multi-step A/B variant, 5 실전 패턴 (Onboarding · Cart Abandonment · Win-back · Birthday · Receipt), Campaign 4 타입, 마케터-엔지니어-PM 협업 룰까지 풀어쓴 학습 노트.

📚 Braze 입문에서 운영까지 · 7편 — Canvas · Campaign 운영 (마케터 관점)

이 글은 Braze 입문에서 운영까지 시리즈 7편이에요. 1편 큰 그림 부터 6편 Liquid 까지 개발자 관점 의 데이터 흐름 · API · personalization 을 봤다면, 이번 7편은 시각 전환마케터 · PM 관점의 운영.

이번 글의 위치

1편의 5 핵심 개념Campaign · Canvas 자리. 코드 없이 대시보드에서 마케터가 직접 설계하는 자리. 개발자가 데이터 박는 자리마케터가 메시지 보내는 자리 의 경계.

Campaign vs Canvas — 한 번 더 정리

Campaign 은 단일 메시지 한 번 발송 도구, Canvas 는 여러 메시지를 분기 · 지연 · 조건 으로 엮은 journey(여정) 자동화 도구.

항목 Campaign Canvas
단위 단일 메시지 다단계 journey
구조 직선 분기 + 지연 + 조건
복잡도 단순 복합 lifecycle
운영 한 번 설정 → 발송 지속 운영 (entry 사용자 계속 진입)
대표 사용 영수증 · 단순 알림 Onboarding · Win-back · Cart Abandonment
A/B 콘텐츠 variant step 별 variant + 전체 journey variant

단일 = Campaign, 다단계 = Canvas. 대부분 운영 자동화 = Canvas 가 중심.

Canvas 의 5 구성 요소

┌────────────────────────────┐
│ Entry (사용자 진입 trigger)  │
└─────────────┬──────────────┘
              ↓
┌────────────────────────────┐
│ Audience (대상 필터)         │
└─────────────┬──────────────┘
              ↓
┌────────────────────────────┐
│ Flow (steps 의 연결)         │
│ Message · Delay · Decision  │
│ Webhook · Update · ...      │
└─────────────┬──────────────┘
              ↓
┌────────────────────────────┐
│ Exit (종료 조건)             │
└────────────────────────────┘

(Variants — A/B 실험 layer 가 위 모든 자리 위에 겹쳐짐)

1. Entry — 사용자 진입 트리거

Canvas 가 언제 시작 하는가 의 정의. 대표 트리거 종류:

Entry Trigger 의미
Custom Event 특정 event 발생 시 (signup_completed 등)
Scheduled 정해진 시각 (예: 매월 1일 09:00)
API-triggered /canvas/trigger/send 호출 시
Segment Entry 사용자가 segment(조건으로 묶은 사용자 집합) 에 진입 할 때

대표 사용:

Entry "Onboarding":
  Trigger: Custom Event "signup_completed"
  → 가입 즉시 journey 시작

Entry "Cart Abandonment":
  Trigger: Custom Event "cart_added"
  → 카트 추가 → 24시간 안 결제 안 하면 다음 step

Entry "Birthday Wish":
  Trigger: Segment Entry "사용자의 생일 = 오늘"
  → 매일 자동 평가 + 해당 사용자 journey 진입

2. Audience — 대상 필터

Entry 후 Canvas 의 모든 단계 에 적용되는 전체 조건:

Audience filter:
  - Subscription state: marketing_opted_in = true
  - Country: KR · JP · VN
  - Last app version: >= 2.0

부합 안 하는 사용자 = Entry 통과해도 Canvas 진입 X.

여기서 시험 함정이 하나 있어요 — Audience 필터가 발송 시점 평가 가 아니라 Entry 시점 평가. 사용자가 Entry 후 Country 변경 해도 이미 진입한 journey 는 계속.

3. Flow — Steps 의 연결

Step 7 종류 의 자유 조합:

Message Step

[Email Step]
  Audience: 전체
  Content: "환영합니다, {{ first_name }}님!"

[Push Step]
  Audience: 모바일 사용자
  Content: "앱 다운로드 감사합니다"

각 message step = 해당 channel 발송. Canvas 안에서 email · push · SMS · in-app · content card · web push 자유 조합.

Delay Step

[Delay] 24 hours
  → 다음 step 으로 24시간 후

Delay 종류는 세 가지 — Fixed time 은 정확한 N 시간/일, Wait until specific time 은 특정 시각까지 (예: "내일 오전 9시"), Wait until day of week 는 평일까지 대기.

Decision Step — 조건 분기

[Decision: 사용자가 첫 결제 했나?]
  ├─ Yes: → "감사 메시지"
  └─ No:  → "첫 결제 5% 쿠폰"

조건 = User Attribute · Custom Event 누적 · Segment membership 등.

Webhook Step

Webhook 은 외부 시스템 HTTP 호출 트리거.

[Webhook]
  POST https://api.internal.com/braze-webhook
  Body: { "user_id": "{{ external_id }}", "step": "onboarding_day_3" }

외부 시스템 호출 — 우리 백엔드와 연동. 예: 사내 audit log, 추천 모델 재학습 트리거, 분석 시스템 알림.

Update User Attribute Step

[Update Attribute]
  Set "onboarding_completed" = true
  Set "onboarding_completed_date" = {{ now }}

Canvas 안에서 사용자 attribute 변경. 다음 step 이 변경된 attribute 기반 분기.

Audience Filter Step (중간 필터)

[Audience Filter]
  Only continue if: "last 30 days no purchase"

Canvas 중간에 다시 필터링. 첫 audience 통과한 사용자도 시간 지나며 조건 변경 되면 journey 중도 종료.

Wait Until — 조건 만족 대기

[Wait Until]
  Event: "checkout_completed" OR
  Max wait: 7 days

특정 event 발생까지 대기. 최대 시간 도달 시 자동 다음 step.

4. Exit — 종료 조건

언제 Canvas 종료 정의. Audience 조건 위반 (예: unsubscribed), Goal 도달 (예: checkout 완료), Custom Event 발생 (예: account_deleted), Audience Filter step 통과 못함, Wait Until timeout — 다섯 갈래.

여러 exit criteria 동시 설정 가능. goal 도달 시 자동 종료 가 표준 — 같은 사용자 불필요한 후속 메시지 회피.

5. Variants — A/B 실험

Canvas 안에 여러 variant(실험 조건 묶음) 동시 운영:

Variant A: Email content "할인 30%"
Variant B: Email content "무료 배송"

→ 사용자 50/50 무작위 분할
→ Conversion 비교 → 우월한 variant 결정

Statsig 4편 Experiment간소화 버전. Canvas 안에서 콘텐츠 · 시간 · channel · 전체 flow 모두 A/B 가능.

Decision Split — 3 종 깊이

Canvas 의 Decision Step 의 깊은 종류:

1. Action Path — Event 기반

[Decision: 사용자가 지난 7일 안 "purchase" event 했나?]
  ├─ Yes: 감사 시퀀스
  └─ No:  결제 유도 시퀀스

특정 event 발생 여부 로 분기. 시간 범위 (지난 N일) 설정 가능.

2. Audience Path — Segment 기반

[Decision: 사용자가 "VIP segment" 멤버인가?]
  ├─ Yes: VIP 전용 콘텐츠
  └─ No:  일반 콘텐츠

Segment 멤버십 으로 분기. Segment 의 모든 정의 (User Attribute · Event 누적 · 다른 조건) 활용.

3. Random Split — A/B/n

[Random Split]
  ├─ 50% → Variant A
  └─ 50% → Variant B

또는 A/B/C/D 4-way 분할

무작위 분할 — A/B 실험의 핵심.

결정 가이드

사용자 행동 기반 → Action Path
사용자 특성 기반 → Audience Path
A/B 실험 → Random Split

대부분 운영 = Action + Audience 조합. 행동 + 특성 으로 정교한 분기.

Multi-step A/B Variant — Canvas 의 강점

Campaign 의 A/B 의 한계:

Campaign A: 1 email = subject 2 variant
  → 어느 subject 가 open rate 높은가 측정

Canvas 의 A/B 의 강점:

Canvas with Variants:
  Variant A: email → 24h delay → push
  Variant B: push → 24h delay → email
  Variant C: email only (단일)
  Variant D: 즉시 SMS

→ 4 가지 *전체 lifecycle* 비교
→ "어떤 시퀀스가 가장 conversion 높은가?"

단일 메시지 A/B 가 아닌 journey 전체 A/B. 전략적 결정 의 자리.

5 실전 패턴 — 운영 표준

Pattern 1: Onboarding Journey

Entry: Custom Event "signup_completed"
  ↓
Audience filter: subscription_state = subscribed

[Step 1: Welcome Email]
  → 가입 즉시
  → "환영합니다, {{ first_name }}님! 첫 결제 5% 할인"

[Step 2: Delay 24 hours]

[Step 3: Decision — 첫 결제 했나?]
  ├─ Yes: → END (성공)
  └─ No:  → 다음 step

[Step 4: Push]
  → "쿠폰이 곧 만료됩니다"

[Step 5: Delay 48 hours]

[Step 6: Decision — 여전히 미결제?]
  ├─ Yes: → 다음 step
  └─ No:  → END

[Step 7: In-app Message]
  → 다음 앱 진입 시 "튜토리얼 + 인기 상품"

[Step 8: Delay 7 days]

[Step 9: Audience Filter — 여전히 active?]
  → Yes 만 계속

[Step 10: SMS]
  → "추가 10% 할인 — 마지막 기회"

Exit:
  - 첫 결제 시 자동 종료
  - 30일 도달 시 자동 종료 → 비활성 segment 로 이동

가장 흔한 onboarding 패턴.

Pattern 2: Cart Abandonment

Entry: Custom Event "cart_added"
  ↓
[Step 1: Delay 1 hour]

[Step 2: Decision — checkout 완료?]
  ├─ Yes: → END
  └─ No:  → 다음

[Step 3: Email]
  → "장바구니에 두고 가셨네요"
  → Liquid: 카트 안 상품 list (Catalog lookup)

[Step 4: Delay 12 hours]

[Step 5: Decision — checkout?]
  ├─ Yes: → END
  └─ No:  → 다음

[Step 6: Push]
  → "10% 할인 + 무료배송"

[Step 7: Delay 12 hours]

[Step 8: Decision — checkout?]
  ├─ Yes: → END
  └─ No:  → 다음

[Step 9: SMS]
  → "마지막 기회 — 1시간 안 15% 할인"

Exit: checkout_completed 시 자동

E-commerce 의 가장 강력한 retention 패턴. 수익 5~20% 추가.

Pattern 3: Win-back (재유입)

Entry: Segment Entry "Inactive 30 days"
  ↓
[Step 1: Email]
  → "오랜만이에요! 새로운 상품들이 도착했어요"

[Step 2: Delay 3 days]

[Step 3: Decision — 다시 active?]
  ├─ Yes: → END
  └─ No:  → 다음

[Step 4: Push]
  → "10% 할인 쿠폰을 드려요"

[Step 5: Delay 7 days]

[Step 6: Decision — active?]
  ├─ Yes: → END
  └─ No:  → 다음

[Step 7: Email + Liquid + Connected Content]
  → AI 생성 추천: "회원님이 좋아하실 상품들"

[Step 8: Delay 14 days]

[Step 9: Decision — 여전히 inactive?]
  ├─ Yes: → 마지막 step
  └─ No:  → END

[Step 10: Last Email]
  → "이메일 수신을 그만하시려면..."
  → 사용자 자율 결정

Exit:
  - active 도달 시
  - unsubscribe 시
  - 60일 도달 시 (영구 inactive 가정)

이탈 사용자 마지막 시도.

Pattern 4: Birthday Wish

Entry: Scheduled — 매일 09:00 KST
  ↓
Audience: ${birthday} = today

[Step 1: Email]
  → "생일 축하해요, {{ first_name }}님!"
  → 특별 쿠폰 첨부

[Step 2: Delay 7 days]

[Step 3: Decision — 쿠폰 사용?]
  ├─ Yes: → END
  └─ No:  → Push 알림 "쿠폰 만료 임박"

Exit: 14일 (생일 + 2주)

연 1회 personal touch — 특별한 느낌 + 높은 conversion.

Pattern 5: Receipt (영수증)

Entry: Custom Event "checkout_completed"
  ↓
Audience: 전체

[Step 1: Email — 즉시]
  → 영수증 + 주문 상세
  → Liquid: 주문 내역 출력
  → Connected Content: 실시간 배송 ETA

[Step 2: Delay 1 day]

[Step 3: Push]
  → "주문 발송 됐어요"
  → Deep link to 배송 추적

[Step 4: Decision — 배송 완료?]
  ├─ Yes (배송 완료 event): → 다음
  └─ No: → Wait Until "delivery_completed" or 7 days

[Step 5: Email — 배송 후]
  → "도착했나요? 리뷰 부탁드려요"
  → 리뷰 5% 할인

[Step 6: Delay 14 days]

[Step 7: Decision — 재구매?]
  ├─ Yes: → END
  └─ No:  → Push "관련 상품 추천"

Exit: 30일 또는 환불 발생

결제 후 전 사이클 자동화. retention + LTV ↑.

Campaign 4 타입 — 깊이

1. One-time Campaign

Send: 2026-07-01 09:00 KST
Audience: Segment "Active 사용자"
Content: "여름 세일 시작"

한 번 발송. 캠페인 종료. 대표 = 신제품 출시 · 이벤트 안내.

2. Trigger-based Campaign

Trigger: Custom Event "cart_added"
Delay: 24 hours (cart abandonment)
Audience: 카트 가치 > 30,000원
Content: "장바구니 확인"

사용자 행동 자동 trigger. On-going 캠페인 — 사용자 행동 시점마다 발송.

3. API-triggered Campaign

[Server-side]:
  /campaigns/trigger/send
  campaign_id: "receipt_email"
  recipients: [...]

5편 REST API 의 trigger endpoint. 외부 시스템 (우리 백엔드) 이 발송 시점 통제.

대표 = 결제 영수증 · 비밀번호 재설정 · 시스템 알림.

4. Recurring Campaign

Schedule: 매주 월요일 09:00 KST
Audience: Segment "Weekly digest 구독자"
Content: "이번 주 새로운 상품"

정기 반복. 뉴스레터 · weekly digest · 주간 통계 등.

마케터-엔지니어-PM 협업 룰

여기서 실전 협업 의 핵심.

역할 분담

역할 담당
PM Canvas 전략 · 비즈니스 목표 · 우선순위
마케터 콘텐츠 작성 · A/B variant · 캠페인 운영
엔지니어 SDK 통합 · API · Webhook · Catalog sync · personalization 코드
데이터 분석가 결과 분석 · ROI 측정 · 다음 캠페인 인사이트

4 역할 모두 필요 — 한 역할만 부족 = 운영 깨짐.

표준 워크플로

[PM]
  비즈니스 목표 + 전략 정의
  ↓
[엔지니어]
  필요한 event · attribute · catalog 박기
  ↓
[마케터]
  Canvas 설계 + 콘텐츠 작성
  ↓
[데이터 분석가]
  결과 분석 + 다음 행동

순환 — 한 캠페인 결과 → 다음 캠페인 가설.

자주 발생하는 협업 사고

사고: 마케터가 없는 attribute 사용

마케터: Canvas 에서 "${preferred_category}" 박음
엔지니어: 이 attribute 박은 적 없음
→ 모든 사용자 = "회원님이 좋아하실 카테고리" (어색)

해결Canvas 작성 전 attribute 가용 확인. 가능 attribute list = engineering 측 docs.

사고: Event property 누락

마케터: trigger_properties.${order_id} 사용
엔지니어: API 호출 시 order_id 안 보냄
→ "주문 번호 ..." 메시지 깨짐

해결trigger property contract 명문화. API call 의 required field 명시.

사고: Audience 와 SDK 사용자 불일치

Canvas Audience: subscription_state = subscribed
SDK: 사용자 구독 변경 sync 안 함
→ 실제 unsubscribed 사용자가 발송 받음 (불법)

해결 — Subscription state 의 실시간 sync + audience filter 정기 검증.

Canvas · Campaign 함정 — 시험 직전

사고 1: Audience 평가 시점 혼동

원인 — Audience filter 가 Entry 시점 평가 — 이후 사용자 변경은 반영 X.

해결Audience Filter step 으로 중간 재평가.

사고 2: Exit criteria 미설정

원인goal 도달 후에도 메시지 계속 → 사용자 짜증.

해결Goal Event 자동 종료 설정 (예: checkout_completed).

사고 3: Delay 너무 길거나 짧음

원인1시간 후 메시지 = 너무 빠름 / 7일 후 = 너무 늦음.

해결 — 카테고리별 표준 시간. 과거 캠페인 분석 기반 최적화.

사고 4: Variant 가 너무 작은 sample

원인 — A/B 분할 후 각 variant 100명 → 통계 power X.

해결최소 각 variant 수천 명 + 1주 이상 운영.

사고 5: Recurring 의 콘텐츠 정체

원인 — Weekly digest 가 매주 같은 콘텐츠 구조 → 사용자 피로.

해결Liquid + Connected Content 로 콘텐츠 매주 다르게.

사고 6: Personalization 의존 → fallback 없음

원인${first_name} 만 사용 + default 없음 → "안녕하세요, 님!".

해결6편의 Personalization 4 layer 안전선.

사고 7: Multi-channel 폭격

원인 — 같은 Canvas 의 email + push + SMS 거의 동시 발송.

해결Delay step 사이. 또는 cascade fallback (push 안 도달 시 email).

사고 8: A/B variant 결과 무시

원인 — Variant A 가 명확히 우위 → 운영자 반영 안 함 → 1년 후도 50/50.

해결결정 회의 정기 + 우월 variant 100% 전환 + 새 가설 실험.

운영 권장 패턴

Pattern 1: Canvas 설계 표준 템플릿

canvas:
  name: "Cart Abandonment v2 - 2026-Q3"
  goal: "checkout_completed within 7 days"
  owner: "marketing-team"
  reviewers: ["PM", "engineer", "analyst"]

  entry:
    trigger: "Custom Event: cart_added"

  audience:
    - subscription_state: "subscribed"
    - last_app_version: ">= 2.0"

  flow_summary:
    - Step 1: Email (1h delay)
    - Step 2: Push (12h delay, 미결제 시)
    - Step 3: SMS (24h delay, 마지막 시도)

  exit_criteria:
    - "checkout_completed" event
    - 7일 도달

  variants:
    - A: 표준 콘텐츠 (50%)
    - B: AI generated (50%)

  metrics:
    primary: "conversion rate"
    secondary: ["email_open", "push_click", "revenue_per_user"]

설계 문서화 — 마케터 + 엔지니어 + 분석가 공유.

Pattern 2: PM-Eng-Marketing Contract

contract:
  marketer_uses:
    attributes:
      - first_name
      - tier
      - country
      - language
      - signup_year
      - last_purchase_date
      - lifetime_value
      - preferred_category

    events:
      - product_viewed (props: product_id, category)
      - cart_added (props: product_id, quantity, value)
      - checkout_completed (props: order_id, value)
      - subscription_cancelled

    triggers:
      - signup_completed
      - cart_added
      - checkout_completed
      - inactive_30days

마케터의 사용 가능 자산 명문화 — engineer 가 반드시 박을 attribute · event 의 contract.

Pattern 3: 정기 캠페인 review

매주 월요일 마케팅 review:
  - 진행 중 Canvas 의 progress
  - A/B variant 결과 도달 캠페인 결정
  - 새 가설 검토
  - 데이터 분석가의 인사이트 공유
  - 다음 주 우선순위

캠페인 지속 개선 사이클.

Pattern 4: Canvas 의 변경 관리

Canvas 운영 중 변경 룰:
  - Audience 변경 = 새 Canvas 시작 (기존은 유지)
  - Content 변경 = 안전 (다음 발송부터)
  - Flow 구조 변경 = 새 Canvas 권장
  - Goal 변경 = 새 Canvas 강력 권장

변경 사고 회피.

진행 중 Canvas 의 큰 변경 = 새 Canvas 가 안전.

Pattern 5: 캠페인 결과 → 학습 cycle

1. 캠페인 종료
2. 분석가의 분석 (conversion · ROI · variant 결과)
3. 인사이트 정리 (왜 이 결과인가)
4. 다음 가설 도출
5. 새 Canvas 설계
6. 반복

실험 → 학습 → 개선문화.

시험 직전 한 번 더 — Canvas · Campaign 운영 함정 압축 노트

Campaign vs Canvas

  • 단일 메시지 vs 다단계 journey
  • 직선 vs 분기/지연/조건
  • 한 번 설정 vs 지속 운영
  • 단순 알림 vs 복합 lifecycle

Canvas 5 구성

  • Entry — 사용자 진입 trigger
  • Audience — 대상 필터 (entry 시점 평가)
  • Flow — Step 7 종류의 연결
  • Exit — 종료 조건 (goal · audience 위반 · timeout)
  • Variants — A/B 실험 layer

Entry Trigger 4 종

  • Custom Event — event 발생 시 (가장 흔함)
  • Scheduled — 정해진 시각
  • API-triggered/canvas/trigger/send
  • Segment Entry — segment 진입 시점

Step 7 종류

  • Message — email · push · SMS · in-app · content card · web push
  • Delay — fixed time · until specific time · until day of week
  • Decision — 조건 분기
  • Webhook — 외부 API 호출
  • Update User Attribute — Canvas 안 사용자 변경
  • Audience Filter — 중간 재평가
  • Wait Until — event 발생 또는 timeout 대기

Decision Split 3 종

  • Action Path — event 발생 여부 (시간 범위)
  • Audience Path — segment 멤버십
  • Random Split — A/B/n 무작위 분할

Multi-step A/B variant

  • Campaign A/B = 콘텐츠 variant
  • Canvas A/B = journey 전체 variant (sequence · channel · timing 모두)

5 실전 패턴

  • Onboarding — 가입 → 첫 결제 유도 (10 step)
  • Cart Abandonment — 카트 → 결제 (3 reminder)
  • Win-back — inactive 30일 → 재유입 (3 시도)
  • Birthday — scheduled 매일 + audience filter
  • Receipt — 결제 → 배송 → 리뷰 → 재구매

Campaign 4 타입

  • One-time — 한 번 발송
  • Trigger-based — 사용자 행동 자동 trigger
  • API-triggered/campaigns/trigger/send
  • Recurring — 정기 반복 (뉴스레터)

마케터-엔지니어-PM 협업 룰

  • PM = 전략 · 목표
  • 마케터 = 콘텐츠 · variant · 운영
  • 엔지니어 = 데이터 · API · catalog
  • 분석가 = 결과 · ROI · 인사이트

Audience 평가 시점

  • Entry 시점 평가 (이후 변경 반영 X)
  • 중간 재평가 = Audience Filter step

사고 함정

  • Audience 평가 시점 혼동
  • Exit criteria 미설정 (goal 도달 후도 메시지)
  • Delay 시간 부적절
  • Variant sample 부족 (통계 power X)
  • Recurring 콘텐츠 정체
  • Personalization fallback 없음
  • Multi-channel 폭격
  • A/B 결과 무시

운영 패턴

  • Canvas 설계 표준 템플릿 (YAML 문서화)
  • 마케터-엔지니어 Contract (attributes · events · triggers 명문화)
  • 정기 캠페인 review (주간 회의)
  • Canvas 변경 관리 (큰 변경 = 새 Canvas)
  • 학습 cycle (실험 → 학습 → 개선)

협업 사고 함정

  • 없는 attribute 사용
  • Event property 누락
  • Audience 와 SDK sync 불일치

공식 문서: Braze Canvas · Campaigns 에서 원문을 확인할 수 있어요.

시리즈 다른 편 (앞뒤 글 모음)

이전 글:

다음 글:

※ 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

답글 남기기

error: Content is protected !!