메인 콘텐츠로 건너뛰기

개요

장바구니에 남긴 항목에 대해 사용자에게 알리는 것은 전환을 유도하고 손실된 수익을 복구하는 가장 효과적인 방법 중 하나입니다. 올바르게 구현하면 사례 연구에서 보여지는 것처럼 장바구니 이탈 캠페인은 입증된 결과를 제공합니다. 이 단계별 가이드는 두 가지 시나리오에 대한 예제 코드로 장바구니 이탈 알림을 구현하는 방법을 보여줍니다:
  1. 세그먼트 기반 Journey에서 OneSignal의 강력한 태그 지정 및 세그먼트화 도구 사용.
  2. OneSignal의 포괄적인 새로운 사용자 지정 이벤트 기능과 두 개의 간단한 이벤트 트리거 Journeys 사용.
이미 장바구니 이탈 솔루션이 설정되어 있는 경우 데이터 피드를 사용하여 장바구니 데이터를 OneSignal 메시지에 직접 동기화할 수 있습니다.
  • 태그 및 세그먼트 사용
  • 사용자 지정 이벤트 사용

설정

1. 태그로 장바구니 활동 추적

태그를 사용하여 사용자가 장바구니에 항목을 추가할 때를 추적합니다. 이러한 태그에는 제품 이름, 이미지 및 타임스탬프가 포함될 수 있습니다:
  • cart_update: 장바구니가 업데이트된 Unix 타임스탬프
  • product_name: 개인화를 위한 사람이 읽을 수 있는 제품 이름
  • product_image: 시각적 참여를 위한 제품 이미지의 직접 URL
다음은 장바구니에 추가된 항목을 태그하는 기본 예제입니다:
let productName = "Name of the Product"; // Replace with the name of item
let productImageURL = "https://yoursiteurl.com/image-file.jpg"; // Replace with the url to the image

// Use this example method when user adds item to cart
async function addTagsUponCartUpdate(productName, productImageURL) {
await OneSignalDeferred.push(async function (OneSignal) {
let timestamp = Math.floor(Date.now() / 1000);
await OneSignal.User.addTags({
cart_update: timestamp,
product_name: productName,
product_image: productImageURL,
});
// Call getTags after adding tags
const tags = await OneSignal.User.getTags();
console.log(tags);
});
}

// Call the function, or attach to add to cart button
addTagsUponCartUpdate(productName, productImageURL);

사용자가 결제하거나 항목을 제거하는 경우 오탐지를 방지하기 위해 태그를 제거해야 합니다.구매가 완료되면 태그 제거:
//Removes the cart tags, call when user purchases or removes items from cart
async function removeCartTags() {
  await OneSignalDeferred.push(async function (OneSignal) {
    let timestamp = Math.floor(Date.now() / 1000);
    await OneSignal.User.addTags({
      cart_update: "",
      product_name: "",
      product_image: "",
    });
    // Call getTags after removing tags
    const tags = await OneSignal.User.getTags();
    console.log(tags);
  });
}
사용자가 결제하지 않고 사이트를 떠나는 경우(장바구니를 이탈), 이제 개인화된 장바구니 이탈 알림으로 해당 사용자를 타겟팅할 수 있는 충분한 정보가 있습니다.

2. 장바구니 이탈 세그먼트 생성

태그 지정 설정이 완료되면 일정 시간이 지난 후 이러한 사용자를 타겟팅하고 메시지를 보내야 합니다. OneSignal 대시보드에서 대상 > 세그먼트로 이동합니다.세그먼트를 사용하면 수집된 데이터를 기반으로 구독을 그룹화할 수 있습니다: 1 - 장바구니에 항목이 있는 경우 2 - 해당 항목이 장바구니에 남겨진 지 얼마나 지났는지.
  • 마지막 세션 필터 사용
  • 시간 연산자 사용
이 세그먼트에는 장바구니에 항목이 있고 1시간 이상 전에 사이트 또는 모바일 앱을 떠난 사용자가 포함됩니다. 사용자가 장바구니에 항목을 추가한 다음 앱이나 사이트를 떠나면 1시간 후에 이 세그먼트에 포함됩니다.
  1. “사용자 태그” 필터를 선택합니다.
  2. cart_update를 “exists”로 설정합니다.
  3. “필터 추가”를 선택하여 “AND” 관계를 생성합니다.
  4. “마지막 세션” 필터를 선택하고 “보다 큼” 1로 설정합니다.
  5. “필터 추가”를 다시 선택하고 다른 “마지막 세션” 필터를 “보다 작음” 24로 설정합니다. (사용자는 24시간 후 세그먼트를 떠납니다).
  6. 세그먼트 이름을 Abandoned Cart 1 Hour로 지정합니다(필수는 아니지만 기억하는 데 도움이 됩니다).

장바구니 이탈 세그먼트 예제

사용자가 장바구니에서 항목을 추가/제거하고 사이트를 떠나거나/돌아오면 이 세그먼트에서 자동으로 이동합니다.시간 프레임을 1시간에서 더 긴 시간 프레임으로 변경하려면 나중에 언제든지 이 세그먼트로 돌아올 수 있습니다.더 긴 시간 프레임 후에 다른 메시지를 보내려는 경우 세그먼트를 복제하여 더 많은 세그먼트를 생성하고 다른 시간 프레임을 설정할 수 있습니다.

3. 장바구니 이탈 메시지 생성

여기에서 창의력을 발휘할 수 있습니다! 사이트/앱에 선호하는 특정 문구, 언어 또는 이모지가 있다면 사용하세요! 이 모든 것이 브랜드 인지도를 높이고 사용자가 클릭하고 결제하도록 유도하는 데 좋습니다.또한 product_nameproduct_image 태그를 사용하여 메시지 개인화를 위해 메시지 내에 이 데이터를 포함할 수 있습니다.예를 들어 “Hey Cool Cat 😸 ! Your new Yellow Cat Water Dish is waiting for you!”라고 말할 수 있습니다. 그리고 메시지에 항목의 사진을 포함합니다.OneSignal 대시보드에서 메시지 > 템플릿으로 이동하고 “새 푸시 템플릿”을 선택합니다.템플릿은 재사용 가능한 메시지를 생성하고 전송 및 클릭 횟수를 모니터링하는 방법입니다.
  1. 템플릿 이름 지정: Abandoned Cart 1 Hour 또는 세그먼트에 지정한 이름.
  2. 제목을 추가합니다. 예: Hey Cool Cat 😸 !
  3. 메시지를 추가합니다. 예: Your new {{product_name | default: "item"}} is waiting for you!
  • 여기서 {{product_name | default: "item"}}은 해당 태그에 설정된 값으로 대체됩니다. 태그가 설정되지 않은 경우 “item”이 사용됩니다.
  1. 이미지를 다음으로 설정합니다: {{product_image}}
  • 여기서 {{product_image}}는 제품 이미지의 URL로 대체됩니다. 태그 값이 이미지에 대한 직접 링크가 아니면 표시되지 않습니다.
  1. 실행 URL을 결제 페이지의 URL로 설정합니다.
  • 여기서 결제 페이지가 사용자마다 고유한 경우 장바구니 페이지(고유하지 않은 경우)에 링크하거나 더 많은 태그 대체를 사용해야 합니다. 예를 들어 결제 페이지가 https://yoursite.com/username/checkout인 경우 https://yoursite.com/{{user_name}}/checkout을 사용하면 사용자 이름을 대체할 수 있도록 사용자를 user_name 태그로 태그해야 합니다.

장바구니 이탈 메시지 예제

중요: 이러한 필드에서 모든 언어를 사용할 수 있으며(영어일 필요 없음) 1개 이상의 언어를 추가하려면 “언어 추가”를 선택하여 메시지에 대한 고유한 번역을 입력하세요.
  1. 미리보기 아래에서 “테스트 메시지 보내기”를 클릭하여 모양을 테스트합니다!
  2. 완료되면 하단의 “저장”을 누릅니다.
이제 재사용 가능한 템플릿이 설정되었으므로 메시지 > 템플릿 페이지로 돌아가 전송 및 열림 횟수를 확인할 수 있습니다.원하는 만큼 많은 템플릿을 만들 수 있으며 보내려는 모든 채널에 걸쳐 만들 수 있습니다.

4. 장바구니 이탈 journey 설정

Journeys > 새 Journey로 이동합니다.

Journey 설정

  1. Journey 이름 지정: Abandoned Cart 또는 이 Journey가 수행하는 작업을 인식할 수 있는 이름.
  2. 진입 규칙: 세그먼트 Abandoned Cart 1 Hour 세그먼트를 포함합니다.
  3. 종료 규칙: 사용자가 더 이상 대상 조건과 일치하지 않을 때 종료를 선택합니다.
  4. 재진입 규칙: 예, 일정 시간 후를 선택하고 1 일로 설정합니다.

Journey 설정 예제

  1. 저장을 누릅니다.

Journey 단계

현재 세그먼트에 진입한 사용자는 Journey를 통해 흐르기 시작합니다. 세그먼트를 떠나면 Journey를 떠나고 1일이 경과할 때까지 다시 진입할 수 없습니다.
  1. 푸시 알림 메시지 단계를 추가하고 Abandoned Cart 1 Hour 템플릿을 선택한 다음 저장합니다.

Journey 단계 예제

  1. 대기 단계를 추가하고 1 를 선택한 다음 저장합니다.
  2. 저장 및 닫기를 선택합니다.
사용자는 장바구니를 업데이트하거나 결제할 때까지 8일마다 한 번씩(1주 대기 노드 + 1일 재진입 규칙) 개인화된 장바구니 이탈 템플릿을 받게 됩니다.
최소 장바구니 이탈 설정을 성공적으로 완료했습니다! 이제 더 많은 템플릿을 만들고, 더 많은 Journey 단계와 메시지를 추가하고, 필요에 따라 업데이트할 수 있습니다!준비가 되면 라이브 설정을 누르세요.

5. 선택 사항: 장바구니 이탈 성능 추적 설정

장바구니 이탈 메시지가 설정되면 템플릿으로 이동하여 열림 및 클릭률을 확인하여 성능을 추적할 수 있습니다.유료 OneSignal 계정이 있는 경우 결과를 사용하여 실제 수익을 추적할 수도 있습니다.고객이 결제를 완료하면 “결제 제출” 버튼을 선택할 때 다음 메서드를 호출합니다.
//Example to get the price and total items in cart
// replace ".checkout-price-total" with the class name the element containing the cart's total price
const checkoutPriceTotal = document.querySelector(".checkout-price-total").innerText;
// optional replace ".checkout-items-total" with the class name the element containing the total items in cart to be purchased
const checkoutItemsTotal = document.querySelector(".checkout-items-total").innerText;
//Call this method in the click event for the final button to submit payment
function updateOSOnCartPurchase(checkoutPriceTotal, checkoutItemsTotal) {
  let purchasePriceTotal = parseFloat(checkoutPriceTotal);
  let purchasedItemCount = parseInt(checkoutItemsTotal);
  OneSignalDeferred.push(function (OneSignal) {
    OneSignal.sendOutcome("Purchase", purchasePriceTotal);
    OneSignal.sendOutcome("Purchased Item Count", purchasedItemCount);
  });
}
//example of adding this method to the "submit-payment" button
const submitPurchaseButton = document.querySelector(".submit-payment");
if (submitPurchaseButton) {
  submitPurchaseButton.addEventListener("click", () => {
    updateOSOnCartPurchase(checkoutPriceTotal, checkoutItemsTotal);
  });
}
  • OneSignal.sendOutcome("Purchase", purchasePriceTotal); - OneSignal에 총 구매 금액을 보내고 특정 기간 내에 푸시를 클릭하거나 푸시를 받은(영향을 받은) 모든 고객이 구매한 모든 구매에 대한 해당 수익을 누적합니다.
  • OneSignal.sendOutcome("Purchased Item Count", purchasedItemCount); - OneSignal에 푸시를 직접 클릭하여 구매하거나 푸시에 “영향을 받아” 구매한 고객과 연결된 구매한 총 항목 수를 보냅니다.
이제 OneSignal 전문가입니다! OneSignal 제공 사항의 심층 구현을 달성했으며 더 많은 작업을 수행할 준비가 되었습니다! 사용 사례에 설명된 더 많은 모범 사례를 계속 추가하거나 아래 링크를 따라 이러한 개별 기능에 대해 더 자세히 알아보세요.
도움이 필요하신가요?지원 팀과 채팅하거나 support@onesignal.com으로 이메일을 보내주세요.다음을 포함해 주세요:
  • 발생한 문제의 세부 정보 및 재현 단계(가능한 경우)
  • OneSignal 앱 ID
  • External ID 또는 Subscription ID(해당하는 경우)
  • OneSignal 대시보드에서 테스트한 메시지의 URL(해당하는 경우)
  • 관련 로그 또는 오류 메시지
기꺼이 도와드리겠습니다!