Send warehouse invoices by email (any 3PL, no API)
Quick Reference
Inputs
Admin access to your MarginOS workspace. A connected Shopify store, so forwarded costs have a catalog to attach to. A warehouse or 3PL that can auto-forward its billing and reporting email. One warehouse name per physical location, which becomes that inbox address.
Outputs
A unique MarginOS inbox address per warehouse, with a Copy button beside Forward to:. Measured fulfillment cost per unit in place of your store-wide pick-and-pack default. Measured inbound handling in place of the percentage estimate in Operations settings. Freight allocated to the products it moved, and supplier cost per unit. On-hand units per SKU from the warehouse, feeding weeks of cover and stockout risk.
Outcomes
Margins for the affected SKUs are built from what your warehouse actually billed, not from a default. The data-quality signal that flags estimated inbound handling stops firing for the SKUs now covered. Costs and stock stay separated by physical site, so one warehouse never masks another. A document MarginOS cannot read is held with a reason rather than guessed at or dropped.
If your warehouse or 3PL has no API, you can still get its real numbers into MarginOS by email. Every warehouse you add gets its own MarginOS inbox address. Ask that warehouse to auto-forward its invoices and inventory reports to the address, and MarginOS reads them into your fulfillment costs, landed cost and stock counts — no developer, no API key, no spreadsheets to upload. You set it up under Settings → Account Setup → Integrations → Warehouses & 3PLs, on the card that reads For any 3PL without a direct API: forward warehouse invoices and inventory reports so fulfillment costs and stock flow into your margins.
What email import is
Email import is a per-warehouse inbox that MarginOS owns on your behalf. You create one connection per physical location, MarginOS hands you an address, and the warehouse forwards its paperwork there the same way it would forward it to your accounts team. MarginOS reads each document and turns it into evidence: what was billed, for how many units, and on what date.
It exists because the accuracy of your margins is decided by the quality of your cost inputs, not by how modern your 3PL is. A warehouse with a public API is easy; most warehouses do not have one, and the usual fallback is a store-wide guess applied to every SKU. That is where margin error comes from. A forwarded invoice replaces the guess with the number your warehouse actually billed you, so the profit figure stops being an approximation for that cost. The panel states the same thing in three lines: create a unique MarginOS inbox for each warehouse, ask the warehouse to auto-forward its invoices and inventory reports to that address, and MarginOS parses them into your real fulfillment costs and stock levels.
Before you start
- Admin access to your MarginOS workspace. Account Setup is admin-only; without it the page shows Access Restricted with the note that Advanced Configuration requires admin privileges.
- A connected Shopify store. Costs attach to products, so MarginOS needs your catalog before a forwarded invoice has anything to land on.
- A warehouse that can auto-forward email. Almost any 3PL, freight forwarder or contract warehouse can set up a forwarding rule for its own billing and reporting emails. Nothing else is required of them.
- A list of your physical locations. You will create one connection per site, so decide up front how many you need and what to call them.
Set up email import
- Open Settings, then Account Setup, and choose the Integrations tab.
- Find the Warehouses & 3PLs card and click Manage connections. The Warehouse connections panel opens on the right.
- Under Add a new connection, click Set up email import on the Email import (Any 3PL) card.
- Type a Warehouse Name — the placeholder suggests something like Austin Central Warehouse. As you type, MarginOS builds the inbox address from the name (lower-cased, with spaces and punctuation turned into hyphens) and shows it under Your MarginOS email for this warehouse.
- Click Set up email import. If the address that the name produces is already in use, the save is refused with Email identifier is already taken — change the name slightly and try again. Addresses are unique across every MarginOS customer, so a generic name like “warehouse” will often already be gone.
- The connection now appears under Active connections. Click Copy beside Forward to: to put its address on your clipboard.
- Send that address to the warehouse and ask them to auto-forward their invoices and inventory reports to it. The panel recommends daily forwarding of invoices and inventory reports.
- Repeat for each site. The panel is explicit about this: Create a separate connection for each physical warehouse location so inventory and costs stay accurate per site.
What you can forward
MarginOS recognises five kinds of warehouse paperwork. You do not have to tell it which is which — the document is identified when it arrives. Anything else is still accepted, but it is held for review rather than booked.
| Forward this | What MarginOS takes from it | What it changes |
|---|---|---|
| Stock or inventory report | On-hand units per SKU | Your inventory counts, weeks of cover and stockout risk. A count from your warehouse outranks the one your store reports, so a later store sync will not overwrite it. Lines with no SKU on them are held rather than counted. |
| Supplier or purchase invoice | Invoice total and the number of units it covers, plus the SKU or PO number when the invoice names one | The base product cost behind gross profit and gross margin. |
| Receiving or inbound invoice | Total inbound handling charged and the units received | The inbound handling line in landed cost. This is the document that replaces the percentage estimate described in your Operations settings. |
| Freight invoice | The freight total, plus the split the invoice gives across its SKU or PO lines | Freight inside landed cost, allocated to the products that actually moved. |
| 3PL or fulfillment invoice | Total fulfillment charged and the units fulfilled | Fulfillment cost per unit, replacing your store-wide pick-and-pack default. |
How MarginOS handles what arrives
The governing rule is the one that runs through the whole product: MarginOS never books a number it cannot evidence. A document either produces a cost it can stand behind, or it is held aside with a reason. Nothing is rounded into place, spread across the catalog, or quietly treated as zero.
- Each document counts once. Documents are recognised by their own identity, so a warehouse that forwards the same invoice twice, or re-sends a month of email after a mailbox change, does not double your costs.
- An amount must be readable as money. A total MarginOS cannot read with confidence — a mangled currency string, a value in a format it cannot resolve without guessing — is refused and held, rather than turned into a number that happens to parse.
- Zero-unit evidence is ignored. A charge with no units behind it cannot produce a per-unit cost, so it is dropped rather than booked as free.
- Freight has to add back up. If the per-line splits on a freight invoice do not reconstitute the invoice total, the whole invoice is held and nothing is booked from it. A partial allocation would either destroy or invent freight, silently, in a ledger that is read for the life of the product.
- A missing or unreadable invoice date is booked at arrival. The cost still lands; its date is when MarginOS received it rather than when the warehouse wrote it.
- Real evidence outranks a default. Once a forwarded document supplies a cost, it supersedes the store-wide fallback and any modelled estimate for that SKU, and the affected products move up the accuracy grades described in the Defensible Profit Model.
Example
You run one site, Austin Central Warehouse, and connect it by email. Before forwarding anything, MarginOS is working from your settings: a store-wide pick-and-pack default, and an inbound handling estimate set as a percentage of your fulfillment bill.
The warehouse now forwards three documents for the month.
- The monthly fulfillment invoice: $4,000 across 1,000 units shipped. Fulfillment for those units becomes $4.00 each, measured rather than assumed.
- A receiving invoice for an inbound container: $850 across 1,000 units received. Your Operations settings had been modelling inbound at 15% of the fulfillment bill, which is $600. The real bill is $250 higher, so landed cost rises and the data-quality signal that flagged the estimate stops firing for those SKUs.
- The nightly stock report: on-hand units per SKU, which feeds weeks of cover and the stockout line described in your Operations settings.
Nothing on your side changed except the forwarding rule at the warehouse. The margin figures moved because the inputs stopped being estimates.
FAQ
Do I need an API key or a developer to set this up?
No. Email import exists precisely for warehouses with no API. You create the connection in MarginOS, copy one address, and ask the warehouse to forward to it. The only technical step happens inside your warehouse email, and it is a forwarding rule.
Which email address do I forward to?
The one shown beside Forward to: on that connection, which you can put on the clipboard with the Copy button. Each connection has its own address and that address is what tells MarginOS which site a document came from, so never share one address across two warehouses.
Should I create one connection per warehouse?
Yes, and the panel says so on screen: create a separate connection for each physical warehouse location so inventory and costs stay accurate per site. Sharing one inbox across sites merges their stock and their bills, and MarginOS has no way to separate them again afterwards.
What happens to a document MarginOS cannot read?
It is held rather than dropped, and nothing from it is booked. MarginOS does not guess at a total it could not read or an allocation that does not balance, because a wrong cost is more damaging than a missing one — it is invisible. Costs that arrive but cannot be attributed are covered in why a cost lands in Unmapped Costs.
Will forwarding the same invoice twice double my costs?
No. Each document is recognised by its own identity, so a repeat delivery of the same invoice is recorded once. That makes it safe to ask a warehouse to re-send a backlog after you set the connection up.
My connection says Awaiting emails. Is something wrong?
No. Active and Awaiting emails are fixed labels on the connection row, not a live delivery status, so they read the same before and after your first document arrives. To confirm that forwarding is working, look at the numbers instead: fulfillment and landed costs that were estimated should become measured, and stock counts should start reflecting the warehouse.
What happens if I delete a connection?
Stop the forwarding rule at the warehouse first — MarginOS asks you to confirm you have done so before it will let you continue, because the mailbox and everything held in it are deleted permanently and mail sent afterwards goes nowhere. The connection then disappears from your list. Costs and inventory that were already recorded from that warehouse stay exactly as they are; deleting the connection ends the feed, it does not rewrite your history.
Related
- Set your Operations parameters (lead time, safety buffer, inbound estimate)
- Set your store-wide COGS, shipping and pick-pack fallbacks
- Connect ShipStation (shipping-label costs)
- Why a cost landed in Unmapped Costs
- The Defensible Profit Model: how MarginOS grades cost accuracy
- Read the SKU Economics table
- Data & Integrations
About the author
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