跳转到主要内容
OneSignal 提供多种方式来大规模个性化消息内容。本指南重点介绍在 OneSignal 控制面板中使用动态内容与 CSV 上传功能,适用于推送、邮件和短信。 主要优势:
  • 使用 CSV 大规模个性化 – 一条消息,为每个人提供定制体验
  • 多语言支持 – 根据用户自动切换语言
  • 动态个性化 – 内容根据用户属性(语言、地区、营销活动 ID)进行调整
  • 团队协作 – 非技术用户在 CSV 文件中编辑内容
  • HTML 注入(邮件) – 在 CSV 单元格中包含 HTML 标记,以动态构建丰富的邮件内容
  • 跨渠道兼容性 – 跨渠道重用 CSV 逻辑
常见用例:
  • 多语言引导或营销
  • 特定地区的促销活动
  • 按位置发布活动通知
  • 基于营销活动的个性化

使用 CSV 的动态内容设置步骤

快速参考:
  1. 创建包含内容变化的 CSV 文件。
  2. 使用 Liquid 语法中的 dynamic_content 属性将 CSV 数据映射到消息。
  3. 从 OneSignal 控制面板创建新消息或模板
  4. 选择动态内容个性化按钮。
  5. 上传 CSV 文件并发送消息。

CSV 要求和设置

  • 文件大小: 小于 200 KB
  • 列标题:
    • 为标签键保留第一列标题,或留空以引用部分
    • 仅限字母数字字符和下划线
    • 使用下划线(_)代替空格
  • 编码: UTF-8
从空白 CSV 开始或使用提供的模板。在消息和模板编辑器中选择动态内容个性化按钮时会提供模板。
OneSignal 消息编辑器中的动态内容按钮
可用模板:
  • 多语言 – 按语言本地化内容
  • 内容个性化 – 按数据标签自定义内容
显示多语言和内容个性化模板的 CSV 模板选项

CSV 示例

本指南将使用以下示例 CSV 数据。
  • 将列标题映射到您的支持的语言代码
  • 为每种语言代码在每行中添加您的翻译。
  • 如果您有多个部分(如在邮件中),请将第一列指定为部分名称。
此示例包括:
  • 3 种语言:英语、西班牙语和法语。
  • 2 个部分:“section_1” 和 “section_2”。
以语言代码为列标题、翻译内容为行的多语言 CSV

将 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 – 您想要引用的用户属性
后备内容: 始终使用硬编码字符串 default 后备内容,以确保如果 CSV 查找或动态内容失败时消息能够呈现。
Liquid 语法用于后备
{{ dynamic_content.my_template.header[user.language] | default: "欢迎查看我们的最新更新" }}
这意味着如果 CSV 查找或动态内容失败,消息将呈现后备文本 "欢迎查看我们的最新更新" 这确保:
  • 可用时使用动态内容
  • 如果动态内容失败,显示硬编码消息
  • 用户永远不会收到空白内容
translations.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_nametranslations.csv
  • message_component 位于第一列的行中 section_1section_2
  • user_property 是与语言代码匹配的列标题。我们可以使用 user.language 属性在用户上引用它。
多语言消息的基本 Liquid 语法
{{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..." }}
带有多语言动态内容 Liquid 语法的 OneSignal 邮件编辑器
使用带有 default 后备的 Liquid 来更新主题行、预标题、按钮 标签和 URL。

在 CSV 单元格中使用 HTML(仅限邮件)

您可以在 CSV 单元格中直接包含 HTML 标记,将富内容注入邮件。这对于根据用户属性替换邮件整个部分(如横幅、CTA 或样式块)非常有用。
promo_banners.csv
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 仅在邮件中受支持。推送和短信渠道将内容渲染为纯文本,不解析 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 vs. 其他个性化选项?

从控制面板发送消息且 CSV 文件中有用户数据时,使用动态内容与 CSV。有关向消息添加动态内容的其他方法,请参阅消息个性化多语言消息

相关文章

消息个性化

OneSignal 中所有个性化选项的概述。

使用 Liquid 语法

OneSignal 消息的完整 Liquid 语法参考。

导入

向 OneSignal 上传用户数据和细分。

模板

创建可重用的消息模板。