Beskyttelse mod dobbeltlevering
De fleste systemer forsøger igen at udløse en webhook, hvis de ikke modtager et hurtigt svar. Hvis det første forsøg faktisk nåede frem, kører din »Shopify Flow«-arbejdsgang to gange for én begivenhed - en ekstra e-mail, et dobbelt tag eller en gentagen ordrekommentar.
Beskyttelsen mod dobbeltlevering forhindrer dette. Den er som standard slået fra på alle webhooks.
Sådan fungerer det
Hvis dit afsendelsessystem indeholder et unikt id for hver begivenhed, skal du angive navnet på den header, der indeholder dette id, under »Avancerede indstillinger« → »Detektering af dobbeltleveringer«.
| Adfærd | |
|---|---|
| Første forespørgsel med et givet id | Ved normal behandling udløser det Shopify Flow |
| Gentag inden for 24 timer | 200 OK med duplicate: true - sendes ikke til Shopify Flow |
| Et andet id | Behandlet som normalt |
| Anmodning uden denne header | Behandlet som normalt |
| Feltet er tomt | Hver eneste anmodning behandles - der sker ingen ændringer |
Almindelige navne på headere: Event-Id, Idempotency-Key, X-Request-Id. Der skelnes ikke mellem store og små bogstaver ved sammenligningen.
# Same Event-Id twice - the second is accepted but not re-sent to Flow
curl -X POST https://your-app-url/webhook/ab12cd34 \
-H "Content-Type: application/json" \
-H "X-Api-Key: your-token" \
-H "Event-Id: evt_12345" \
-d '{"orderId":"1001"}'Hvorfor returnerer gentagelsen stadig 200?
Et svar, der ikke er en 2xx-kode, er netop det, der gør det sværere for afsenderen at forsøge igen. Et svar med koden 200 fortæller afsenderen, at begivenheden er blevet håndteret korrekt, så den stopper - mens duplicate: true i svarteksten giver dig mulighed for at skelne mellem de to udfald, hvis du logger svarene.
Hvor der forekommer dubletter
Et undertrykt duplikat:
- der oprettes ingen post i opkaldshistorikken, så det tæller ikke med i din plan
- vises i Live Request Inspector, mens du redigerer webhooken, markeret som et undertrykt duplikat
Den kombination er bevidst valgt: Din historik og din kvote forbliver uberørte, men et opkald ser aldrig ud som om det er forsvundet uden videre.
Valg af den rigtige overskrift
ID’et skal være det samme ved hvert nyt forsøg og unikt for hver hændelse - det er hele mekanismen.
God: et begivenheds-id eller en idempotensnøgle, der genereres én gang af afsenderen, når begivenheden finder sted.
Fejl, og afvist ved lagring: proxy-styrede headere såsom X-Forwarded-For, CF-* eller X-Signature. Deres værdi ændrer sig pr. anmodning eller pr. hop, så de vil aldrig matche en gentagelse - hvilket medfører en lydløs fejl i stedet for en tydelig fejlmeddelelse.
Hvis dedup-lageret kortvarigt er utilgængeligt
Leveringer behandles i stedet for at blive afvist. En dobbeltkørsel af arbejdsgangen udgør et langt mindre problem end en mistet hændelse, så funktionen er bevidst designet til at fungere på den sikre side.

