OneSignalは、大規模にメッセージコンテンツをパーソナライズする ためのいくつかの方法を提供します。このガイドは、プッシュ、メール、SMSのためにOneSignalダッシュボードにあるCSVアップロード機能を備えたダイナミックコンテンツの使用に焦点を当てています。
主な利点:
CSVを使用して大規模にパーソナライズ – 1つのメッセージ、すべての人にカスタムエクスペリエンス
多言語サポート – ユーザーごとに自動的に言語を切り替え
ダイナミックパーソナライゼーション – コンテンツはユーザープロパティ(言語、地域、キャンペーンID)に適応
チームコラボレーション – 非技術ユーザーがCSVファイルでコンテンツを編集
HTML インジェクション(メール) – CSVセルにHTMLマークアップを含めて、リッチなメールコンテンツを動的に構築
クロスチャネル互換性 – チャネル全体でCSVロジックを再利用
一般的なユースケース:
多言語オンボーディングまたはマーケティング
地域固有のプロモーション
場所ごとのイベント発表
キャンペーンベースのパーソナライゼーション
CSVを使用したダイナミックコンテンツのセットアップ手順
クイックリファレンス:
コンテンツのバリエーションを含むCSVファイルを作成します。
Liquid構文のdynamic_contentプロパティを使用してCSVデータをメッセージにマッピングします。
OneSignalダッシュボードから新しいメッセージまたはテンプレート を作成します。
Dynamic Content またはPersonalization ボタンを選択します。
CSVファイルをアップロードしてメッセージを送信します。
CSV要件と設定
ファイルサイズ: 200 KB未満
列ヘッダー:
タグキーの最初の列ヘッダーを予約するか、セクションを参照するために空白のままにします
英数字と下線のみ
スペースの代わりに下線(_)を使用します
エンコーディング: UTF-8
空白のCSVから始めるか、提供されたテンプレートを使用します。テンプレートは、メッセージおよびテンプレートエディターでDynamic Content またはPersonalization ボタンを選択すると提供されます。
利用可能なテンプレート:
多言語 – 言語ごとにコンテンツをローカライズ
コンテンツパーソナライゼーション – データタグごとにコンテンツをカスタマイズ
CSVの例
このガイドでは、以下のCSVデータの例を使用します。
多言語テンプレートの例
コンテンツパーソナライゼーションテンプレートの例
列ヘッダーをサポートされている言語コード にマッピングします。
各言語コードの各行に翻訳を追加します。
複数のセクション(メールなど)がある場合は、最初の列をセクション名として指定します。
この例には以下が含まれます:
3つの言語:英語、スペイン語、フランス語。
2つのセクション:「section_1」と「section_2」。
最初の列ヘッダーをタグキーにマッピングし、基礎となる行を参照する値にマッピングします。ユーザーにタグを追加する方法の詳細については、タグ を参照してください。
残りの列ヘッダーをパーソナライズするセクションまたはコンポーネントにマッピングします。
この例では:
タグキーはcampaign_idで、可能な値はAとBです。
3つのコンポーネントがあります:「title」、「message」、「url」。
重要: CSVヘッダーからスペースと非英数字文字を削除するか、
Liquidでハッシュ表記を使用してください。
CSVデータをメッセージコンテンツにマッピングする
Liquid構文 を使用して、dynamic_contentプロパティを使用してメッセージ内のCSVデータを参照します:
<!-- オプション1:コンポーネントから先にアクセス -->
{{ dynamic_content . file_name . message_component [user_property] }}
<!-- オプション2:ユーザープロパティから先にアクセス -->
{{ dynamic_content . file_name [user_property]. message_component }}
パラメータ:
dynamic_content – CSVデータを参照するために使用されるプロパティ名
file_name – CSVファイル名(.csv拡張子なし)
message_component – パーソナライズする特定のメッセージコンポーネント。これは、CSV列ヘッダーまたは最初の行の静的テキストです。
user_property – 参照するユーザープロパティ 。
フォールバックコンテンツ:
CSVルックアップまたはダイナミックコンテンツが失敗した場合にメッセージがレンダリングされることを保証するために、常にハードコードされた文字列defaultフォールバックを使用してください。
{{ dynamic_content . my_template . header [user.language] | default: "最新の更新へようこそ" }}
これは、CSVルックアップまたはダイナミックコンテンツが失敗した場合、メッセージがフォールバックテキスト"最新の更新へようこそ"をレンダリングすることを意味します。
これにより以下が保証されます:
利用可能な場合はダイナミックコンテンツが使用されます
ダイナミックコンテンツが失敗した場合はハードコードされたメッセージが表示されます
ユーザーが空白のコンテンツを受け取ることはありません
多言語メッセージの例
コンテンツパーソナライゼーションメッセージの例
, en, es, fr
section_1, Hello, Hola, Bonjour
section_2, Thanks for shopping with us..., Gracias por comprar con nosotros..., Merci pour votre achat avec nous...
file_nameはtranslations.csvです。
message_componentは最初の列の行section_1とsection_2にあります。
user_propertyは言語コードに一致する列ヘッダーです。user.languageプロパティ を使用してユーザー上でこれを参照できます。
{{ dynamic_content . translations . section_1 [user.language] }}
{{ dynamic_content . translations . section_2 [user.language] }}
(推奨)デフォルトフォールバック付き多言語メッセージのLiquid構文
{% assign supported_langs = "en,es,fr,de" | split: "," %}
{% assign lang = user . language | default: "en" %}
{% unless supported_langs contains lang %}
{% assign lang = "en" %}
{% endunless %}
{{ dynamic_content . translations . section_1 [lang] | default: "Hello" }}
{{ dynamic_content . translations . section_2 [lang] | default: "Thanks for shopping with us..." }}
content_personalization_template.csv
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
file_nameはcontent_personalization_template.csvです。
user_propertyはタグキー:campaign_idにマッピングされます。
message_componentは、パーソナライズするメッセージのセクションにマッピングされた列ヘッダーです(title、message、またはurl)。
コンテンツパーソナライゼーションメッセージのLiquid構文
{{ dynamic_content . content_personalization_template [campaign_id]. title }}
{{ dynamic_content . content_personalization_template [campaign_id]. message }}
{{ dynamic_content . content_personalization_template [campaign_id]. url }}
(推奨)デフォルトフォールバック付きコンテンツパーソナライゼーションメッセージのLiquid構文
{% assign cid = campaign_id | default: "default" %}
{% unless dynamic_content . content_personalization_template [cid] %}
{% assign cid = "default" %}
{% endunless %}
{{ dynamic_content . content_personalization_template [cid]. title | default: "最新のオファー" }}
{{ dynamic_content . content_personalization_template [cid]. message | default: "新着を見る" }}
{{ dynamic_content . content_personalization_template [cid]. url | default: "https://example.com" }}
defaultフォールバック付きのLiquidを使用して、件名、プリヘッダー、ボタン
ラベル、およびURLを更新します。
CSVセルでのHTMLの使用(メールのみ)
CSVセルにHTMLマークアップを直接含めて、リッチコンテンツをメールに注入することができます。これは、ユーザープロパティに基づいてメールのセクション全体(バナー、CTAなど)を入れ替えるのに便利です。
campaign_id, banner_html
spring_sale, <div style="background:#4CAF50;padding:16px;text-align:center;"><a href="https://example.com/spring" style="color:#fff;font-size:18px;">Shop the Spring Sale</a></div>
default, <div style="background:#333;padding:16px;text-align:center;"><a href="https://example.com" style="color:#fff;font-size:18px;">See What's New</a></div>
メールテンプレートでHTMLセルを参照します:
{{ dynamic_content . promo_banners [campaign_id]. banner_html | default: "<p>Check out our latest offers</p>" }}
HTMLはメール本文に直接レンダリングされるため、メールクライアントがサポートするインラインスタイルとマークアップを使用できます。
CSVセルのHTMLはメールでのみサポートされています。プッシュとSMSチャネルはコンテンツをプレーンテキストとしてレンダリングし、HTMLマークアップを解釈しません。
テンプレートの更新
ダッシュボード経由でCSVを再アップロードするか、テンプレート更新API のdynamic_contentプロパティを使用します。
キーの特殊文字
ハッシュ表記 (非英数字キーの場合):
{{ dynamic_content . file_name [ "!the_row!" ][ "&the_column&" ] }}
ドット表記 (標準キーの場合):
{{ dynamic_content . file_name . the_row . the_column }}
よくある質問
CSVを使用したダイナミックコンテンツをテストするにはどうすればよいですか?
メールを使用してメッセージの複数のバリエーションをテストします。
メールで+アドレッシングを使用して複数のバリエーションをテストします:username+test@example.com。
上記の多言語およびコンテンツパーソナライゼーションの例に従ってタグを設定します。
複数のユーザーとデータタグのアップロードについての詳細は、インポート を参照してください。
CSVを使用したダイナミックコンテンツと他のパーソナライゼーションオプションをどちらを使用するか
ダッシュボードからメッセージを送信し、CSVファイルでユーザーデータにアクセスできる場合は、CSVを使用したダイナミックコンテンツ を使用してください。メッセージにダイナミックコンテンツを追加する他の方法については、メッセージパーソナライゼーション または多言語メッセージング を参照してください。
関連ページ
メッセージパーソナライゼーション OneSignalで利用可能なすべてのパーソナライゼーションオプションの概要。
Liquid構文の使用 OneSignalメッセージの完全なLiquid構文リファレンス。
インポート ユーザーデータとセグメントをOneSignalにアップロードします。
テンプレート 再利用可能なメッセージテンプレートを作成します。