Shopify Events dropped shopify-event-id: build your own Sume job key

Shopify Events deliveries no longer carry shopify-event-id or shopify-resource-id. If you used one as a Sume Idempotency-Key, build a new key from the resource.

5 min readSume
All posts

If your Shopify Events handler used the shopify-event-id header as the Idempotency-Key for a Sume submit, switch to a key you build from the resource and the request, because Shopify's 2026-09-16 change removed the shopify-event-id and shopify-resource-id delivery headers. A key that is missing becomes an empty or random value, and a random key makes every redelivery a new paid job.

The Shopify changes are from its Events payloads and subscription configuration notice; the Sume rules are from Jobs and results and Errors and rate limits, all read 2026-10-03. I did not run an Events subscription.

What changed in the Events payload?

Shopify lists these breaking changes: fields_changed is now an object with added, updated and removed arrays instead of a flat array; parent triggers need an explicit wildcard terminator, so product.variants becomes product.variants.*; the two headers are removed; and an update subscription must have at least one trigger.

Changes from Shopify's 2026-09-16 notice, read 2026-10-03.
ChangeBeforeAfter
fields_changedFlat arrayObject with added, updated, removed
Parent triggersproduct.variantsproduct.variants.*
Delivery headersshopify-event-id and shopify-resource-id sentBoth removed
update actionTriggers optionalAt least one trigger required

What should the Sume key be built from?

Use stable values you control: the topic, the resource id from the payload body, and a hash of the exact request body you send to Sume. The hash keeps the same logical request on the same key and gives a changed request a new key. Sume returns 409 idempotency_conflict when the same key is reused for a different operation or payload, so a key that is only the resource id would fail on a legitimate second request.

Store the key and the returned job id before you return from the handler, then wait with webhook mode or poll status_url. A redelivery from Shopify then finds the stored job id and does not submit again.

Sources

Related posts

More in Integrations

All Integrations posts

Written by Sume