Webhookを受け取る
Webhookを購読し、署名を検証して、重複と再送に耐える受け口を作れる
最終確認: 2026-09
解説
受託の現場でなぜ必要か: この回では、Webhook(ストアで起きた出来事を、Shopifyが指定のURLへ送ってくる通知)を購読し、署名を検証して、重複と再送に耐える受け口を作れるようになります。
受託では、受け口はインターネットに公開されたURLなので、3つの約束事を守らないと偽の通知や二重処理の事故につながります。
Webhookはどう購読するか
購読は、アプリ設定(shopify.app.toml)で宣言するか、webhookSubscriptionCreateで登録します。
配信先はHTTPSのほか、Google Pub/Sub、Amazon EventBridgeも選べます。
署名(HMAC)はどう検証するか
署名を検証しなければ、誰でも偽の注文を送れます。
アプリのクライアントシークレットを鍵に、生のリクエストボディのHMAC-SHA256を計算し、base64にしてX-Shopify-Hmac-SHA256ヘッダと定数時間比較(長さに関係なく同じ時間で比べる方法)します。
JSONにパースし直した文字列ではなく、届いたバイト列そのままを使います。
すぐ200を返し、2回来ても壊れないようにするには
タイムアウトは、接続1秒・全体5秒です。
処理は非同期(キュー)に回し、応答は即座に返します。
エラーや無応答なら再送されます(回数と期間は公式で確認)。
同じ通知が2回来る前提で、X-Shopify-Webhook-Idを保存し、同じIDは2回処理しません(冪等性)。
発展:次世代のEvents(開発者プレビュー)
フィールド単位の変更フィルタとGraphQL形式のペイロードで、不要なイベントの受信を減らせます。
2026年時点はunstableの開発者プレビューで、対象トピックも限られます。
本番では使いません。
※ ShopifyはShopify Inc.の商標です。本サイトは個人が制作した非公式の学習教材であり、同社の承認・提携・後援を受けていません。記載内容は2026-09時点のものです。料金・上限値・管理画面のラベルは変わるため、作業の前に公式ドキュメントで確認してください。