概要
このチュートリアルでは、一般的な予約ワークフローを設定します:- ユーザーが予約を完了した後に予約確認メールを送信します。
- ユーザーが予約を開始したが時間内に完了しなかった場合に回復メールを送信します。
- 2つのカスタムイベント(
booking_started、booking_complete) - 完了対放棄で分岐する1つのJourney
- 確認詳細用の予約Data Feed
- 回復インセンティブ用のオプションのクーポンData Feed
セットアップフロー
- アプリが
booking_startedカスタムイベントを追跡します。 - これによりユーザーがJourneyに入ります。
- Journeyは
booking_completeイベントを待ち、時間内に受信されない場合、フォローアップリマインダーを送信します。 - 予約が完了すると、OneSignalは送信時に予約Data Feedを呼び出し、最新の予約詳細を含む確認メールを送信します。
- 予約が待機ウィンドウ内で完了しない場合、Journeyは有効期限パスに従い、回復メールを送信します。
セットアップ
前提条件
開始する前に、以下を確認してください:- メール チャネルが有効化されたOneSignalアプリ
- 予約および/またはクーポンデータをJSONで返すことができるバックエンドエンドポイント
- アプリ、バックエンド、OneSignalのExternal ID間で共有される安定したユーザー識別子
- カスタムイベントへのアクセス
1. 予約イベントの追跡
以下のカスタムイベントを追跡します。これらはアプリ(SDKを使用)またはバックエンド(REST APIを使用)から送信できます。 イベント名:booking_started— ユーザーが予約フローを開始したときbooking_complete— 予約が正常に完了したとき
イベントの追跡時とバックエンドからデータを返すときに同じユーザー識別を使用してください。不一致のIDは、パーソナライゼーションが欠落する最も一般的な原因です。
2. Data Feedエイリアスの作成
OneSignalで、設定 > Data Feedsに移動し、以下のエイリアスを作成します。 予約Data Feed: このフィードを使用して、送信時に最新の予約詳細を取得します。- エイリアス:
booking_data - メソッド: GET
- URL:
エンドポイント例
JSON
- エイリアス:
coupon - メソッド: GET
- URL:
エンドポイント例
JSON
3. メールテンプレートの作成
予約確認メール:
件名:予約回復メール
件名:- クーポンData Feedを使用
- クーポンData Feedを使用しない
Data Feedフィールドが欠落している場合に空白コンテンツを防ぐため、Liquidには常に
defaultフィルターを含めてください。4. Journeyの構築
- OneSignalで、メッセージ > Journeys > Journeyを作成に移動
-
エントリートリガーを以下に設定:
- カスタムイベント:
booking_started
- カスタムイベント:
-
Wait Untilステップを追加:
- 条件: カスタムイベントが発生
- イベント名:
booking_complete - 最大待機時間: 10分
- 有効期限パスを有効化
-
ブランチを設定:
- 完了: 予約確認メールを送信
- Data Feed:
booking_data
- Data Feed:
- 期限切れ: 回復メールを送信
- Data Feed:
coupon
- Data Feed:
- 完了: 予約確認メールを送信
有効期限ブランチにより、アプリで追加のロジックなしに放棄を処理できます。詳細は以下を参照:
- Journey設定 - カスタムイベントのエントリーおよび出口ルールの詳細
- Journeys アクション - Wait Untilステップと有効期限ブランチの詳細
5. テストと検証
イベントの確認
アプリまたはバックエンドからカスタムイベントをトリガーして確認します。 OneSignalで、Analytics > カスタムイベントに移動し、以下が表示されることを確認:- External IDに対して
booking_startedイベントが表示される - External IDに対して
booking_completeイベントが表示される
Data Feedの確認
既知のユーザーIDを使用してData Feedエンドポイントを手動で呼び出し、以下を確認:- 200レスポンスが返される
- すべての予期されるフィールドが存在する
メールの確認
Journeyエディターからテストメッセージを送信し、以下を確認:- 予約メールに実際の予約詳細が含まれている
- 回復メールに有効なクーポンが含まれている
- Liquid変数が空でレンダリングされていない
パーソナライゼーションが欠落している場合は、Data FeedリクエストのユーザーIDがJourneyをトリガーしたユーザーと一致することを確認してください。
例:Data Feed実装
Node.js Data Feedエンドポイントの例
Node.js Data Feedエンドポイントの例
よくある問題
メールに空の値が表示される
- Data Feedが404を返した
- JSONレスポンスでフィールド名が変更された
- ユーザー識別の不一致
Journeyが分岐しない
booking_completeイベントが追跡されていない- イベント名の不一致(大文字小文字を区別)
- 待機ウィンドウの外でイベントが発生
Data Feedが401または403を返す
- APIキーが欠落または無効
- Data Feed設定でヘッダーが設定されていない
次のステップ
- より高度なJourney条件のためにイベントプロパティ(サービスタイプ、価格)を追加
- プッシュまたはSMSリマインダーなど、追加の回復ステップを追加
- 重複する回復メッセージを防ぐためにJourney出口ルールを使用