SDK release 15.0.0
sdk:npm/@shopify/shopify-api@15.0.0- Product
- Shopify Admin GraphQL API
- Source
- GitHub Releases
- Change kind
- Sdk Release
- Detected
- Last updated
Interpreted documentation change
What the vendor announced
The evidence describes a major breaking change in @shopify/shopify-api@15.0.0: the headers eventId and resourceId are removed from events deliveries, with guidance to use webhookId and to read the root resource's GID from the payload. This is a vendor-initiated API/library change with migration instructions. No explicit replacement endpoint is provided, and there is no explicit hard deadline stated. The change is primarily informational for developers to migrate.
@shopify/shopify-api@15.0.0 ### Major Changes - d641a62: Remove `eventId` and `resourceId` from events webhooks Shopify is dropping the `shopify-event-id` and `shopify-resource-id` headers from events deliveries, so the libraries no longer read them. Both fields are gone from the public types, which makes this a breaking change. Webhooks are unaffected. They keep the `X-Shopify-Event-Id` header and the `eventId` field. ## Migration Guide Stop reading `eventId` and `resourceId` on events deliveries. Neither field has a direct equivalent: `eventId` identified the event behind a delivery, and `resourceId` carried the root resource's GID, which you can read from the payload instead. To deduplicate events deliveries, use `webhookId`. It comes from the `shopify-webhook-id` header, which Shopify still sends, and it is unique per delivery. ### For @shopify/shopify-app-remix and @shopify/shopify-app-react-router **Before:** ```typescript export const action = async ({request}: ActionFunctionArgs) => { const {webhookType, eventId, resourceId} = await authenticate.webhook(request); if (webhookType === 'events') { console.log(`Event ${eventId} for resource ${resourceId}`); } return new Response(); }; ``` **After:** ```typescript export const action = async ({request}: ActionFunctionArgs) => { const {webhookType, payload} = await authenticate.webhook(request); if (webhookType === 'events') { // eventId and resourceId are no longer set on events deliveries. // The root resource's GID is in the payload. console.log(payload); } return new Response(); }; ```
Monitored for you
Does this change affect your integration?
Choose the operations and fields your services use. Detektu matches Shopify findings to that declared usage so your team can review the relevant evidence. No agent or repository access required.
Multi-source correlation
Related changes
Other Shopify findings correlated with this change across sources.
- InfoRemoving marketCurrencySettingsUpdate mutation
doc:019fb619-9b4a-74ac-a83e-3ffa98844fb4::feed/https://shopify.dev/changelog/removing-marketcurrencysettingsupdate-mutation - InfoSetting includeRestOfWorld to true returns an error in API version 2027-01
doc:019fb619-9b4a-74ac-a83e-3ffa98844fb4::feed/https://shopify.dev/changelog/setting-includerestofworld-to-true-returns-an-error-in-api-version-2027-01 - InfoPolaris CDN 1.1 is now stable
doc:019fb619-9b4a-74ac-a83e-3ffa98844fb4::feed/https://shopify.dev/changelog/polaris-cdn-1-1-is-now-stable - InfoEvents subscription query complexity limit is changing to 100 points
doc:019fb619-9b4a-74ac-a83e-3ffa98844fb4::feed/https://shopify.dev/changelog/events-subscription-query-complexity-limit-is-changing-to-100-points - InfoUnlimited private plans and target stores in Shopify App Pricing
doc:019fb619-9b4a-74ac-a83e-3ffa98844fb4::feed/https://shopify.dev/changelog/unlimited-private-plans-and-target-stores-in-shopify-app-pricing - InfoNew translatable boolean field for Metafield GraphQL Object
doc:019fb619-9b4a-74ac-a83e-3ffa98844fb4::feed/https://shopify.dev/changelog/is-translatable-metafield-field - InfoPassword Protected Shop Dev flows on Shopify Theme CLI v3.83.x and older to be deprecated
doc:019fb619-9b4a-74ac-a83e-3ffa98844fb4::feed/https://shopify.dev/changelog/password-protected-shop-dev-flows-on-shopify-theme-cli-v3-83-x-and-older-to-be-deprecated - InfoThe `automaticDiscounts` query is removed in API version 2027-01
doc:019fb619-9b4a-74ac-a83e-3ffa98844fb4::feed/https://shopify.dev/changelog/automaticdiscounts-query-is-removed-in-api-version-2027-01 - InfoRequest a bundle size exception for existing UI extensions
doc:019fb619-9b4a-74ac-a83e-3ffa98844fb4::feed/https://shopify.dev/changelog/request-a-bundle-size-exception-for-existing-ui-extensions - InfoRemoved session.currentSession.staffMemberId from POS UI Extensions (2026-10)
doc:019fb619-9b4a-74ac-a83e-3ffa98844fb4::feed/https://shopify.dev/changelog/removed-session-currentsession-staffmemberid-from-pos-ui-extensions-2026-10 - InfoNew Pricing audit trail for contextual product variant prices
doc:019fb619-9b4a-74ac-a83e-3ffa98844fb4::feed/https://shopify.dev/changelog/pricing-audit-trail-for-contextual-product-variant-prices - InfoQuery market hierarchies with the GraphQL Admin API
doc:019fb619-9b4a-74ac-a83e-3ffa98844fb4::feed/https://shopify.dev/changelog/market-relationships - InfoAdding a canceled receive action to the inventory shipments API
doc:019fb619-9b4a-74ac-a83e-3ffa98844fb4::feed/https://shopify.dev/changelog/adding-a-canceled-receive-action-to-the-inventory-shipments-api - InfoUpdates to Events payloads and subscription configuration
doc:019fb619-9b4a-74ac-a83e-3ffa98844fb4::feed/https://shopify.dev/changelog/updates-to-events-payloads-and-subscription-configuration - InfoDynamic complexity cost for `metafieldsSet` mutation
doc:019fb619-9b4a-74ac-a83e-3ffa98844fb4::feed/https://shopify.dev/changelog/dynamic-complexity-cost-for-metafieldsset-mutation - InfoFilter Catalog search results by media type
doc:019fb619-9b4a-74ac-a83e-3ffa98844fb4::feed/https://shopify.dev/changelog/filter-catalog-search-results-by-media-type - InfoPrepare your app for the Shopify admin's new look
doc:019fb619-9b4a-74ac-a83e-3ffa98844fb4::feed/https://shopify.dev/changelog/prepare-your-app-for-the-shopify-admins-new-look - Infofamily_name is optional for B2B orders in Payments Apps API requests
doc:019fb619-9b4a-74ac-a83e-3ffa98844fb4::feed/https://shopify.dev/changelog/family_name-is-optional-for-b2b-orders-in-payments-apps-api-requests - InfoDelivery options in Shopify Functions input now expose their metafields
doc:019fb619-9b4a-74ac-a83e-3ffa98844fb4::feed/https://shopify.dev/changelog/delivery-options-in-shopify-functions-input-now-expose-their-metafields - InfoNew paymentInstrumentSendAddEmail mutation emails customers a link to add a payment method for a subscription, order, or draft order
doc:019fb619-9b4a-74ac-a83e-3ffa98844fb4::feed/https://shopify.dev/changelog/new-paymentinstrumentsendaddemail-mutation - InfoDiscounts Allocator Function API developer preview has ended
doc:019fb619-9b4a-74ac-a83e-3ffa98844fb4::feed/https://shopify.dev/changelog/discounts-allocator-function-api-developer-preview-has-ended