Microsoft Dynamics 365 F&O and ShipBob integration
Microsoft Dynamics 365 F&O runs your finance, inventory, and order management. ShipBob runs outbound fulfillment from its distributed warehouses. Connecting the two sends sales orders raised in Dynamics to ShipBob for pick, pack, and ship without re-keying, and brings shipment tracking, on-hand inventory, and fulfillment billing back into Dynamics so the order and the ledger stay accurate. ml-connector handles the very different APIs and auth on each side and moves the records on a cadence you control, with webhooks where ShipBob supports them.
What moves between them
Orders flow from Microsoft Dynamics 365 F&O into ShipBob: as sales orders are released in Dynamics, ml-connector creates them in ShipBob with the recipient address and line items, matched to ShipBob SKUs. Product SKUs flow the same direction so the ShipBob catalog mirrors released products in Dynamics. Fulfillment results flow back from ShipBob into Dynamics: shipment tracking numbers, carrier, and shipped status update the originating order, on-hand and available inventory by fulfillment center sync back to Dynamics, and ShipBob billing invoices are read for freight and fulfillment charges. ShipBob is treated as the fulfillment system of record, so ml-connector does not write financial postings back into ShipBob.
How ml-connector handles it
ml-connector stores both credential sets encrypted, requests a fresh Entra ID client credentials token for Dynamics when one expires, and refreshes the ShipBob OAuth access token using its 30 day refresh token, storing the rotated refresh token immediately. It accepts the full Dynamics environment host per customer, since there is no shared base URL, and sets the shipbob_channel_id header on every ShipBob call so writes are accepted and reads stay uniform. Dynamics item numbers map to ShipBob SKU reference ids and Dynamics sales orders map to ShipBob orders, with the order reference_id used as an external key so a re-run does not duplicate a shipment. ShipBob webhooks arrive signed with HMAC-SHA256 over the webhook id, timestamp, and raw body, so each delivery is verified before the matching Dynamics order is updated, and a scheduled OData poll backfills anything a webhook missed. Real edge cases are handled: Dynamics 429 service protection responses honor the Retry-After header, ShipBob shipping cost is read from invoice_amount nested in the shipment rather than a top-level order field, and weights and dimensions are converted to ounces and inches before products are created in ShipBob.
A real-world example
A direct-to-consumer brand of roughly 80 staff runs Microsoft Dynamics 365 F&O for inventory, finance, and order management, and outsources warehousing to ShipBob across several fulfillment centers. Before the integration, an operations clerk exported each day's orders from Dynamics and pasted them into ShipBob, then later keyed tracking numbers back so customer service could answer where is my order, and inventory in Dynamics drifted from what ShipBob actually held. With Microsoft Dynamics 365 F&O and ShipBob connected, released orders post to ShipBob automatically, tracking and delivery updates flow back onto the Dynamics order as shipments leave the warehouse, and inventory by fulfillment center stays in step. The manual copy and paste is gone and the ledger reflects real fulfillment activity.
What you can do
- Create ShipBob orders from Microsoft Dynamics 365 F&O sales orders as they are released, matched to ShipBob SKUs.
- Sync released product SKUs from Dynamics into the ShipBob catalog with weights in ounces and dimensions in inches.
- Write ShipBob shipment tracking, carrier, and delivery status back onto the originating Dynamics order.
- Sync ShipBob on-hand and available inventory by fulfillment center into Dynamics, and read ShipBob billing invoices for freight charges.
- Verify ShipBob HMAC-SHA256 webhooks and poll Dynamics OData on a schedule, with retries and a full audit trail on every record.
Questions
- Which direction does data move between Microsoft Dynamics 365 F&O and ShipBob?
- Orders and product SKUs move from Dynamics into ShipBob, and fulfillment results move back from ShipBob into Dynamics. Tracking numbers, delivery status, inventory levels by fulfillment center, and billing invoices flow back onto the originating order. ShipBob is the fulfillment system of record, so ml-connector does not push financial postings into ShipBob.
- Does ShipBob hold accounting data like vendor invoices or GL accounts?
- No. ShipBob is a fulfillment platform, not an accounting system, so it has no vendor, GL account, or purchase invoice objects. What it does expose is orders, inventory, shipments, returns, and its own billing invoices for fulfillment and freight, and ml-connector reads that billing into Dynamics as charge data rather than as accounts payable documents.
- How does the integration stay near real time and avoid duplicate orders?
- ShipBob pushes signed webhooks such as order.shipped and order.shipment.tracking.updated, which ml-connector verifies with HMAC-SHA256 and applies to the matching Dynamics order immediately. A scheduled OData poll backfills anything a webhook missed, since Dynamics Business Events carry only identifiers. The order reference_id is used as an external key so re-running a sync does not create a duplicate shipment in ShipBob.
Related integrations
More Microsoft Dynamics 365 F&O integrations
Other systems that connect to ShipBob
Connect Microsoft Dynamics 365 F&O and ShipBob
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started