장바구니 이탈 복구

장바구니 이탈 복구

지능형 다단계 이메일 시퀀스로 손실된 판매를 복구합니다. 이 스킬은 장바구니 이탈을 모니터링하고 개인화된 복구 이메일을 자동으로 발송하여 고객을 다시 불러옵니다.

개요

속성
카테고리Email Marketing
상태Stable
버전3.0
트리거cart_abandoned, cart_recovered
평균 복구율10-15%

작동 방식

graph TD
A[Customer adds to cart] -->|Leaves site| B{Cart abandoned?}
B -->|No checkout in 30min| C[Trigger: cart_abandoned]
C --> D[Wait 1 hour]
D --> E{Purchased?}
E -->|No| F[Send Email #1]
F --> G[Wait 24 hours]
G --> H{Purchased?}
H -->|No| I[Send Email #2 + Discount]
I --> J[Wait 48 hours]
J --> K{Purchased?}
K -->|No| L[Send Email #3 - Final]
E -->|Yes| M[Stop sequence]
H -->|Yes| M
K -->|Yes| M
L --> N[Mark as lost]

구성

기본 설정

skills:
abandoned-cart:
enabled: true
# Cart abandonment detection
detection:
inactivity_threshold: 30m # Minutes before cart is abandoned
min_cart_value: 25 # Minimum cart value to trigger
exclude_logged_out: false # Include guest carts
# Email sequence
sequence:
- delay: 1h
template_id: 101
subject: "Forgot something?"
- delay: 24h
template_id: 102
subject: "Your cart is waiting"
include_discount: true
discount_percent: 10
- delay: 48h
template_id: 103
subject: "Last chance - items selling fast"
include_discount: true
discount_percent: 15
discount_expiry: 24h
# Stop conditions
stop_on:
- cart_recovered
- order_placed
- unsubscribe

고급 구성

skills:
abandoned-cart:
# Segment-specific timing
timing:
vip_customers:
first_email: 30m
discount_threshold: 0 # Always include discount
new_customers:
first_email: 2h
discount_threshold: 50 # Discount only if cart > $50
repeat_customers:
first_email: 1h
discount_threshold: 100
# A/B testing
ab_testing:
enabled: true
variants:
- name: "urgency"
subject: "Items in your cart are selling fast!"
weight: 50
- name: "friendly"
subject: "Did you forget something?"
weight: 50
# Exclusions
exclude:
- email_domain: ["temp-mail.com", "disposable.com"]
- customer_tag: ["wholesale", "staff"]
- product_category: ["gift-cards"]

트리거

cart_abandoned

장바구니가 구성된 임계값 동안 비활성 상태일 때 발생합니다.

이벤트 데이터

Parameter Type Description
cart_id required
string

고유 장바구니 식별자

customer_email required
string

고객의 이메일 주소

items required
array

name, price, quantity, image_url을 포함한 장바구니 항목 배열

total required
number

장바구니 총액

currency optional
string

통화 코드(예: USD, EUR)

Default: USD
recovery_url required
string

장바구니를 복구할 URL

abandoned_at required
datetime

장바구니가 이탈된 시점

페이로드 예시:

{
"event": "cart_abandoned",
"timestamp": "2024-01-15T14:30:00Z",
"data": {
"cart_id": "cart_abc123",
"customer_email": "[email protected]",
"items": [
{
"id": "prod_123",
"name": "Premium Headphones",
"price": 199.99,
"quantity": 1,
"image_url": "https://cdn.example.com/headphones.jpg",
"variant": "Black"
},
{
"id": "prod_456",
"name": "Phone Case",
"price": 29.99,
"quantity": 2,
"image_url": "https://cdn.example.com/case.jpg"
}
],
"subtotal": 259.97,
"shipping": 0,
"tax": 20.80,
"total": 280.77,
"currency": "USD",
"recovery_url": "https://store.example.com/cart/recover/abc123",
"abandoned_at": "2024-01-15T14:00:00Z"
}
}

cart_recovered

고객이 돌아와 결제를 완료할 때 발생합니다.

{
"event": "cart_recovered",
"timestamp": "2024-01-15T16:45:00Z",
"data": {
"cart_id": "cart_abc123",
"customer_email": "[email protected]",
"order_id": "order_789",
"recovered_via": "email_1", // Which email triggered recovery
"time_to_recover": "2h15m"
}
}

이메일 템플릿

템플릿 변수

Brevo 이메일 템플릿에서 다음 변수를 사용하세요.

변수설명예시
params.FIRSTNAME고객의 이름Jane
params.CART_URL장바구니 복구 URLhttps://…
params.CART_TOTAL포맷된 장바구니 총액$280.77
params.ITEM_COUNT항목 수3
params.ITEMS항목의 JSON 배열[…]
params.DISCOUNT_CODE생성된 할인 코드SAVE10-ABC
params.DISCOUNT_PERCENT할인율10
params.EXPIRY_DATE할인 만료일Jan 17, 2024

권장 이메일 시퀀스

이메일 1 (1시간): 부드러운 리마인더

  • 제목: “뭔가 잊으셨나요, {{ params.FIRSTNAME }}?”
  • 초점: 장바구니 내용 알림
  • 아직 할인 없음

이메일 2 (24시간): 긴급성 + 인센티브 추가

  • 제목: “장바구니가 기다리고 있어요 + 10% 할인”
  • 초점: 기간 한정 할인
  • 할인 코드 포함

이메일 3 (48시간): 마지막 푸시

  • 제목: “마지막 기회 - 15% 할인 곧 만료”
  • 초점: 희소성 + 더 강력한 할인
  • 24시간 할인 만료

코드 예제

장바구니 이탈 스킬 활성화

import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({
apiKey: process.env.TAJO_API_KEY,
brevoApiKey: process.env.BREVO_API_KEY
});
await tajo.skills.enable('abandoned-cart', {
detection: {
inactivityThreshold: '30m',
minCartValue: 25
},
sequence: [
{ delay: '1h', templateId: 101 },
{ delay: '24h', templateId: 102, discountPercent: 10 },
{ delay: '48h', templateId: 103, discountPercent: 15 }
]
});

장바구니 이탈 추적

// Call this when cart activity is detected
await tajo.events.track('cart_updated', {
cartId: 'cart_abc123',
customerEmail: '[email protected]',
items: cartItems,
total: 280.77
});
// Call this when customer leaves without checkout
// (typically from a beforeunload event or session timeout)
await tajo.events.track('cart_abandoned', {
cartId: 'cart_abc123',
customerEmail: '[email protected]',
items: cartItems,
total: 280.77,
recoveryUrl: 'https://store.example.com/cart/recover/abc123'
});

할인 코드 생성

// Generate a unique discount code
const discount = await tajo.discounts.create({
type: 'percentage',
value: 10,
expiresIn: '7d',
usageLimit: 1,
prefix: 'SAVE10'
});
// discount.code => "SAVE10-ABC123"

애널리틱스

장바구니 이탈 복구 성과를 추적합니다.

지표설명
이탈률이탈된 장바구니의 %
복구율복구된 이탈 장바구니의 %
복구된 매출복구된 장바구니의 총 매출
이메일 오픈율열린 복구 이메일의 %
이메일 CTR복구 이메일의 클릭률
복구 소요 시간이탈부터 구매까지의 평균 시간
const stats = await tajo.skills.getStats('abandoned-cart', {
period: '30d'
});
console.log(stats);
// {
// abandonmentRate: 68.5,
// recoveryRate: 12.3,
// revenueRecovered: 15420.50,
// emailsSent: 2340,
// emailOpenRate: 45.2,
// emailCtr: 8.7,
// avgTimeToRecovery: '4h32m'
// }

모범 사례

타이밍이 중요합니다

이탈 후 1-2시간 이내에 첫 이메일을 발송하세요. 24시간 후에는 복구율이 크게 떨어집니다.

  1. 제목 줄 개인화 - 고객 이름과 장바구니 내용을 사용하세요
  2. 장바구니 내용 표시 - 이메일에 제품 이미지를 포함하세요
  3. 긴급성 조성 - 재고 부족 또는 기간 한정 할인을 언급하세요
  4. 복구를 쉽게 만들기 - 원클릭 장바구니 복구 링크를 제공하세요
  5. 시퀀스 테스트 - 타이밍, 제목 줄, 할인에 대해 A/B 테스트하세요
  6. 수신 거부 존중 - 수신 거부 시 시퀀스를 즉시 중단하세요

관련 스킬

다음 단계

  1. 플랫폼에 장바구니 추적 설정
  2. Brevo에서 이메일 템플릿 생성
  3. 할인 코드 통합 구성
  4. 대시보드에서 성과 모니터링

Subscribe to updates

developer-docs

Drop your email or phone number — we'll send you what matters next.

AI 어시스턴트

안녕하세요! 문서에 대해 무엇이든 물어보세요.

Brevo로 무료로 시작하기