Shopify Flow のアクション Send HTTP request のレスポンスを変数として扱う方法

Shopify Flow のアクション Send HTTP request のレスポンスを変数として扱う方法


Shopify Editions Summer ‘25 で発表された新機能の中から、Shopify Flow のアクション Send HTTP request のレスポンスを変数として扱う方法を解説します。

該当の Changelog はこちらです。日本語訳は「フロー: HTTPリクエスト送信アクションの改善により、外部システムへのセキュアな接続が可能になり、ワークフローにデータを返します。」です。

Flow: Improved Send HTTP request action enables secure connections to external systems and returns data to the workflow
https://changelog.shopify.com/posts/flow-improved-send-http-request-action-enables-secure-connections-to-external-systems-and-returns-data-to-the-workflow

以下、Changelogの翻訳抜粋です。

Shopify Flow の HTTP リクエスト送信アクションが改良され、シークレットを安全に保存し、後続のワークフローステップにデータを返すことで、外部サービスとの幅広い統合をサポートします。

このアクションは、Flow 内で暗号化・難読化されたアクセストークンやパスワードなどのシークレットで安全に設定することができます。

HTTP リクエストを送信した後、完全なレスポンスがワークフローに返され、JSON.parse メソッドでスキーマを定義する Run code アクションを使用して解析することで、返されたデータを条件やアクションの変数として使用することができます。

API Key や Secret を安全に保存する方法

本題からは逸れるのですが、こちらも重要なアップデートなので簡単に解説します。
Send HTTP request を使う際に設定する API Key や Secret を Flow の設定に保存して Flow 上では変数として呼び出すことができるようになりました。

シークレットを追加するテキストリンクが増えました。クリックすると シークレット追加 画面が表示されます。

新しく追加された Flow の設定画面へ遷移します。Flow のページからもいけます。

シークレットを追加 をクリックすると項目を入力する画面に遷移します。

  • ハンドル:変数として指定する文字列
  • シークレット値:API Key や Secret
  • 説明:何のAPI Key や Secret なのか他の人もわかるようにテキストで補足

一通り入力すると シークレットを管理する 画面に変数と共に表示されます。これでシークレットを追加する設定は終わりです。

実際に Flow を作成してみましょう。トリガーはなんでも良いです。アクションに Send HTTP request を選んでください。シークレットを追加するボタンから呼び出したいシークレットを選択すると変数として設定されます。ここでは {{secrets.fullAPIKey}} という変数になっています。

これでセキュアに API Key や Secret を Flow 上で扱うことができます。

Run code アクションでレスポンスを変数にする

ここからが本番です。

Send HTTP request のレスポンスがワークフローに返されるようになり、条件としても活用できるようになりました。今回の記事では条件はすっ飛ばします。

headers の選択肢です。

レスポンスをワークフローに返されるようになり、外部サービスの WebAPI で受け取ったデータをFlow上の変数として扱い、メタフィールドを更新したり、さらにWebAPIを呼び出すことが可能になりました。

今回は最初に実行した Send HTTP request のレスポンスが下記のケースで書いてます。レスポンスの Key が id なので Run code 上の変数は {{runCode.id}} になる流れです。

{
    "id": "123456789-abcd"
}

では早速ですが、先ほど作成した Send HTTP request のあとにアクション Run code を作成します。

ちょっと難しそうな画面が出てきますが3箇所それぞれ入力すべきコードを書いておきます。WebAPIのレスポンスが違うパターンの場合は、ShopifyのヘルプセンターアシスタントかChatGPTにでも聞いてください。

左上の 入力を定義する です。

query { 
    sendHttpRequest {
          body
     }
}

続いて左下の 出力を定義する です。

"The output of Run Code"
type Output {
   id: String!
}

最後に右側の コードを書く です。

export default function main(input) { 
   const body = JSON.parse(input.sendHttpRequest.body);
   return {
   id: body.id
   };
}

これで完成です。この Run code 以降のアクションで Send HTTP request のレスポンスが変数として指定できるようになります。ここまでくればあとは簡単な設定のみです。

変数を使ってメタフィールドの追加・更新

Run code のアクションに繋げて次のアクション Update customer metafield を作成してください。メタフィールドは更新したいメタフィールドを選択肢、Valueは右下の 変数を追加する から Run code > id を指定してください。

これで WebAPI のレスポンスの値を使ってメタフィールドが追加・更新できます。素晴らしい!

変数を使いさらに別の WebAPI を呼び出す

これは変数を WebAPI の URL に変数を追加するパターンです。アクション Send HTTP request を繋げて上記と同様に右下の 変数を追加する から Run code > id を指定してください。Bodyへ変数を追加する場合も同じ要領です。

エレガント!

まとめ

この機能のリリースのおかげで Shopify App はない外部サービスと Shopify を連携させたい時に、外部サービスが WebAPI さえ提供していればだいたいのケースでなんとかなりそうな気がします。

これで Shopify へリプレイスする障壁がまた一つ減ったのではないでしょうか。Flow を初期からプッシュしてた身としては本当に待望のアップデートで実際に使ってみてこんなリッチな機能があるのに Flow は無料のアプリなのか感動しました。

Kazahaya Okada
Kazahaya Okada
株式会社Stack / CRM事業部長
一覧へ戻る