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
Known 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
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp