How the ShipBob integration works
The ShipBob integration connects SKU.io to your ShipBob account through ShipBob's API, using a Personal Access Token you generate in ShipBob. No middleware or file drop sits in between. Orders go out to ShipBob. Shipments, tracking, stock, returns, receiving orders, and (when you turn it on) billing come back. ShipBob tells SKU.io the moment a parcel ships, and scheduled syncs bring in everything else.
Two ways data comes back
Notifications from ShipBob
When you create the connection, SKU.io subscribes to thirteen ShipBob notifications. They cover an order shipping or being delivered, a shipment's tracking changing, a shipment being delivered, held, cancelled, or hitting an exception, a return being created, updated, or completed, and a receiving order changing.
SKU.io checks that each notification came from ShipBob and refuses any that didn't. It records the rest on the Webhooks tab. What happens next depends on the notification:
- Order and shipment notifications are applied within seconds. A parcel ShipBob ships at 10:02 usually shows as shipped in SKU.io at 10:02, with its tracking number.
- Return and receiving notifications are only recorded. The hourly Returns and Receiving syncs bring those changes in.
ShipBob doesn't resend a notification that failed partway through. Every hour, SKU.io retries any notification it received but couldn't finish, so a one-off failure doesn't lose the event. See Check webhooks and the activity log to read, filter, and replay them.
Scheduled syncs
Notifications can be missed: an outage, a subscription ShipBob dropped, or a change ShipBob doesn't announce. So SKU.io also pulls from ShipBob on a schedule:
| What | How often | What it does |
|---|---|---|
| Orders | Every 15 minutes | Picks up new ShipBob orders and status changes, including orders cancelled in ShipBob and orders from your other ShipBob channels. |
| Shipments | Every 15 minutes | Picks up parcels, carriers, and shipment status. |
| Tracking | Every 15 minutes | Sweeps ShipBob for tracking numbers SKU.io hasn't recorded yet. |
| Inventory | Every 15 minutes | Refreshes on-hand, committed, and fulfillable stock per fulfillment center. |
| Returns | Hourly | Refreshes ShipBob returns and their status. |
| Receiving | Hourly | Refreshes warehouse receiving orders. |
| Fulfillment centers | Daily | Picks up new ShipBob fulfillment centers, so you can map them. |
| Shipping methods | Daily | Picks up new ShipBob services, so you can map them. |
| Products | Daily | Picks up new ShipBob products, so you can map them. |
| Billing | Every 2 hours | Pulls charges and invoices. Runs only when Sync ShipBob billing is on. |
Settings → Sync controls the schedule. Enable automatic syncing is the master switch, and Entities to Sync turns each pull on or off. Tracking follows the Shipments switch. Fulfillment centers and shipping methods follow only the master switch. Turning a sync off stops the scheduled pull only. Notifications from ShipBob are still applied, the Sync from ShipBob buttons on each tab still work, and orders still go out to ShipBob. Billing has its own switch on the Financial tab.
The Dashboard shows when orders, shipments, inventory, returns, and receiving last synced under Sync Status, and whether each run succeeded. The exact timing of each sync is in the ShipBob scheduled syncs reference.
How an order reaches ShipBob
A warehouse becomes a ShipBob warehouse when you map a ShipBob fulfillment center to it on the Warehouses tab. From then on, a fulfillment order from that warehouse goes to ShipBob when it's submitted. See Dispatch to a fulfillment provider.
When SKU.io sends the order, it does four things:
- Checks the address. ShipBob needs a country. An order without one is refused before it's sent, with a message naming the sales order to fix.
- Picks the ShipBob service. It uses the service mapped to the order's shipping method. If there's no mapping, it looks for a ShipBob service with the same name, then uses the Fallback ShipBob shipping method (under Default Shipping Method on Settings → General). If none of these resolve, the order is refused and the message tells you to map the method or set a fallback. See Map ShipBob shipping methods.
- Sends each line as the right ShipBob product. A product mapped to a ShipBob product goes as that ShipBob product, even when the two SKUs differ. An unmapped product goes by its SKU.io SKU and name, and ShipBob creates a matching product in its catalog if it doesn't have one. See Map ShipBob products.
- Never sends the same order twice. Before creating an order, SKU.io asks ShipBob whether it already has one with the same reference, and adopts it if so. A retry after a timeout can't create a duplicate.
ShipBob decides which of its fulfillment centers ships the order. When it ships, SKU.io records the shipment and tracking against the fulfillment order, and the order moves through the usual lifecycle. See How fulfillment lifecycles work. With Record shipping costs on, the shipment's ShipBob invoice amount is added to the fulfillment as a shipping cost.
If someone cancels the order inside ShipBob, SKU.io applies that too. Lines that hadn't shipped go back to a new open fulfillment order, so you can send them again or ship them another way. The full journey, including changes and cancellations, is in How orders flow to ShipBob.
The write channel, and orders from your other channels
ShipBob groups orders by channel: the app or store that created them. Your ShipBob account may already receive orders from other channels, such as a Shopify store you connected to ShipBob directly.
When you connect, SKU.io writes its orders to one channel of its own, the Write Channel. Test Connection on the connect form lists the channels your token can write to, for example SKU.io (#438179). You can pick a different one later on Settings → Connection.
SKU.io also imports the orders your other channels create, so the Orders tab shows everything ShipBob is shipping for you. Those orders are marked External in the Orders list and External Channel on the order page, and they're read-only in SKU.io. SKU.io didn't send them, so they aren't linked to a SKU.io fulfillment order, and you change or cancel them in ShipBob or in the channel that created them. Orders SKU.io sent are never marked this way.
Production and sandbox
ShipBob runs two separate systems. A production token comes from your live ShipBob dashboard and works only against ShipBob's production API. A sandbox token comes from ShipBob's sandbox and works only there. Pasting one into the other is the most common reason Test Connection fails. The error names the address SKU.io tried and tells you which kind of token it expected.
The connection's environment is fixed when you create it. Settings → Connection shows it, and you can't change it. To move from sandbox to production, delete the connection and create a new one.
Stock: ShipBob is the record for what it holds
ShipBob counts the stock in its fulfillment centers, and SKU.io keeps a copy refreshed every 15 minutes. SKU.io compares that copy with its own stock on the Inventory tab and shows the differences, but it never changes your SKU.io stock from ShipBob's numbers. You decide when to correct SKU.io, with a stock take. Stock in a fulfillment center counts toward a SKU.io warehouse only once the center is mapped. See Review ShipBob inventory.
What SKU.io never does
- Never writes stock levels to ShipBob. ShipBob's counts come from its own receiving and shipping.
- Never changes your SKU.io stock from ShipBob's inventory. Shipments it records do move stock, like any fulfillment. Inventory differences wait for you.
- Never creates products in ShipBob directly. ShipBob creates a product only when an order arrives with an item it doesn't know.
- Never creates receiving orders or returns in ShipBob. Create those in ShipBob. SKU.io reads them back on the Receiving and Returns tabs.
- Never changes or cancels orders from your other ShipBob channels.
- Never pays ShipBob. Billing sync reads your charges and invoices so you can attribute and book them.
Next steps
- Connect ShipBob — create the connection.
- Map ShipBob fulfillment centers to warehouses — the step that turns order routing on.
- How ShipBob billing attribution works — what billing sync does with your charges.