메인 콘텐츠로 건너뛰기

개요

장바구니 이탈은 잃어버린 수익을 회복할 수 있는 가장 영향력 있는 기회 중 하나입니다. 장바구니를 이탈한 대부분의 사용자는 여전히 구매 의사가 있으며, 적시에 리마인더만 필요합니다. 이 가이드는 OneSignal에서 다음을 수행하는 자동화된 장바구니 이탈 Journey를 구축하는 방법을 보여줍니다:
  • 장바구니 활동 감지
  • 짧은 비활성 기간 대기
  • 개인화된 리마인더 전송
  • 구매 또는 장바구니 제거 후 즉시 메시지 전송 중단
다음 중 하나를 사용하여 구현할 수 있습니다:
  • Custom Events (대부분의 구현에 권장)
  • Tags (더 간단하고 제한적인 사용 사례)
올바른 선택은 메시지에 표시할 데이터와 해당 데이터의 출처에 따라 달라집니다.

구축할 내용

이 가이드를 완료하면 다음을 갖게 됩니다:
  • OneSignal로 전송되는 장바구니 활동 (Tags 또는 Custom Events를 통해)
  • 명확한 코드 정의 이탈 신호
  • 장바구니 데이터를 개인화하는 메시지 템플릿
  • 다음을 수행하는 Journey:
    • 이탈 신호가 수신되면 시작
    • 전송 전 대기
    • 장바구니 이탈 메시지 전송
    • 장바구니가 비워지거나 구매되면 즉시 종료
  • 메시지 및 수익 성과를 측정하는 Analytics

추적 방법 선택

Custom Events 또는 Tags를 사용하여 장바구니 활동을 추적할 수 있습니다.
  • Custom Events 사용 조건:
    • 비활성 기간 후 이탈을 감지할 수 있는 경우
    • 풍부한 장바구니 데이터(항목, 이미지, 가격)를 원하는 경우
    • 이벤트가 이탈당 한 번만 발생하도록 보장할 수 있는 경우
  • Tags 사용 조건:
    • 기본적으로 상태 기반 안전성을 원하는 경우
    • 간단한 장바구니 데이터만 필요한 경우
    • 세그먼트 제어 입장 및 퇴장을 선호하는 경우
이 가이드는 두 가지 접근 방식을 모두 보여줍니다. Custom Events는 더 많은 유연성을 제공하지만 더 많은 주의가 필요합니다.

장바구니 이탈 모델링 방식

OneSignal은 장바구니가 이탈되었는지 자동으로 판단하지 않습니다.사용자의 코드 또는 시스템에서 장바구니가 이탈되었는지 결정한 다음 OneSignal에 알려야 합니다.
cart_abandoned의 의미 cart_abandoned 이벤트는 상태 전환을 나타내야 합니다 - 장바구니가 활성 상태였음 → 사용자가 참여를 중단함 → 장바구니가 이제 이탈된 것으로 간주됨. 이 이벤트는 다음 경우에 전송해야 합니다:
  • 의미 있는 비활성 기간 후 (예: 1시간)
  • 장바구니에 여전히 항목이 있는 경우에만
모든 장바구니 업데이트마다 cart_abandoned를 보내지 마세요.이 이벤트를 반복적으로 전송하면 사용자가 Journey에 여러 번 재진입하게 되어 스팸이 될 수 있습니다.

Journeys가 이탈 신호를 사용하는 방식

OneSignal이 cart_abandoned를 수신하면:
  • 사용자가 Journey에 진입할 자격이 됩니다
  • 대기 기간이 자연스럽게 돌아올 시간을 줍니다
  • 퇴장하지 않는 경우에만 메시지가 전송됩니다
  • cart_emptied가 수신되면 사용자가 즉시 퇴장합니다
Journeys는 타이밍과 반복을 제어합니다 — 이탈 여부를 결정하지 않습니다.

설정

1단계. 장바구니 데이터와 소스 계획

표시할 장바구니 정보해당 데이터의 출처를 결정하세요. 일반적인 장바구니 데이터:
  • 제품명, 이미지, 가격, 수량
  • 장바구니 내 항목 수
  • 장바구니로 돌아가는 딥 링크
데이터 소스에 따라 이벤트 전송 방법이 결정됩니다:
데이터 소스권장 방법
앱 또는 웹사이트OneSignal Frontend SDK
백엔드 또는 데이터베이스OneSignal REST API
서드파티 플랫폼통합 기반 Custom Events
이 단계가 끝나면 어떤 데이터를 보낼지어떻게 보낼지 알 수 있습니다.

2단계. 장바구니 상태 신호를 OneSignal로 전송

장바구니 상태 변경을 나타내는 신호를 전송해야 합니다.
신호목적
cart_abandoned장바구니 활동이 감지되었지만 해결되지 않음
cart_updated장바구니 내용 변경
cart_emptied장바구니 비워짐 또는 구매 완료
이벤트 및 태그 이름은 SDK/API 호출, 세그먼트, Journey 규칙, Liquid 템플릿 간에 정확히 일치해야 합니다.
OneSignal Web 또는 Mobile SDK를 사용하여 Custom Events 또는 Tags를 전송합니다.
SDK 메서드설명
trackEventCustom Event 전송 (Mobile SDK, Web SDK)
addTagsTag 추가 (Mobile SDK, Web SDK)
removeTagsTag 제거 (Mobile SDK, Web SDK)
Custom Event 예시
cart_abandoned 이벤트는 사용자가 장바구니에 들어가거나 업데이트할 때가 아니라, 장바구니 비활성 기간 후에 전송해야 합니다.cart_emptied 이벤트는 장바구니가 비워지거나 구매가 완료되면 즉시 전송해야 합니다.
OneSignal.User.trackEvent("cart_abandoned", {
  product_name: "24 Pack of Acorns",
  product_image: "https://i.imgur.com/ssPCfbC.png",
  product_price: 12.99,
  product_quantity: 1,
  cart_url: "https://yourdomain.com/cart"
});
Tag 예시
이 예제는 cart_updated 태그를 장바구니가 마지막으로 업데이트된 시점을 나타내는 Unix 타임스탬프(초 단위)로 설정합니다. 불리언 값(true/false)을 사용할 수도 있지만, 타임스탬프는 Time Operators와 함께 더 많은 유연성을 제공합니다.
OneSignal.User.addTags({
  cart_updated: unix_timestamp_seconds,
  product_name: "24 Pack of Acorns",
  product_image: "https://i.imgur.com/ssPCfbC.png",
  product_price: "$12.99",
  product_quantity: "1",
  cart_url: "https://yourdomain.com/username/cart"
})
cart_emptied 신호를 보내지 않으면, 사용자가 구매 후에도 장바구니 이탈 메시지를 계속 받을 수 있습니다.

3단계. 장바구니 이탈 메시지 템플릿 생성

장바구니 데이터를 동적으로 참조하는 메시지 템플릿을 생성합니다. 이 섹션에서 사용되는 개념에 대한 자세한 내용은 다음을 참조하세요:
Liquid 구문 형식을 사용하여 이벤트 속성을 참조합니다:
Liquid
{{journey.event.name.properties.property_name | default: "fallback_value"}}
메시지:
Liquid
You left {{journey.event.cart_abandoned.properties.product_name | default: "items"}} in your cart.
이미지:
Liquid
{{journey.event.cart_abandoned.properties.product_image | default: "https://i.imgur.com/ssPCfbC.png"}}
실행 URL:
Liquid
{{journey.event.cart_abandoned.properties.cart_url | default: "https://yourdomain.com/cart"}}
product_image직접적이고 공개적으로 접근 가능한 이미지 URL이 아니면 이미지가 표시되지 않습니다.product_image가 온라인에서 사용 가능한 이미지 파일의 이름인 경우, 다음 형식을 사용하여 이미지를 참조할 수 있습니다: https://yourdomain.com/images/{{journey.event.cart_abandoned.properties.product_image | default: "stock_image"}}.png
Custom Events를 사용한 장바구니 이탈 템플릿 예시
이메일 예시, 도움말 또는 더 많은 영감이 필요하신가요?

4단계. 장바구니 이탈 세그먼트 생성 (Tags만 해당)

이 단계는 Tags를 사용하여 장바구니 활동을 추적하는 경우에만 필요합니다. Custom Events를 사용하는 경우 이 단계를 건너뛸 수 있습니다.
세그먼트는 Journey에 진입할 수 있는 사용자를 결정합니다. 자세한 내용은 세그먼트를 참조하세요. User Tag 필터를 선택하여 cart_updated 태그가 exists인 사용자를 추적하고 AND Last Session 필터를 less than 7 days ago로 선택합니다
cart_updated 태그가 존재하고 마지막 세션이 7일 이내인 Tag 필터가 있는 장바구니 이탈 세그먼트
이제 장바구니를 업데이트하고 지난 7일 이내에 앱 또는 웹사이트를 방문한 사용자를 추적할 수 있습니다.다음 조건 중 하나가 충족되면 사용자가 세그먼트에서 자동으로 제거됩니다:
  • 앱/웹사이트를 마지막으로 방문한 후 7일이 경과한 경우
  • cart_updated 태그가 제거된 경우

5단계. 장바구니 이탈 Journey 생성

장바구니 활동에 반응하는 Journey를 생성합니다. 자세한 내용은 Journeys를 참조하세요.
새 장바구니 이탈 Journey 생성 화면

Journey 설정

진입, 퇴장 및 재진입 규칙에 대한 자세한 내용은 Journey 설정 가이드를 검토하세요. 진입 규칙:
  • Custom Event 선택
  • Custom Event 이름: cart_abandoned
사용자는 cart_abandoned 이벤트가 전송될 때마다 Journey에 진입합니다. 의미 있는 비활성 기간 후에만 이 이벤트를 전송하세요.
장바구니 이탈 Journey Custom Event 진입 규칙
퇴장 규칙:
  • Meet a certain condition 선택
  • Exit when custom event condition occurs 체크
  • Custom Event 이름: cart_emptied
장바구니 이탈 Journey Custom Event 퇴장 규칙
사용자는 다음 경우에 Journey에서 퇴장합니다:
  • cart_emptied 이벤트(3단계에서 설정)가 수행된 경우.
  • Journey를 완료한 경우.
재진입 규칙 (Tags만 해당):
  • Yes, after a certain amount of time 선택
  • 재진입 시간을 1 day로 설정
장바구니 이탈 Journey 재진입 규칙
이 가이드를 지금까지 완전히 따랐다면, 사용자는:
  1. 장바구니를 이탈/업데이트할 때 Journey에 진입합니다
  2. 장바구니를 비우거나 Journey를 완료하면 퇴장합니다.
  3. Journey에 재진입할 자격이 됩니다:
    • Custom Events: cart_abandoned 이벤트가 수행될 때마다
    • Tags: Journey에서 마지막으로 퇴장한 후 1일이 경과하고 세그먼트에 있는 경우.
Journey 설정을 저장하세요.

Journey 단계

사용자는 세그먼트에 일치하면 Journey에 진입합니다. 이는 일반적으로 이벤트/태그가 수신된 후 몇 분 이내에 발생합니다. 사용자는 끝에 도달하거나 퇴장 규칙이 충족될 때까지 Journey를 단계별로 진행합니다. 기본적인 장바구니 이탈 Journey의 경우, 2가지를 수행해야 합니다:
  1. 사용자에게 장바구니를 비울 충분한 시간 제공 (구매하거나 수동으로 장바구니 비우기)
  2. 장바구니를 비우지 않으면 장바구니의 항목에 대한 리마인더 메시지 전송
먼저 Journey에 Wait 단계를 추가하여 이를 달성합니다.
  • 원하는 만큼 대기 시간을 설정합니다. 구매 의향이 있을 때 메시지를 보낼 수 있도록 1 hour로 설정하는 것을 권장합니다.
Message 단계를 추가합니다.
  • 4단계에서 생성한 Abandoned Cart 푸시 알림 템플릿을 선택합니다.
기본 장바구니 이탈 Journey 단계
기본 장바구니 이탈 Journey가 이제 구성되었습니다.사용자가 Journey에 진입하면 1시간 동안 대기합니다. Journey에서 퇴장하지 않으면 장바구니 이탈 푸시 알림을 받게 됩니다.

고급 Journey 설정

이 가이드에서 얻은 지식을 사용하여, 이제 시간이 지남에 따라 더 많은 메시지를 보내도록 Journey를 확장할 수 있습니다.

메시지 시퀀스

매우 일반적인 고성능 케이던스에 대한 모범 사례 타이밍 시퀀스는 다음과 같습니다:
  1. 1시간 후 첫 번째 메시지 전송 (이 가이드에서 완료됨).
  2. 1일 동안 또 다른 Wait 단계를 추가하고 두 번째 메시지 전송 (장바구니 업데이트 후 ~24시간).
  3. 2일 동안 또 다른 Wait 단계를 추가하고 세 번째 메시지 전송 (장바구니 업데이트 후 ~72시간).
메시지 유형 및 콘텐츠: OneSignal과 설정한 채널에 따라, 옴니채널 접근 방식을 사용하면 더 나은 결과를 얻을 수 있습니다.
  1. 이 가이드는 첫 시간 후 푸시 알림 메시지를 보내는 방법을 보여줍니다. 이것은 사용자가 아직 온라인일 때 판매를 잡기 위한 유용한 리마인더로 사용됩니다.
  2. 2번째 메시지에는 푸시와 이메일을 모두 사용하는 것을 고려하세요. 이 두 번째 메시지를 사용하여 혜택과 사회적 증거를 가벼운 긴급함과 함께 강조하여 구매를 유도하세요.
  3. 시퀀스의 마지막 메시지에는 이메일 또는 SMS(사용 사례에 따라)를 “마지막 기회”로 사용하세요. 할인 코드나 기타 인센티브를 사용하여 구매를 유도하는 것을 고려하세요.

폴백 메시지

OneSignal의 Journeys는 Wait Until 분기 로직을 제공하여 메시지가 확인 전달, 클릭 또는 열림 여부를 확인하고, 특정 기간 내에 수행되지 않으면 폴백 메시지를 보낼 수 있습니다. 이것은 특정 메시지 채널의 구독을 취소한 사용자에게 매우 유용합니다. 폴백 메시지를 설정하는 방법에 대한 자세한 내용은 폴백 메시지 가이드에서 확인할 수 있습니다.

성과 추적

Journey 분석을 사용하여 Journey 전체의 성과를 추적할 수 있습니다. 템플릿 분석을 사용하여 각 메시지의 성과도 추적할 수 있습니다.

Outcomes로 수익 추적

이 Journey의 수익을 추적하려면 Custom Outcomes를 사용할 수 있습니다. 구매가 이루어지면, 이벤트를 “Custom Outcome”으로 전송하여 전송된 특정 메시지와 관련된 수익을 추적할 수 있습니다. Custom Outcomes는 Mobile SDK 또는 Web SDK를 통해 전송할 수 있습니다.
Example: Send purchase outcome via frontend SDK
// Example: capture total price and item count at checkout
const checkoutPriceTotal = document.querySelector(".checkout-price-total").innerText;
const checkoutItemsTotal = document.querySelector(".checkout-items-total").innerText;

function updateOSOnCartPurchase(checkoutPriceTotal, checkoutItemsTotal) {
  const purchasePriceTotal = parseFloat(checkoutPriceTotal);
  const purchasedItemCount = parseInt(checkoutItemsTotal);

  OneSignalDeferred.push(function (OneSignal) {
    OneSignal.Session.sendOutcome("Purchase", purchasePriceTotal);
    OneSignal.Session.sendOutcome("Purchased Item Count", purchasedItemCount);
  });
}

const submitPurchaseButton = document.querySelector(".submit-payment");
if (submitPurchaseButton) {
  submitPurchaseButton.addEventListener("click", () => {
    updateOSOnCartPurchase(checkoutPriceTotal, checkoutItemsTotal);
  });
}
Outcomes는 정의된 어트리뷰션 윈도우 내에서 사용자가 클릭했거나 영향을 받은 메시지에 수익을 귀속시킬 수 있습니다.
장바구니 이탈 Journey를 성공적으로 구현했습니다. 메시지 전송을 시작할 준비가 되면 Set Live를 선택하세요.
도움이 필요하신가요?지원 팀과 채팅하거나 support@onesignal.com으로 이메일을 보내주세요.다음을 포함해 주세요:
  • 발생한 문제의 세부 정보 및 재현 단계(가능한 경우)
  • OneSignal 앱 ID
  • External ID 또는 Subscription ID(해당하는 경우)
  • OneSignal 대시보드에서 테스트한 메시지의 URL(해당하는 경우)
  • 관련 로그 또는 오류 메시지
기꺼이 도와드리겠습니다!