訂單觸發器,逐步解說

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 語法,因此透過 forchanges.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.fulfillmentOrders」的「**For each」**操作,並設定動作為「暫停履行訂單」。
  4. 啟用此工作流程。建立「已移除訂單標籤」的鏡像,並解除履約訂單的暫停狀態

已移除訂單標籤

當訂單中至少有一個標籤被移除時觸發。

火災源自 Shopify Webhook 加上變更偵測
權限 訂單資料存取
已開啟 啟用一個使用該功能的 Flow 工作流程,即可開啟該功能。其專屬開關位於應用程式的「**觸發器」**頁面中

用於

  • 釋放標籤所束縛的一切。
  • 當移除「needs-review」標籤時,關閉該任務。

「移除訂單標籤」會將哪些項目傳送至您的工作流程

流量中的變量 類型 內容為何
order 訂單(Shopify) 標籤已變更的訂單。這是一個完整的 Shopify 訂單,因此其所有欄位以及 Flow 自身的訂單動作皆可使用。
removedTags 文字 從訂單中移除的標籤清單(以逗號分隔)
addedTags 文字 在同一筆更新中新增至訂單的標籤清單(以逗號分隔),該清單可能為空
currentTags 文字 訂單上所有現行標籤的逗號分隔清單
previousTags 文字 此更新之前,該訂單上所有先前標籤的以逗號分隔清單
eventId 文字 此事件的識別碼。請在應用程式的「事件記錄」中搜尋此識別碼,以查看確切的傳送內容。

範例:當標籤被移除時,解除鎖定

  1. 已將「揀貨**順序標籤已移除」**設為觸發條件。
  2. 新增條件removedTags 包含 hold
  3. 新增一個「針對 order.fulfillmentOrders 進行 For 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 自身的訂單 webhook 而變得相當棘手。

「訂單明細項目變更」會將哪些內容傳送至您的工作流程

流量中的變量 類型 內容為何
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(適用於已移除或 variant_changed 的情況)
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 明細項目編號(適用於 line_item_fulfilled/unfulfilled)
changes.items (each).productTitle 文字 產品名稱
changes.items (each).variantTitle 文字 替代標題
changes.items (each).oldFulfillmentStatus 文字 舊的訂單履行狀態(例如:null、部分完成、已完成、已補貨)
changes.items (each).newFulfillmentStatus 文字 新的履約狀態(例如:null、部分完成、已完成、已補貨)
changes.items (each).fulfillmentId 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 履約編號(用於每次履約的顯示狀態變更)
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」所授予的權限。若要對更早訂單的編輯進行回應,請在「權限」頁面中延長訂單歷史紀錄。請參閱 權限與資料存取