ml-connector
Workday Financial ManagementShipBob

Workday Financial Management and ShipBob integration

Workday Financial Management runs your procurement, payables, and general ledger. ShipBob runs your fulfillment centers and order shipments. Connecting them keeps your inventory, purchase orders, and received goods synchronized across both systems. Purchase orders created in Workday flow to ShipBob for picking and packing, shipment tracking flows back to Workday so procurement knows which orders have shipped, and goods receipt entries record what arrived at your fulfillment centers. ml-connector handles the very different authentication models on each side and ensures every record carries a full audit trail.

How Workday Financial Management works

Workday Financial Management is a cloud ERP module accessible through both SOAP/XML and REST/JSON APIs. The SOAP endpoint at https://{hostname}.myworkday.com/ccx/service/{tenant}/Financial_Management/v46.1 requires an Integration System User with WS-Security UsernameToken credentials sent with every request and handles full CRUD on suppliers, purchase orders, invoices, payments, GL accounts, and journal entries. The REST endpoint at https://{hostname}.workday.com/ccx/api/v1/{tenant}/ uses OAuth2 refresh tokens and supports lighter reads. Workday has no native webhooks, so procurement and payables data is read by polling with recommended intervals of 15 to 60 minutes for transactional entities and daily for master data. Rate limits may throttle intervals shorter than 5 minutes.

How ShipBob works

ShipBob is a cloud fulfillment platform accessed through a REST API at https://api.shipbob.com with current stable version 2026-01. Authentication uses either OAuth2 Authorization Code flow for multi-merchant integrations or a Personal Access Token for single-merchant setups; all calls require an Authorization Bearer header and a shipbob_channel_id header identifying which fulfillment channel is acting. ShipBob relies entirely on webhooks for real-time events including order.shipped, order.shipment.tracking.updated, wro.completed (warehouse receiving orders), return.created, and billing events. Webhook signatures are verified with HMAC-SHA256. ShipBob is channel-aware: reads pull from all channels, but writes are only permitted on behalf of your own channel.

What moves between them

Purchase orders and supplier invoices move from Workday to ShipBob for fulfillment planning and execution. ShipBob webhooks push shipment tracking, warehouse receiving events, and return notifications back into Workday's procurement ledger, where they are matched to the original purchase order and supplier. Goods receipt entries in Workday record when ShipBob's fulfillment centers receive inbound inventory from suppliers. The flow is bidirectional: master data like supplier lists and product catalogs are polled from Workday, and transactional records from ShipBob update Workday on a webhook-driven cadence with poll-based reconciliation as backup.

How ml-connector handles it

ml-connector stores Workday ISU credentials for SOAP calls and OAuth2 refresh tokens for REST reads, presenting them with the required security headers. On ShipBob, it stores the Personal Access Token and channel ID and validates webhook signatures with the HMAC-SHA256 v1 envelope before processing events. Inbound shipment and receiving webhooks from ShipBob trigger a lookup of the associated purchase order in Workday, then write goods receipt and shipment tracking journal entries into Workday's procurement ledger, keyed to the supplier and PO. Because Workday offers no webhooks, ml-connector polls the procurement API on a schedule (typically every 30 minutes for new POs) to seed ShipBob with upcoming orders for fulfillment. Rate limits on both sides are handled with exponential backoff: Workday's 5-minute minimum safe interval is respected, and ShipBob's OAuth token expiry at 1 hour is tracked so token refresh does not interrupt the flow. Every record in both systems is tagged with the source transaction ID and carries a full audit trail so failed writes can be replayed.

A real-world example

A mid-sized e-commerce brand runs Workday for procurement and payables and uses ShipBob to fulfill orders across three regional fulfillment centers. Before the integration, when a purchase order was created in Workday for new inventory, the procurement team manually fed the order details into ShipBob to start the picking process. When ShipBob received goods or shipped orders, the fulfillment team manually logged those receipts and shipments back into Workday so inventory counts would match. With Workday and ShipBob connected, each new Workday purchase order automatically feeds into ShipBob, ShipBob's warehouse receiving webhooks create goods receipt entries in Workday, and shipment tracking flows straight into Workday's procurement journal. The procurement team no longer re-keys orders, inventory visibility is real-time, and month-end reconciliation of POs to received goods is automated.

What you can do

  • Sync Workday purchase orders and supplier invoices to ShipBob for fulfillment planning and execution.
  • Receive ShipBob warehouse receiving (WRO) webhooks and write goods receipt entries into Workday's procurement ledger.
  • Update Workday with ShipBob shipment tracking and return notifications, linked to the originating purchase order and supplier.
  • Authenticate Workday with SOAP Integration System User credentials and OAuth2 refresh tokens, and ShipBob with Personal Access Token and channel ID.
  • Poll Workday procurement on a schedule, write to ShipBob on webhook events, and maintain a full audit trail for every record and transaction.

Questions

Which direction does data move between Workday Financial Management and ShipBob?
Purchase orders and supplier invoices move from Workday to ShipBob for fulfillment. ShipBob webhooks push shipment tracking, warehouse receiving events, and returns back into Workday's procurement ledger, where they are matched to the originating purchase order. Workday goods receipt entries record what arrived at ShipBob's fulfillment centers. The flow is bidirectional: master data like suppliers flows from Workday, and transactional events flow from ShipBob.
How does ml-connector handle Workday's lack of webhooks and ShipBob's webhook-only design?
Workday is polled on a schedule (typically every 30 minutes) to read new purchase orders and supplier invoices and detect changes. ShipBob is webhook-driven for real-time shipment and receiving events, with poll-based reconciliation as a backup to ensure no events are lost. ml-connector respects Workday's 5-minute minimum safe polling interval to avoid rate limits and manages ShipBob's 1-hour OAuth token lifetime so authentication does not lapse.
How does the integration authenticate each system?
Workday requires an Integration System User account with WS-Security UsernameToken credentials for SOAP calls and OAuth2 refresh tokens for REST reads; ml-connector stores both encrypted. ShipBob uses a Personal Access Token and channel ID; all calls carry the required Authorization Bearer header and shipbob_channel_id header. Webhook signatures from ShipBob are verified with HMAC-SHA256 before any data is written to Workday.

Related integrations

Connect Workday Financial Management and ShipBob

Free to use. Add your credentials, ping your real systems, and see if we fit.

Get started