Home → Docs → Data & Integrations → Connect ShipBob (inventory + fulfillment costs)

Connect ShipBob (inventory + fulfillment costs)

Last updated: October 8, 2026 By Aron Baczoni

Quick Reference

Inputs

Admin access to your MarginOS workspace. Your ShipBob sign-in, no API key and no developer. A connected Shopify store, so arriving costs have products to attach to. Pop-up windows allowed, because the ShipBob sign-in opens in its own window.

Outputs

Measured pick, pack and shipping cost per SKU in place of your store-wide default. Monthly storage allocated per SKU by on-hand stock. Receiving and inbound handling folded into landed cost. Returns-processing fees standing behind your margin after returns. On-hand and fulfillable units per SKU across every ShipBob fulfillment center.

Outcomes

SKU margins are built from what ShipBob actually billed, not from an assumption. Slow movers carry the warehousing cost they really cause. New costs land within minutes of ShipBob raising them, with a daily pull behind them. A cost MarginOS cannot attach to a product is parked and counted, never spread across the catalog.

Connecting ShipBob takes one sign-in and no API key. Once it is connected, MarginOS pulls your real fulfillment bills, storage fees, receiving fees, returns-processing fees and on-hand stock straight from ShipBob, attributes each cost down to the SKU that caused it, and uses those numbers instead of the store-wide estimates you set during setup. MarginOS reads your ShipBob data and subscribes to its shipment and billing updates; it does not change your orders, inventory or warehouse settings.

What the ShipBob connection does

Most margin tools stop at what your store knows. Your store knows what a customer paid; it does not know that this particular shipment cost $6.42 to pick, pack and ship, or that a slow-moving SKU carried $180 of warehousing last month. ShipBob does know, because ShipBob billed you for it.

The connection closes that gap. It reads five things, described on the connection panel under Data we sync in these words:

  • Inventory levels — On-hand and fulfillable (sellable) units per SKU, totaled across all your ShipBob fulfillment centers.
  • Fulfillment costs — The real pick, pack, and shipping billed on every shipment, attributed down to each SKU.
  • Storage fees — Monthly warehousing charges, allocated per SKU by on-hand stock so slow movers carry their true holding cost.
  • Inbound & receiving fees — Receiving (WRO) handling charges captured per SKU, so the cost of getting stock in is built into landed cost.
  • Returns processing fees — Reverse-logistics charges captured per SKU and folded into your true margin after returns.

Every one of those is a cost that would otherwise be an assumption. The panel states the boundary underneath: MarginOS reads your ShipBob data and subscribes to shipment and billing updates, and it does not change your orders, inventory or warehouse settings.

Before you start

  • You need admin access to your MarginOS workspace. Account Setup shows an Access Restricted notice to everyone else.
  • You need your ShipBob sign-in. You do not need an API key, a developer, or anything pasted into MarginOS — ShipBob authorises the connection on its own sign-in page.
  • Your Shopify store should already be connected, so the costs that arrive have products to attach to. See connect your Shopify store.
  • Allow pop-up windows for MarginOS. The ShipBob sign-in opens in a small window and closes itself when it is done.

Connect ShipBob

  1. Open Account Setup and go to the Integrations tab.
  2. Find the ShipBob card. It reads Sync inventory, fulfillment fees, and shipping costs directly from ShipBob and is marked Available until it is connected.
  3. Click Configure. A panel slides in titled ShipBob (Direct API).
  4. Click Connect ShipBob. A small window opens on ShipBob’s own sign-in page.
  5. Sign in to ShipBob and approve the connection. The window closes itself and MarginOS confirms with ShipBob Connected. If you see ShipBob needs attention instead, your account is connected but syncing is paused until you reconnect — see the Attention question in the FAQ below.
  6. Leave it alone. MarginOS starts pulling immediately — you do not have to press anything to begin the first sync.
  7. Reopen the card later to check on it. A connected panel shows a Syncing badge, the time of the Last successful sync, which live events are registered, and the list of data being synced.

What you see once it is connected

On the panel What it is telling you
Syncing The connection is healthy and both the daily pull and the live events are running.
Attention (data quality) Something needs fixing. The usual cause is that ShipBob accepted the sign-in but rejected our request to send live events, which also pauses the daily pull. Reconnect to clear it.
Last successful sync The last time a pull finished cleanly end to end. A pull that failed part-way deliberately does not update this, so the timestamp stays honest rather than reassuring.
Live events The real-time pushes ShipBob sends so new costs land in minutes rather than a day later: a shipment shipping, and a new 3PL charge being raised. Each is marked Registered or Not delivering.
24H Failures Costs that arrived from ShipBob in the last 24 hours that MarginOS could not attach to a product, and so parked rather than guessed at. See why a cost landed in Unmapped Costs.
Sync Now Starts a pull immediately instead of waiting for the daily one. Safe to press more than once — repeated pulls of the same bill do not double-count it.

How MarginOS uses what arrives

  • Measured costs replace your defaults. The pick-and-pack figure you entered in your cost structure is a fallback for products with no measured cost. Once ShipBob has billed a shipment, the real number takes over for the SKUs on it.
  • Costs are attributed, not averaged across the catalog. A bill that covers several products is divided between the products it actually covers, by the share each one is responsible for. Storage is split by on-hand stock, so a slow mover carries the holding cost it really causes.
  • The ShipBob count outranks the one your store reports. Your warehouse is closer to the pallet than your storefront is, so a later store sync will not overwrite it.
  • The same bill is never counted twice. Every charge is recognised by its own identity, so the daily pull, a live event and a manual Sync Now can all see it without adding it again.
  • A cost that cannot be attributed is parked, not spread. It appears in the 24H Failures count and waits for you rather than quietly distorting a margin.
  • Pulling happens daily, and pushing happens live. MarginOS pulls the full picture once a day and ShipBob pushes shipments and charges as they happen, so a cost normally shows up long before the next daily pull.

Example

You sell a candle for $38. During setup you told MarginOS to assume $4.50 of pick-and-pack per order, because that was the number you remembered.

ShipBob connects on a Tuesday. By Wednesday your margins have moved, and not because anything about the candle changed:

  • Real fulfillment on the candle averages $6.10, not $4.50. Every unit was overstating profit by $1.60.
  • Last month’s storage bill was $1,240. The candle holds a large share of your on-hand units, so it carries a large share of that charge — a cost it was previously carrying none of.
  • A receiving charge of $310 on the last inbound shipment is now part of what that stock cost to land, instead of being invisible.
  • Returns processing on the candle runs $3.20 per returned unit, which is what makes its margin after returns different from its margin before them.

The candle still sells for $38. It simply stopped looking more profitable than it is, which is the entire point of measuring instead of assuming. Where each number sits on the accuracy ladder is explained in Data Trust levels.

FAQ

Do I need a ShipBob API key or a developer?

No. You click Connect ShipBob, sign in on ShipBob’s own page, and approve. Nothing is pasted into MarginOS and no key is ever shown to you, because none is needed on your side.

Can MarginOS change anything in my ShipBob account?

Not your orders, inventory or warehouse settings, and the panel says so twice. MarginOS reads your bills and stock counts. The one thing it sets up in your ShipBob account is a subscription to shipment and billing updates, so new costs reach MarginOS in minutes instead of waiting for the daily pull.

How long until I see ShipBob data in my margins?

The first pull starts the moment the connection is made, so early data lands within seconds to minutes. A full history takes longer to work through. After that, new costs arrive as ShipBob raises them, with a daily pull behind them as a safety net.

My card says Attention (data quality). What do I do?

Reconnect ShipBob from the same card. That status usually means ShipBob accepted your sign-in but rejected our subscription to live events, and MarginOS deliberately pauses the daily pull too rather than letting you believe half a feed is a whole one. Reconnecting re-registers the events and clears the flag.

What does 24H Failures mean?

Costs that arrived from ShipBob in the last day that could not be matched to a product. MarginOS parks them instead of spreading them across your catalog, because a cost on the wrong product is worse than a cost you can still see is missing.

I use ShipBob and another warehouse. Is that a problem?

No. ShipBob comes in over its own connection, and a warehouse with no API can forward its invoices by email instead — see send warehouse invoices by email. MarginOS keeps each source separate and knows which costs came from where.

Does this replace my ShipStation connection?

No, they cover different ground. ShipBob bills you for the whole fulfillment operation; ShipStation reports what each shipping label cost. Brands that use both connect both.

What happens if I disconnect?

MarginOS asks you to confirm, then removes the connection and stops syncing inventory and fulfillment costs. Costs already attributed to your margins stay exactly as they are; new data is not captured until you reconnect. Disconnecting ends the feed, it does not rewrite your history.

Related

About the author

Aron Baczoni

Founder of MarginOS, a Profit & Inventory OS for Shopify DTC brands who live and die by margin. Previously 11 years at Google across Ads and Global Business Operations, building large-scale systems. Now focused on giving DTC operators true profit by product, channel, and customer after COGS, 3PL, shipping, returns, and fees, and on showing exactly how much to trust every number behind those decisions.

Read Aron's story

Get Your Profit & Inventory Command Center

See your real margins in real time, not in spreadsheets.

Get your Profit & Inventory Command Center

Or email sales@marginos.com to see your real margins on your own data.