ペイロードのマッピングとShopify Flow変数

Shopify Flow トリガーフィールドはプレーンな文字列です。ペイロードはおそらくそうではないでしょう。マッピングとは、ワークフローに必要な部分を受信リクエストから抽出する方法のことです。

4つの分野

各 Webhook は、Shopify Flow に対して 4 つのフィールド(fieldOne、fieldTwo、fieldThree、fieldFour)を公開します。「**詳細設定」**で、それぞれをペイロード内のキーに紐付けてください。

次のようなリクエスト本文がある場合:

「詳細設定」タブでは、フィールド1からフィールド4がそれぞれorderId、status、total、noteに割り当てられています
詳細設定:リクエスト本文から最大4つの値をマッピングできます。これらはShopify Flowで、fieldOneからfieldFourとして受け取られます。
Shopify Flowの「Webhookトリガー」用「変数の追加」パネルで、webhookIdおよびfieldOneからfieldFourまでが、最近のリクエストからのサンプル値とともに一覧表示されています
トリガーがワークフローに送信する内容:Webhook ID と、マッピングされた4つのフィールドです。これらは、直近のリクエストの値とともに表示されています。
json
{
  "orderId": "1001",
  "customer": { "email": "someone@example.com", "name": "Alex" },
  "note": "gift wrap"
}
フィールド 地図上で表示する 「Shopify Flow」に至る価値
fieldOne orderId 1001
fieldTwo customer.email someone@example.com
fieldThree customer.name Alex
fieldFour note gift wrap

ネストされた値にはドット記法(customer.email)が使用されます。配列の要素にはインデックス(items.0.sku)が使用されます。

Shopify Flowでは、これらを{{fieldOne}}、{{fieldTwo}}といったように参照します。

オブジェクトと配列

マッピングされた値自体がオブジェクトまたは配列である場合、Shopify Flowの変数には構造体を格納できないため、自動的にJSON文字列に変換されます。上記の例で、fieldOne を customer にマッピングすると、Shopify Flowでは次のように表示されます:

text
{"email":"someone@example.com","name":"Alex"}

そのデータが必要になった際は、Shopify Flowの「**コードを実行」**アクションで解析してください。

4つのフィールドでは足りない場合

4つの指定フィールドで、ほとんどの連携に対応しています。それ以外の場合には、「詳細設定」内に3つの有効化スイッチがあり、これらはすべてデフォルトでオフになっています:

設定 Shopify Flowが受け取るもの 『フィールド・イン・Shopify Flow』
カスタムリクエストボディを許可する 厳格な検証を行わず、どのような体型でも受け入れます -
全身を使ってください リクエスト本文全体をJSON文字列として rawBody
リクエストヘッダーを含める リクエストのヘッダーをキーと値のリストとして requestHeaders
クエリパラメータを含める キーと値のリストとしてのURLクエリ文字列 queryParams

requestHeaders また、queryParamsはリストとして渡されます。「コードの実行」アクション内でrequestHeaders.itemsを反復処理し、各エントリは{ key, value }となります。

50KB以内に収めてください

Shopify Flow 各トリガー実行のサイズを50KBに制限しています。送信するペイロードの正確なサイズを計測し、payload_too_large を使用して事前にサイズが上限を超えるものをすべて拒否するため、後でワークフローが失敗するのではなく、明確なエラーメッセージが表示されます。

もしエラーが出る場合は、ボディのサイズを小さくするか、「ボディ全体を使用する」「リクエストヘッダーを含める」「クエリパラメータを含める」のオプションをオフにしてみてください。通常、これらが原因でエラーが発生することが多いようです。

ヘッダーとクエリは常に記録されます

オプトインスイッチは、Shopify Flow に転送される内容のみを制御します。呼び出し履歴には、ヘッダーとクエリ文字列(機密情報はマスクされた状態で)が常に記録されますので、リクエストのすべてをワークフローに送信することなく、デバッグを行うことができます。