Skip to main content

How orders flow to ShipBob

A ShipBob order starts as a fulfillment order in SKU.io and ends as one or more shipments with tracking. SKU.io owns the order and ShipBob owns the warehouse work. This page follows one order through the whole trip, so the Orders and Shipments tabs make sense when you open them.

1. You submit the fulfillment order​

A fulfillment order goes to ShipBob when its warehouse is mapped to a ShipBob fulfillment center and you submit it. You can submit one order or a bulk dispatch, and an automation can submit it for you. The fulfillment order moves to Submitting while SKU.io talks to ShipBob, then to Submitted. See Dispatch to a fulfillment provider.

Before anything reaches ShipBob, SKU.io checks the order. When a check fails, the fulfillment order's banner says SKU.io didn't send this fulfillment order to ShipBob., with the reason under it:

CheckIf it fails
The shipping address has a country.The fulfillment order is Rejected with ShipBob needs a country on the shipping address. Add the country to sales order SO-SB-1010's shipping address, then submit it again. The message names your sales order.
The order's shipping method maps to a ShipBob service, its name matches a ShipBob service, or the connection has a Fallback ShipBob shipping method.The fulfillment order is Rejected with No ShipBob shipping method for …. Map its shipping method on the ShipBob Shipping Methods tab, or choose a Fallback ShipBob shipping method in Settings → General.

If ShipBob itself refuses the order, the fulfillment order is Rejected, and its red banner says ShipBob rejected this fulfillment order. with ShipBob's reason. Either way, no ShipBob order was created, so you fix the cause and click Re-submit. See Fix an order ShipBob rejected.

Some failures say nothing about the order: ShipBob is busy, briefly down, or the connection drops. In those cases, the fulfillment order stays Submitting and SKU.io retries on its own, waiting a little longer between tries. A retry never creates a second ShipBob order. SKU.io first asks ShipBob for an order with the same reference and adopts it if one exists.

How each product is sent​

SKU.io doesn't refuse an order because a product isn't mapped. It decides what to send per line:

  • A mapped product goes as its ShipBob product, even when the two SKUs differ. ShipBob ships it from the stock it holds for that product.
  • An unmapped product goes under its SKU.io SKU and name. If ShipBob has a product with that SKU, it uses it. If it doesn't, ShipBob creates a new product with no stock. The order then can't ship: its shipment shows Exception with Out of Stock, even when ShipBob holds the item under another SKU.

So map products before you submit. See Map ShipBob products. To rescue an order that already went out with an unmapped product, see Clear an exception or a hold.

Unknown SKU is a different problem. It means ShipBob couldn't match an item on the order to a product in its catalog.

2. ShipBob creates the order and may split it​

The ShipBob order carries the fulfillment order's number as its reference, for example SO-SB-1003.1. It appears on the Orders tab with a Processing status and links to its fulfillment order and sales order.

ShipBob, not SKU.io, chooses which fulfillment center ships it. When no single center holds every item, ShipBob splits the order into shipments, one per center. Each shipment is picked, packed, labeled, and shipped on its own. Order SO-SB-1003.1 in the demo data shipped as two parcels: one from Moreno Valley (CA) and one from Bethlehem (PA). See Track ShipBob shipments and exceptions.

Stock leaves the fulfillment order's warehouse

SKU.io records every shipment of a fulfillment order against that fulfillment order's warehouse. If ShipBob ships part of an order from a different center, SKU.io still takes the stock from the warehouse on the fulfillment order. The difference shows up as a discrepancy on the Inventory tab.

3. Each shipped parcel becomes a fulfillment​

When a shipment ships, SKU.io records it as a fulfillment on the sales order, with:

  • the lines and quantities in that parcel,
  • the carrier and tracking number,
  • the ship date,
  • the shipment's invoice amount as the shipping cost, when Record shipping costs is on under Settings → Financial. The amount is also written as a freight line on the sales order. If Sync ShipBob billing is on, the billed shipping charge later replaces this estimate on the same line. See How ShipBob billing attribution works.

A split order therefore produces one fulfillment per parcel, numbered in turn: SO-SB-1003.1 and SO-SB-1003.2. The fulfillment order closes once every unit has shipped.

Recording is safe to repeat. If ShipBob reports the same parcel twice, SKU.io recognizes it and doesn't record a second fulfillment.

4. Tracking goes back to the sales channel​

As soon as a fulfillment is recorded, SKU.io sends its tracking to the sales channel the order came from, such as Shopify or Amazon, so your customer gets the shipping confirmation. A parcel the channel has already accepted isn't sent again.

How SKU.io hears about shipments​

ShipBob sends SKU.io a notification when an order ships, a shipment's tracking changes, or a shipment is delivered, held, cancelled, or hits an exception. Most shipments reach SKU.io within seconds this way. Notifications can be missed, so three scheduled syncs back them up every 15 minutes:

  • the orders sync, which re-reads ShipBob orders and their shipments,
  • the shipments sync, which does the same for shipment status,
  • the tracking sweep, which asks ShipBob for every order with a tracking number SKU.io hasn't recorded yet. SKU.io records those shipments, then tells ShipBob it has them.

If one order can't be recorded during a sync, SKU.io skips it and carries on with the rest, so one bad order never holds up the others. The full schedule is in the ShipBob scheduled syncs reference.

What doesn't move the fulfillment order​

Only a shipped parcel, or a cancellation, moves the fulfillment order forward. These ShipBob events show on the Orders and Shipments tabs, but the fulfillment order stays Submitted:

  • an Exception, such as Out of Stock or Unknown SKU,
  • an On Hold, such as Invalid Address,
  • progress before shipping: Picked, Packed, Labeled.

Orders cancelled in ShipBob​

When someone cancels an order in ShipBob's own app, SKU.io applies it the next time it reads the order:

  • Nothing had shipped. SKU.io marks the fulfillment order Cancelled with Cancellation Succeeded, and creates a new, unsubmitted fulfillment order for the same lines. Submit the new one again, or cancel the sales order if the customer no longer wants it.
  • Some parcels had shipped. The shipped parcels stay recorded. Once no parcel is still on its way, SKU.io moves the units that didn't ship to a new, unsubmitted fulfillment order, and closes the original one with what shipped.

You don't need to cancel the fulfillment order in SKU.io as well. To cancel from SKU.io instead, see Change or cancel a ShipBob order.

Orders SKU.io didn't send​

Your ShipBob account can also hold orders from other channels, for example a Shopify store connected to ShipBob directly. SKU.io pulls them in so you see everything ShipBob ships. They carry an External chip, have no fulfillment order or sales order, and are read-only. SKU.io never records stock or fulfillments from them. Orders SKU.io sends itself are never marked External.

Next steps​

Last verified: