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

概要

カート放棄は、失われた収益を回復するための最もインパクトの大きい機会の一つです。カートを放棄したほとんどのユーザーはまだ購入する意思があり、タイムリーなリマインダーが必要なだけです。 このガイドでは、OneSignalで以下を実行する自動カート放棄Journeyを構築する方法を説明します:
  • カートアクティビティの検出
  • 短い非アクティブ期間の待機
  • パーソナライズされたリマインダーの送信
  • 購入またはカート削除後のメッセージ送信即時停止
以下のいずれかを使用して実装できます:
  • Custom Events(ほとんどの実装に推奨)
  • Tags(よりシンプルで、限定的なユースケース)
適切な選択は、メッセージに表示したいデータとそのデータの出所によって異なります。 構築する内容 このガイドを完了すると、以下が得られます:
  • OneSignalに送信されるカートアクティビティ(TagsまたはCustom Eventsを経由)
  • 明確なコード定義の放棄シグナル
  • カートデータをパーソナライズするメッセージテンプレート
  • 以下を実行するJourney:
    • 放棄シグナルが受信されたときに開始
    • 送信前に待機
    • カート放棄メッセージを送信
    • カートが空になるか購入されたときに即座に終了
  • メッセージと収益のパフォーマンスを測定するAnalytics
カート放棄のモデリング方法 このガイドでは、ユーザーがカートに商品を追加または削除するたびに「カート更新」イベントを追跡することを想定しています。これは、コンテンツへのサブスクリプションのような単一商品の場合もあれば、ショッピングカートのような複数商品の場合もあります。 OneSignalがcart_updatedイベントを受信すると:
  • ユーザーがJourneyにエントリーする資格を得ます
  • 待機期間により自然に戻る時間が与えられます
  • エグジットしない場合のみメッセージが送信されます
  • カートが空になるとユーザーは即座にエグジットします

セットアップ

ステップ1. カートデータとソースを計画する

表示したいカート情報そのデータの出所を決定してください。 一般的なカートデータには以下が含まれます:
  • 商品名、画像、価格、数量
  • カート内のアイテム数
  • カートに戻るディープリンク
データソースによってイベントの送信方法が決まります:
データソース推奨方法
アプリまたはウェブサイトOneSignal Frontend SDK
バックエンドまたはデータベースOneSignal REST API
サードパーティプラットフォーム統合ベースのCustom Events
このステップの終わりまでに、どのデータを送信するかどのように送信するかがわかります。

ステップ2. カートアクティビティをOneSignalに送信する

カートの状態が変化した場合、アクティビティを追跡できるように更新されたカートデータをOneSignalに送信します。 このガイドでは、cart_updatedイベントまたはタグを使用してカートアクティビティを追跡し、少なくとも1つのプロパティを含めます。 ステップ1で選択した方法を選択してください:
カートが変更されるたびにcart_updatedカスタムイベントを送信します。カートにアイテムがある場合は商品プロパティを含め、カートが空になった場合は省略します。
リファレンス説明
trackEventメソッドFrontend SDKを通じて送信(Mobile SDKWeb SDK
Custom Events APIREST APIを通じて送信
統合統合を通じて送信
Frontend SDK trackEventメソッドの例
OneSignal.User.trackEvent("cart_updated", {
  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"
});
Custom Events APIの例
{
  "events": [
    {
      "name": "cart_updated",
      "properties": {
        "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"
      },
      "external_id": "ID_OF_THE_USER"
    }
  ]
}
カートアクティビティがOneSignalに送信されるようになりました。カートが変更されるたびに、OneSignalはメッセージのトリガーとパーソナライズに必要な更新されたデータを受信します。

ステップ3. カート放棄メッセージテンプレートを作成する

カートデータを動的に参照するメッセージテンプレートを作成します。 このセクションで使用されるコンセプトの詳細については、以下を参照してください:
Liquid構文形式を使用してイベントプロパティを参照します:
Liquid
{{journey.event.name.properties.property_name | default: "fallback_value"}}
メッセージ
Liquid
You left {{journey.event.cart_updated.properties.product_name | default: "items"}} in your cart.
画像
Liquid
{{journey.event.cart_updated.properties.product_image | default: "https://i.imgur.com/ssPCfbC.png"}}
起動URL
Liquid
{{journey.event.cart_updated.properties.cart_url | default: "https://yourdomain.com/cart"}}
product_image直接的な一般公開されている画像URLでない場合、画像は表示されません。product_imageがオンラインで利用可能な画像ファイルの名前である場合、以下の形式を使用して画像を参照できます: https://yourdomain.com/images/{{journey.event.cart_updated.properties.product_image | default: "stock_image"}}.png
Custom Eventsを使用したカート放棄テンプレートの例
メールの例、ヘルプ、またはもっとインスピレーションが必要ですか?

Custom Eventsでメッセージをパーソナライズ

JourneysでCustom Eventsを使用するための完全ガイド。イベントストレージ、Journey設定、カート放棄の例、ベストプラクティス、トラブルシューティングを含みます。

プロパティでメッセージをパーソナライズ

JourneysでプロパティとTagsを使用するための完全ガイド。イベントストレージ、Journey設定、カート放棄の例、ベストプラクティス、トラブルシューティングを含みます。

ステップ4. カート放棄セグメントを作成する(Tagsのみ)

このステップは、Tagsを使用してカートアクティビティを追跡している場合のみ必要です。Custom Eventsを使用している場合は、このステップをスキップできます。
セグメントはJourneyにエントリーできるユーザーを決定します。詳細はセグメントを参照してください。 セグメントに2つのフィルターを追加します:
  1. User Tagcart_updated exists
  2. Last Sessionless than 7 days ago
cart_updatedタグが存在し、最後のセッションが7日以内であるTagフィルター付きカート放棄セグメント
カートを更新し、過去7日以内にアプリまたはウェブサイトを訪問したユーザーを追跡できるようになりました。以下のいずれかの条件が満たされると、ユーザーはセグメントから自動的に削除されます:
  • アプリ/ウェブサイトを最後に訪問してから7日が経過した場合
  • cart_updatedタグが削除された場合

ステップ5. カート放棄Journeyを作成する

カートアクティビティに反応するJourneyを作成します。詳細はJourneysを参照してください。
新しいカート放棄Journey作成画面

Journeyの設定

エントリー、エグジット、再エントリーのルールの詳細については、Journeyの設定ガイドを確認してください。 エントリールール
  • Custom Eventを選択
  • Custom Event名:cart_updated
  • プロパティでフィルター:以下のすべてのプロパティを持つ:product_name exists
Custom Eventsを使用すると、個々のユーザーがJourneyに複数回エントリーできます。特定のプロパティが存在するときのみユーザーがエントリーするように、プロパティを使用してフィルタリングしてください。
カート放棄Journey Custom Eventエントリールール
エグジットルール
カートを空にするかJourneyを完了したとき、ユーザーはJourneyをエグジットする必要があります。
  • Meet a certain conditionを選択
  • Exit when custom event condition occursをチェック
  • Custom Event名:cart_updated
カート放棄Journey Custom Eventエグジットルール
この設定では、エントリーとエグジットの両方のルールに同じCustom Event名(cart_updated)を使用します。これにより、ユーザーは一度に1つのJourneyインスタンスにのみ存在できます。カートを更新するたびに、そのユーザーのインスタンスはエグジットし、同じユーザーの新しいインスタンスがJourneyにエントリーします。これがエントリールール内でプロパティを使用してユーザーをフィルタリングすることが重要な理由です。
再エントリールール(Tagsのみ):
  • Yes, after a certain amount of timeを選択
  • 再エントリー時間を1 dayに設定
カート放棄Journey再エントリールール
このガイドをここまで完全に実行していれば、ユーザーは:
  1. カートを放棄/更新したときにJourneyにエントリーします
  2. カートを空にするかJourneyを完了したときにエグジットします。
  3. Journeyに再エントリーする資格があります:
    • Custom Eventscart_updatedイベントが実行されるたび
    • Tags:Journeyから最後にエグジットしてから1日が経過し、セグメントに含まれている場合。
Journeyの設定を保存してください。

Journeyのステップ

ユーザーはエントリールールに基づいてJourneyにエントリーします。これは通常、イベント/タグが受信されてから数分以内に発生します。 ユーザーは、終わりに到達するかエグジットルールが満たされるまで、Journeyをステップごとに進みます。 基本的なカート放棄Journeyの場合、2つのことを行います:
  1. ユーザーにカートを空にする十分な時間を与える(購入するか手動でカートを空にする)
  2. カートを空にしない場合、カート内のアイテムについてリマインダーメッセージを送信する
まずJourneyにWaitステップを追加してこれを実現します。
  • 待機時間を希望する長さに設定します。購入意思がまだあるうちにメッセージを送信できるように、1 hourに設定することを推奨します。
Messageステップを追加します。
  • ステップ3で作成したAbandoned Cartプッシュ通知テンプレートを選択します。
基本的なカート放棄Journeyのステップ
基本的なカート放棄Journeyの設定が完了しました。ユーザーがJourneyにエントリーすると、1時間待機します。Journeyからエグジットしない場合、カート放棄プッシュ通知を受信します。

高度なJourneyセットアップ

時間の経過とともにより多くのメッセージを送信するようにJourneyを拡張して、より高い回復率を実現します。

メッセージシーケンス

非常に一般的な高パフォーマンスのケイデンスは:
  1. 1時間後に最初のメッセージを送信(このガイドで完了)。
  2. 1日間の別のWaitステップを追加し、2番目のメッセージを送信(カート更新後約24時間)。
  3. 2日間の別のWaitステップを追加し、3番目のメッセージを送信(カート更新後約72時間)。

メッセージの種類とコンテンツ

OneSignalで設定したチャネルに応じて、オムニチャネルアプローチを使用するとより良い結果が得られます。
  1. このガイドでは、最初の1時間後にプッシュ通知メッセージを送信する方法を示しています。これは、ユーザーがまだオンラインである可能性がある間に販売を獲得するための有用なリマインダーとして使用されます。
  2. 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を選択してください。

よくある質問

カートトラッキングにCustom EventsとTagsのどちらを使用すべきですか?

Custom Eventsはほとんどの実装に推奨されます。よりリッチなデータをサポートし、Journeyエントリールールでのプロパティベースのフィルタリングが可能で、同じイベントが再度発生したときに自動的に再エントリーを処理します。Tagsは、カートの存在を追跡するだけで十分な、よりシンプルなユースケースで機能しますが、手動でのセグメント作成と再エントリー設定が必要です。

最初のリマインダーを送信するまでどのくらい待つべきですか?

1〜2時間が一般的な出発点です。購入意欲がまだ新鮮な間に、ユーザーが自然に戻るのに十分な時間を与えます。さまざまな待機時間をテストし、Journey分析を使用してオーディエンスに最適な方法を見つけましょう。

Journey中にユーザーがカートを更新した場合はどうなりますか?

Custom Eventsの場合、ユーザーは現在のJourneyインスタンスをエグジットし(cart_updatedがエグジット条件として発火するため)、更新されたイベントデータで即座に再エントリーします。Tagsの場合、タグが引き続き存在するため、ユーザーは同じJourneyインスタンスに留まります — 再エントリー期間が経過した後にエグジットしてから再エントリーします。
サポートが必要ですか?サポートチームとチャットするか、support@onesignal.comにメールしてください以下を含めてください:
  • 発生している問題の詳細と再現手順(利用可能な場合)
  • OneSignal App ID
  • 該当する場合は、External IDまたはSubscription ID
  • 該当する場合は、OneSignalダッシュボードでテストしたメッセージのURL
  • 関連するログまたはエラーメッセージ
お気軽にお問い合わせください!