触发器的工作原理

只要弄清楚某个扳机采用的是这四种机制中的哪一种,几乎就能解答所有关于时机、设置以及为何会触发或未触发的疑问。

这四种机制

机制 触发器 延迟 需要一个基准 配送
Shopify webhook 26 近实时 保证
Webhook + 变更检测 52 近实时 是的 保证
民意调查 6 最多一个调查间隔 是的 保证
店面像素 14 尽最大努力

1. Shopify webhook

Shopify 事件发生时立即通知应用,应用则将其直接转发至 Shopify Flow。“折扣创建”和**“位置删除”**就是这样工作的。

这些触发器除了权限设置外无需其他配置,且**“触发器**”页面上为每个触发器都设置了独立的开关。

2. Webhook 结合变更检测

这是最大的功能模块,也是这款应用实用性的关键所在。Shopify 的 products/update webhook 会在_任何_产品编辑操作时触发,但不会说明具体发生了哪些变化。因此,该应用:

  1. 存储您关注的字段的快照
  2. 将每个传入的 webhook 与该快照进行比对,并
  3. 仅在该特定字段实际发生更改时,才会触发该特定触发器。

这就是为什么**“产品标题变更**”在编辑标题时会触发,而在编辑价格时却不会触发,尽管这两者收到的都是相同的Shopify webhook。

3. 投票

Shopify 该应用不会针对博客、博客文章、页面、订单显示状态、折扣到期或公司所在地税费设置发布任何 webhook。对于这 6 个触发条件,应用会按计划进行检查,并在检测到变化时触发。

轮询触发器与其他触发器一样,可在**“触发器**”页面上启用。它们会消耗一个轮询周期的延迟,而非立即触发。

4. 店面像素

Shopify 不会针对购物者的操作发送任何 webhook:例如浏览商品页面、将商品加入购物车、搜索未找到结果、结账时出现错误等。针对这 14 种触发条件,该应用会在您的网店前端安装一个网络像素,用于从购物者的浏览器报告相关事件。

由此可以得出三点结论,这些结论使得这些触发机制与其他三种机制有所不同:

  • 主动订阅。他们需要“Storefront 行为访问”权限,且“开始”开关已开启 关闭。启用一个使用该触发器的 Flow 工作流,即会将其开启,这与任何触发器一样。该 当第一个像素点被点亮时,该像素点即被激活;在所有像素点均未点亮时,它不会发送任何信号。
  • **需获得同意。**未同意分析的购物者将被移至 浏览器,且该事件从未传达到我们这里,既不产生任何成本,也不会触发任何工作流。
  • **已尽最大努力。**关闭标签页、连接中断或广告拦截器都会导致该事件 永远不会到达,且不会重试。请将它们用于信号和响应,切勿在需要 漏报事件将构成正确性问题。

此外,其事件数量远高于管理事件。在启用某项功能之前,请参阅 Storefront 触发器

工作流中接收的内容

字段级触发器会返回旧值和新值,因此您可以根据变化本身进行分支处理,而无需进行后续查找:

yaml
Old price: 19.99
New price: 24.99
SKU:       WIDGET-BLUE-M
Flow 的“添加变量”面板中显示 oldPrice、newPrice、delta、percentChange 和 direction
Shopify Flow 接收的价格变动数据包括:价格变动前后的数值、差值、百分比以及变动方向。

列表形式的变更以结构化对象的形式提供,而非逗号分隔的文本,因此您可以在 Flow 中对其进行迭代和分支处理。订单明细变更、出版物变更以及公司所在地免税处理均采用这种方式。

排序与重复项

  • 事件会根据Shopify的事件 ID 进行去重,因此重发不会触发您的 工作流运行两次。
  • 该应用对每家店铺设置了短时请求限制,因此无法批量编辑数千件商品 不会给您的工作流程带来负担。事件会被放入队列,不会被丢弃。
  • 一项修改 5,000 种产品的批量操作会产生 5,000 个事件,并消耗 5,000 您每月配额的。请参阅 套餐与使用情况
  • Storefront 事件会合并短时间窗口内同一页面视图的重复记录,并且 这两个访问触发器会将整个访问合并为针对每位客户或每家公司的单个事件。