在此页面上:了解营销人员如何应用配置的集成来个性化电子邮件、短信和推送内容,并将一个API调用链接到另一个上,以实现更丰富的动态消息传递。
在内容中使用外部集成之前,请确认管理员已 配置和激活 每个集成(端点、身份验证、策略、响应有效负载和激活),如使用集成中所述。
您最多可以为消息中的每个 片段 添加 3 个集成,最多添加 5 个集成。 仅来自片段的集成不计入5。
将集成个性化应用于您的内容 apply-integration-personalization
作为营销人员,您可以使用配置的集成来个性化您的内容。 执行以下步骤:
-
访问您的营销活动内容,然后单击文本或HTML 组件中的添加个性化。
-
导航到 集成 部分,然后单击 打开集成 以查看所有活动的集成。
请注意,Journey Optimizer片段可与集成一起使用,但仅支持出站渠道。 片段发布后,将禁用添加和保存新集成,以避免对现有历程和营销活动造成影响。
-
选择集成并单击保存。
-
启用 Pills 模式以解锁高级集成菜单。
-
当您创作集成个性化时,集成帮助程序包含一个
required字段,该字段定义失败或缺少数据与默认内容的交互方式:-
required=true(默认):该消息的渲染停止。 发送被排除在ExternalDataLookupExclusion之外,该排除记录在 消息反馈数据集 中。 -
required=false:结果变量设置为null,并继续渲染。 在模板中使用默认文本、回退或条件逻辑,以便在集成不返回数据时,配置文件不会接收空内容。
-
-
要完成集成设置,请定义集成属性,这些属性先前在配置期间指定。
可以使用静态值(保持常量)或配置文件属性(动态地从用户配置文件中提取信息)为这些属性分配值。
-
定义集成属性后,您现在可以通过单击
图标,将内容中的集成字段用于个性化消息传递。
note NOTE 模板中的令牌必须仅使用管理员在集成配置中公开的字段。 例如, {{weatherResponse.temperature}}在temperature公开时有效;如果humidity未公开,则{{weatherResponse.humidity}}在编辑器中被拒绝。 -
单击保存。
您的集成个性化现在已成功应用于您的内容,确保每位收件人都能根据您配置的属性获得量身定制的相关体验。
将一个API调用映射到另一个调用 map-integration-chain
您可以链接集成,以便一个调用的结果馈送下一个调用,例如路径区段、标题或查询参数。 这些调用在同一消息中按顺序运行,这支持更丰富的个性化,而无需自定义代码。
在开始之前,请确保:
- 管理员已配置并激活您所需的每个集成。 请参阅配置集成。
- 变量路径占位符、标头和查询参数是在集成配置中设置的,带有面向营销人员的标签。
- 管理员在每个集成的 响应有效负载 中显示了所需的响应字段,以便在创作时显示。
以下示例使用从用户档案的预订中返回航班号的预订集成,然后使用该号码作为实时状态(延迟、目的地)的航班信息集成。 将第二个集成的输入映射到第一个调用的响应。
-
打开您的消息或片段,然后打开个性化编辑器。
-
在 集成 中,单击打开集成。
-
添加其响应将馈送下次调用的集成,例如,包含航班标识符的预订或预订数据。
-
(可选)如果要将命名变量绑定到保留响应,请打开 帮助程序函数 菜单并添加一个帮助程序,例如
Let函数。note NOTE 仅管理员定义的 响应有效负载 中公开的字段可用。 您无法引用配置中未公开的属性。 -
如果使用辅助变量,请将该变量映射到预订集成返回以供下游使用的字段,例如,乘客或预订有效负荷中的航班号。
-
从 打开集成 菜单中,添加第二个集成,例如航班状态。
-
在第二个集成中,打开集成属性。 对于必须重复使用来自第一次调用的数据的每个输入(如路径变量、标题或查询参数),请从第一次集成响应中选择映射源。
在 Pills 体验中,您可以将第一次调用输出直接映射到第二次调用输入,而无需使用
Let语句。 如果您使用Let,则可以通过该变量进行映射。
-
使用
控件将第二次集成的令牌插入到您的内容中,例如从航班信息响应插入目标。
-
保存您的内容。
在 模拟 或发送上,Journey Optimizer按顺序运行集成:第一次调用使用您配置的配置文件上下文,其结果构建第二个请求。 给定的集成是在模拟时运行还是在发送时运行,取决于您的设置和渠道。
在内容中使用Adobe Target推荐 use-adobe-target-in-templates
本节介绍如何在发送时使用Adobe Journey Optimizer中的 集成 从 Adobe Target 获取个性化数据,并将其用于消息内容(无论是在模板中还是在内联中创作)。 它假定已将Target投放API配置为集成。
有关配置步骤,请参阅使用集成和Adobe Target推荐示例。
Target投放API返回prefetch.mboxes数组。 每个mbox都包含一个options对象,该对象具有content和type字段。 type值确定如何在模板中使用content。 打开与您的mbox响应匹配的选项卡,然后按照相应步骤在消息中使用该数据。
当type为json时,content字段为JSON字符串。 在访问嵌套字段之前对其进行解析。 以下示例显示了JSON mbox的典型投放API响应。
| code language-json |
|---|
|
按顺序使用三个帮助程序来获取、提取和分析Target响应。
-
提取Target响应。 调用您配置的Target与
externalDataLookup的集成。 将integrationName设置为该集成的Name(替换示例占位符target_recommendations)。 使用result参数命名包含完整投放API有效负载的模板变量,例如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字符串无效或引用为空,则 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的典型投放API响应。
| code language-json |
|---|
|
获取并提取mbox,然后直接渲染content。 跳过parseJson。
| code language-handlebars |
|---|
|
| note |
|---|
| NOTE |
使用三大括号 {{{...}}}按原样呈现HTML内容。 双大括号{{...}}将转义HTML实体并渲染原始标记字符串而不是HTML。 |
操作方法视频 video
此视频展示了 集成 如何将Adobe Journey Optimizer连接到外部API,以便您可以将实时数据和内容提取到 出站 渠道、电子邮件、短信和推送,以进行更相关的个性化。
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.