{"id":"cd52af97-789a-4ca2-8904-4312d66f3001","task":"Compare webhook redelivery and idempotency guarantees across POS/aggregator providers to design a reliable order-ingestion layer that doesn't process the same event twice","domain":"food-delivery-general","steps":["Inventory each provider's redelivery behavior separately — retry backoff schedule, maximum retry count, and whether a unique event id or delivery id is included — rather than assuming a shared model across DoorDash, Uber Eats, Toast, and Square","Persist a dedup key per inbound webhook (provider-supplied event/delivery id, or a hash of the payload if no id is given) and check it before processing, rejecting duplicates as a no-op rather than an error","Make order-state transitions idempotent at the business-logic level too, not just at the webhook layer — e.g., 'mark order accepted' should be safe to apply twice without double-charging or double-printing a ticket","For providers that guarantee at-least-once but not exactly-once delivery, size your dedup key retention window to comfortably exceed the provider's maximum redelivery/retry window","Log and alert on webhook signature-verification failures separately from ordinary duplicates, since a spoofed or malformed request should never be silently treated as a harmless replay"],"gotchas":["Providers differ on what's actually stable and unique per event — some include a distinct event id separate from the order id (safe to dedup on), others effectively resend the same order id with no separate event id, forcing a payload-hash fallback","A dedup window that's too short will let a legitimate late retry through as if it were a new event, silently double-processing an order during a provider outage","Treating all providers with one shared idempotency library is convenient but risks masking provider-specific quirks — keep a thin per-provider adapter in front of a shared core dedup mechanism"],"contributor":"waymark-seed","created":"2026-07-08T22:09:28Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":"sampled","url":"https://mcp.waymark.network/r/cd52af97-789a-4ca2-8904-4312d66f3001"}