触发器教程订单触发器,分步指南

订单触发器,分步指南

复制页面

关于订单标签、备注、属性、订单项、发货以及状态变更触发器的Shopify Flow分步教程。

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

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

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

订单更新

在订单的每次更新时触发。它携带changes:已发生变化的受追踪字段(财务状态、发货状态、标签、备注、订单项、自定义属性)及其变更前后的值。

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

用于

  • 一个可响应多种订单修改的工作流程。
  • 面向客户服务的订单变更日志。

“订单更新”会向您的工作流程发送什么

Shopify Flow中的变量 类型 内容简介
order 订单(Shopify) 已更新的订单。这是一个完整的Shopify订单,因此其所有字段以及Shopify Flow自身的订单操作均可用。
payload 文本 包含已更新订单的 GID 的 JSON 对象(例如:{"id":"gid://shopify/Order/123"})
changes 对象 哪些跟踪字段发生了变化(财务状态、发货状态、标签、备注、订单项、自定义属性),以及每个字段的新旧值
changes.fields 文本列表 已发生变化的受监控字段名称
changes.items 对象列表 每个已修改字段的旧值和新值
changes.items (each).field 文本 发生变化的字段:financialStatus、fulfillmentStatus、标签、note、lineItems 或 customAttributes。
changes.items (each).oldValue 文本 更新前的值。长数值会被截短。
changes.items (each).newValue 文本 更新后的值。长数值将被截短。
eventId 文本 此事件的 ID。请在应用的“事件历史记录”中搜索该 ID,以查看具体发送了什么内容。

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

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

已添加订单标签

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

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

用于

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

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

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

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

  1. 将“拣货单标签已添加”设为触发器。
  2. 添加条件:addedTags 包含 hold。
  3. 添加一个“针对 order.fulfillmentOrders 的 For each”操作,并选择**“暂停发货**”作为操作。
  4. 启用该工作流程。创建**“已移除订单标签**”的镜像,并解除履约订单的暂停状态。

已删除订单标签

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

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

用于

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

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

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

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

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

订单备注已更改

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

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

用于

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

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

Shopify Flow中的变量 类型 内容简介
order 订单(Shopify) 注释发生变化的订单。这是一个完整的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 中的每个项目都包含changeType、key 以及这两个属性的值。

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

用于

  • 响应由送货日期选择器、礼品选项或 B2B 表单填写的属性。
  • 检测员工在订单生成后是否修改了某项属性。

“订单属性变更”会向您的工作流程发送哪些内容

Shopify Flow中的变量 类型 内容简介
order 订单(Shopify) 自定义属性发生变化的订单。这是一个完整的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. 添加**“发送内部邮件**”。Shopify Flow 的文本字段支持 Liquid 语法,因此通过 for 循环遍历 changes.items,会将每个条目的 key 及其 oldValue 和 newValue 一起打印出来。
  4. 启用该工作流程。

订单项已更改

当订单被编辑时(即添加或移除商品、更改数量、价格或变体)触发。changes.items 中的每条记录都会注明事件类型(added、removed、quantity_changed、price_changed、variant_changed),并附有旧值和新值。

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

用于

  • 通知仓库,有一笔已拣选的订单发生了变更。
  • 编辑后,请重新运行欺诈检查或保证金检查。
  • 将订单修改同步到ERP系统,而Shopify自带的订单Webhook使得这一过程非常麻烦。

“订单项已更改”会向您的工作流程发送什么

Shopify Flow中的变量 类型 内容简介
order 订单(Shopify) 已更新的订单。这是一个完整的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(用于已移除或 variant_changed 情况)
changes.items (each).newVariantId ID 新变体 GID(用于 added 或 variant_changed)
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 中每个条目的 productTitle 和 variantTitle(邮件正文中使用 Liquid 循环 for)。
  4. 启用该工作流程。

订单发货方式已变更

当订单的发货状态发生变化时(null、partial、fulfilled、restocked)以及其间的发货事件(如单行发货、发货取消、添加或更改物流追踪信息)触发。

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

用于

  • 发送您自己的带追踪功能的发货通知。
  • 检测已取消的发货。
  • 按每批货而非按每个订单更新ERP系统。

“订单发货变更”会向您的工作流程发送什么

Shopify Flow中的变量 类型 内容简介
order 订单(Shopify) 订单的发货状态发生了变化。这是一个完整的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}} 以及循环项的 trackingNumber 和 trackingUrl。通过**“添加变量**”选择这些值:Shopify Flow 会在触发器的数据旁边列出循环项。
  5. 启用该工作流程。

订单显示状态已更改

火灾源于 按计划进行检查,因为 Shopify 不会为此发送 Webhook
权限 订单数据访问
已开启 启用一个使用该功能的 Shopify Flow 工作流程即可将其开启。该功能的独立开关位于应用的**“触发器**”页面上。

用于

  • 当发货服务或POS将订单标记为“处理中”时触发响应。
  • 将处于“暂停”状态的订单上报。

“订单显示状态变更”会向您的工作流程发送什么

Shopify Flow中的变量 类型 内容简介
order 订单(Shopify) 显示发货状态发生变化的订单。这是一个完整的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. 启用该工作流程。

订单财务状态已变更

paid 变为 paid, 变为 partially_refunded 或 refunded,authorized 变为 voided。

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

用于

  • 针对订单提交数天后才标记为“已支付”的银行转账和发票,应及时处理。
  • 请将退款情况告知财务部门。
  • 只有在订单付款后,才可将其发货。

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

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

示例:在发票付款后释放 B2B 订单

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

订单收货地址已更改

当订单下单后发货地址发生变更时触发。shippingAddress 为单行显示,shippingAddressDetails 为分列显示。

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

用于

  • 当拣货开始后地址发生变更时,暂停或更改货件的配送路线。
  • 重新执行地址验证或欺诈检查。

“收货地址已更改”通知会向您的工作流程发送什么内容

Shopify Flow中的变量 类型 内容简介
order 订单(Shopify) 发货地址发生变更的订单。这是一个完整的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. “拣货订单”的收货地址在Shopify Flow中发生了变更。此操作需要访问****订单和客户数据;当您在“触发器”页面将其启用时,应用会通过一个对话框同时请求这两项数据。
  2. 添加条件:order.displayFulfillmentStatus 不等于 FULFILLED。
  3. 添加订单标签address-changed,并向仓库发送内部邮件。
  4. 启用该工作流程。

下一步

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