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.

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.
| Change | Before | After |
|---|---|---|
fields_changed | Flat array | Object with added, updated, removed |
| Parent triggers | product.variants | product.variants.* |
| Delivery headers | shopify-event-id and shopify-resource-id sent | Both removed |
update action | Triggers optional | At 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
- Shopify's Generate image: unsaved images vanish, so click Keep
Shopify's file picker can generate images, but unsaved ones are discarded unless you click Keep. How that differs from a Sume job result URL you retrieve later.
- Shopify Events GA: start a Sume product video from the payload query
Shopify's Next Gen Events are GA in API version 2026-10 with 18 topics and a query in the payload. One delivery can start a Sume job without a follow-up fetch.
- Shopify's video limit by plan: 250 to 100,000 files, what to keep
Shopify counts video and 3D files per store by plan: 250 on Starter up to 100,000 on Enterprise. How to decide which product clips are worth keeping.
- Shopify video_tag loop: no HLS, so keep the product clip short
Shopify's video_tag skips the HLS source when loop is on, so the MP4 downloads whole. How to cut a short looping clip and conform its size with Sume video trim.
Written by Sume