Schutz vor doppelten Lieferungen
Die meisten Systeme wiederholen einen Webhook-Versuch, wenn sie keine schnelle Antwort erhalten. Falls der erste Versuch tatsächlich angekommen ist, wird Ihr Shopify Flow-Workflow für ein einzelnes Ereignis zweimal ausgeführt - was zu einer zweiten E-Mail, einem doppelten Tag und einer wiederholten Bestellnotiz führt.
Der Schutz vor doppelten Zustellungen verhindert dies. Er ist standardmäßig bei jedem Webhook deaktiviert.
So funktioniert es
Falls Ihr Versandsystem eine eindeutige ID pro Ereignis enthält, geben Sie den Namen des Headers an, der diese ID enthält, unter „Erweiterte Einstellungen“ → „Erkennung doppelter Zustellungen“.
| Verhalten | |
|---|---|
| Erste Anfrage mit einer bestimmten ID | Bei normaler Verarbeitung fließt das Material |
| Bitte innerhalb von 24 Stunden wiederholen | 200 OK mit duplicate: true - nicht an Shopify Flow gesendet |
| Eine andere ID | Wie üblich bearbeitet |
| Anfrage ohne diesen Header | Wie üblich bearbeitet |
| Feld wurde leer gelassen | Jede Anfrage wird bearbeitet - es ändert sich nichts |
Gängige Header-Bezeichnungen: Event-Id, Idempotency-Key, X-Request-Id. Bei der Übereinstimmung wird die Groß-/Kleinschreibung nicht berücksichtigt.
# 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"}'Warum liefert die Wiederholung immer noch den Wert 200?
Gerade eine Antwort, die nicht im 2xx-Bereich liegt, erschwert es dem Absender, einen erneuten Versuch zu unternehmen. Die Antwort 200 signalisiert ihm, dass das Ereignis sicher verarbeitet wurde, sodass er den Vorgang beendet - während duplicate: true im Hauptteil es Ihnen ermöglicht, die beiden Ergebnisse zu unterscheiden, falls Sie die Antworten protokollieren.
Wo Duplikate auftreten
Ein unterdrücktes Duplikat:
- Es wird kein Eintrag im Aufrufverlauf erstellt, sodass dies nicht auf Ihren Plan angerechnet wird
- wird im Live Request Inspector angezeigt, während Sie den Webhook bearbeiten, als unterdrücktes Duplikat gekennzeichnet
Diese Kombination ist bewusst gewählt: Ihr Verlauf und Ihr Kontingent bleiben unberührt, aber ein Anruf wirkt niemals so, als wäre er einfach spurlos verschwunden.
Die Wahl der richtigen Kopfzeile
Die ID muss über den gesamten Wiederholungsversuch hinweg konsistent und für jedes Ereignis eindeutig sein - darin besteht der gesamte Mechanismus.
Gut: Eine Ereignis-ID oder ein Idempotenzschlüssel, der vom Absender einmalig generiert wird, sobald das Ereignis eintritt.
Falsch und beim Speichern abgelehnt: Proxy-gesteuerte Header wie X-Forwarded-For, CF-* oder X-Signature. Da sich deren Wert pro Anfrage oder pro Hop ändert, würden sie niemals mit einer Wiederholung übereinstimmen - was stillschweigend statt mit einer Fehlermeldung zu scheitern.
Sollte der Deduplizierungs-Shop vorübergehend nicht verfügbar sein
Die Zustellung wird verarbeitet, anstatt verworfen zu werden. Ein doppelter Workflow-Durchlauf stellt ein weitaus geringeres Problem dar als ein verlorenes Ereignis; daher ist die Funktion bewusst so ausgelegt, dass sie im Zweifelsfall zugunsten des Benutzers entscheidet.

