The order integration works in testing and silently breaks in production — a webhook signature check skipped, a duplicate event unhandled, a weight-unit mismatch that only triggers on certain orders. The mistakes that actually break order sync.

The security mistake

Webhook endpoints that trust any POST are injectable — verify the HMAC signature or accept that anyone can push fake orders into your shipping pipeline. It's the boring validation that separates real integrations from demo-quality ones.

The duplicate-event problem

Webhooks retry on timeout — the same 'order created' event arrives twice, and without idempotency you book two shipments for one order. The dedupe check (external order ID exists?) is the line that prevents double-shipping.

The unit and timezone traps

Weight in grams vs kilograms, paise vs rupees, IST vs UTC — the integration that 'works' but produces silently-wrong data. A 500g order booked as 0.5kg vs 500kg are both parseable; only one is right. Test with real-world values, not just 'it returns 200'.

The silent-failure trap

A webhook handler that returns 200 then fails internally swallows the error — the order never reaches shipping, nobody notices until a customer asks. Log failures loudly; alert on them; the silent failure is worse than the loud one.

Pure Parcel runs the whole stack described here — one place for every carrier.

See how →

The playbook

1

Verify webhook signatures

HMAC-check or it's not a webhook, it's a suggestion.

2

Dedupe on order ID

Idempotent handlers survive webhook retries.

3

Test real units

Grams vs kg, IST vs UTC — the subtle bugs.

4

Alert on handler failures

200-then-crash is the worst failure mode.