- 触发 Journey 入口,或
- 匹配 Journey 内的 Wait Until 条件
Custom Event 个性化的工作原理
按照以下步骤将事件属性添加到你的 Journey 消息中:发送带有属性的 Custom Event
示例 Custom Events 负载:
JSON
在 Journey 消息模板中引用事件属性
使用 Liquid 语法访问事件属性。
常用 Liquid 访问模式
| 你想获取的内容 | Liquid | 输出 |
|---|---|---|
| 事件名称 | {{ journey.first_event.name }} | purchase |
| 属性 | {{ journey.first_event.properties.item }} | Blue Sweater |
| 嵌套属性 | {{ journey.first_event.properties.details.first.manufacturer }} | Company A |
| 包含特殊字符的属性 | {{ journey.last_event.properties["order status"] }} | pending |
| 时间戳 | {{ journey.last_event.timestamp | date: "%B %d, %Y at %I:%M %p" }} | October 21, 2025 at 07:09 PM |
嵌套 Liquid 访问模式
你还可以使用点表示法和括号表示法访问嵌套属性:Liquid
创建 Journey
设置 Journey,将 Custom Event 用作入口规则和/或 Wait Until 条件。
- 请参阅 Journeys 设置了解入口规则。
- 请参阅 Journeys 操作了解 Wait Until 条件。
事件属性存储规则
- 你可以通过组合入口规则和 Wait Until 步骤在 Journey 中使用多个事件。
- 最大值:每个用户每个 Journey 实例最多存储 100 个事件属性(最旧的会被丢弃)。
- 事件属性按每个用户、每个 Journey 实例存储。
- 入口之前发送的事件不可访问。
- 当用户退出 Journey 时,事件属性会被清除。
Custom Event Liquid 参考
使用这些对象访问 Journey 中存储的事件。journey.first_event
此 Journey 实例中存储的第一个事件。
- 如果使用 Custom Event 入口规则,则这是触发 Journey 入口的事件。
- 如果未使用 Custom Event 入口规则,则这是通过匹配 Wait Until 条件存储的第一个事件。
Liquid
journey.last_event
此 Journey 实例中最近存储的事件。
- 如果只存储了一个事件,
first_event和last_event返回相同的内容。
Liquid
journey.event.EVENT_NAME
具有特定名称的最近存储的事件。如果你的事件名称包含空格或特殊字符,请使用括号表示法。示例事件:
- 将
EVENT_NAME替换为你的事件名称(例如purchase)。 - 如果同一事件名称被多次使用,则返回最近的实例。
Liquid
"name": "order status"Liquid
此 Journey 实例中所有存储的事件,按存储顺序排列。
- 使用 for 循环遍历它们。
Liquid
journey.first_event是journey.all_events[0]的简写。journey.last_event是数组中最近事件的简写。
示例:使用 Custom Events 的弃购车模板
此示例展示如何使用 Custom Events 个性化弃购车消息。它基于弃购车教程构建。 示例 Custom Event 集:JSON
邮件模板
此示例展示如何构建一个邮件模板,显示:- 购物车商品数量
- 使用 for 循环显示每个产品的图片、名称、数量和价格
- 一个链接到客户唯一购物车 URL 的按钮

开始 for 循环
使用 for 循环为每个购物车商品重复产品显示行。在第 2 行(循环开始)中添加:作用说明:
Liquid
- 开始一个遍历
cart数组中每个对象的循环 - 创建一个临时变量
product表示当前商品 {% for %}和{% endfor %}之间的所有内容会为每个购物车商品重复一次- 你可以将
product命名为任何名称(例如item、cartItem)——只需保持一致即可
显示产品详情
这个 4 列行显示图片、名称、数量和价格。因为它在循环内部,所以会为每个购物车商品重复。在第 3 行(产品详情)中配置:第 1 列 - HTML 块(产品图片):第 2-4 列 - 文本块(产品名称、数量、价格):
- 第 2 列:
{{product.product_name}} - 第 3 列:
{{product.product_quantity}} - 第 4 列:
{{product.product_price}}
- 第一次迭代时,
product= 购物车数组中的第一个对象 {{product.product_image}}获取第一个商品的图片- 第二次迭代时,
product= 第二个对象 - 行会自动为所有购物车商品重复
测试模板
- 将模板添加到空白 Journey,并将入口规则设置为 Custom Event。
- 启用 Journey 并通过 Custom Event API 将自己加入其中。
- 验证数据是否正确显示。
成功!现在你可以为模板应用自己的样式。请参阅使用拖放设计邮件。
推送模板
推送通知空间有限,因此只显示一个商品并提及总数量。 消息字段: 使用条件语句显示商品和数量,并确保语法正确。Liquid
Liquid
Liquid

成功!你现在可以创建更多模板并在弃购车 Journey 中使用它们。
故障排除和最佳实践
常见错误:| 错误 | 失败原因 | 正确语法 |
|---|---|---|
{{ journey.first_event.item }} | 缺少 .properties | {{ journey.first_event.properties.item }} |
{{ journey.event.purchase.item }} | 缺少 .properties | {{ journey.event.purchase.properties.item }} |
{{ journey.first_event.properties.Item }} | 大小写错误(应为 item) | {{ journey.first_event.properties.item }} |
{{ event.properties.item }} | 缺少 journey. 前缀 | {{ journey.first_event.properties.item }} |
- 在上线之前始终测试模板
- 对可选属性使用 default 过滤器
- 验证事件结构与模板预期匹配
相关页面
消息个性化
OneSignal 中所有个性化选项的概览,包括何时使用 Custom Events 与其他方法。
Custom Events
通过 SDK 或 API 实现和发送 Custom Events 的完整指南。
Journeys 概览
了解如何使用触发器、条件和操作构建自动化消息工作流。
Journey 设置
配置事件触发的入口规则和 Journey 行为。
Wait Until 操作
使用 Wait Until 节点在 Journey 推进过程中存储额外事件。
使用 Liquid 语法
完整的 Liquid 参考,包括过滤器、条件语句、循环和字符串操作。
模板
创建和管理可在 Journeys 中使用的可复用消息模板。
需要帮助?与我们的支持团队聊天或发送邮件至
support@onesignal.com请包含以下信息:- 您遇到的问题详情以及复现步骤(如有)
- 您的 OneSignal 应用 ID
- 外部 ID 或订阅 ID(如适用)
- 您在 OneSignal 控制台中测试的消息 URL(如适用)
- 任何相关的日志或错误信息

