订单触发器,分步指南
Shopify Flow 它为订单的关键时刻提供了很好的触发器:创建、支付、完成、取消。但它缺少的是这些关键时刻之间的所有环节。这十个触发器会在订单创建后发生任何修改时触发,每个触发器都会详细记录发生了哪些变化。
本页内容:订单更新, 添加订单标签, 移除订单标签, 订单备注已更改, 订单属性已更改, 订单明细已更改, 订单履行状态已更改, 订单显示状态已更改, 订单财务状态已更改, 订单收货地址已更改

订单更新
在订单的每次更新时触发。它携带changes:已发生变化的受追踪字段(财务状态、履约状态、标签、备注、明细行、自定义属性)及其变更前后的值。
| 火灾源于 | Shopify Webhook 结合变更检测 |
| 权限 | 订单数据访问 |
| 已开启 | 启用一个使用该功能的 Flow 工作流即可将其开启。该功能的独立开关位于应用的**“触发器**”页面上。 |
用于
- 一个可响应多种订单修改的工作流。
- 面向客户服务的订单变更日志。
“订单更新”会向您的工作流发送什么
| 流中的变量 | 类型 | 内容简介 |
|---|---|---|
order |
订单(Shopify) | 已更新的订单。这是一个完整的 Shopify 订单,因此其所有字段以及 Flow 自身的订单操作均可使用。 |
payload |
文本 | 包含已更新订单的 GID 的 JSON 对象(例如:{"id":"gid://shopify/Order/123"}) |
changes |
对象 | 哪些跟踪字段发生了变化(财务状态、履行状态、标签、备注、明细行、自定义属性),以及每个字段的旧值和新值 |
changes.fields |
文本列表 | 已发生变化的受监控字段名称 |
changes.items |
对象列表 | 每个已修改字段的旧值和新值 |
changes.items (each).field |
文本 | 发生变化的字段:financialStatus、fulfillmentStatus、tags、note、lineItems 或 customAttributes。 |
changes.items (each).oldValue |
文本 | 更新前的值。长数值会被截短 |
changes.items (each).newValue |
文本 | 更新后的值。长数值将被截短。 |
eventId |
文本 | 此事件的 ID。请在应用的“事件历史记录”中搜索该 ID,以查看具体发送了什么内容。 |
示例:通过您的客服系统将已跟踪的订单变更记录到订单的时间轴中
- 选择**“订单更新**”作为触发器。
- 添加条件:
changes.fields既不为空,又存在。 - 向您的客服系统添加**“发送 HTTP 请求”**操作,并在请求正文中包含
{{order.name}}。Flow 的文本字段支持 Liquid 语法,因此通过for循环遍历changes.items,即可针对每次变更添加一行,其中包含其field、oldValue和newValue。 - 启用该工作流。
已添加订单标签
当订单中至少添加了一个标签时触发。
| 火灾源于 | Shopify Webhook 结合变更检测 |
| 权限 | 订单数据访问 |
| 已开启 | 启用一个使用该功能的 Flow 工作流即可将其开启。该功能的独立开关位于应用的**“触发器**”页面上。 |
用于
- 请员工通过添加标签来启动流程:
gift-wrap、hold、priority。 - 对来自欺诈、订阅或履约应用的标签做出响应。
“已添加订单标签”会向您的工作流发送什么内容
| 流中的变量 | 类型 | 内容简介 |
|---|---|---|
order |
订单(Shopify) | 标签发生变化的订单。这是一个完整的 Shopify 订单,因此其所有字段以及 Flow 自身的订单操作均可使用。 |
addedTags |
文本 | 添加到订单中的标签列表(以逗号分隔) |
removedTags |
文本 | 在同一条更新中从订单中移除的标签的逗号分隔列表(可能为空) |
currentTags |
文本 | 订单中所有当前标签的逗号分隔列表 |
previousTags |
文本 | 本次更新之前,该订单中所有先前标签的逗号分隔列表 |
eventId |
文本 | 此事件的 ID。请在应用的“事件历史记录”中搜索该 ID,以查看具体发送了什么内容。 |
示例:当订单被标记为“暂缓”时,暂停订单履行
- 将“拣货顺序标签已添加”设为触发条件。
- 添加条件:
addedTags包含hold。 - 添加一个“针对
order.fulfillmentOrders的 For each”操作,并选择**“暂停履行订单**”作为操作。 - 启用该工作流。使用**“移除订单标签**”和**“解除订单保留**”构建镜像。
已删除订单标签
当订单中至少有一个标签被移除时触发。
| 火灾源于 | Shopify Webhook 结合变更检测 |
| 权限 | 订单数据访问 |
| 已开启 | 启用一个使用该功能的 Flow 工作流即可将其开启。其专属开关位于应用的**“触发器**”页面上。 |
用于
- 释放标签所束缚的东西。
- 当移除
needs-review标签时,关闭该任务。
“已移除的订单标签”会向您的工作流发送什么
| 流中的变量 | 类型 | 内容简介 |
|---|---|---|
order |
订单(Shopify) | 标签发生变化的订单。这是一个完整的Shopify订单,因此其所有字段以及Flow特有的订单操作均可使用。 |
removedTags |
文本 | 从订单中移除的标签的逗号分隔列表 |
addedTags |
文本 | 在同一条更新中添加到该订单的标签列表(以逗号分隔,可以为空) |
currentTags |
文本 | 订单中所有当前标签的逗号分隔列表 |
previousTags |
文本 | 本次更新之前,该订单上所有先前标签的以逗号分隔的列表 |
eventId |
文本 | 此事件的 ID。请在应用的“事件历史记录”中搜索该 ID,以查看具体发送了什么内容。 |
示例:当标签被移除时,释放锁定
- 将“拣货单标签已移除”设为触发条件。
- 添加条件:
removedTags包含hold。 - 添加一个“针对
order.fulfillmentOrders的 For each 循环”,并启用**“释放履约订单保留”功能**。 - 启用该工作流。
订单备注已更改
当员工或在结账编辑时由客户添加、修改或清除订单明细时触发。
| 火灾源于 | Shopify Webhook 结合变更检测 |
| 权限 | 订单数据访问 |
| 已开启 | 启用一个使用该功能的 Flow 工作流即可将其打开。该功能的独立开关位于应用的**“触发器**”页面上。 |
用于
- 将下单后添加的备注通知仓库。
- 解析配送说明。
“订单备注已更改”会向您的工作流发送什么内容
| 流中的变量 | 类型 | 内容简介 |
|---|---|---|
order |
订单(Shopify) | 注释发生变化的订单。这是一个完整的 Shopify 订单,因此其所有字段以及 Flow 自身的订单操作均可使用。 |
oldNote |
文本 | 该订单的上一条备注(如果之前未设置备注,则为空) |
newNote |
文本 | 订单上的新备注(如果备注已被清除,则为空) |
eventId |
文本 | 此事件的 ID。请在应用的“事件历史记录”中搜索该 ID,以查看具体发送了什么内容。 |
示例:向仓库发送延迟通知
- 将“拣货顺序备注已更改”设为触发条件。
- 添加条件:
order.displayFulfillmentStatus不等于FULFILLED。 - 添加**“发送内部邮件”选项**:
{{order.name}} note changed from "{{oldNote}}" to "{{newNote}}"。 - 启用该工作流。
订单属性已更改
当订单的自定义属性(购物车属性、备注属性)被添加、移除或修改时触发。changes.items 中的每个项目都包含changeType、key 以及这两个属性的值。
| 火灾源于 | Shopify Webhook 结合变更检测 |
| 权限 | 订单数据访问 |
| 已开启 | 启用一个使用该功能的 Flow 工作流即可将其开启。该功能的独立开关位于应用的**“触发器**”页面上。 |
用于
- 响应由送货日期选择器、礼品选项或 B2B 表单填写的属性。
- 检测员工在订单生成后是否修改了某个属性。
“订单属性变更”会向您的工作流发送哪些内容
| 流中的变量 | 类型 | 内容简介 |
|---|---|---|
order |
订单(Shopify) | 自定义属性发生变化的订单。这是一个完整的Shopify订单,因此其所有字段以及Flow自身的订单操作均可使用。 |
changes |
对象 | 检测到属性变更。每个项目都包含一个 changeType(添加、移除或修改)、键值,以及旧值和新值。 |
changes.items |
对象列表 | 检测到的属性更改列表 |
changes.items (each).changeType |
文本 | 变更类型:新增、删除、修改 |
changes.items (each).key |
文本 | 属性键(又称 note_attribute 名称) |
changes.items (each).oldValue |
文本 | 之前的值(当 changeType 为 'added' 时为空字符串) |
changes.items (each).newValue |
文本 | 新值(当 changeType 为 'removed' 时为空字符串) |
eventId |
文本 | 此事件的 ID。请在应用的“事件历史记录”中搜索该 ID,以查看具体发送了什么内容。 |
示例:应对交货日期变更
- 将“拣货顺序属性发生变化”设为触发条件。
- 添加一个条件:
changes.items中至少有一个满足key等于delivery_date。 - 添加**“发送内部邮件**”。Flow 的文本字段支持 Liquid 语法,因此通过
for循环遍历changes.items,会将每个条目的key及其oldValue和newValue一起打印出来。 - 启用该工作流。
订单明细项已更改
当订单被编辑时(即添加或移除商品、更改数量、价格或变体)触发。changes.items 中的每条记录都会注明事件类型(added、removed、quantity_changed、price_changed、variant_changed),并附有旧值和新值。
| 火灾源于 | Shopify Webhook 结合变更检测 |
| 权限 | 订单数据访问 |
| 已开启 | 启用一个使用该功能的 Flow 工作流即可将其开启。该功能的独立开关位于应用的**“触发器**”页面上 |
用于
- 通知仓库,有一份已拣选的订单发生了变更。
- 编辑后,请重新运行欺诈检查或保证金检查。
- 将订单修改同步到ERP系统,而Shopify自带的订单网络钩子会让这一过程变得非常麻烦。
“订单明细项已更改”会向您的工作流发送什么
| 流中的变量 | 类型 | 内容简介 |
|---|---|---|
order |
订单(Shopify) | 已更新的订单。这是一个完整的Shopify订单,因此其所有字段以及Flow自身的订单操作均可使用。 |
changes |
对象 | 检测到明细行变更,包含旧值和新值 |
changes.items |
对象列表 | 检测到的更改列表 |
changes.items (each).changeType |
文本 | 变更类型:新增、删除、数量变更、价格变更、变体变更 |
changes.items (each).lineItemId |
ID | 明细项目编号(如有) |
changes.items (each).productTitle |
文本 | 产品名称 |
changes.items (each).variantTitle |
文本 | 变体标题 |
changes.items (each).oldVariantId |
ID | 旧版本 GID(用于已删除或版本已更改的情况) |
changes.items (each).newVariantId |
ID | 新变体 GID(用于“已添加”或“变体已更改”) |
changes.items (each).oldProductId |
ID | 旧产品的GID(适用于已删除或变体已更改的情况) |
changes.items (each).newProductId |
ID | 新产品 GID(用于“已添加”或“变体已更改”) |
changes.items (each).oldQuantity |
数字 | 旧数量(用于 quantity_changed) |
changes.items (each).newQuantity |
数字 | 新数量(用于 quantity_changed) |
changes.items (each).oldPrice |
文本 | 旧价格(适用于 price_changed) |
changes.items (each).newPrice |
文本 | 新价格(适用于 price_changed) |
changes.items (each).lineItemData |
文本 | 完整的明细数据(JSON格式) |
eventId |
文本 | 此事件的 ID。请在应用的“事件历史记录”中搜索该 ID,以查看具体发送了什么内容。 |
示例:当某件物品被取出时,暂停仓库操作
- 将“拣货订单行项目发生变更”设为触发条件。
- 添加一个条件:
changes.items中至少有一个条目的changeType等于removed。 - 添加订单标签
edited-recheck,并发送一封内部邮件,其中列出changes.items中每条记录的productTitle和variantTitle(在邮件正文中使用 Liquid 循环for)。 - 启用该工作流。
订单处理方式已变更
当订单的履约状态发生变化时(null、partial、fulfilled、restocked),以及在履约过程中的相关事件发生时(如单行订单已履约、履约被取消、添加或更改物流跟踪信息),该事件会被触发。
| 火灾源于 | Shopify Webhook 结合变更检测 |
| 权限 | 订单数据访问 |
| 已开启 | 启用一个使用该功能的 Flow 工作流即可将其开启。该功能的独立开关位于应用的**“触发器**”页面上。 |
用于
- 发送您自己的带追踪信息的发货通知。
- 检测已取消的订单履行。
- 按每批货物而非按每笔订单更新ERP系统。
“订单履行状态变更”会向您的工作流发送什么
| 流中的变量 | 类型 | 内容简介 |
|---|---|---|
order |
订单(Shopify) | 订单的履行状态发生了变化。这是一个完整的Shopify订单,因此其所有字段以及Flow自身的订单操作均可用。 |
oldFulfillmentStatus |
文本 | 之前的 REST 订单履行状态(null、部分履行、已履行、已补货) |
newFulfillmentStatus |
文本 | 新的 REST 订单履行状态(null、部分履行、已履行、已补货) |
changes |
对象 | 检测到履约变更及详细信息 |
changes.items |
对象列表 | 检测到的更改列表 |
changes.items (each).changeType |
文本 | 变更类型:status_changed、line_item_fulfilled、line_item_unfulfilled、tracking_updated |
changes.items (each).lineItemId |
ID | 明细项目 ID(用于 line_item_fulfilled/unfulfilled) |
changes.items (each).productTitle |
文本 | 产品名称 |
changes.items (each).variantTitle |
文本 | 变体标题 |
changes.items (each).oldFulfillmentStatus |
文本 | 旧的履约状态(例如:null、部分完成、已完成、已补货) |
changes.items (each).newFulfillmentStatus |
文本 | 新的履约状态(例如:空、部分完成、已完成、已补货) |
changes.items (each).fulfillmentId |
ID | 履约 ID(用于 tracking_updated) |
changes.items (each).trackingNumber |
文本 | 运单号 |
changes.items (each).trackingUrl |
文本 | 跟踪链接 |
changes.items (each).trackingCompany |
文本 | 物流公司 |
eventId |
文本 | 此事件的 ID。请在应用的“事件历史记录”中搜索该 ID,以查看具体发送了什么内容。 |
示例:转发新的运单号
- 将“拣货订单履行”设为触发条件。
- 添加一个**“For each**”循环,遍历
changes.items。 - 在循环内部添加一个条件:循环项的
trackingNumber字段既不为空,又存在。 - 添加**“发送 HTTP 请求**”操作,并输入
{{order.name}}以及循环项的trackingNumber和trackingUrl。通过**“添加变量**”进行选择:Flow 会在触发器数据旁边列出循环项。 - 启用该工作流。
订单显示状态已更改
当管理员显示的履约状态发生变化时触发:unfulfilled、in_progress、on_hold、scheduled、partially_fulfilled、fulfilled。Shopify 不会为此类情况发送 webhook,因此该应用会按计划进行检查。
| 火灾源于 | 按计划进行检查,因为 Shopify 不会为此发送 webhook |
| 权限 | 订单数据访问 |
| 已开启 | 启用一个使用该功能的 Flow 工作流即可将其开启。该功能的独立开关位于应用的**“触发器**”页面上。 |
用于
- 当履约服务或POS将订单标记为“处理中”时,触发相应操作。
- 将处于“待处理”状态的订单上报。
“订单显示状态变更”会向您的工作流发送什么
| 流中的变量 | 类型 | 内容简介 |
|---|---|---|
order |
订单(Shopify) | 显示履行状态发生变化的订单。这是一个完整的Shopify订单,因此其所有字段以及Flow自身的订单操作均可使用。 |
oldDisplayFulfillmentStatus |
文本 | 之前的展示履行状态(例如:未履行、进行中、部分履行、已履行、暂缓、已安排) |
newDisplayFulfillmentStatus |
文本 | 新的展示订单履行状态(例如:未履行、进行中、部分履行、已履行、暂停、已安排) |
fulfillmentStatus |
文本 | 当前订单履行状态(未履行、部分履行、已履行、已补货) |
changes |
对象 | 检测到的显示状态变化及详细信息 |
changes.items |
对象列表 | 检测到的更改列表 |
changes.items (each).changeType |
文本 | 变更类型:order_status_changed、fulfillment_display_status_changed |
changes.items (each).fulfillmentId |
ID | 履约 ID(用于按单次履约显示状态变更) |
changes.items (each).oldDisplayStatus |
文本 | 之前的显示状态 |
changes.items (each).newDisplayStatus |
文本 | 新的显示状态 |
eventId |
文本 | 此事件的 ID。请在应用的“事件历史记录”中搜索该 ID,以查看确切的发送内容。 |
示例:将处于待处理状态的订单上报
- 将“拣货单显示状态发生变化”设为触发条件。
- 添加一个条件:
newDisplayFulfillmentStatus等于on_hold。 - 添加“通过
{{order.name}}向客服发送内部邮件”功能。 - 启用该工作流。
订单财务状态已变更
当订单的财务状态发生变化时触发,例如:pending 变为 paid、paid 变为 partially_refunded 或 refunded、authorized 变为 voided。
| 火灾源于 | Shopify Webhook 结合变更检测 |
| 权限 | 订单数据访问 |
| 已开启 | 启用一个使用该功能的 Flow 工作流即可将其开启。该功能的独立开关位于应用的**“触发器**”页面上。 |
用于
- 针对订单下达数天后才被标记为已支付的银行转账和发票进行处理。
- 请将退款情况告知财务部门。
- 只有在订单付款后,才可将其释放以进行履行。
“财务状况变更”订单会向您的工作流发送什么
| 流中的变量 | 类型 | 内容简介 |
|---|---|---|
order |
订单(Shopify) | 财务状态发生变化的订单。这是一个完整的 Shopify 订单,因此其所有字段以及 Flow 自身的订单操作均可使用。 |
oldFinancialStatus |
文本 | 之前的财务状态(例如:待处理、已批准、已支付) |
newFinancialStatus |
文本 | 新的财务状态(例如:已支付、部分退款、已退款、已作废) |
eventId |
文本 | 此事件的 ID。请在应用的“事件历史记录”中搜索该 ID,以查看具体发送了什么内容。 |
示例:在发票款项结清后释放 B2B 订单
- 将“拣货单财务状态发生变化”设为触发条件。
- 添加条件:
oldFinancialStatus等于pending,且newFinancialStatus等于paid。 - 添加并移除订单标签
awaiting-payment,并添加一个针对order.fulfillmentOrders的“For each over”循环,其中包含**“Release fulfillment order hold**”。 - 启用该工作流。
订单收货地址已更改
当订单下单后发货地址发生变更时触发。shippingAddress 显示的是单行内容,shippingAddressDetails 则显示为独立字段。
| 火灾源于 | Shopify Webhook 结合变更检测 |
| 权限 | 订单数据访问 + 客户数据访问 |
| 已开启 | 启用一个使用该功能的 Flow 工作流即可将其开启。其专属开关位于该应用的**“触发器**”页面上 |
用于
- 当拣货开始后地址发生变更时,暂停或更改货件的配送路线。
- 重新执行地址验证或欺诈检查。
“收货地址已更改”通知会向您的工作流发送什么内容
| 流中的变量 | 类型 | 内容简介 |
|---|---|---|
order |
订单(Shopify) | 该订单的收货地址已发生变更。这是一个完整的 Shopify 订单,因此其所有字段以及 Flow 自身的订单操作均可使用。 |
shippingAddress |
文本 | 订单当前的发货(送货)地址,以单行格式显示(可能为空) |
shippingAddressDetails |
对象 | 订单当前的发货(配送)地址,以结构化字段形式呈现(可能为空) |
shippingAddressDetails.firstName |
文本 | 地址上的名字 |
shippingAddressDetails.lastName |
文本 | 地址上的姓氏 |
shippingAddressDetails.name |
文本 | 全名,由 firstName 和 lastName 生成 |
shippingAddressDetails.company |
文本 | 公司或组织名称 |
shippingAddressDetails.address1 |
文本 | 第一行 - - 街道地址或邮政信箱号码 |
shippingAddressDetails.address2 |
文本 | 第二行 - - 公寓、套房或单元 |
shippingAddressDetails.city |
文本 | 市、区、村或镇 |
shippingAddressDetails.province |
文本 | 地区 - - 省、州或区 |
shippingAddressDetails.provinceCode |
文本 | 地区代码(例如 ON) |
shippingAddressDetails.zip |
文本 | 邮政编码 |
shippingAddressDetails.country |
文本 | 国家名称 |
shippingAddressDetails.countryCode |
文本 | 两位字母的国家代码(例如 US) |
shippingAddressDetails.phone |
文本 | 地址上的电话号码 |
eventId |
文本 | 此事件的 ID。请在应用的“事件历史记录”中搜索该 ID,以查看具体发送了什么内容。 |
示例:保留一个地址已变更的订单
- “拣货订单”的收货地址在流程中发生了变更。此操作需要访问****订单和客户数据;当您在“触发器”页面将其启用时,应用会通过一个对话框同时请求这两项数据。
- 添加条件:
order.displayFulfillmentStatus≠FULFILLED。 - 添加订单标签
address-changed,并向仓库发送内部邮件。 - 启用该工作流。
下一步
默认情况下,该应用会监控最近 60 天的订单,这正是 Shopify 授予的权限。若要响应更早订单的编辑操作,请在“权限”页面中延长订单历史记录的范围。请参阅 权限与数据访问。
- 触发器完整参考指南 - 所有触发器都集中在一页上。
- 选择合适的扳机 - 哪一种适合您的情况。
- 自定义触发器 - 如果没有合适的内置触发器,请自行编写一个。
- 事件历史记录和故障排除 - 看看它发射了什么,又携带了什么。
- 在记录的管理页面上触发事件 - 某条记录的最新动态,显示在Shopify管理后台的独立页面上。

