产品触发器,分步指南
关于产品触发器的分步Shopify Flow教程,这些触发器会显示状态、标题、标识符、供应商、类型和标签的旧值与新值。
Shopify Flow 可以通知您某款商品已被更新,但无法告知具体更新了哪些内容,也无法提供之前的数值。这十一种触发器则能同时实现这两点:每种触发器都会针对某类变更触发,并将变更前后的数值传递给您的工作流程。
下面的每个部分都是一个简短的教程:介绍触发器何时触发、哪些数据会进入 Shopify Flow,以及一个你可以在几分钟内重建的工作流程。
本页内容:产品更新、产品状态变更、产品标题变更、产品标识符变更、产品描述变更、产品供应商变更、产品类型变更、添加产品标签、移除产品标签、产品发布到渠道、产品从渠道下架

产品更新
每次保存产品时都会触发,无论发生了什么变化。从 2.10.0 版本开始,它还会携带 changes:即发生变化的受追踪字段(标题、标识符、描述、状态、供应商、类型、标签)及其变更前后的值。
| 火灾源于 | Shopify Webhook 及变更检测 |
| 权限 | 产品、变体和产品系列数据的访问 |
| 已开启 | 启用一个使用该功能的 Shopify Flow 工作流程即可将其开启。该功能的独立开关位于应用的**“触发器**”页面上。 |
用于
- 一个工作流程,该工作流程会响应多种产品编辑操作,并根据
changes.fields进行分支。 - 审计轨迹:将所有被追踪的更改(无论是旧的还是新的)都记录到一个表格或Slack频道中。
- 在您确定自己真正需要哪种更具体的触发器之前,这是一个通用的解决方案。
“产品更新”会向您的工作流程发送什么内容
| Shopify Flow中的变量 | 类型 | 内容简介 |
|---|---|---|
product |
产品(Shopify) | 已更新的商品。这是一个完整的Shopify商品,因此其所有字段以及Shopify Flow自身提供的商品操作均可使用。 |
payload |
文本 | 包含已更新产品 GID 的 JSON 对象(例如:{"id":"gid://shopify/Product/123"}) |
changes |
对象 | 哪些受监控字段发生了变化(标题、标识符、描述、状态、供应商、类型、标签),以及每个字段的旧值和新值 |
changes.fields |
文本列表 | 已发生变化的受监控字段的名称 |
changes.items |
对象列表 | 每个已修改字段的旧值和新值 |
changes.items (each).field |
文本 | 发生变化的字段:标题、昵称、描述、状态、供应商、产品类型或标签 |
changes.items (each).oldValue |
文本 | 更新前的值。长数值会被截短。 |
changes.items (each).newValue |
文本 | 更新后的值。长数值将被截短。 |
eventId |
文本 | 此事件的 ID。请在应用的“事件历史记录”中搜索该 ID,以查看具体发送了什么内容。 |
示例:记录每个被跟踪的产品变更,并附上其旧值和新值
- 在 Shopify Flow 中,选择**“选择触发器**”,打开“Workflow Trigger Extensions”,然后选择**“产品更新**”。
- 添加条件:
changes.fields不为空且存在。未被跟踪字段的更新(如价格修改、图片更新)会携带一个空列表,并在此处停止处理。 - 添加**“发送内部邮件**”(或“向 Slack **发送 HTTP **请求”)。Shopify Flow 的文本字段支持 Liquid 语法,因此可以通过对
changes.items进行for循环,为每次变更打印一行内容:先显示条目的field,接着是其oldValue和newValue,最后是{{product.title}}。 - 开启工作流程。这样也会在应用中启用该触发器。


产品状态已更改
当产品状态在**“活跃”、“草稿”、“已归档**”和**“未列出**”之间切换时触发。若保存操作未更改状态,则不会触发该事件。
| 火灾源于 | Shopify Webhook 及变更检测 |
| 权限 | 产品、变体和产品系列数据的访问 |
| 已开启 | 启用一个使用该功能的 Shopify Flow 工作流程即可将其开启。该功能的独立开关位于应用的**“触发器**”页面上。 |
用于
- 产品一上线,就立即通知市场部。
- 当产品被归档时,将其从产品源或捆绑包中移除。
- 捕获那些被误放回水中的渔获。
“产品状态变更”会向您的工作流程发送什么
| Shopify Flow中的变量 | 类型 | 内容简介 |
|---|---|---|
product |
产品(Shopify) | 状态发生变化的商品。这是一个完整的Shopify商品,因此其所有字段以及Shopify Flow自身提供的商品操作均可使用。 |
oldStatus |
文本 | 产品的先前状态(有效、草稿、已归档或未列出) |
newStatus |
文本 | 新产品的状态(已启用、草稿、已归档或未列出) |
eventId |
文本 | 此事件的 ID。请在应用的“事件历史记录”中搜索该 ID,以查看具体发送了什么内容。 |
示例:发布一款刚刚上线的产品
- 选择**“产品状态发生变化**”作为触发器。
- 添加一个条件:
newStatus等于active,以及第二个条件oldStatus等于draft。 - 在“然后添加”下,选择**“发送内部邮件**”:主题为
Now live: {{product.title}},正文包含{{product.onlineStoreUrl}}。 - 可选:添加产品标签
new-arrival,以便该商品被收录到相关产品系列中。 - 启用该工作流程。
产品名称已更改
当产品标题发生变化时触发。除产品标题变化外,其他情况均不会触发该事件。
| 火灾源于 | Shopify Webhook 及变更检测 |
| 权限 | 产品、变体和产品系列数据的访问 |
| 已开启 | 启用一个使用该功能的 Shopify Flow 工作流程即可将其开启。该功能的独立开关位于应用的**“触发器**”页面上。 |
用于
- 确保外部产品目录、PIM 或翻译工具与已重命名的产品保持同步。
- 每当畅销书的书名发生变更时,请申请进行SEO审核。
- 在批量编辑中发现意外重命名的情况。
“产品标题已更改”会向您的工作流程发送什么
| Shopify Flow中的变量 | 类型 | 内容简介 |
|---|---|---|
product |
产品(Shopify) | 标题已更改的产品。这是一个完整的Shopify产品,因此其所有字段以及Shopify Flow自身的产品操作均可使用。 |
oldTitle |
文本 | 该产品的旧名称 |
newTitle |
文本 | 该产品的新名称 |
eventId |
文本 | 此事件的 ID。请在应用的“事件历史记录”中搜索该 ID,以查看具体发送了什么内容。 |
示例:向团队发送包含两个标题的更名请求
- 选择**“产品标题已更改**”作为触发器。
- 添加**“发送内部邮件**”,主题为
Product renamed,正文为"{{oldTitle}}" is now "{{newTitle}}" - {{product.onlineStoreUrl}}。 - 如果只想筛选部分产品,请在前面添加一个条件:
product.vendor等于您的品牌,或者product.tags包含hero。 - 启用该工作流程。
产品名称已更改
当产品的 URL 句柄发生变化时触发,即地址中 /products/ 之后的部分。
| 火灾源于 | Shopify Webhook 及变更检测 |
| 权限 | 产品、变体和产品系列数据的访问 |
| 已开启 | 启用一个使用该功能的 Shopify Flow 工作流程即可将其开启。该功能的独立开关位于应用的**“触发器**”页面上。 |
用于
- 自动从旧网址创建重定向,以确保链接和搜索结果能够正常显示。
- 请告知负责广告或电子邮件营销活动的人员,着陆页已迁移。
“产品处理码已更改”会向您的工作流程发送什么
| Shopify Flow中的变量 | 类型 | 内容简介 |
|---|---|---|
product |
产品(Shopify) | 该产品的名称已更改。这是一个完整的Shopify产品,因此其所有字段以及Shopify Flow自带的产品操作均可使用。 |
oldHandle |
文本 | 该产品的先前 URL 标识符 |
newHandle |
文本 | 该产品的新 URL 标识符 |
eventId |
文本 | 此事件的 ID。请在应用的“事件历史记录”中搜索该 ID,以查看具体发送了什么内容。 |
示例:从旧的处理程序创建一个 URL 重定向
- 选择**“产品手柄已更改**”作为触发器。
- 添加**“创建 URL 重定向**”操作。
- 将**“路径**”设置为
/products/{{oldHandle}},将**“目标**”设置为/products/{{newHandle}}。 - 启用该工作流程,然后更改测试产品的标识符,并打开旧的 URL。
产品描述已更改
当产品的描述(HTML正文)发生变化时触发。
| 火灾源于 | Shopify Webhook 及变更检测 |
| 权限 | 产品、变体和产品系列数据的访问 |
| 已开启 | 启用一个使用该功能的 Shopify Flow 工作流程即可将其开启。该功能的独立开关位于应用的**“触发器**”页面上。 |
用于
- 只有在源文本确实发生变化时,才应重新运行翻译或AI摘要。
- 编辑后,请法律或合规部门对受监管的产品进行复核。
- 刷新包含该描述的产品数据源。
“产品描述已更改”会向您的工作流程发送什么
| Shopify Flow中的变量 | 类型 | 内容简介 |
|---|---|---|
product |
产品(Shopify) | 描述发生变化的商品。这是一个完整的Shopify商品,因此其所有字段以及Shopify Flow自带的商品操作均可使用。 |
oldDescription |
文本 | 上述描述(已截断至4000个字符;如有需要,可通过产品编号获取完整描述) |
newDescription |
文本 | 新描述(已截断至4000个字符;如有需要,可通过产品编号获取完整描述) |
eventId |
文本 | 此事件的 ID。请在应用的“事件历史记录”中搜索该 ID,以查看具体发送了什么内容。 |
示例:将已编辑的描述标记为待审核
- 将**“产品描述已更改**”设为触发器。
- 添加带有
needs-copy-review的产品标签。 - 在管理员界面中添加“向评审员发送内部邮件,邮件中包含
{{product.title}}以及该产品的链接”这一功能。 - 审核完成后,审核员会移除该标签。如果此时需要采取相应措施,请将其与**“产品标签已移除”功能**配合使用。
产品供应商变更
当产品的供应商发生变更时,会触发该事件。
| 火灾源于 | Shopify Webhook 及变更检测 |
| 权限 | 产品、变体和产品系列数据的访问 |
| 已开启 | 启用一个使用该功能的 Shopify Flow 工作流程即可将其开启。该功能的独立开关位于应用的**“触发器**”页面上。 |
用于
- 在基于供应商的产品系列或价格表之间移动产品。
- 当某产品被重新分配给另一家供应商时,请通知采购部门。
“产品供应商变更”会向您的工作流程发送什么
| Shopify Flow中的变量 | 类型 | 内容简介 |
|---|---|---|
product |
产品(Shopify) | 供应商发生变更的产品。这是一个完整的Shopify产品,因此其所有字段以及Shopify Flow自身的产品操作均可使用。 |
oldVendor |
文本 | 前一家供应商 |
newVendor |
文本 | 新供应商 |
eventId |
文本 | 此事件的 ID。请在应用的“事件历史记录”中搜索该 ID,以查看具体发送了什么内容。 |
示例:当供应商发生变更时,更换供应商标标签
- 选择**“产品供应商变更**”作为触发器。
- 使用
vendor:{{oldVendor}}添加或移除产品标签。 - 使用
vendor:{{newVendor}}添加产品标签。 - 启用该工作流程。
产品类型已更改
当产品类型发生变化时触发。此处指的是**“类型**”自由文本字段,而非Shopify的标准产品类别。
| 火灾源于 | Shopify Webhook 及变更检测 |
| 权限 | 产品、变体和产品系列数据的访问 |
| 已开启 | 启用一个使用该功能的 Shopify Flow 工作流程即可将其开启。该功能的独立开关位于应用的**“触发器**”页面上。 |
用于
- 将商品重新分类到基于类型的自动化产品系列或发货配置中。
- 在外部系统中保持税务或海关映射的最新状态。
“产品类型变更”会将哪些内容发送至您的工作流程
| Shopify Flow中的变量 | 类型 | 内容简介 |
|---|---|---|
product |
产品(Shopify) | 类型发生变化的商品。这是一个完整的Shopify商品,因此其所有字段以及Shopify Flow自带的商品操作均可使用。 |
oldType |
文本 | 上一款产品类型 |
newType |
文本 | 新产品类型 |
eventId |
文本 | 此事件的 ID。请在应用的“事件历史记录”中搜索该 ID,以查看具体发送了什么内容。 |
示例:当产品类型发生变化时通知运维团队
- 将“选择产品类型已更改”设为触发器。
- 如果只有某些类型重要,请添加一个条件:
newType等于Hazardous。 - 添加“发送内部邮件”:
{{product.title}} moved from type "{{oldType}}" to "{{newType}}"。 - 启用该工作流程。
已添加产品标签
当产品中至少添加了一个标签时触发。addedTags 仅包含新添加的标签,因此您无需自行比较列表。
| 火灾源于 | Shopify Webhook 及变更检测 |
| 权限 | 产品、变体和产品系列数据的访问 |
| 已开启 | 启用一个使用该功能的 Shopify Flow 工作流程即可将其开启。该功能的独立开关位于应用的**“触发器**”页面上。 |
用于
- 从标签启动流程:
photo-ready、approved、clearance。 - 允许员工直接在产品页面触发 Shopify Flow,而无需打开 Shopify Flow。
“已添加的产品标签”会向您的工作流程发送什么
| Shopify Flow中的变量 | 类型 | 内容简介 |
|---|---|---|
product |
产品(Shopify) | 标签发生变化的商品。这是一个完整的Shopify商品,因此其所有字段以及Shopify Flow自带的商品操作均可使用。 |
addedTags |
文本 | 以逗号分隔的、已添加到该产品的标签列表 |
removedTags |
文本 | 在同一更新中从该产品中移除的标签的逗号分隔列表(可能为空) |
currentTags |
文本 | 该商品当前所有标签的逗号分隔列表 |
previousTags |
文本 | 本次更新前该商品所有历史标签的逗号分隔列表 |
eventId |
文本 | 此事件的 ID。请在应用的“事件历史记录”中搜索该 ID,以查看具体发送了什么内容。 |
示例:当产品标签获得批准时发布该产品
- 选择**“添加产品标签**”作为触发器。
- 添加条件:
addedTags包含approved。 - 在**“然后**”下方,选择“将产品状态更新为
Active”(或**“将产品发布**到渠道”)。 - 如果标签仅作为信号,请添加或移除带有
approved的产品标签。 - 启用该工作流程。
已删除产品标签
当产品上至少有一个标签被移除时触发。removedTags 字段中恰好包含那些已被移除的标签。
| 火灾源于 | Shopify Webhook 及变更检测 |
| 权限 | 产品、变体和产品系列数据的访问 |
| 已开启 | 启用一个使用该功能的 Shopify Flow 工作流程即可将其开启。该功能的独立开关位于应用的**“触发器**”页面上。 |
用于
- 当状态标签被移除时结束该流程:当移除
clearance标签时,促销活动即告结束。 - 撤销**“已添加的匹配标签**”工作流程所执行的操作。
“已删除的产品标签”会向您的工作流程发送什么内容
| Shopify Flow中的变量 | 类型 | 内容简介 |
|---|---|---|
product |
产品(Shopify) | 标签发生变化的商品。这是一个完整的Shopify商品,因此其所有字段以及Shopify Flow自带的商品操作均可使用。 |
addedTags |
文本 | 在同一更新中添加到该产品的标签列表(以逗号分隔,可以为空) |
removedTags |
文本 | 从产品中移除的标签的逗号分隔列表 |
currentTags |
文本 | 该商品当前所有标签的逗号分隔列表 |
previousTags |
文本 | 本次更新前该商品所有历史标签的逗号分隔列表 |
eventId |
文本 | 此事件的 ID。请在应用的“事件历史记录”中搜索该 ID,以查看具体发送了什么内容。 |
示例:当清仓标签被取下时,结束促销活动
- 选择**“产品标签已移除**”作为触发器。
- 添加条件:
removedTags包含clearance。 - 添加用于撤销促销的操作,例如移除商品标签
sale-badge以及向商品部发送内部邮件。 - 启用该工作流程。
产品已发布到渠道
当产品发布到一个或多个销售渠道、市场或 B2B 产品目录时触发。channels.added 列出了该产品刚刚出现的位置,channels.current 列出了它当前出现的所有位置。
| 火灾源于 | Shopify Webhook 及变更检测 |
| 权限 | 出版物数据访问 + 产品、变体及产品系列数据访问 |
| 已开启 | 启用一个使用该功能的 Shopify Flow 工作流程即可将其开启。该功能的独立开关位于应用的**“触发器**”页面上。 |
用于
- 当产品上架至在线商店时,请启动发布检查清单。
- 只有在产品已发布到该渠道后,才将其推送至市场数据源。
- 当商品在销售终端(POS)上架时,请通知零售团队。
“发布到渠道”功能会将哪些产品发送至您的工作流程
| Shopify Flow中的变量 | 类型 | 内容简介 |
|---|---|---|
product |
产品(Shopify) | 已发布的产品。这是一个完整的Shopify产品,因此其所有字段以及Shopify Flow自身的产品操作均可使用。 |
channels |
对象 | 已添加/已移除/当前已发布的频道,每个频道都是一条发布信息(id、名称、类型、catalogId) |
channels.added |
对象列表 | 在此事件中,该产品刚刚发布到的频道。chinese |
channels.added (each).id |
ID | 该发布内容 GID (gid://shopify/Publication/...) |
channels.added (each).name |
文本 | 渠道/场景名称(例如:在线商店、销售点、Google 和 YouTube、市场名称或 B2B 地点名称) |
channels.added (each).type |
文本 | 销售场景类型:销售渠道、市场或B2B地点 |
channels.added (each).catalogId |
ID | 支持本出版物的目录 GID(AppCatalog、MarketCatalog 或 CompanyLocationCatalog) |
channels.removed |
对象列表 | 在此事件中,该产品刚刚从哪些频道下架。 |
channels.removed (each).id |
ID | 该发布内容 GID (gid://shopify/Publication/...) |
channels.removed (each).name |
文本 | 渠道/场景名称(例如:在线商店、销售点、Google 和 YouTube、市场名称或 B2B 地点名称) |
channels.removed (each).type |
文本 | 销售场景类型:销售渠道、市场或B2B地点 |
channels.removed (each).catalogId |
ID | 支持本出版物的目录 GID(AppCatalog、MarketCatalog 或 CompanyLocationCatalog) |
channels.current |
对象列表 | 该产品目前发布的所有渠道(此变更后)。 |
channels.current (each).id |
ID | 该发布内容 GID (gid://shopify/Publication/...) |
channels.current (each).name |
文本 | 渠道/场景名称(例如:在线商店、销售点、Google 和 YouTube、市场名称或 B2B 地点名称) |
channels.current (each).type |
文本 | 销售场景类型:销售渠道、市场或B2B地点 |
channels.current (each).catalogId |
ID | 支持本出版物的目录 GID(AppCatalog、MarketCatalog 或 CompanyLocationCatalog) |
eventId |
文本 | 此事件的 ID。请在应用的“事件历史记录”中搜索该 ID,以查看具体发送了什么内容。 |
示例:当产品到达销售点时,通知零售团队
- 选择**“产品发布到渠道**”作为触发器。
- 添加条件:
channels.added中至少有一个的name等于Point of Sale。 - 添加“发送内部邮件:
{{product.title}} is now available on POS”。 - 启用该工作流程。
从渠道中撤下该产品
当产品从一个或多个销售渠道下架时触发。channels.removed 列出了该产品从哪些渠道下架。
| 火灾源于 | Shopify Webhook 及变更检测 |
| 权限 | 出版物数据访问 + 产品、变体及产品系列数据访问 |
| 已开启 | 启用一个使用该功能的 Shopify Flow 工作流程即可将其开启。该功能的独立开关位于应用的**“触发器**”页面上。 |
用于
- 发现那些悄然从在线商店下架的商品。
- 当产品离开广告所指向的渠道时,立即暂停该产品的广告。
“Channel”中未发布的产品会发送哪些内容到您的工作流程
| Shopify Flow中的变量 | 类型 | 内容简介 |
|---|---|---|
product |
产品(Shopify) | 该产品处于未发布状态。这是一个完整的Shopify产品,因此其所有字段以及Shopify Flow自身的产品操作均可使用。 |
channels |
对象 | 已添加、已删除或当前已发布的频道,每个频道都是一条发布记录(id、名称、类型、catalogId) |
channels.added |
对象列表 | 在此事件中,该产品刚刚发布到的频道。chinese |
channels.added (each).id |
ID | 该发布内容 GID (gid://shopify/Publication/...) |
channels.added (each).name |
文本 | 渠道/场景名称(例如:在线商店、销售点、Google 和 YouTube、市场名称或 B2B 地点名称) |
channels.added (each).type |
文本 | 销售场景类型:销售渠道、市场或B2B地点 |
channels.added (each).catalogId |
ID | 支持本出版物的目录 GID(AppCatalog、MarketCatalog 或 CompanyLocationCatalog) |
channels.removed |
对象列表 | 在此事件中,该产品刚刚从哪些频道下架。 |
channels.removed (each).id |
ID | 该发布内容 GID (gid://shopify/Publication/...) |
channels.removed (each).name |
文本 | 渠道/场景名称(例如:在线商店、销售点、Google 和 YouTube、市场名称或 B2B 地点名称) |
channels.removed (each).type |
文本 | 销售场景类型:销售渠道、市场或B2B地点 |
channels.removed (each).catalogId |
ID | 支持本出版物的目录 GID(AppCatalog、MarketCatalog 或 CompanyLocationCatalog) |
channels.current |
对象列表 | 该产品目前发布的所有渠道(此变更后)。 |
channels.current (each).id |
ID | 该发布内容 GID (gid://shopify/Publication/...) |
channels.current (each).name |
文本 | 渠道/场景名称(例如:在线商店、销售点、Google 和 YouTube、市场名称或 B2B 地点名称) |
channels.current (each).type |
文本 | 销售场景类型:销售渠道、市场或B2B地点 |
channels.current (each).catalogId |
ID | 支持本出版物的目录 GID(AppCatalog、MarketCatalog 或 CompanyLocationCatalog) |
eventId |
文本 | 此事件的 ID。请在应用的“事件历史记录”中搜索该 ID,以查看具体发送了什么内容。 |
示例:当产品从在线商店下架时发出提醒
- 选择**“从频道中移除未发布的产品**”作为触发器。
- 添加条件:
channels.removed中至少有一个的name等于Online Store。 - 添加**“发送内部邮件**”或**“发送** Slack 请求”,其中包含
{{product.title}}和管理员链接。 - 启用该工作流程。
下一步
- 触发器完整参考指南 - - 将同一页面上的所有触发器集中展示。
- 选择合适的触发器 - - 哪一种适合您的情况。
- 自定义触发器 - - 当没有现成的内置触发器适用时,请自行编写。
- 事件历史记录和故障排除 - - 查看触发了哪些事件以及这些事件携带了哪些数据。
- 在记录的管理页面上触发器 - - 某条记录的最新事件,显示在Shopify后台的独立页面上。
