開發者 API、MCP、GitHub 及觸發器模擬

您可以檢視觸發器、啟用或停用它們、查閱事件歷史紀錄,並透過您自己的程式碼或 AI 助理來模擬觸發器。Workflow Trigger Extensions 提供 REST APIMCP 伺服器,並能連線至 GitHub 儲存庫,讓您的自訂觸發器程式碼置於版本控制之下。這三項功能皆可在「開發者」頁面進行管理。

模擬觸發器

測試 Flow 工作流程通常意味著在您的商店中實際執行相關操作 - - 編輯商品、下單、等待投票結果。模擬功能則能省去這段等待時間:選擇一個觸發器,將其指向某個資源,系統便會觸發該流程,彷彿真實事件剛剛發生一般。

有兩種方法可以執行它:

  • **在應用程式中,**開啟「事件歷史紀錄」中的任何事件,然後再次選擇「模擬」。這會重新觸發該特定事件。
  • 透過 API 或 MCP,並使用資源 ID 或過去的事件。

模擬功能刻意追求精準。它不會建立任何捷徑式有效載荷 - - 而是會經過與真實的 Shopify Webhook 完全相同的處理流程,因此您的工作流程所接收的內容,與實際在生產環境中所接收的內容完全一致。

Dry run firstbash
curl -X POST https://shopify.workflow-trigger-extensions.app/api/v1/triggers/product-update-trigger/simulate \
  -H "Authorization: Bearer ftk_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{"resourceId":"gid://shopify/Product/123456789","dryRun":true}'

模擬執行會驗證觸發條件、解析主題,並顯示有效載荷 - - 但不會觸發任何動作。移除 dryRun 即可實際觸發該事件。您也可以傳入 {"fromHistoryId":"456"},以重新觸發過去的事件,而非建立新的事件。

由輪詢(polling)而非 Webhook 觸發的觸發器無法進行模擬;在觸發器清單中,這些觸發器會顯示「simulatable: false」。

API 金鑰

在「開發者」頁面建立一個金鑰,並選擇其存取層級:

  • 唯讀 - 列出觸發器及其狀態、讀取事件歷史紀錄、統計資料及權限。
  • 讀取與寫入 - - 亦可開啟或關閉觸發器。
  • 讀取、寫入與執行 - - 亦可模擬觸發器並測試自訂觸發器程式碼。

完整金鑰僅在建立時顯示一次。金鑰以雜湊形式儲存,並可隨時撤銷。請以 Bearer 標記的形式傳送:

Authorization: Bearer ftk_your_key_here

基於上述原因,模擬功能位於其專屬層級之下:它會實際執行您的自動化流程,因此用於日常讀取的金鑰無法觸發這些流程。

「開發者」頁面,其中包含 REST API 的基礎網址、一個測試請求,以及「建立 API 金鑰」按鈕
「開發者」頁面:REST API 的基礎 URL、用於測試金鑰的請求,以及建立金鑰的位置。

REST API

方法 路徑 等級 目的
GET /api/v1 API 指標 - 確認 API 正常運作
GET /api/v1/me 閱讀 檢查授權並查看您的金鑰等級
GET /api/v1/triggers 閱讀 每個觸發器及其對您商店的狀態
GET /api/v1/triggers/:handle 閱讀 詳細說明一個觸發器
PUT /api/v1/triggers/:handle 開啟或關閉一個觸發器
PUT /api/v1/triggers 透過單次呼叫同時開啟或關閉多個裝置
POST /api/v1/triggers/:handle/simulate 執行 模擬觸發器
GET /api/v1/triggers/custom 閱讀 您自訂的觸發器及其程式碼
GET /api/v1/triggers/custom/:handle/test 閱讀 自訂觸發器的擷取樣本事件
POST /api/v1/triggers/custom/:handle/test 執行 在不儲存或觸發的情況下執行自訂觸發程式碼
GET /api/v1/history 閱讀 列出觸發事件
GET /api/v1/history/:id 閱讀 取得一個事件及其載荷
GET /api/v1/stats 閱讀 總計、成功率、狀態分類
GET /api/v1/permissions 閱讀 您授予了哪些資料權限,以及每項權限能解鎖哪些功能

GET /api/v1/triggers 這是設定時非常實用的功能:針對每個觸發器,它會告訴您該觸發器所需的權限、該權限是否已授予、觸發器是否已啟用,以及應在應用程式的哪個位置進行管理。

開啟與關閉觸發器

PUT 之所以使用此方法而非 PATCH,是因為該呼叫具有幺勁性 - - 在超時後重新執行時,不會導致任何操作被重複應用,這一點在由輔助函式驅動 API 時至關重要。

Enable one triggerbash
curl -X PUT https://shopify.workflow-trigger-extensions.app/api/v1/triggers/order-tags-added-trigger \
  -H "Authorization: Bearer ftk_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{"enabled":true}'

Enabling 從不授予任何權限。如果觸發器需要某項您尚未授予的權限,呼叫仍會成功,並明確告知您缺少哪些權限以及應在哪裡授予:

{
  "enabled": true,
  "scopeGranted": false,
  "missingScopeLabels": ["Order Data Access"],
  "permissionsUrl": "https://admin.shopify.com/store/.../app/permissions?permission=read_orders",
  "warning": "Enabled, but this trigger cannot fire until Order Data Access is granted."
}

點擊該連結會開啟「權限」頁面,並直接捲動至您所需的卡片。

加入 "sync": true 以同時啟動資料同步,如此一來,觸發器便會對現有的記錄生效,而非僅針對今後建立的記錄。

若要一次切換多個選項,PUT /api/v1/triggers 接受明確的清單或整個類別:

{ "enabled": true, "handles": ["order-tags-added-trigger", "order-note-changed-trigger"] }
{ "enabled": true, "category": "orders" }

連結 GitHub

在「開發者」頁面上,「連線」分頁可讓您將 GitHub 儲存庫與您的 自訂觸發器 程式碼進行連結。變更內容會以拉取請求的形式供審查,您可以查看誰做了哪些變更,並能將不再運作的轉換還原。

點選「連線」將在您選擇的帳戶上安裝我們的 GitHub App。您可以選擇該 App 可存取的儲存庫,並可隨時在 GitHub 上撤銷該存取權限。選取儲存庫後,系統會立即將您現有的所有自訂觸發器寫入該儲存庫,因此該儲存庫一開始就能與該 App 對應,而非需隨時間推移逐步填入資料。

您的職責 會發生什麼事
在應用程式中建立、編輯或複製觸發器 該檔案已提交至您的儲存庫
在應用程式中刪除觸發器 該檔案已從您的儲存庫中移除
將變更推送到已連線的分支 應用程式中已更新觸發器的程式碼

每個觸發器都是一個以該觸發器識別碼命名的檔案,其中包含的正是您在編輯器中看到的模組 - - 沒有任何額外的封裝。因此,您可以像處理其他 JavaScript 檔案一樣,在自己的編輯器中開啟該檔案、執行它並進行程式碼檢查,然後在提交之前,使用上方的 /test 端點,將其套用至實際擷取的事件上進行測試。

還原至較早的版本

您無需了解 Git 即可撤銷變更。一旦儲存庫建立連線,觸發編輯器便會顯示一個「版本」下拉選單,列出該檔案的所有先前版本,並附上日期與作者。選擇其中一個版本,系統便會將其載入編輯器中,作為未儲存的變更,讓您能先閱讀內容 - - 只有儲存後,系統才會將其還原為新的提交。

變更或斷開連接

**「變更儲存庫」會將您帶回選取器,且不會影響該安裝項目。「斷開連結」會撤銷 GitHub 上的安裝,並在此處移除該安裝項目,因此其名稱即為其功能。「管理權限」**會開啟 GitHub 上的安裝設定,您可以在該處新增或移除儲存庫。

測試自訂觸發程式碼

如果您將自訂觸發器程式碼存放在儲存庫中,並使用自己的編輯器進行編輯,則無需先將程式碼儲存至應用程式,即可針對擷取的樣本事件執行該程式碼。

Test the file you are editingbash
curl -X POST https://shopify.workflow-trigger-extensions.app/api/v1/triggers/custom/my-trigger/test \
  -H "Authorization: Bearer ftk_your_key_here" \
  -H "Content-Type: application/json" \
  -d "$(jq -Rn --rawfile c flow-triggers/my-trigger.js '{code:$c}')"

您將獲得該應用程式「測試」按鈕所顯示的內容:是否會觸發、輸出物件、您的 ctx.log 指令,以及執行時間。

不會觸發任何操作,也不會進行任何儲存 - - 不會執行任何工作流程、不會記錄任何事件、不會消耗任何配額,且儲存的程式碼亦不會被修改。此流程可在檔案監控器每次儲存時安全地執行。完整的工作流程請參閱 自訂觸發器

MCP 伺服器

「開發者」頁面的「MCP」分頁會顯示伺服器 URL,以及適用於 Claude、Cursor、VS Code、Gemini CLI 等工具的、可直接複製的連線指令。這些工具對應於 REST 端點,且工具集會根據您的金鑰層級而有所不同 - - 若為唯讀金鑰,則完全無法使用寫入或執行類型的工具。

工具 等級 功能說明
list_triggers 閱讀 每個觸發器及其狀態
list_custom_triggers 閱讀 您自訂的觸發器及其程式碼
get_custom_trigger_sample 閱讀 自訂觸發器用來進行測試的擷取事件
list_history 閱讀 近期觸發事件
get_event 閱讀 一項事件及其所包含的有效載荷
get_stats 閱讀 彙總統計資料
get_permissions 閱讀 已授予的權限及其所解鎖的功能
get_trigger 詳細說明一個觸發器
set_trigger 開啟或關閉一個觸發器
set_triggers_bulk 一次開啟或關閉多個開關
simulate_trigger 執行 按需觸發
test_custom_trigger 執行 在不儲存或觸發的情況下執行自訂觸發程式碼

這正是讓助理真正實用的關鍵:它能夠列出現有項目、說明觸發器所需的條件、啟用觸發器、觸發測試事件、讀取結果 - - 對於自訂觸發器,還能重寫程式碼並進行測試 - - 而您無需離開當前的對話。

您的資料如何受到保護

事件有效載荷在回傳時會將個人資料進行遮蔽處理:電子郵件地址、電話號碼、卡號以及包含個人姓名的欄位均會轉為 ***。Shopify 資源識別碼及商業相關欄位則保持不變,以確保有效載荷仍具實用價值。

遮罩功能適用於欄位名稱和值模式,因此雖已謹慎處理,但無法完全保證 - - 自由文字欄位中的個人資料仍可能外洩。此外,錯誤訊息在離開伺服器之前,其內部診斷細節也會被移除。

GitHub 連線不會儲存任何可能外洩的憑證:僅保留安裝識別碼,而存取儲存庫則使用按需生成的憑證,該憑證將於一小時內過期。

下一步

速率限制

REST API 與 MCP 伺服器會針對每個 API 金鑰共用一個配額。

  • 每 60 秒內,每個金鑰的請求數上限為 300 次,此為固定時段。
  • **執行層級的呼叫會獲得第二項、更嚴格的配額,即每小時 60 次。**這兩項配額都會被消耗,因此一波密集的執行操作也會侵蝕共享配額。對此應用程式而言,這意味著模擬觸發器以及執行自訂觸發程式碼,這兩者都會實際觸發您的工作流程。
  • **所有方案皆同。**您的方案計量機制是觸發事件,而非 API 呼叫,因此升級並不會增加這些數字。
  • 處理時傳回 HTTP 429 錯誤。請暫停並重新嘗試,最好採用指數退避法。
  • 若我們的快取暫時無法使用,限流器會採取「開放式」處理,而非阻斷您的整合流程。

傳入的 Shopify Webhook 不會受到速率限制

我們不會對 Shopify 傳送給我們的 Webhooks 進行流量限制 - - 這些 Webhooks 會在收到時立即被接受並排入佇列。上限為您方案的 30 天事件配額

若您撰寫自訂觸發器,有件事值得留意:您的程式碼會在監聽的主題發生每個事件時執行,且每次執行都算作一個事件,包括您透過傳回 null 篩除的事件。其成本與針對同一事件的內建觸發器相同。

Shopify

這些是 Shopify 對 Shopify API 所設的限制,而非我們所設的限制。這些限制適用於此應用程式(以及您的工作流程)在 Shopify 端所能執行的操作,因此即使您在我們設定的限制範圍內,若商店規模較大,仍可能觸及這些限制。

  • 所有 Shopify API 的輸入陣列均設有 250 項的上限。若請求中的陣列超過此上限,該請求將被拒絕。
  • **分頁功能在 25,000 個物件處停止。**計數在 25,000 個以內均為準確;超過此數值時,Shopify 會傳回 25001,意指「超過 25,000」。若需進一步瀏覽,請先進行篩選。
  • GraphQL 管理 API 的計費是根據計算出的查詢成本(以每秒點數為單位)來計算的,其上限取決於商店所選用的「Shopify」方案:
Shopify 計畫 每秒得分
標準 100
進階 200
此外 1000
企業(商務元件) 2000

Storefront API 並無速率限制。

完整詳情:Shopify API 速率限制