在 Journey 中使用 Webhook 响应数据
当您从 Webhook 响应中映射值时,Pushwoosh 会将它们存储为变量,您可以在 Journey 后续的 Update user profile、Time Delay 和内容个性化中使用这些变量,就像使用 Event 属性一样。唯一的例外是 Condition split:它不能直接根据 Webhook 变量进行分支,因为它需要一个已声明类型的值(Tag 或 Event 属性),而映射的 Webhook 值没有类型。请参阅下文的在 Condition split 中比较 Webhook 值。
使用“更新用户个人资料”将 Webhook 值另存为 Tag
Anchor link toWebhook 可以从外部系统(例如 CRM 用户 ID 或订阅状态)返回数据,而 Pushwoosh 尚未将这些数据存储在用户个人资料中。Update user profile 将映射的值保存为 Tags,以便您可以在细分、动态内容和后续的 Journey 步骤中使用它们。
示例:将 CRM 用户 ID 另存为 Tag
Anchor link to新用户在您的应用中注册后,Journey 会在您的 CRM 中创建一个匹配的记录。将返回的 CRM 用户 ID 保存为 Tag,可以让您稍后(例如从另一个 Journey 或后续的 Webhook 调用中)引用或更新同一个 CRM 记录,而不是在用户每次重新进入 Journey 时都创建一个重复的记录。
Journey 流程: 基于触发器进入 → Webhook → 更新用户个人资料 → 结束分支
- 创建一个以
SignUp事件为 基于触发器进入 的 Journey。 - 在进入步骤后添加一个 Webhook 元素。为其命名(例如,
在 CRM 中创建用户),并将请求 URL 设置为您的 CRM 创建用户端点。 - 在 响应映射 中,将 路径 设置为响应中的 ID 字段(例如,
data.user.id),并将 属性 设置为crm_user_id。

-
在 Webhook 步骤后添加一个 Update user profile 元素。
-
在 动态 Tag 值 中,点击 + 动态值。在 Tag 中,选择存储 CRM ID 的 Tag(如果需要,请提前创建)。在 Event 中,按您给定的名称选择 Webhook 步骤 (
在 CRM 中创建用户)。在 动态值 中,选择crm_user_id。

- 结束分支——添加一个 Exit 元素或不设置传出连接。

使用“时间延迟”根据 Webhook 值安排延迟
Anchor link to访问日期、续订截止日期和配送窗口通常存在于外部预订或计费系统中。在 Webhook 从 API 响应中映射日期后,Time Delay 可以暂停 Journey 直到那一刻,例如在预约前 2 天,以便下一条消息能准时发出。
示例:根据响应中的日期安排提醒
Anchor link to用户在您的应用中预约。Journey 从您的预订系统中获取访问日期,并在访问前 2 天发送推送提醒。
- 创建一个以
AppointmentBooked事件为 基于触发器进入 的 Journey。 - 在进入步骤后添加一个 Webhook 元素。为其命名(例如,
获取预约详情),并将请求 URL 设置为您的预订系统 API。 - 在 响应映射 中,将 路径 设置为响应中的日期字段(例如,
appointment.date),并将 属性 设置为visit_date。

- 在 Webhook 步骤后添加一个 Time Delay 元素。选择 基于用户/事件数据,将 从…获取日期 设置为 Event,将 Event 设置为您给定的 Webhook 步骤名称 (
获取预约详情),将 Event 值 设置为visit_date,并将延迟设置为 之前2天。

- 如果用户可以在访问前不到 2 天进行预订,请在 Time Delay 元素上启用 如果日期在过去或日期为空则拆分为分支。这将创建两个分支:在过去 和 在将来。请参阅当日期在过去或为空时拆分分支。
- 添加一个包含提醒消息的 Push 步骤。如果启用了拆分,请在两个分支中都添加此 Push:在过去(立即发送)和 在将来(在 Time Delay 之后)。
- 结束每个分支——添加一个 Exit 元素或不设置传出连接。

在 Condition split 中比较 Webhook 值
Anchor link toCondition split 根据 Segment、Tag 或具有已声明类型的 Event 属性进行分支。从 Webhook 响应中映射的值没有类型,因此它不会出现在 Condition split 的下拉菜单中,也无法直接进行比较。
要根据 Webhook 值进行分支,首先使用 Update user profile 将其保存为匹配类型的 Tag,然后在 Condition split 中比较该 Tag。
示例:根据 Webhook 余额与触发事件的金额进行分支
Anchor link to用户请求购买,Journey 在继续之前会检查其 CRM 余额是否足以支付触发事件中的价格。
Journey 流程: 基于触发器进入 → Webhook → 更新用户个人资料 → 条件分支
- 创建一个以
PurchaseRequested事件为 基于触发器进入 的 Journey,该事件带有一个数字required_amount属性。 - 在进入步骤后添加一个 Webhook 元素。在 响应映射 中,将 路径 设置为响应中的余额字段(例如,
current_balance),并将 属性 设置为current_balance。 - 在 Webhook 步骤后添加一个 Update user profile 元素。在 动态 Tag 值 中,将 Tag 设置为一个整数或价格类型的数字 Tag(如果需要,请提前创建,例如
Current_balance),将 Event 设置为 Webhook 步骤,并将 动态值 设置为current_balance。 - 在 Update user profile 之后添加一个 Condition split 元素。将条件设置为 Tag
Current_balance,运算符为 大于或等于,对于值,选择 Event 属性 → 进入事件 →required_amount,而不是一个常量。 - 将每个分支连接到后续步骤。
注意事项
Anchor link to- 路径语法: 使用点分隔的路径(例如,
data.user.id),或使用*段来映射数组的每个元素。不支持过滤器。详情请参阅映射数组的每个元素。 - 响应大小: 大于 64 KB 的响应不会被处理以进行映射。
- 条件分支: 映射的 Webhook 值没有类型,不能直接使用。请先将其保存为 Tag。请参阅在 Condition split 中比较 Webhook 值。
- 测试: 在实时 Journey 中使用映射值之前,请在 Webhook 元素中运行 测试 Webhook。确认请求成功后,在 调用日志 选项卡中检查响应正文与每个 路径 是否匹配。如果 Journey 上线后某个特定旅行者的值看起来不正确,请在 调用日志 中检查该旅行者的行。
- 响应中的列表: 在 路径 中使用
*来映射每个项目。选择item_{n}作为单独的属性,或选择不带{n}的名称作为单个逗号分隔的字符串。路径 索引从 0 开始。{n}名称从 1 开始。最多映射前 50 个元素。请参阅映射数组的每个元素。