Issue summary
Shopify\Webhooks\Topics currently exposes 188 constants. The Admin GraphQL
WebhookSubscriptionTopic enum (API version 2026-07) defines 32 topics that have
no corresponding constant in the class.
Missing topics:
APP_SCOPES_UPDATE
CUSTOMERS_PURCHASING_SUMMARY
CUSTOMERS_WHATS_APP_MARKETING_CONSENT_UPDATE
CUSTOMER_JOINED_SEGMENT
CUSTOMER_LEFT_SEGMENT
DELIVERY_PROMISE_SETTINGS_UPDATE
FULFILLMENT_HOLDS_ADDED
FULFILLMENT_HOLDS_RELEASED
FULFILLMENT_ORDERS_HOLD_RELEASED
FULFILLMENT_ORDERS_MANUALLY_REPORTED_PROGRESS_STOPPED
FULFILLMENT_ORDERS_PROGRESS_REPORTED
INVENTORY_SHIPMENTS_ADD_ITEMS
INVENTORY_SHIPMENTS_CREATE
INVENTORY_SHIPMENTS_DELETE
INVENTORY_SHIPMENTS_MARK_IN_TRANSIT
INVENTORY_SHIPMENTS_RECEIVE_ITEMS
INVENTORY_SHIPMENTS_REMOVE_ITEMS
INVENTORY_SHIPMENTS_UPDATE_ITEM_QUANTITIES
INVENTORY_SHIPMENTS_UPDATE_TRACKING
INVENTORY_TRANSFERS_ADD_ITEMS
INVENTORY_TRANSFERS_CANCEL
INVENTORY_TRANSFERS_COMPLETE
INVENTORY_TRANSFERS_READY_TO_SHIP
INVENTORY_TRANSFERS_REMOVE_ITEMS
INVENTORY_TRANSFERS_UPDATED
INVENTORY_TRANSFERS_UPDATE_ITEM_QUANTITIES
LOCALES_DESTROY
MARKETS_BACKUP_REGION_UPDATE
METAFIELD_DEFINITIONS_CREATE
METAFIELD_DEFINITIONS_DELETE
METAFIELD_DEFINITIONS_UPDATE
ORDERS_LINK_REQUESTED
Expected behavior
Topics lists these topics as constants, so apps can subscribe with
Topics::METAFIELD_DEFINITIONS_CREATE rather than a raw string.
Actual behavior
The constants don't exist, so the raw string has to be passed to
Registry::register() / Registry::addHandler(). This still works — the docs
note the class "may not be completely up to date at all times" — but it loses
the discoverability and typo-safety the class exists to provide.
Source
Notes
The enum additionally contains FINANCE_APP_STAFF_MEMBER_{DELETE,GRANT,REVOKE,UPDATE},
FINANCE_KYC_INFORMATION_UPDATE and RETURNS_PROCESS, which are not listed on the
webhooks topic page. Happy to include or omit those depending on maintainer preference.
Issue summary
Shopify\Webhooks\Topicscurrently exposes 188 constants. The Admin GraphQLWebhookSubscriptionTopicenum (API version 2026-07) defines 32 topics that haveno corresponding constant in the class.
Missing topics:
APP_SCOPES_UPDATECUSTOMERS_PURCHASING_SUMMARYCUSTOMERS_WHATS_APP_MARKETING_CONSENT_UPDATECUSTOMER_JOINED_SEGMENTCUSTOMER_LEFT_SEGMENTDELIVERY_PROMISE_SETTINGS_UPDATEFULFILLMENT_HOLDS_ADDEDFULFILLMENT_HOLDS_RELEASEDFULFILLMENT_ORDERS_HOLD_RELEASEDFULFILLMENT_ORDERS_MANUALLY_REPORTED_PROGRESS_STOPPEDFULFILLMENT_ORDERS_PROGRESS_REPORTEDINVENTORY_SHIPMENTS_ADD_ITEMSINVENTORY_SHIPMENTS_CREATEINVENTORY_SHIPMENTS_DELETEINVENTORY_SHIPMENTS_MARK_IN_TRANSITINVENTORY_SHIPMENTS_RECEIVE_ITEMSINVENTORY_SHIPMENTS_REMOVE_ITEMSINVENTORY_SHIPMENTS_UPDATE_ITEM_QUANTITIESINVENTORY_SHIPMENTS_UPDATE_TRACKINGINVENTORY_TRANSFERS_ADD_ITEMSINVENTORY_TRANSFERS_CANCELINVENTORY_TRANSFERS_COMPLETEINVENTORY_TRANSFERS_READY_TO_SHIPINVENTORY_TRANSFERS_REMOVE_ITEMSINVENTORY_TRANSFERS_UPDATEDINVENTORY_TRANSFERS_UPDATE_ITEM_QUANTITIESLOCALES_DESTROYMARKETS_BACKUP_REGION_UPDATEMETAFIELD_DEFINITIONS_CREATEMETAFIELD_DEFINITIONS_DELETEMETAFIELD_DEFINITIONS_UPDATEORDERS_LINK_REQUESTEDExpected behavior
Topicslists these topics as constants, so apps can subscribe withTopics::METAFIELD_DEFINITIONS_CREATErather than a raw string.Actual behavior
The constants don't exist, so the raw string has to be passed to
Registry::register()/Registry::addHandler(). This still works — the docsnote the class "may not be completely up to date at all times" — but it loses
the discoverability and typo-safety the class exists to provide.
Source
Notes
The enum additionally contains
FINANCE_APP_STAFF_MEMBER_{DELETE,GRANT,REVOKE,UPDATE},FINANCE_KYC_INFORMATION_UPDATEandRETURNS_PROCESS, which are not listed on thewebhooks topic page. Happy to include or omit those depending on maintainer preference.