订单触发器,分步指南

Shopify Flow 它为订单的关键时刻提供了很好的触发器:创建、支付、完成、取消。但它缺少的是这些关键时刻之间的所有环节。这十个触发器会在订单创建后发生任何修改时触发,每个触发器都会详细记录发生了哪些变化。

本页内容:订单更新, 添加订单标签, 移除订单标签, 订单备注已更改, 订单属性已更改, 订单明细已更改, 订单履行状态已更改, 订单显示状态已更改, 订单财务状态已更改, 订单收货地址已更改

Shopify Flow
查找位置:在Shopify Flow中选择“Select a trigger”,打开Workflow Trigger Extensions,然后搜索“Order”。

订单更新

在订单的每次更新时触发。它携带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,以查看具体发送了什么内容。

示例:通过您的客服系统将已跟踪的订单变更记录到订单的时间轴中

  1. 选择**“订单更新**”作为触发器。
  2. 添加条件changes.fields 既不为空,又存在
  3. 向您的客服系统添加**“发送 HTTP 请求”**操作,并在请求正文中包含 {{order.name}}。Flow 的文本字段支持 Liquid 语法,因此通过 for 循环遍历 changes.items,即可针对每次变更添加一行,其中包含其 fieldoldValuenewValue
  4. 启用该工作流。

已添加订单标签

当订单中至少添加了一个标签时触发。

火灾源于 Shopify Webhook 结合变更检测
权限 订单数据访问
已开启 启用一个使用该功能的 Flow 工作流即可将其开启。该功能的独立开关位于应用的**“触发器**”页面上。

用于

  • 请员工通过添加标签来启动流程:gift-wrapholdpriority
  • 对来自欺诈、订阅或履约应用的标签做出响应。

“已添加订单标签”会向您的工作流发送什么内容

流中的变量 类型 内容简介
order 订单(Shopify) 标签发生变化的订单。这是一个完整的 Shopify 订单,因此其所有字段以及 Flow 自身的订单操作均可使用。
addedTags 文本 添加到订单中的标签列表(以逗号分隔)
removedTags 文本 在同一条更新中从订单中移除的标签的逗号分隔列表(可能为空)
currentTags 文本 订单中所有当前标签的逗号分隔列表
previousTags 文本 本次更新之前,该订单中所有先前标签的逗号分隔列表
eventId 文本 此事件的 ID。请在应用的“事件历史记录”中搜索该 ID,以查看具体发送了什么内容。

示例:当订单被标记为“暂缓”时,暂停订单履行

  1. 将“拣货顺序标签已添加”设为触发条件。
  2. 添加条件addedTags 包含 hold
  3. 添加一个“针对 order.fulfillmentOrdersFor each”操作,并选择**“暂停履行订单**”作为操作。
  4. 启用该工作流。使用**“移除订单标签**”和**“解除订单保留**”构建镜像。

已删除订单标签

当订单中至少有一个标签被移除时触发。

火灾源于 Shopify Webhook 结合变更检测
权限 订单数据访问
已开启 启用一个使用该功能的 Flow 工作流即可将其开启。其专属开关位于应用的**“触发器**”页面上。

用于

  • 释放标签所束缚的东西。
  • 当移除needs-review标签时,关闭该任务。

“已移除的订单标签”会向您的工作流发送什么

流中的变量 类型 内容简介
order 订单(Shopify) 标签发生变化的订单。这是一个完整的Shopify订单,因此其所有字段以及Flow特有的订单操作均可使用。
removedTags 文本 从订单中移除的标签的逗号分隔列表
addedTags 文本 在同一条更新中添加到该订单的标签列表(以逗号分隔,可以为空)
currentTags 文本 订单中所有当前标签的逗号分隔列表
previousTags 文本 本次更新之前,该订单上所有先前标签的以逗号分隔的列表
eventId 文本 此事件的 ID。请在应用的“事件历史记录”中搜索该 ID,以查看具体发送了什么内容。

示例:当标签被移除时,释放锁定

  1. 将“拣货单标签已移除”设为触发条件。
  2. 添加条件removedTags 包含 hold
  3. 添加一个“针对 order.fulfillmentOrdersFor each 循环”,并启用**“释放履约订单保留”功能**。
  4. 启用该工作流。

订单备注已更改

当员工或在结账编辑时由客户添加、修改或清除订单明细时触发。

火灾源于 Shopify Webhook 结合变更检测
权限 订单数据访问
已开启 启用一个使用该功能的 Flow 工作流即可将其打开。该功能的独立开关位于应用的**“触发器**”页面上。

用于

  • 将下单后添加的备注通知仓库。
  • 解析配送说明。

“订单备注已更改”会向您的工作流发送什么内容

流中的变量 类型 内容简介
order 订单(Shopify) 注释发生变化的订单。这是一个完整的 Shopify 订单,因此其所有字段以及 Flow 自身的订单操作均可使用。
oldNote 文本 该订单的上一条备注(如果之前未设置备注,则为空)
newNote 文本 订单上的新备注(如果备注已被清除,则为空)
eventId 文本 此事件的 ID。请在应用的“事件历史记录”中搜索该 ID,以查看具体发送了什么内容。

示例:向仓库发送延迟通知

  1. 将“拣货顺序备注已更改”设为触发条件。
  2. 添加条件order.displayFulfillmentStatus 不等于 FULFILLED
  3. 添加**“发送内部邮件”选项**:{{order.name}} note changed from "{{oldNote}}" to "{{newNote}}"
  4. 启用该工作流。

订单属性已更改

当订单的自定义属性(购物车属性、备注属性)被添加、移除或修改时触发。changes.items 中的每个项目都包含changeTypekey 以及这两个属性的值。

火灾源于 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,以查看具体发送了什么内容。

示例:应对交货日期变更

  1. 将“拣货顺序属性发生变化”设为触发条件。
  2. 添加一个条件changes.items中至少有一个满足key等于delivery_date
  3. 添加**“发送内部邮件**”。Flow 的文本字段支持 Liquid 语法,因此通过 for 循环遍历 changes.items,会将每个条目的 key 及其 oldValuenewValue 一起打印出来。
  4. 启用该工作流。

订单明细项已更改

当订单被编辑时(即添加或移除商品、更改数量、价格或变体)触发。changes.items 中的每条记录都会注明事件类型(addedremovedquantity_changedprice_changedvariant_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,以查看具体发送了什么内容。

示例:当某件物品被取出时,暂停仓库操作

  1. 将“拣货订单行项目发生变更”设为触发条件。
  2. 添加一个条件changes.items中至少有一个条目的changeType等于removed
  3. 添加订单标签 edited-recheck,并发送一封内部邮件,其中列出 changes.items 中每条记录的 productTitlevariantTitle(在邮件正文中使用 Liquid 循环 for)。
  4. 启用该工作流。

订单处理方式已变更

当订单的履约状态发生变化时(nullpartialfulfilledrestocked),以及在履约过程中的相关事件发生时(如单行订单已履约、履约被取消、添加或更改物流跟踪信息),该事件会被触发。

火灾源于 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,以查看具体发送了什么内容。

示例:转发新的运单号

  1. “拣货订单履行”设为触发条件。
  2. 添加一个**“For each**”循环,遍历changes.items
  3. 在循环内部添加一个条件:循环项的trackingNumber字段既不为空,又存在
  4. 添加**“发送 HTTP 请求**”操作,并输入 {{order.name}} 以及循环项的 trackingNumbertrackingUrl。通过**“添加变量**”进行选择:Flow 会在触发器数据旁边列出循环项。
  5. 启用该工作流。

订单显示状态已更改

管理员显示的履约状态发生变化时触发:unfulfilledin_progresson_holdscheduledpartially_fulfilledfulfilled。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,以查看确切的发送内容。

示例:将处于待处理状态的订单上报

  1. 将“拣货单显示状态发生变化”设为触发条件。
  2. 添加一个条件newDisplayFulfillmentStatus 等于 on_hold
  3. 添加“通过 {{order.name}} 向客服发送内部邮件”功能。
  4. 启用该工作流。

订单财务状态已变更

当订单的财务状态发生变化时触发,例如:pending 变为 paidpaid 变为 partially_refundedrefundedauthorized 变为 voided

火灾源于 Shopify Webhook 结合变更检测
权限 订单数据访问
已开启 启用一个使用该功能的 Flow 工作流即可将其开启。该功能的独立开关位于应用的**“触发器**”页面上。

用于

  • 针对订单下达数天后才被标记为已支付的银行转账和发票进行处理。
  • 请将退款情况告知财务部门。
  • 只有在订单付款后,才可将其释放以进行履行。

“财务状况变更”订单会向您的工作流发送什么

流中的变量 类型 内容简介
order 订单(Shopify) 财务状态发生变化的订单。这是一个完整的 Shopify 订单,因此其所有字段以及 Flow 自身的订单操作均可使用。
oldFinancialStatus 文本 之前的财务状态(例如:待处理、已批准、已支付)
newFinancialStatus 文本 新的财务状态(例如:已支付、部分退款、已退款、已作废)
eventId 文本 此事件的 ID。请在应用的“事件历史记录”中搜索该 ID,以查看具体发送了什么内容。

示例:在发票款项结清后释放 B2B 订单

  1. 将“拣货单财务状态发生变化”设为触发条件。
  2. 添加条件oldFinancialStatus 等于 pending,且 newFinancialStatus 等于 paid
  3. 添加并移除订单标签 awaiting-payment,并添加一个针对 order.fulfillmentOrders 的“For each over”循环,其中包含**“Release fulfillment order hold**”。
  4. 启用该工作流。

订单收货地址已更改

当订单下单后发货地址发生变更时触发。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,以查看具体发送了什么内容。

示例:保留一个地址已变更的订单

  1. “拣货订单”的收货地址在流程中发生了变更。此操作需要访问****订单客户数据;当您在“触发器”页面将其启用时,应用会通过一个对话框同时请求这两项数据。
  2. 添加条件order.displayFulfillmentStatus FULFILLED
  3. 添加订单标签address-changed,并向仓库发送内部邮件
  4. 启用该工作流。

下一步

默认情况下,该应用会监控最近 60 天的订单,这正是 Shopify 授予的权限。若要响应更早订单的编辑操作,请在“权限”页面中延长订单历史记录的范围。请参阅 权限与数据访问