- 推送消息事件(已发送、已接收、已点击、失败、已取消订阅)
- 邮件事件(已发送、已打开、已点击、已退回、已取消订阅等)
- 短信事件(已发送、失败、已取消订阅等)
- 应用内消息事件(展示、已点击等)
- 实时活动事件(已发送、已投递、确认投递、失败、已取消订阅、已点击)
常见用例
- 集中参与数据 — 将事件流传输到 CRM、CDP 或数据仓库,使跨渠道活动(打开、点击、退回)集中存放在一处,而不是分散在各个独立工具中。
- 分析、报告与合规 — 将每条消息事件落地到数据仓库,用于趋势分析、审计或法规记录保存。
- 监控用户流失 — 在自有系统中跟踪取消订阅、退回和关闭事件,尽早发现用户留存风险。
- 触发外部工作流 — 当用户打开或点击消息时,在其他工具中触发自动化(例如更新潜在客户评分、启动跟进序列)。
- 替代批量同步和额外集成 — 实时响应事件,将 OneSignal 直接连接到目标,减少中间工具和维护成本。
让技术团队快速上手
设置事件流需要营销/产品负责人(决定哪些事件重要以及发送到哪里)和工程团队(构建接收端点并配置流)共同协作。以下是工程方面的工作内容:- 确定目标和范围 — 商定事件应落地的位置(自有 API、数据仓库、CDP 等)、要流传输的事件类型(推送、邮件、短信、IAM、实时活动)以及消息量估算,以便对端点进行适当的容量规划。
- 设置 HTTP 端点 — 构建或配置可公开访问的端点,接受 POST 请求。它应快速记录事件,无需繁重处理,以保持低响应时间。请参阅重试/禁用了解性能预期以及端点落后时会发生什么。
- 在 OneSignal 中配置事件流 — 在数据 > 事件流中,选择事件、设置 URL 和身份验证标头,并使用事件流数据字段和 Liquid 语法定义 JSON 正文。
- 端到端测试 — 使用 webhook.site 在切换到生产端点之前验证有效载荷结构和标头(请参阅测试)。
设置
您可以在数据 > 事件流 > 新建事件流下为您的 OneSignal 应用程序配置新的事件流。
- 指向可公开访问的 HTTP(S) 端点的有效 URL 或 IP 地址
- URL 和 IP 地址必须可公开路由
- 域名必须包含已识别的顶级域名(例如”.com”、“.net”)
事件选择
为您的事件流命名,然后点击选择事件。

事件流过滤器
您可以通过指定一个或多个消息或模板的标识符来进一步优化事件,使您只接收与特定消息相关的事件。

配置事件流
选择 HTTP 方法、URL,并为事件流添加头部。这是应该配置身份验证的地方,以确保 OneSignal 和您的系统之间的安全通信。 URI 和头部可以包含 liquid 语法,这些语法来自用户属性和事件流的属性。认证头部
您可以添加认证头部来验证发送到您端点的请求确实来自 OneSignal。常见的认证方法包括:- 授权头部:添加一个
Authorization头部,其中YOUR_TOKEN由您的系统或第三方提供,如:Basic {{YOUR_TOKEN}}Bearer {{YOUR_TOKEN}}ApiKey {{YOUR_API_KEY}}
- 自定义头部:您也可以添加自定义头部,如:
X-API-Key: {{YOUR_API_KEY}}
测试您的配置
如果您正在寻找一种简单的测试方法,请使用 webhook.site。在页面中央找到”您的唯一 URL”。复制该 URL 并在您的事件流配置的 URL 字段中使用它。
禁用的头部
以下头部是受限的,无法设置。content-lengthreferermetadata-flavorx-google-metadata-requesthostx-onesignal*
正文
事件流的正文将是 JSON 格式。正文 JSON 可以定义为单独的键/值对,也可以定义为可编辑的代码块。要更改输入方法,请使用正文标题下的第一个下拉菜单并选择自定义正文。

个性化
您可以使用预定义的事件流数据个性化事件流中的所有字段。可以使用 Liquid 语法添加此数据。这为您使用事件流应对几乎任何用例提供了灵活性。查看事件流数据了解所有可用于个性化的事件、消息和用户事件数据列表。
示例正文
在下拉菜单中选择”自定义正文”:JSON

在 JSON 中使用 Liquid 语法
在 JSON 中使用 Liquid 语法时,正确的引用取决于数据类型: JSON 格式化指南- 字符串 → 必须用引号包围。
- 数字 → 不要用引号包围。
- 对象 → 必须不用引号包围。
以下正确示例中的
// 注释行仅用于可读性。请在您的实际事件流正文中删除它们——严格的 JSON 不允许 // 注释。- 字符串
- 数字和布尔值
- 对象
✅ 正确 — 用引号包围:❌ 错误 — 缺少引号会产生无效的 JSON:
JSON
JSON
- 使用直接语言检查:在条件语句中始终直接检查
user.language,而不是在变量(如userLang)中检查,以获得更好的兼容性。 - 从简单开始:从基本短语开始,然后逐渐增加复杂性。
- 避免过度嵌套:保持条件语句扁平化以防止解析问题。
- 首先测试基本标点符号:在使用特殊字符之前,先使用简单句子和标点符号开始。
- 使用回退机制:确保在缺少翻译的情况下有默认语言(例如英语)。
- 坚持使用标准键:使用标准 OneSignal 键(如
content/title/en)以确保可靠性。
有关如何使用 Liquid 语法个性化消息的详细信息和选项,请查看我们的使用 Liquid 语法指南。
结果与调试
监控事件流的性能并排查问题: 报告选项卡 — 显示历史总计、事件流的当前状态以及随时间推移 HTTP 响应代码的时序图表。| 响应 | 含义 |
|---|---|
| 2xx | 事件已成功被您的端点接收。 |
| 4xx / 5xx | 您的端点返回了错误。请检查日志选项卡以获取具体状态代码和响应正文。 |
| 超时 | 您的端点未在允许的时间窗口内响应。OneSignal 关闭了连接并将此次投递视为失败。 |

重试/禁用
重试行为 — 当请求因可恢复状态(例如429)失败时,OneSignal 会以递增的延迟进行重试。如果单个事件的重试持续失败,该事件将被标记为永久失败,不再重试。
自动禁用 — 如果您的端点在大量事件中持续返回失败,OneSignal 可能会禁用整个事件流。发生这种情况时:
- 当失败量达到一定程度(禁用前)以及流被禁用时,应用和组织管理员都会收到电子邮件通知。
- 仪表板中的事件流索引页面上也会出现横幅。
- 修复根本问题,使用日志选项卡或 webhook.site 进行测试,然后重新启用流。
- 快速记录事件 — 将传入事件写入队列或数据存储,无需进行繁重的内联处理。
- 避免响应缓慢和 429 — 持续的慢响应时间或速率限制响应会导致事件积压,进而导致 OneSignal 禁用流。
- 根据发送量进行容量规划 — 如果您发送 10 万条消息,则每个选定事件类型最多预计产生 10 万个事件。请查看您的计划消息量并据此进行规划。
event.id。将其包含在标头或 JSON 正文中,以便您的系统在同一事件被重试或重放时能够去重。
成功提示
- 优先将流指向自己的服务器。 您可以直接连接到第三方 API,但当您不控制接收端时,调试、速率限制处理和用量管理会更加困难。
- 在转发给第三方之前进行缓冲。 OneSignal 以用户触发事件的速度发送——大量发送可能产生一次性流量冲击,压垮外部速率限制或增加费用(尤其是 SMS 提供商)。构建一个轻量级服务来接受事件、将其加入队列,然后以您控制的节奏转发给外部 API。
- 查看第三方 API 文档。 许多服务提供您可以通过事件流访问的公开 HTTP API。在配置流之前,查找其关于身份验证、接受的有效载荷格式和速率限制的文档。
消息事件数据限制
通过 Journeys 或 API 发送的消息数据在 OneSignal 中仅保留 30 天。这意味着在 Journey 或 API 消息发送后 30 天以上发生的任何消息事件(如点击、打开、取消订阅等)将无法在事件流中获取。这在您的分析中可能表现为空白或缺失的数据。 要解决此限制,可将这些已点击/已打开/已取消订阅事件的message.id 与具有相同 message.id 的原始 sent 事件关联起来。原始 sent 事件应包含相关的消息数据(标题、模板等)。
测试
使用 webhook.site 进行端到端测试演练。将您的唯一 URL 粘贴到事件流的 URL 字段中,使用 POST 方法。


- 主机:请求来源的 IP 地址。请参阅 REST API 概述了解可能的 IP 列表。
- 请求内容:在事件流正文中发送的数据。