Epicor Kinetic and ShipBob integration
Epicor Kinetic runs manufacturing and distribution. ShipBob runs order fulfillment in distributed warehouses. When you connect them, sales orders created in Epicor automatically move to ShipBob for pick and pack, inventory counts flow both directions so your ERP and warehouse always agree, and shipment confirmations return to Epicor to update customer orders and accounts receivable. ml-connector manages the very different APIs and keeps the data in sync on a schedule you control.
What moves between them
Epicor sales orders and part inventory flow to ShipBob as orders and product stock on a scheduled cadence so ShipBob knows what to pick and pack. ShipBob warehouse inventory quantities flow back to Epicor every time a shipment ships or a return is received, so Epicor inventory balances stay current. Shipment confirmations and tracking updates from ShipBob trigger Epicor order line fulfillment receipts and customer shipment notifications. Return events from ShipBob post reversals back into Epicor accounts receivable and inventory.
How ml-connector handles it
ml-connector stores both credential sets encrypted. For Epicor, it handles OAuth2 token refresh on the 1-hour cadence and includes the required API key header on every request. For ShipBob, it manages the OAuth token refresh on the 1-hour cycle and the 30-day refresh-token renewal, and validates incoming webhook signatures with HMAC-SHA256 using the shared secret. It polls Epicor on a configurable schedule, filtering for Part.UpdatedOn and SalesOrder.UpdatedOn since the last sync to catch inventory movements and new orders. When it reads an Epicor sales order, it maps the bill-to and ship-to customer addresses to ShipBob and posts the order and line items with the original Epicor order number as the external reference. ShipBob webhook events (order.shipped, order.shipment.tracking.updated, return.created, return.completed) trigger Epicor receipt posting for matched order lines and return credit memos for product reversals. All ShipBob events are persisted in an audit log so replays are safe if an Epicor downstream call fails.
A real-world example
A mid-sized distributor runs Epicor Kinetic for accounting and inventory, and uses ShipBob for multi-warehouse fulfillment across four regional centers. Before the integration, the operations team exported Epicor order extracts every morning, uploaded them manually to ShipBob, then waited for emails from ShipBob confirming shipments before hand-entering receipts into Epicor. Inventory counts often drifted because ShipBob recorded actual picks but the ERP saw the older numbers. With Epicor and ShipBob connected, new orders flow instantly to the warehouse, shipments automatically post as receipts in Epicor within minutes, and inventory balances across all four locations are live and accurate. Morning order processing that used to take an hour is now instant, and month-end inventory reconciliation no longer requires a warehouse count to fix the system.
What you can do
- Send Epicor sales orders to ShipBob fulfillment centers automatically and keep them in sync as quantities update.
- Receive shipment confirmations and tracking updates from ShipBob and post fulfillment receipts into Epicor customer orders.
- Sync inventory quantities in both directions so Epicor and ShipBob warehouse counts stay current and never drift.
- Authenticate Epicor with OAuth2 and API key headers, and ShipBob with OAuth2 and channel ID headers.
- Process ShipBob return events and post credit memos into Epicor accounts receivable and inventory with full audit trail.
Questions
- Which direction does data move between Epicor Kinetic and ShipBob?
- Epicor sales orders and part inventory flow to ShipBob for fulfillment. Shipment confirmations, tracking updates, returns, and current inventory quantities flow back from ShipBob to Epicor. This two-way sync keeps both systems current and synchronized on every material event.
- How does ml-connector handle Epicor's lack of webhooks and ShipBob's webhook-only push model?
- ml-connector polls Epicor on a schedule to discover new and updated sales orders and inventory using OData $filter on timestamp fields. It receives ShipBob events via incoming webhooks and validates each with HMAC-SHA256. This hybrid approach bridges Epicor's pull-only model with ShipBob's event-driven architecture.
- What happens when OAuth tokens expire on each side?
- Epicor access tokens expire every 1 hour and refresh tokens are not published, so ml-connector refreshes the OAuth2 client credentials before each request cycle. ShipBob access tokens also expire in 1 hour but refresh tokens are valid for 30 days, so ml-connector detects the 401 response and renews the access token without requiring manual re-authentication.
Related integrations
More Epicor Kinetic integrations
Other systems that connect to ShipBob
Connect Epicor Kinetic and ShipBob
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started