メインコンテンツへスキップ
Custom Eventsを使用すると、イベントプロパティ(商品名、価格、URL、配列など)を利用してJourneyメッセージをパーソナライズできます。 イベントプロパティがテンプレートで利用可能になるのは、そのイベントが以下の条件を満たす場合のみです:
  • Journeyのエントリーをトリガーする、または
  • Journey内のWait Until条件に一致する
保存されたイベントプロパティは、Liquid構文を使用してアクセスできます。

Custom Eventパーソナライズの仕組み

以下の手順に従って、Journeyメッセージにイベントプロパティを追加します:
1

プロパティ付きのCustom Eventを送信する

Custom Eventsペイロードの例:
JSON
2

Journeyメッセージテンプレートでイベントプロパティを参照する

Liquid構文を使用してイベントプロパティにアクセスします。

一般的なLiquidアクセスパターン

ネストされたLiquidアクセスパターン

ドット記法とブラケット記法を使用して、ネストされたプロパティにもアクセスできます:
Liquid
無効なLiquidまたは存在しないプロパティは空文字列としてレンダリングされます。メッセージは送信されます。フォールバックを設定するには、defaultフィルターを使用してください。
3

Journeyを作成する

Custom Eventをエントリールールおよび/またはWait Until条件として使用するようにJourneyを設定します。テンプレートを含むメッセージノードを追加します。

イベントプロパティの保存ルール

  • エントリールールとWait Untilステップを組み合わせることで、Journey内で複数のイベントを使用できます。
  • 最大値:1ユーザーあたり1 Journeyインスタンスにつき保存されるイベントプロパティは100件まで(古いものから削除されます)。
  • イベントプロパティはユーザーごと、Journeyインスタンスごとに保存されます。
  • エントリー前に送信されたイベントにはアクセスできません。
  • ユーザーがJourneyを終了すると、イベントプロパティはクリアされます。
あるJourneyに保存されたイベントは、別のJourneyからアクセスすることはできません。

Custom Event Liquidリファレンス

Journey内で保存されたイベントにアクセスするには、以下のオブジェクトを使用します。
journey.first_event
このJourneyインスタンスで最初に保存されたイベントです。
  • Custom Eventエントリールールを使用している場合、これはJourneyへのエントリーを引き起こしたイベントです。
  • Custom Eventエントリールールを使用していない場合、これはWait Until条件に一致して保存された最初のイベントです。
Liquid
journey.last_event
このJourneyインスタンスで最も最近に保存されたイベントです。
  • イベントが1つしか保存されていない場合、first_eventlast_eventは同じ結果を返します。
Liquid
journey.event.EVENT_NAME
特定の名前を持つ最も最近に保存されたイベントです。
  • EVENT_NAMEをイベント名(例:purchase)に置き換えてください。
  • 同じイベント名が複数回使用された場合、最も最近のインスタンスが返されます。
Liquid
イベント名にスペースや特殊文字が含まれる場合は、ブラケット記法を使用してください。イベントの例: "name": "order status"
Liquid
journey.all_events
array
このJourneyインスタンスで保存されたすべてのイベントで、保存された順序で格納されています。
  • forループを使用してイテレーションできます。
Liquid
  • journey.first_eventjourney.all_events[0]の省略形です。
  • journey.last_eventは配列内の最も最近のイベントの省略形です。

例:Custom Eventsを使用したカゴ落ちテンプレート

この例では、Custom Eventsを使用してカゴ落ちメッセージをパーソナライズする方法を示します。カゴ落ちチュートリアルをベースにしています。 Custom Eventセットの例:
JSON

メールテンプレート

この例では、以下を表示するメールテンプレートの作成方法を示します:
  • カート内のアイテム数
  • forループを使用した各商品の画像、名前、数量、価格
  • 顧客固有のカートURLにリンクするボタン

カゴ落ちメールテンプレートの例

1

メールテンプレートを作成する

Messages > Templates > New Email Templateに移動し、ドラッグ&ドロップエディターを開きます。
2

レイアウト構造を追加する

5つの行を作成します:
  • 行1、2、4:段落ブロックを含む1列
  • 行3:HTML | 段落 | 段落 | 段落の4列
  • 行5:ボタンブロックを含む1列

カゴ落ち用の基本メールテンプレート

3

アイテム数を表示する

行1に以下を追加します:
Liquid
文法的には「1 item」と「2 items」を条件分岐で使い分けることもできますが、カゴ落ちメールでは複数形で問題ない場合がほとんどです。
Liquid
4

forループを開始する

forループを使用して、各カートアイテムに対して商品表示行を繰り返します。行2(ループ開始)に以下を追加します:
Liquid
これが行うこと:
  • cart配列内の各オブジェクトをイテレーションするループを開始します
  • 現在のアイテムを表す一時変数productを作成します
  • {% for %}{% endfor %}の間のすべてが、カートアイテムごとに1回繰り返されます
  • productは任意の名前(例:itemcartItem)に変更できます。ただし一貫して使用してください
forループの配置について:{% for %}構文は必ず独立したテキストブロック行に配置してください。他のコンテンツを含む複数列の行の中に入れると、一部のメールクライアントでレンダリングが壊れる可能性があります。
5

商品の詳細を表示する

この4列の行は、画像、名前、数量、価格を表示します。ループ内にあるため、すべてのカートアイテムに対して繰り返されます。行3(商品詳細)を設定します:列1 - HTMLブロック(商品画像):
列2~4 - テキストブロック(商品名、数量、価格):
  • 列2:{{product.product_name}}
  • 列3:{{product.product_quantity}}
  • 列4:{{product.product_price}}
ループの動作:
  • 最初のイテレーションでは、product = カート配列の最初のオブジェクト
  • {{product.product_image}}は最初のアイテムの画像を取得します
  • 2回目のイテレーションでは、product = 2番目のオブジェクト
  • すべてのカートアイテムに対して行が自動的に繰り返されます
フィールド名の一致: product_imageなどのキーは、イベントペイロードと完全に一致する必要があります(大文字小文字を区別)。不一致の場合、空文字列としてレンダリングされます。
6

forループを終了する

繰り返しを停止する場所を示すためにループを閉じます。行4(ループ終了)に以下を追加します:
Liquid
すべての{% for %}には対応する{% endfor %}が必要です。これがないとメールのレンダリングが壊れます。
7

カートURLボタンを追加する

行5のボタンブロックで、アクションURLを以下に設定します:
Liquid

スタイリングなしのカゴ落ち用基本メールテンプレート完成版

8

テンプレートをテストする

  • テンプレートを空のJourneyに追加し、エントリールールをCustom Eventに設定します。
  • Journeyを有効にし、Custom Event APIを使用して自分自身をエントリーさせます。
  • データが正しく表示されることを確認します。
成功です!テンプレートに独自のスタイリングを適用できるようになりました。ドラッグ&ドロップでメールをデザインするを参照してください。

プッシュテンプレート

プッシュ通知はスペースが限られているため、1つのアイテムを表示し、合計数を記載します。 メッセージフィールド: 条件文を使用して、正しい文法でアイテムとカウントを表示します。
Liquid
画像フィールド:
Liquid
起動URLフィールド:
Liquid
テスト用のJourneyに追加し、別のCustom Event API呼び出しで自分自身をエントリーさせて、テストプッシュ通知を送信します。以下のような通知が表示されるはずです:

カゴ落ちプッシュテンプレートの例

成功です!さらにテンプレートを作成して、カゴ落ちJourneyで使用できます。

トラブルシューティングとベストプラクティス

よくある間違い: ベストプラクティス:
  • テンプレートは本番環境に適用する前に必ずテストしてください
  • オプションのプロパティにはdefaultフィルターを使用してください
  • イベントスキーマがテンプレートの期待と一致していることを検証してください

関連ページ

メッセージパーソナライズ

Custom Eventsと他の方法を使い分けるタイミングを含む、OneSignalのすべてのパーソナライズオプションの概要です。

Custom Events

SDKまたはAPIを使用したCustom Eventsの実装と送信の完全ガイドです。

Journeys概要

トリガー、条件、アクションを使用した自動メッセージングワークフローの構築方法を学びます。

Journey設定

イベントトリガーのエントリールールとJourneyの動作を設定します。

Wait Untilアクション

Wait Untilノードを使用して、Journey進行中に追加のイベントを保存します。

Liquid構文の使用

フィルター、条件分岐、ループ、文字列操作を含むLiquidの完全リファレンスです。

テンプレート

Journeysで使用する再利用可能なメッセージテンプレートを作成・管理します。
サポートが必要ですか?サポートチームとチャットするか、support@onesignal.comにメールしてください以下を含めてください:
  • 発生している問題の詳細と再現手順(利用可能な場合)
  • OneSignal App ID
  • 該当する場合は、External IDまたはSubscription ID
  • 該当する場合は、OneSignalダッシュボードでテストしたメッセージのURL
  • 関連するログまたはエラーメッセージ
お気軽にお問い合わせください!