跳转到主要内容

概述

动态内容让您可以大规模个性化消息——无需为每个受众创建单独的版本。无论您是发送多语言消息还是根据地区或营销活动定制内容,动态内容都允许您定义一个消息,该消息会根据每个用户自动调整。 您可以通过上传 CSV 文件或使用我们的模板 API 以编程方式提供包含内容变化的数据,并在消息中使用 Liquid 语法引用这些值。发送消息时,OneSignal 会根据用户的数据标签为每个用户提取适当的内容。 动态内容适用于推送、邮件和短信,非常适合:
  • 多语言引导或营销流程
  • 地区或细分特定的促销活动
  • 由外部营销活动数据驱动的个性化
主要优势:
  • 大规模个性化 – 提供定制体验,无需创建和管理数十个消息变体。
  • 多语言支持 – 编写一条消息,它会自动以每个用户的首选语言显示。
  • 动态分段 – 根据用户属性(如语言、地区、计划或 campaign_id 等自定义标签)更改消息内容。
  • 无摩擦协作 – 让翻译人员或非技术团队直接在 CSV 文件中创建和编辑消息内容——无需 OneSignal 登录。
  • 跨渠道兼容性 – 在推送、邮件和短信营销活动中使用相同的 CSV 逻辑。
常见用例:
  • 按国家或城市发布活动通知
  • 基于营销活动 ID 或购买历史的个性化推送通知
  • 在用户群体中测试多个主题行或消息
请参阅消息个性化了解更多个性化消息的选项。

动态内容设置

创建新消息或模板 从仪表板:选择动态内容
  • 上传将消息内容映射到数据标签的 CSV 文件。
从模板 API:使用 dynamic_content 属性。
  • 如果您的动态内容经常更改,这是很好的解决方案。

在推送创建编辑器中找到的动态内容按钮。

格式化您的内容

您可以从空白文件开始或选择提供的模板之一:
  • 多语言
  • 内容个性化

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 中不可用。

用户没有匹配的标签或属性

If subscription.language doesn’t exist, reference the default column from dynamic_content instead.
{% assign lang = subscription.language | default: "default" %}
{{ dynamic_content.content_personalization_template.title[lang] }}

用户有标签或属性但在 dynamic_content 中不可用

If subscription.language exists on a subscription, but not in dynamic_content reference the default column instead.
// 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 为用户特定的推送消息:
  • {{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 语法。


测试和预览

1

创建测试 CSV

多语言测试:
  • 列:emaillanguage
个性化测试:
  • 列:external_idcampaign_id

示例 CSV 上传并创建邮件测试者的细分。


在邮件中使用 + 地址来测试多个变体:username+test@example.com

使用 external_id 和标签 campaign_id 上传并创建测试者细分的示例 CSV。

2

上传您的测试细分

转到订阅细分 > 上传/导入用户将第一列设置为标识符。所有其他列都被视为用户属性或数据标签。

创建测试者细分,根据需要重复使用。

有关上传用户数据的更多信息,请参阅导入
3

查看消息

发送测试消息后,检查您的收件箱或设备以验证显示。
如果 dynamic_content 未呈现,请参考后备内容

示例显示使用动态内容发送的邮件。

示例显示使用动态内容发送的推送。

您现在可以使用这些模板和 CSV 扩展个性化消息。

使用注意事项

何时使用动态内容 vs. 自定义数据

  • 对于多样化语言或个性化消息块,使用动态内容
  • 对于单语言的简单内联个性化,使用**自定义数据**。

编辑模板

重新上传 CSV 或使用更新模板 APIdynamic_content 属性进行更新。

键中的特殊字符

如果键包含非字母数字字符,请使用哈希记法
{{ dynamic_content.file_name["!the_row!"]["&the_column&"] }}
对于标准字母数字键,使用点记法
{{ dynamic_content.file_name.the_row.the_column }}

相关文章


I