Developer Preview

Next Generation Events:フィールド単位の高精度Webhook

over-delivery・固定ペイロード・差分不明を一挙解決する次世代イベント購読が unstable API で登場

Classic Webhook全フィールド変更で発火 → 過剰配信固定ペイロード → 追加GraphQL取得が必要差分不明 → アプリ側でstate比較が必要Next Generation Eventstriggers でフィールド単位に限定発火query でペイロードを自由設計fields_changed で何が変わったか明示

Next Generation Events は、Shopifyアプリ開発者を対象に 2026年5月27日 より developer preview として公開されました。従来 Webhook では避けられなかった「関係ない変更での過剰発火」「追加 API コール」「差分検出ロジック」の3課題を、TOML 設定だけで Shopify 側に移譲できます。現時点では unstable API バージョンで Product・Customer トピックに対応し、2026年を通じて対応トピックが拡大予定です。

1Classic Webhook が抱える3つの課題

Classic Webhook の処理フロー(価格同期アプリの例)Shopifyproducts/update 全発火アプリ受信タイトル変更も受け取る① 差分チェック保存済み state と比較② 追加 API 呼び出し必要データを再取得問題点まとめ● 過剰配信:関係ない変更にも反応 ● 固定ペイロード:必要なデータが揃わない ● 差分不明:何が変わったか自前で判定Events で解決triggers / query / query_filter / fields_changed をShopify側が処理

2Next Generation Events の4つの新機能

triggers

購読が発火する条件をフィールドパスで指定。例:product.variants.price のみ変わった時だけ配信。省略した場合はすべてのトリガーで発火。

query

標準の GraphQL Admin API クエリを TOML に直接記述。Shopify が変更後にクエリを実行し、その結果を data フィールドに含めて配信。追加 API コール不要。

query_filter

クエリ結果に対して配信抑制フィルターを適用。例:product.status:'ACTIVE' の場合、非公開商品への変更は配信されない。query_filter で参照するフィールドは query 内に必須。

fields_changed

配信ペイロードに含まれるフィールドパスの配列。「なぜこの配信が来たか」をアプリ側で判断するための情報。state 比較ロジックが不要になる。

3配信ペイロードの構造

Events 配信ペイロードの構造{"topic": "Product"← GraphQL Admin API オブジェクト名"action": "update"← create / update / delete"handle": "price_sync"← TOML に定義した購読名"data": { ... }← query 実行結果 (追加 API コール不要)"fields_changed": ["...price"]← 差分フィールドパス (state比較不要)"query_variables": { ... }← Shopify が query に渡した変数}※ query を省略した場合は fields_changed と query_variables のみのシンプルなペイロードが送信される

4業務に活かせる具体ユースケース

課題
PIM連携アプリで商品タイトルや在庫変更でも価格同期 Webhook が発火し、不要なAPI呼び出しが大量発生していた
打ち手
triggers = ["product.variants.price", "product.variants.compareAtPrice"] を設定し、価格フィールドの変更時だけ発火するよう限定。query で必要な variant・product データを一発取得
効果
Webhook ハンドラ内の state 比較ロジックが不要になり、追加 GraphQL リクエストもゼロに。処理の複雑度と外部 API コスト双方を削減
技術メモ
TOML に [[events.subscription]] ブロックを追加し api_version = "unstable" を指定。Shopify CLI 3.92 以上が必要
課題
ロイヤルティアプリが顧客プロフィール更新 Webhook を受け取るたびに、変更箇所をアプリ側で判定しポイント計算の対象か否かを判断していた
打ち手
Customer トピックに Events 購読を作成し、ポイント計算に影響するフィールドのみを triggers で指定。query_filter で対象顧客セグメントに絞り込む
効果
不要な配信が届かず、ハンドラがほぼすべての受信を処理対象として扱えるようになりスループット改善
技術メモ
Customer トピックは 2026年5月時点で対応済み。追加トピックは 2026年中に順次拡大予定(元記事の記載)
課題
フルフィルメントアプリがオーダー変更 Webhook を受け取るたびにフルペイロードを解析していたが、フルフィルメントステータスに無関係な変更が大半を占めていた
打ち手
Order トピックが Events に対応した段階で、フルフィルメント関連フィールドのみを triggers に設定して移行。それまでは既存 Webhook と Events を同じ shopify.app.toml 内で併用
効果
トピック対応後は段階的に移行でき、移行期間中もサービス断なく新旧を共存させられる
技術メモ
未対応トピックは引き続き Classic Webhook を同一 TOML 内に記述して利用可能(元記事明示)

5技術者向け重要ポイント

項目 詳細 ステータス
APIバージョン unstable のみ対応。安定版での利用は現時点では不可 unstable
対応トピック Product・Customer(2026年5月時点)。Order等は今後拡大予定 拡張中
CLI要件 Shopify CLI バージョン 3.92 以上へのアップグレードが必須 要対応
設定方法 shopify.app.toml[events] ブロックを追加。TOML で handle・topic・actions・triggers・uri・query・query_filter を定義 TOML設定
Classic Webhookとの共存 未対応トピックは同一 TOML 内で Classic Webhook と Events を並列定義できる 共存可
query省略時の挙動 query を省略すると fields_changedquery_variables のみを含むシンプルなペイロードが配信される オプション
triggers省略時の挙動 triggers を省略するとそのトピックで発火可能なすべてのトリガーで Event が発火する オプション

6導入手順の概要

STEP 1CLI 3.92+にアップグレードSTEP 2[events] ブロックをTOML に追加STEP 3triggers / query /query_filter を定義STEP 4設定をデプロイしてdev storeでテストSTEP 5既存 Webhook から段階移行

※ 本機能は developer preview 段階です。unstable API バージョンは breaking changes が発生する可能性があります。本番環境への適用前に必ず公式ドキュメントで最新情報をご確認ください。

Next Generation Events は、過剰Webhookによる処理コストと複雑な差分検出ロジックを TOML 設定だけで Shopify 側に移譲できる次世代イベント購読機能であり、Product・Customer トピックから試験導入することで開発工数とAPI費用の両方を削減できます。

Source: https://shopify.dev/changelog/next-generation-events-now-available-in-developer-preview | 公開日: 2026年5月27日