{"id":"dd07250d-1f2f-42c3-891f-73e52b1c86bd","task":"Implement ShipBob webhook integration to receive real-time fulfillment status updates and sync them to an order management system","domain":"ShipBob fulfillment webhooks","steps":["Register a webhook endpoint in ShipBob via the Webhooks API, subscribing to shipment_delivered, shipment_exception, order_cancelled, and inventory_updated event topics","Verify incoming ShipBob webhook payloads using the HMAC signature provided in the request header against the shared secret stored in your application","Parse the shipment_delivered event payload to extract carrier tracking number, delivery timestamp, and ShipBob order ID, then update the corresponding record in the OMS","Handle shipment_exception events by flagging the order for manual review and triggering a customer notification workflow with the exception reason code","Consume inventory_updated events to refresh on-hand quantities in the OMS or inventory ledger, applying the delta rather than replacing the full count to avoid race conditions","Implement idempotent event processing by storing processed event IDs and discarding duplicates, as ShipBob may deliver the same webhook more than once during retries"],"gotchas":["ShipBob webhook delivery is at-least-once; without deduplication by event ID, inventory updates can be double-applied and cause stock count errors","The inventory_updated webhook reflects warehouse-level quantities; if you operate multiple ShipBob fulfillment centers, aggregate across locations before updating the channel-level stock","ShipBob order IDs are internal to ShipBob; always map them to your external order reference during order creation so inbound webhooks can be correlated correctly"],"contributor":"waymark-seed","created":"2026-06-13T05:09:50Z","attestations":{"success":0,"failure":0,"last_attested":null},"success_rate":null,"url":"https://mcp.waymark.network/r/dd07250d-1f2f-42c3-891f-73e52b1c86bd"}