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

概要

ダイナミックコンテンツを使用すると、各オーディエンスに対して個別のバージョンを作成することなく、メッセージを大規模にパーソナライズできます。多言語メッセージを送信する場合でも、地域やキャンペーンごとにコンテンツをカスタマイズする場合でも、ダイナミックコンテンツを使用すると、各ユーザーに自動的に調整される1つのメッセージを定義できます。 これは、コンテンツのバリエーションを含むデータを含むCSVファイルをアップロードするか、テンプレートAPIをプログラムで使用し、Liquid構文を使用してメッセージ内でそれらの値を参照することで行います。メッセージが送信されると、OneSignalはデータタグに基づいて各ユーザーに適切なコンテンツを取得します。 ダイナミックコンテンツは、プッシュ、メール、SMSで機能し、次の用途に最適です:
  • 多言語オンボーディングまたはマーケティングフロー
  • 地域またはセグメント固有のプロモーション
  • 外部キャンペーンデータによるパーソナライゼーション
主な利点:
  • 大規模なパーソナライゼーション – 数十のメッセージバリアントを作成および管理することなく、カスタムエクスペリエンスを提供します。
  • 多言語サポート – 各ユーザーの優先言語で自動的に表示される1つのメッセージを作成します。
  • ダイナミックセグメンテーション – 言語、地域、プラン、またはcampaign_idなどのカスタムタグなどのユーザープロパティに基づいてメッセージコンテンツを変更します。
  • 摩擦のないコラボレーション – 翻訳者または非技術チームが、OneSignalログインなしでCSVファイル内でメッセージコンテンツを直接作成および編集できるようにします。
  • クロスチャネル互換性 – プッシュ、メール、SMSキャンペーン全体で同じCSVロジックを使用します。
一般的なユースケース:
  • 国または都市ごとのイベント発表
  • キャンペーンIDまたは購入履歴に基づくパーソナライズされたプッシュ通知
  • ユーザーグループ全体で複数の件名またはメッセージをテストする
メッセージのパーソナライズに関するその他のオプションについては、メッセージパーソナライゼーションを参照してください。

ダイナミックコンテンツのセットアップ

新しいメッセージまたはテンプレートを作成します。 ダッシュボードから:Dynamic Contentを選択します。
  • メッセージコンテンツをデータタグにマッピングするCSVファイルをアップロードします。
テンプレートAPIから:dynamic_contentプロパティを使用します。
  • ダイナミックコンテンツが頻繁に変更される場合に最適なソリューションです。

プッシュ作成エディターにあるDynamic Contentボタン。

コンテンツをフォーマットする

空白のファイルから開始するか、提供されているテンプレートの1つを選択できます:
  • 多言語
  • コンテンツパーソナライゼーション

OneSignalが提供するCSVテンプレートオプション。

APIの詳細については、次を参照してください:

CSV要件

  • ファイルサイズは200 KB未満である必要があります
  • 列ヘッダー:
    • 英数字のみ
    • スペースの代わりにアンダースコア(_)を使用します
    • 特殊文字を避けます
  • スプレッドシートエディターでUTF-8エンコーディングを確保します
  • 多言語の例
  • コンテンツパーソナライゼーションの例
subscription.languageプロパティをセクションごとに異なる翻訳にマッピングします。

ExcelのVLOOKUP式と同様に、ユーザー属性をCSVの対応するコンテンツと照合します。

メッセージでダイナミックコンテンツを参照する

dynamic_contentからパーソナライズされたコンテンツを表示するには、このLiquid構文を使用します。
{{dynamic_content.file_name.section_name[data_tag_or_property]}}
置き換え:
  • file_name:CSVファイル名(.csvなし)。
  • section_name:行の最初の列の値
  • data_tag_or_property:データタグまたはサブスクリプションプロパティに一致する列ヘッダー

フォールバックコンテンツ

フォールバックコンテンツを追加すると、ユーザーが空白のコンテンツを受け取るのを防ぐことができます。次の場合にメッセージがレンダリングされることを保証します:
  • ユーザーが一致するタグまたはプロパティを持っていない。
  • ユーザーがdynamic_contentで利用できないタグまたはプロパティを持っている。

ユーザーが一致するタグまたはプロパティを持っていない

subscription.languageが存在しない場合は、代わりにdynamic_contentからデフォルト列を参照します。
{% assign lang = subscription.language | default: "default" %}
{{ dynamic_content.content_personalization_template.title[lang] }}

ユーザーがdynamic_contentで利用できないタグまたはプロパティを持っている

subscription.languageがサブスクリプションに存在するが、dynamic_contentにない場合は、代わりにデフォルト列を参照します。
// add each language that's available in your dynamic_content:
{% assign supported_langs = "de,en,es,fr,it,default" | split: "," %}
{% assign lang = subscription.language | default: "default" %}

// check if subscription language is in your supported languages, if not, assign language as 'default'
{% unless supported_langs contains lang %}
  {% assign lang = "default" %}
{% endunless %}

{{ dynamic_content.content_personalization_template.title[lang] }}

多言語メール

translations.csvを使用してメールをローカライズします:
  • {{dynamic_content.translations.section_1[subscription.language]}}
  • {{dynamic_content.translations.section_2[subscription.language]}}

多言語の例のためにLiquid構文を追加する方法を示す例。

Liquidを使用して件名、プリヘッダー、ボタンラベル、URLを更新します。

パーソナライズされたプッシュメッセージ

ユーザー固有のプッシュメッセージにはcontent_personalization_template.csvを使用します。各ユーザーのcampaign_idタグが、使用する行を決定します。
前提条件:各ユーザーはcampaign_idという名前の_データタグ_を持っている必要があります。送信時に、OneSignalはユーザーのcampaign_id値を使用して、CSVの一致する行を選択します。

CSVフォーマット(campaign_idでキー付けされた行)

campaign_id,title,message,url
campaign_123,Flash deal for you,Tap to claim,https://example.com/flash
campaign_456,Weekend picks are here,See what's trending,https://example.com/weekend
default,Our latest offers,See what's new,https://example.com
  • 最初の列(campaign_id)は、ユーザーのcampaign_idタグ値と一致する必要がある行キーです。
  • 他の列(titlemessageurl)は、プッシュに挿入するフィールドです。
  • タグなしまたは不明な値でも有効なコンテンツがレンダリングされるように、default行を含めます。

LiquidがCSVにマップする方法

{{ dynamic_content.content_personalization_template[campaign_id].title }}
{{ dynamic_content.content_personalization_template[campaign_id].message }}
{{ dynamic_content.content_personalization_template[campaign_id].url }}
  • content_personalization_template → CSVファイル名(.csvを省略)。
  • [campaign_id] → 最初の列の値がユーザーのcampaign_idタグと等しい行を選択します。
  • .title / .message / .url → その行から選択された列を返します。

フォールバックの例(推奨)

{% assign cid = campaign_id | default: "default" %}

{% unless dynamic_content.content_personalization_template[cid] %}
  {% assign cid = "default" %}
{% endunless %}

{{ dynamic_content.content_personalization_template[cid].title }}
{{ dynamic_content.content_personalization_template[cid].message }}
{{ dynamic_content.content_personalization_template[cid].url }}
ヘッダールール: 英数字/アンダースコアを優先します(例:campaign_idtitle)。スペースまたは特殊文字を使用する必要がある場合は、ハッシュ表記でアクセスします:
{{ dynamic_content.file_name["row key"]["column key"] }}
Dynamic Content personalization Liquid example

コンテンツパーソナライゼーションの例のためにLiquid構文を追加する方法を示す例。


テストとプレビュー

1

テストCSVを作成する

多言語テスト:
  • 列:emaillanguage
パーソナライゼーションテスト:
  • 列:external_idcampaign_id

アップロードしてメールテスターのセグメントを作成するCSVの例。


複数のバリエーションをテストするには、メールで+アドレッシングを使用します:username+test@example.com

external_idとタグcampaign_idを持つテスターのセグメントをアップロードして作成するCSVの例。

2

テストセグメントをアップロードする

SubscriptionsまたはSegments > Upload/Import Usersに移動します。最初の列を識別子として設定します。他のすべての列は、ユーザープロパティまたはデータタグとして扱われます。

必要に応じて繰り返すために、テスターのセグメントを作成します。

ユーザーデータのアップロードの詳細については、Importを参照してください。
3

メッセージを表示する

テストメッセージを送信した後、受信トレイまたはデバイスをチェックして表示を確認します。
dynamic_contentがレンダリングされていない場合は、フォールバックコンテンツを参照してください

ダイナミックコンテンツで送信されたメールを示す例。

ダイナミックコンテンツで送信されたプッシュを示す例。

これらのテンプレートとCSVを使用して、パーソナライズされたメッセージングをスケールできるようになりました。

使用上の考慮事項

ダイナミックコンテンツとカスタムデータのどちらを使用するか

  • ダイナミックコンテンツは、多様な言語またはパーソナライズされたメッセージブロックに使用します。
  • **カスタムデータ**は、単一言語でのシンプルなインラインパーソナライゼーションに使用します。

テンプレートの編集

CSVを再アップロードするか、Update Template APIdynamic_contentプロパティを使用して更新します。

キーの特殊文字

キーに非英数字文字が含まれている場合は、ハッシュ表記を使用します:
{{ dynamic_content.file_name["!the_row!"]["&the_column&"] }}
標準の英数字キーにはドット表記を使用します:
{{ dynamic_content.file_name.the_row.the_column }}

関連記事