メインコンテンツへスキップ

概要

ショッピングカートに残されたアイテムについてユーザーにリマインドすることは、コンバージョンを促進し、失われた収益を回復する最も効果的な方法の1つです。適切に実装すると、カート放棄キャンペーンはケーススタディに示されているように実証済みの結果を提供します。 このステップバイステップガイドでは、2つのシナリオのコード例を使用してカート放棄通知を実装する方法を示します:
  1. セグメントベースのJourneyでOneSignalの強力なタグ付けとセグメント化ツールを使用する。
  2. OneSignalの包括的な新しいカスタムイベント機能と2つのシンプルなイベントトリガーの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を「存在する」に設定します
  3. 「フィルターを追加」を選択して「AND」関係を作成します。
  4. 「最終セッション」フィルターを選択し、「より大きい」を1に設定します。
  5. 「フィルターを追加」を再度選択し、別の「最終セッション」フィルターを「より小さい」を24に設定します。(ユーザーは24時間後にセグメントから離れます)。
  6. セグメントにカート放棄1時間という名前を付けます(必須ではありませんが、覚えやすいです)。

カート放棄セグメントの例

ユーザーがカートにアイテムを追加/削除し、サイトを離れる/戻ると、自動的にこのセグメントに出入りします。1時間から長い時間枠に変更したい場合は、いつでもこのセグメントに戻ることができます。長い時間枠の後に異なるメッセージを送信したい場合は、セグメントを複製してさらに作成し、異なる時間枠を設定できます。

3. カート放棄メッセージを作成する

ここで創造性を発揮できます!サイト/アプリに特定のフレーズ、言語、または好みの絵文字がある場合は、それを使用してください!これらはすべて、ブランド認知度を高め、ユーザーにクリックしてもらい、チェックアウトしてもらうのに最適です。また、product_nameおよびproduct_imageタグを使用して、このデータをメッセージパーソナライゼーションのメッセージ内に含めることができます。たとえば、「Hey Cool Cat 😸 ! Your new Yellow Cat Water Dish is waiting for you!」と言うことができます。そして、メッセージにアイテムの写真を含めます。OneSignalダッシュボードで、メッセージ > テンプレートに移動し、「新規プッシュテンプレート」を選択します。テンプレートは、再利用可能なメッセージを作成し、送信およびクリックされた回数を監視する方法です。
  1. テンプレートに名前を付けます:カート放棄1時間またはセグメントに付けた名前。
  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の場合、user_nameタグでユーザーにタグを付ける必要があります。そうすれば、https://yoursite.com/{{user_name}}/checkoutを使用する場合にユーザー名を置き換えることができます。

カート放棄メッセージの例

**重要:**これらのフィールドには任意の言語を使用できます(英語である必要はありません)。複数の言語を追加したい場合は、「言語を追加」を選択してメッセージの独自の翻訳を入力してください。
  1. プレビューの下にある「テストメッセージを送信」をクリックして、外観をテストしてください!
  2. 完了したら、下部の「保存」を押します。
再利用可能なテンプレートが設定されたので、メッセージ > テンプレートページに戻って、送信および開封された回数を監視できます。必要な数のテンプレートを作成でき、送信したいすべての異なるチャネルで作成できます。

4. カート放棄ジャーニーをセットアップする

Journeys > 新規Journeyに移動します。

Journeyの設定

  1. Journeyに名前を付けます:カート放棄またはこのJourneyが何をするかを認識できるもの。
  2. エントリルール:セグメントカート放棄1時間セグメントを含めます。
  3. 退出ルール:ユーザーがオーディエンス条件に一致しなくなったときに退出をチェックします。
  4. 再エントリルール:はい、一定時間後を選択し、1日に設定します。

Journeyの設定例

  1. 保存を押します。

Journeyのステップ

現在、セグメントに入るユーザーは、Journeyを通過し始めます。セグメントを離れると、Journeyを離れ、1日が経過するまで再エントリできません。
  1. プッシュ通知メッセージステップを追加し、カート放棄1時間テンプレートを選択して保存します。

Journeyステップの例

  1. 待機ステップを追加し、1を選択して保存します。
  2. 保存して閉じるを選択します。
ユーザーは、カートを更新またはチェックアウトするまで、8日に1回(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の提供物の詳細な実装を達成し、さらに多くのことを行う準備ができました!ユースケースで概説されているベストプラクティスをさらに追加するか、以下のリンクをたどってこれらの個々の機能をさらに深く掘り下げてください。
Need help?Chat with our Support team or email [email protected]Please include:
  • Details of the issue you’re experiencing and steps to reproduce if available
  • Your OneSignal App ID
  • The External ID or Subscription ID if applicable
  • The URL to the message you tested in the OneSignal Dashboard if applicable
  • Any relevant logs or error messages
We’re happy to help!