訂單觸發器,逐步解說
關於訂單標籤、備註、屬性、明細項目、履約及狀態變更觸發器的Shopify Flow逐步教學指南。
Shopify Flow 針對訂單的重要時刻(例如:建立、付款、完成、取消)提供了完善的觸發機制。但它缺乏的是這些階段之間的所有細節。這十項觸發機制會在訂單建立後發生任何修改時觸發,並分別詳細記錄了具體的變更內容。
本頁內容:訂單更新, 新增訂單標籤, 移除訂單標籤, 訂單備註變更, 訂單屬性變更, 訂單明細變更, 訂單履行狀態變更, 訂單顯示狀態變更, 訂單財務狀態變更, 訂單寄送地址變更

訂單更新
每當訂單更新時都會觸發。它攜帶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、tags、note、lineItems 或 customAttributes。 |
changes.items (each).oldValue |
文字 | 更新前的數值。長數值會被縮短 |
changes.items (each).newValue |
文字 | 更新後的數值。長數值會被縮短 |
eventId |
文字 | 此事件的 ID。請在應用程式的「事件歷史紀錄」中搜尋此 ID,以查看確切的傳送內容。 |
範例:透過您的客服系統,將已追蹤的訂單變更記錄至該訂單的時間軸中
- 選擇「**訂單更新」**作為觸發條件。
- 新增條件:
changes.fields既非空,又存在。 - 在您的客服系統中新增**「發送 HTTP 請求」**功能,並在請求體中加入
{{order.name}}。Shopify Flow 的文字欄位支援 Liquid 語法,因此透過for對changes.items進行迴圈處理,即可針對每項變更新增一行,並包含其field、oldValue及newValue。 - 開啟此工作流程。
已新增訂單標籤
當訂單中新增至少一個標籤時觸發。
| 火災源自 | Shopify Webhook 加上變更偵測 |
| 權限 | 訂單資料存取 |
| 已開啟 | 啟用一個使用該功能的「Shopify Flow」工作流程,即可將其開啟。該功能的專用開關位於應用程式的「**觸發器」**頁面中 |
用於
- 請讓員工透過標籤啟動流程:
gift-wrap、hold、priority。 - 針對來自防詐騙、訂閱或履約應用程式的標籤做出反應。
「新增訂單標籤」功能會將哪些資料傳送至您的工作流程
| Shopify Flow 中的變數 | 類型 | 內容為何 |
|---|---|---|
order |
訂單(Shopify) | 標籤已變更的訂單。這是一個完整的 Shopify 訂單,因此其所有欄位以及 Shopify Flow 自身的訂單操作皆可使用。 |
addedTags |
文字 | 以逗號分隔的、已新增至訂單的標籤清單 |
removedTags |
文字 | 在同一則更新中從訂單中移除的標籤清單(以逗號分隔;可能為空) |
currentTags |
文字 | 訂單上所有當前標籤的逗號分隔清單 |
previousTags |
文字 | 此更新之前,該訂單上所有先前標籤的以逗號分隔清單 |
eventId |
文字 | 此事件的 ID。請在應用程式的「事件記錄」中搜尋此 ID,以查看確切的傳送內容。 |
範例:當訂單被標記為「暫停」時,暫停出貨
- 將「揀貨**順序標籤已新增」**設為觸發條件。
- 新增條件:
addedTags包含hold。 - 新增一個「針對
order.fulfillmentOrders執行 **For each」**操作,並設定動作為「暫停履行訂單」。 - 啟用此工作流程。建立鏡像,並勾選「**移除訂單標籤」**及「解除履約訂單保留」選項。
已移除訂單標籤
當訂單中至少有一個標籤被移除時觸發。
| 火災源自 | Shopify Webhook 加上變更偵測 |
| 權限 | 訂單資料存取 |
| 已開啟 | 啟用一個使用此功能的「Shopify Flow」工作流程,即會開啟該功能。其專屬開關位於該應用程式的「**觸發器」**頁面上 |
用於
- 釋放標籤所束縛的一切。
- 當移除「
needs-review」標籤時,請關閉該任務。
「移除訂單標籤」功能會將哪些項目傳送至您的工作流程
| Shopify Flow 中的變數 | 類型 | 內容為何 |
|---|---|---|
order |
訂單(Shopify) | 標籤已變更的訂單。這是一個完整的 Shopify 訂單,因此其所有欄位以及 Shopify Flow 自身的訂單操作皆可使用。 |
removedTags |
文字 | 從訂單中移除的標籤清單(以逗號分隔) |
addedTags |
文字 | 在同一筆更新中新增至訂單的標籤清單,以逗號分隔(可能為空) |
currentTags |
文字 | 訂單上所有現行標籤的逗號分隔清單 |
previousTags |
文字 | 此更新之前,該訂單上所有先前標籤的以逗號分隔清單 |
eventId |
文字 | 此事件的 ID。請在應用程式的「事件記錄」中搜尋此 ID,以查看確切的傳送內容。 |
範例:當標籤被移除時,解除鎖定
- 已將「揀貨**順序標籤移除」**設為觸發條件。
- 新增條件:
removedTags包含hold。 - 新增一個「**For each」**迴圈,遍歷
order.fulfillmentOrders並執行「釋放履約訂單保留」操作。 - 開啟此工作流程。
訂單備註已變更
當工作人員或客戶在結帳編輯階段新增、變更或清除訂單明細時,會觸發此事件。
| 火災源自 | Shopify Webhook 加上變更偵測 |
| 權限 | 訂單資料存取 |
| 已開啟 | 啟用一個使用此功能的「Shopify Flow」工作流程,即可開啟該功能。其專屬開關位於該應用程式的「**觸發器」**頁面中 |
用於
- 若在訂單下單後新增了備註,請通知倉庫。
- 解析配送指示。
「訂單備註變更」會將哪些內容傳送至您的工作流程
| Shopify Flow 中的變數 | 類型 | 內容為何 |
|---|---|---|
order |
訂單(Shopify) | 該訂單的備註已變更。這是一個完整的 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 加上變更偵測 |
| 權限 | 訂單資料存取 |
| 已開啟 | 啟用一個使用該功能的「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,以查看確切的傳送內容。 |
範例:因應交貨日期變更而採取的應對措施
- 將「揀貨**順序屬性變更」**設為觸發條件。
- 新增一項條件:
changes.items中至少有一項的key等於delivery_date。 - 新增**「傳送內部電子郵件**」。Shopify Flow 的文字欄位支援 Liquid 語法,因此透過
for對changes.items進行迴圈處理,即可將每個條目的key連同其oldValue和newValue一併列印出來。 - 開啟此工作流程。
訂單明細項目已變更
當訂單被編輯時(例如新增或移除商品、變更數量、價格或變體)會觸發此事件。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(適用於新增或變體變更) |
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(在電子郵件正文中使用 Liquidfor迴圈)。 - 開啟此工作流程。
訂單處理方式已變更
當訂單的履約狀態發生變更時(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 | 明細項目編號(適用於 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 | 履約編號(適用於 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。透過「新增變數」選取這些值:Shopify Flow 會將迴圈項目列於觸發器資料的旁邊。 - 開啟此工作流程。
訂單顯示狀態已變更
當管理員所顯示的履約狀態發生變更時觸發:unfulfilled、in_progress、on_hold、scheduled、partially_fulfilled、fulfilled。Shopify 針對這些狀態不會發送 Webhook,因此應用程式會依照排程進行檢查。
| 火災源自 | 是根據排程進行檢查的,因為 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 | 履約編號(用於每次履約的顯示狀態變更) |
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 加上變更偵測 |
| 權限 | 訂單資料存取 |
| 已開啟 | 啟用一個使用該功能的「Shopify Flow」工作流程,即可開啟此功能。其專屬開關位於該應用程式的「**觸發器」**頁面中 |
用於
- 針對訂單完成數天後才標示為「已付款」的銀行轉帳及發票,請予以處理。
- 請向會計部門通報退款事宜。
- 訂單必須在付款後,才可釋出進行出貨。
「財務狀況變更」會將哪些項目傳送至您的工作流程
| Shopify Flow 中的變數 | 類型 | 內容為何 |
|---|---|---|
order |
訂單(Shopify) | 財務狀態發生變更的訂單。這是一個完整的 Shopify 訂單,因此其所有欄位以及 Shopify Flow 自身的訂單操作皆可使用。 |
oldFinancialStatus |
文字 | 先前的財務狀態(例如:待處理、已核准、已付款) |
newFinancialStatus |
文字 | 新的財務狀態(例如:已付款、部分退款、已退款、已作廢) |
eventId |
文字 | 此事件的 ID。請在應用程式的「事件歷史紀錄」中搜尋該 ID,以查看確切的傳送內容。 |
範例:當發票款項已支付時,釋出 B2B 訂單
- 將「揀**貨單財務狀態變更」**設為觸發條件。
- 新增條件:
oldFinancialStatus等於pending,且newFinancialStatus等於paid。 - 新增並移除訂單標籤
awaiting-payment,並針對order.fulfillmentOrders加入「For each over」迴圈,同時啟用「釋放訂單履行」的訂單暫存功能。 - 開啟此工作流程。
訂單寄送地址已變更
當訂單提交後,其運送地址發生變更時觸發。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,以查看確切的傳送內容。 |
範例:暫停一筆地址已變更的訂單
- 在「Shopify Flow」中變更揀貨訂單的寄送地址。此功能需要存取****訂單和客戶資料;當您從「觸發器」頁面啟用此功能時,應用程式會透過同一個對話方塊同時要求這兩項權限。
- 新增條件:
order.displayFulfillmentStatus不同於FULFILLED。 - 新增訂單標籤
address-changed,並向倉庫發送內部電子郵件。 - 開啟此工作流程。
下一步
預設情況下,該應用程式會監控過去 60 天的訂單,這正是「Shopify」所授予的權限。若要對更早的訂單編輯做出反應,請在「權限」頁面上延長訂單歷史記錄。請參閱 權限與資料存取。
- 完整的觸發器參考指南 - 所有觸發器都集中在一頁上。
- 選擇合適的扳機 - 哪一種適合您的情況。
- 自訂觸發器 - 若沒有合適的內建觸發器,請自行撰寫。
- 事件歷史紀錄與疑難排解 - 查看發射了什麼以及攜帶了什麼。
- 在記錄的管理頁面上觸發事件 - 某筆紀錄的最新動態,顯示於Shopify管理介面中的專屬頁面。
