このページ:マーケターが設定された統合を適用して、メール、SMS、プッシュコンテンツをパーソナライズし、API 呼び出しを別の API に連結して、よりリッチで動的なメッセージを作成する方法について説明します。
コンテンツで外部統合を使用する前に、統合の操作の説明に従って、管理者が各統合(エンドポイント、認証、ポリシー、応答ペイロード、アクティベーション)を 設定およびアクティブ化 していることを確認してください。
フラグメントごとに最大 3 個、メッセージごとに最大 5 個の統合を追加できます。 フラグメントのみから追加した統合は、5 個にはカウントされません。
コンテンツへの統合パーソナライゼーションの適用 apply-integration-personalization
マーケターは、設定済みの統合を使用してコンテンツをパーソナライズできます。 次の手順に従います。
-
キャンペーンコンテンツにアクセスし、テキストまたは HTML コンポーネントから「パーソナライゼーションを追加」をクリックします。
-
「統合」セクションに移動し、「統合を開く」をクリックして、アクティブな統合をすべて表示します。
Journey Optimizer フラグメントは統合で使用できますが、アウトバウンドチャネルのみをサポートすることに注意してください。 フラグメントを公開すると、既存のジャーニーやキャンペーンへの影響を回避するために、新しい統合の追加と保存が無効になります。
-
統合を選択し、「保存」をクリックします。
-
ピルモードを有効にして、高度な統合メニューをロック解除します。
-
統合パーソナライゼーションを作成する際、統合ヘルパーには、エラーまたは欠落しているデータがデフォルトコンテンツとどのようにやり取りするかを定義する
requiredフィールドが含まれます。-
required=true(既定値):そのメッセージのレンダリングが停止します。 送信はExternalDataLookupExclusionで除外され、その除外は メッセージフィードバックデータセット に記録されます。 -
required=false:結果変数がnullに設定され、レンダリングが続行されます。 テンプレートでデフォルトのテキスト、フォールバック、条件ロジックを使用すると、統合がデータを返さない場合にプロファイルは空のコンテンツを受信しません。
-
-
統合設定を完了するには、設定時に以前指定した統合属性を定義します。
これらの属性には、一定のままの静的値や、ユーザープロファイルから情報を動的に取り込むプロファイル属性のいずれかを使用して値を割り当てることができます。
-
統合属性を定義したら、
アイコンをクリックして、パーソナライズされたメッセージに対してコンテンツの統合フィールドを使用できるようになります。
note NOTE テンプレート内のトークンには、管理者が統合設定で公開したフィールドのみを使用する必要があります。 例えば、 temperatureが公開されている場合に{{weatherResponse.temperature}}は有効ですが、humidityが公開されていない場合に{{weatherResponse.humidity}}はエディターで却下されます。 -
「保存」をクリックします。
これで、統合パーソナライゼーションがコンテンツに正常に適用され、設定した属性に基づいて各受信者がカスタマイズされた関連性の高いエクスペリエンスを受信できるようになりました。
ある API 呼び出しの別の API 呼び出しへのマッピング map-integration-chain
統合を連結して、1 つの呼び出しの結果を次の呼び出し(例:パスセグメント、ヘッダー、クエリパラメーター)にフィードできます。 呼び出しは同じメッセージ内で順番に実行されるので、カスタムコードなしで、よりリッチなパーソナライゼーションがサポートされます。
開始する前に、次のことを確認します。
- 必要なすべての統合が、管理者により設定およびアクティブ化されていること。 統合の設定を参照してください。
- 統合の設定で、変数パスのプレースホルダー、ヘッダー、クエリパラメーターが、マーケター向けのラベルを使用して設定されていること。
- オーサリング時に表示できるよう、必要な応答フィールドが、各統合の 応答ペイロード 内で管理者により公開されていること。
以下の例では、プロファイルの予約からフライト番号を返す予約統合を使用し、その番号をライブステータス(遅延、宛先)に使用するフライト情報統合を使用します。 2 番目の統合の入力を 1 番目の呼び出しの応答にマッピングします。
-
メッセージまたはフラグメントを開き、パーソナライゼーションエディターを開きます。
-
統合で、「統合を開く」をクリックします。
-
フライト識別子を含む予約または予約データなど、応答が次の呼び出しをフィードする統合を追加します。
-
(オプション)ヘルパー関数メニューを開き、予約応答に名前付き変数をバインドする場合は、
Let関数などのヘルパーを追加します。note NOTE 管理者が定義した 応答ペイロード で公開されたフィールドのみが使用できます。 設定で公開されていないプロパティは参照できません。 -
ヘルパー変数を使用する場合は、その変数を、旅客または予約ペイロードのフライト番号など、予約統合がダウンストリーム使用のために返すフィールドにマッピングします。
-
統合を開くメニューから、2 番目の統合(例:フライトステータス)を追加します。
-
2 番目の統合で、統合属性を開きます。 パス変数、ヘッダー、クエリパラメーターなど、最初の呼び出しのデータを再利用する必要がある各入力について、最初の統合応答からマッピングソースを選択します。
ピル エクスペリエンスでは、
Letステートメントを使用せずに、最初の呼び出し出力を 2 番目の呼び出し入力に直接マッピングできます。Letを使用した場合は、代わりにその変数をマッピングできます。
-
コントロールを使用して、2 番目の統合からのトークン(例:フライト情報の応答からの宛先)をコンテンツに挿入します。
-
コンテンツを保存します。
シミュレーションまたは送信の際、Journey Optimizer は統合を次の順序で実行します。最初の呼び出しでは設定済みのプロファイルコンテキストを使用し、その結果に基づいて 2 番目のリクエストを作成します。 特定の統合がシミュレーション時に実行されるか、送信時に実行されるかは、設定やチャネルによって異なります。
コンテンツでの Adobe Target Recommendations の使用 use-adobe-target-in-templates
この節では、Adobe Journey Optimizer の 統合 を使用して、送信時に Adobe Target からパーソナライゼーションデータを取得し、テンプレートまたはインラインで作成されたメッセージコンテンツにそのデータを使用する方法について説明します。 Target Delivery API が統合として既に設定されていることを前提としています。
設定手順について詳しくは、統合の操作および Adobe Target Recommendations のサンプルを参照してください。
Target Delivery API は prefetch.mboxes 配列を返します。 各 mbox には、content フィールドと type フィールドを持つ options オブジェクトが含まれています。 type の値により、テンプレートでの content の使用方法が決まります。 mbox の応答に一致するタブを開き、手順に従ってそのデータをメッセージで使用します。
type が json の場合、content フィールドは JSON 文字列です。 ネストされたフィールドにアクセスする前に解析します。 以下の例は、JSON mbox に対する一般的な Delivery API 応答を示しています。
| code language-json |
|---|
|
3 つのヘルパーを順番に使用して、Target 応答を取得、抽出、解析します。
-
Target 応答を取得します。 設定済みのTarget 統合を、
externalDataLookupを使用して呼び出します。integrationNameをその統合の 名前 に設定します(例のプレースホルダーtarget_recommendationsを置き換えます)。 Delivery API の完全なペイロードを保持するテンプレート変数の名前を指定するには、resultパラメーターを使用します(例:targetResponse)。また、パーソナライゼーションエディターの左側のナビゲーションにある 統合 メニューから統合を直接選択することもできます。 詳しくは、コンテンツへの統合パーソナライゼーションの適用を参照してください。
code language-handlebars {{externalDataLookup integrationName="target_recommendations" result="targetResponse"}} -
valueAtPath を使用して特定の mbox を抽出します。
valueAtPathは、0 ベースのインデックスで配列から要素を抽出し、テンプレート変数に割り当てます。 アクセスする要素を指定するには、idxパラメーターを使用します。code language-handlebars {{valueAtPath targetResponse.prefetch.mboxes idx=0 result="summerOffer"}}table 0-row-2 1-row-2 2-row-2 3-row-2 パラメーター 説明 path配列へのパス(位置、キーワードなし) idx配列アクセス用の 0 ベースのインデックス(オプション) result抽出した値を格納する変数名 note NOTE idxが範囲外の場合、レンダリングは例外をスローします。 インデックスが無効な場合は、無効なインデックスを{%#if idx >= 0 and idx < count(targetResponse.prefetch.mboxes)%}で保護します。 PQL 式は、パスとして使用できません。 2025.9.0 リリース以降で使用できます。 -
parseJson を使用して JSON 文字列を解析します。 mbox
options.contentフィールドは生の JSON 文字列です。parseJsonは、フィールドがテンプレート内で直接アクセスできる構造化オブジェクトに変換します。code language-handlebars {{parseJson jsonStr=summerOffer.options.content result="summerOfferContent"}}table 0-row-2 1-row-2 2-row-2 パラメーター 説明 jsonStr有効な JSON を含む文字列フィールドへのパス result解析したオブジェクトを格納する変数名 note NOTE JSON 文字列が無効であるか、参照が null の場合、 resultはnullに設定されます。レンダリングエラーはスローされません。 実際の Target 応答でテストし、コンテンツが有効な JSON であることを確認します。 2026.6.0 以降で使用できます -
データにアクセスします。 解析したら、ドット表記を使用して
summerOfferContentからフィールドにアクセスします。 レコメンデーションのリストをレンダリングするには:code language-handlebars {{externalDataLookup integrationName="target_recommendations" result="targetResponse"}} {{valueAtPath targetResponse.prefetch.mboxes idx=0 result="summerOffer"}} {{parseJson jsonStr=summerOffer.options.content result="summerOfferContent"}} Strategy: {{summerOfferContent.strategy}} {{#each summerOfferContent.recommendations as |rec|}} {{rec.name}} — {{rec.price}} {{/each}}
type が html の場合、「content」フィールドはレンダリング可能な HTML 文字列です。 解析する必要はありません。 以下の例は、HTML mbox に対する一般的な Delivery API 応答を示しています。
| code language-json |
|---|
|
mbox を取得して抽出し、content を直接レンダリングします。 parseJson をスキップします。
| code language-handlebars |
|---|
|
| note |
|---|
| NOTE |
HTML コンテンツをそのままレンダリングするには、三重中括弧 {{{...}}} を使用します。 二重中括弧 {{...}} を使用すると、HTML エンティティがエスケープされ、HTML の代わりに、生のタグの文字列がレンダリングされます。 |
チュートリアルビデオ video
このビデオでは、Adobe Journey Optimizer を外部 API に接続する 統合 の仕組みについて説明します。これにより、ライブデータやコンテンツをメール、SMS、プッシュなどの アウトバウンド チャネルに取り込み、より適切なパーソナライゼーションを実現します。
This section contains structured knowledge intended to support interpretation, retrieval, and question answering related to this topic.
For complete understanding, this information should be combined with the documentation on this page. Neither source is intended to stand alone; the page describes the feature, while this section provides additional context that helps disambiguate terminology, intent, applicability, and constraints.
- TL;DR: This page explains how marketers apply configured external integrations to personalize email, SMS, and push content, chain one API call’s response into another, and use Adobe Target Delivery API responses in message templates.
Intents:
- Apply a configured integration to personalize Text or HTML content via Add personalization
- Control fallback behavior with the required field when an integration fails or returns no data
- Chain integrations so one call’s response feeds the next call’s inputs
- Map first-call output to second-call input using Pills mode or a Let helper
- Use Adobe Target Recommendations by fetching, extracting, and parsing the Target Delivery API response
- Render JSON or HTML mbox content with the externalDataLookup, valueAtPath, and parseJson helpers
Glossary:
- required field: An Integrations helper field that defines how failures or missing data interact with default content (product-specific)
- Pills mode: A mode that unlocks the advanced integration menu and lets you map first-call output directly to second-call input without a Let statement (product-specific)
- externalDataLookup: The helper that calls a configured integration and stores its full response in a named result variable (product-specific)
- valueAtPath: The helper that extracts an element from an array by its 0-based index and assigns it to a template variable (product-specific)
- parseJson: The helper that converts a raw JSON string field into a structured object for direct field access (product-specific)
- Simulation: The mode in which Journey Optimizer runs chained integrations in order, alongside send (product-specific)
Guardrails:
- You can add up to 3 integrations per Fragment and up to 5 on the message; integrations that come only from fragments do not count toward the 5.
- Journey Optimizer Fragments are available with Integrations but support outbound channels only.
- Once a fragment is published, adding and saving new integrations is disabled to avoid impact on existing journeys and campaigns.
- An administrator must have configured and activated each integration (endpoint, authentication, policies, response payload, and activation) before use.
- Tokens in a template must use only fields the administrator exposed in the integration configuration; unexposed fields are rejected in the editor.
- With required=true (default), rendering stops for that message, the send is excluded with ExternalDataLookupExclusion, and the exclusion is recorded in the message feedback dataset; with required=false, the result variable is set to null and rendering continues.
- For valueAtPath, if idx is out of bounds, rendering throws an exception; PQL expressions cannot be used as the path. Available since release 2025.9.0.
- For parseJson, if the JSON string is invalid or the reference is null, result is set to null and no rendering error is thrown. Available since 2026.6.0.
Terminology:
- Canonical name: External integrations for personalization — Acronym: n/a — variants: Integrations, integration personalization
- Synonyms: “required=true” = “default”
- Do not confuse: “required=true” (rendering stops, send excluded) ≠ “required=false” (result set to null, rendering continues)
- Do not confuse: JSON content (type is json; parse content with parseJson) ≠ HTML content (type is html; render content directly with triple braces)
FAQ:
- Q: How many integrations can I add? — Up to 3 per Fragment and up to 5 on the message; fragment-only integrations do not count toward the 5.
- Q: What happens if an integration returns no data? — With required=true the message rendering stops and the send is excluded (ExternalDataLookupExclusion, recorded in the message feedback dataset); with required=false the result is null and rendering continues, so use fallbacks or conditional logic.
- Q: Can I feed one integration’s response into another? — Yes; chain integrations so calls run in order in the same message, mapping first-call output to second-call input in Pills mode or through a Let variable.
- Q: How do I use an Adobe Target JSON mbox response? — Fetch it with externalDataLookup, extract the mbox with valueAtPath, then parse options.content with parseJson before accessing nested fields.
- Q: How do I render an Adobe Target HTML mbox response? — Fetch and extract the mbox, then render content directly with triple braces; skip parseJson.