You have already decided to leave. What is stopping you is the picture of a week where your inventory is on a truck, your store is still taking orders, and nobody can ship anything.
That week is avoidable, and it is avoidable through sequencing rather than luck. This page is the mechanics: what order to do things in, which step causes the gap when it slips, and how to run both providers at once for a week so that the switch is invisible to your customers. If you want to know how long the new side takes rather than how the move works, we covered how long onboarding actually runs end to end separately.
One definition before we start, because it is the whole problem. A shipping gap is any period where an order exists and no location holding that SKU is able to fulfil it. It is almost never caused by the truck being slow. It is caused by inventory leaving the old warehouse before the new warehouse can sell it.
Read your contract before you tell anyone anything
Do this first, before the discovery call with a new provider and long before you give notice. Four clauses decide your timeline.
Notice period. 30, 60 or 90 days is the normal range. The clock usually starts on written notice, not on the conversation where you mention you are unhappy.
Auto-renewal. Look for a renewal date and a window before it. Missing that window by a week can commit you to another full term.
Exit and release terms. Ask specifically what it costs to have your inventory picked, palletised and staged for outbound transfer, and how many business days that takes after written request. This is where a routine exit turns expensive, and it is the same category of surprise we wrote about in the fees buried in your current agreement.
Final invoice and storage. Confirm whether storage bills to the day the last pallet leaves or to the end of the billing month, and whether a monthly minimum still applies during the wind-down.
Write those four answers down before you talk to anybody. Your entire migration schedule counts backwards from the notice date, and you cannot build the schedule until you know the number.
Once you have it, start the conversation with the incoming provider. Not to sign, but to get their onboarding requirements in writing so you can run the two timelines in parallel rather than end to end. Running them end to end is what adds four weeks to a migration.
The timeline, counted back from your notice date
Everything below assumes a 30-day notice period. Stretch or compress proportionally.
| Window | What happens | Who owns it |
|---|---|---|
| Before notice | Contract review, exit terms confirmed, new provider selected | You |
| Day 0 | Written notice served | You |
| Days 1 to 7 | SKU master built and mapped, both sides agree the file | You and new provider |
| Days 5 to 10 | Store integration connected, test orders run | New provider |
| Days 8 to 14 | First staged transfer leaves the old warehouse | Old provider |
| Days 10 to 16 | Staged inventory received, counted, put away | New provider |
| Days 14 to 21 | Parallel-run week, both locations live | Both |
| Days 21 to 25 | Final cycle count, remaining inventory transfers | Old provider |
| Days 25 to 30 | Full cutover, old location deactivated, reconciliation | You |
Two things to notice. The transfer starts on day 8, not day 28. And the parallel run happens while both providers still hold stock, which is the only reason the gap never opens.
Store integration is the fastest part. Ours connects in 1 to 3 business days, and live orders follow within 5 to 7 business days of the first call. Integration speed is not what makes migrations slow. Data is.
The SKU master is where migrations actually fail
This is the step brands underestimate, and it is the reason a migration slips a fortnight.
Your incoming provider needs one file that is true. Not the export from your store, not the spreadsheet your old 3PL sent in 2024, one reconciled file. It needs, per sellable unit:
- SKU code exactly as it appears in your store
- Product title and variant
- UPC or EAN, and the FNSKU if the unit also goes to Amazon
- Unit dimensions and weight, measured rather than copied from the supplier spec sheet
- Units per inner carton and per master carton
- Whether the SKU is a single, a bundle or a kit, and if a kit, the component SKUs and quantities
- Lot or expiry tracking requirement, yes or no
- Current on-hand quantity at the old warehouse
Three things go wrong here every time.
Barcode collisions. Two variants sharing a barcode is invisible in a store export and immediately visible on a pick line. Find it now.
Bundles that were never real SKUs. If your old provider assembled bundles on the fly without a parent SKU, that logic lives in somebody’s head at that warehouse and leaves when you do. Write it down as a bill of materials before you give notice.
Dimensions copied from the supplier. Measured dimensions drive cartonisation and postage. If the file says 4 inches and the box is 5.5, the quote you signed was wrong and you will find out on invoice one.
Fix these before the file goes anywhere. Migrating dirty data does not clean it. It just moves the problem to a warehouse that does not know your products yet.
Transfer the inventory in stages, not in one truck
The instinct is to move everything at once because one truck is cheaper than two. It is cheaper, and it is also how gaps happen. One truck means one point of failure and a period where all of your stock is on the freeway.
Stage it instead.
Shipment one, around day 8. Your top SKUs by order frequency, not by value. Look at the last 90 days and take whatever accounts for roughly 80 percent of order lines. For most brands that is between 15 and 40 SKUs. Send enough cover for three weeks of sales on those.
Shipment two, after the parallel-run week. Everything else, plus the remainder of the fast movers, released after the final cycle count.
While shipment one is in transit, the old warehouse is still shipping every order. Nothing has changed for your customers. When shipment one is received and counted, the new location goes live for those SKUs and the old one keeps the tail. That is the parallel run, and it only works because you split the freight.
Two operator notes. Ask the old provider to palletise by SKU rather than mixed, and to label each pallet with SKU and quantity on two faces. Mixed pallets with no labels turn a four-hour receiving job into a two-day one, and you pay for those hours at the receiving end. Get the outbound manifest emailed as a file before the truck leaves, not handed to the driver on paper.
On our side, transferred inventory is received exactly like any other inbound: counted, inspected, scanned into our warehouse management system, with a receiving report issued the same day. That is how we receive inventory, and it is worth saying plainly that we charge receiving on a transfer the same way we charge it on a container. Moving to us is not free, and any provider who tells you the move costs nothing has put the cost somewhere you have not looked yet.
Book the transfer freight yourself or have your current provider arrange it, and get the bill of lading in your own name. Whoever controls the BOL controls the shipment if something goes wrong in transit.
The parallel-run week, and the Shopify setting that ruins it
For roughly seven days, both warehouses are live and holding stock. This is the safety net. It is also where an unconfigured store quietly ships two parcels for one order.
If you sell on Shopify, both providers exist as locations in your admin. When you have multiple active locations, Shopify assigns online orders based on available inventory and the order routing rules you configure. If one location can fulfil the entire order it goes there. If no single location can, the order is split across locations, or the highest-priority location oversells.
Read that twice. During a parallel run, a two-item order where each warehouse holds one item will split into two shipments, two labels and two postage charges, without anybody deciding that.
By default, Shopify’s rules optimise for fulfilment from the closest location within the destination market that holds all items in the order. That default is sensible in steady state and wrong during a migration, because you want SKU ownership to be explicit rather than inferred from stock levels.
Configure it deliberately. In Shopify admin, order routing lives under Settings, then Shipping and delivery. Add a ranked locations rule and drag it to the top, put the location you want prioritised in the topmost group, and add a ship-from-closest rule at the end only to break ties.
Then do the part the help pages cannot tell you. Set inventory to zero at the old location for every SKU that has fully transferred, on the same day the new location is counted in. Not the day the truck left. Zero at the old location is what stops a split, and a SKU that shows stock in two places during a parallel run will eventually ship from both.
Run the same discipline on WooCommerce, and if you sell on Amazon FBM, update the ship-from address and confirm your handling time in Seller Central before the first order routes to the new warehouse rather than after.
Returns are already in the post
This is the step almost everyone forgets. On the day you cut over, there are returns in the mail addressed to a warehouse you no longer use, generated by return labels you issued weeks ago.
Three things to do.
Agree in writing how long the old provider will accept, hold and forward misdirected returns, and what they charge for it. 30 days past cutover is a reasonable ask.
Change the return address in your returns app and on your packing slip template on the day of first cutover, not at the end.
Accept that some units will arrive at the old address for months. Budget for a monthly consolidation shipment rather than paying per parcel to have them forwarded one at a time.
The first-order QA check
On the first live day at the new provider, pull the first 25 orders before they ship and physically check them. Not a sample later in the week. The first 25, that day.
You are checking four things: correct SKU, correct quantity, correct packaging spec, correct service level on the label. A pick error rate in the first 50 orders is almost always a SKU configuration problem rather than a people problem, which means it is fixable in an hour if you catch it on day one and expensive if you catch it on day nine.
Then check the invoice at day 14, before the month closes. Confirm the receiving charges match the pallet count on your manifest and that storage is billing the positions you actually occupy. Reconciling early sets the tone for every invoice after it.
When you should not migrate
Four situations where the honest answer is to wait, even though we would rather have your business now.
You are inside peak. Do not move between the start of October and the middle of January. Every warehouse in Southern California is at its busiest, receiving queues are longest, and the cost of a mistake is highest in the eight weeks of the year that matter most to your revenue. Any provider encouraging you to move in November is selling rather than advising.
Your data is the problem. If your SKU master is broken, your bundles are undocumented and your dimensions are guesses, a new warehouse inherits all of it. Fix the file first. You may find the accuracy problem you blamed on your 3PL was upstream of them.
The exit cost outweighs the gain. If your notice period is 90 days, your exit terms are expensive, and your current provider is mediocre rather than failing, run the arithmetic before you move. Mediocre and cheap sometimes beats better and disrupted.
You moved less than a year ago. Two migrations in twelve months costs more in receiving events, data work and founder attention than most of the savings people migrate for. If the last move did not fix it, the diagnosis was probably wrong.
We are also the wrong destination if your customer base is mostly on the East Coast, if you ship cold-chain or hazardous materials, or if you are below roughly 110 orders a month, which is where our $500 monthly invoice minimum starts to make arithmetic sense.
The migration checklist
Copy this into a document and assign an owner and a date to every line.
Before notice
- Notice period, auto-renewal date, exit and release terms, final storage billing, all confirmed in writing
- Last 90 days of order lines exported and ranked by SKU frequency
- Incoming provider’s onboarding requirements received in writing
- Peak calendar checked, migration window confirmed outside October to mid-January
Days 1 to 7 5. SKU master built with dimensions measured, not copied 6. Barcode duplicates found and resolved 7. Bundles and kits documented as bills of materials 8. File agreed by both providers, not just sent
Days 5 to 14 9. Store integration connected and authorised 10. Test orders run end to end, including a multi-item order and a return 11. Carrier accounts confirmed: whose account ships, and whether tracking history moves 12. Shipment one defined: top SKUs by order frequency, three weeks of cover 13. Palletisation and labelling instructions sent to the old provider in writing 14. Outbound manifest requested as a file, BOL in your name
Days 14 to 21 15. Shipment one received, counted, discrepancies raised within 48 hours 16. Order routing rules configured, ranked locations set 17. Old location zeroed for every transferred SKU on the day the new count lands 18. Parallel run monitored daily for split shipments
Days 21 to 30 19. Final cycle count at the old warehouse, signed off by both sides 20. Shipment two released and received 21. Old location deactivated in every sales channel 22. Return address updated everywhere, forwarding agreement in writing 23. First 25 orders QA checked on day one of live 24. First invoice reconciled against the manifest at day 14
Frequently asked questions
Transfer inventory in two staged shipments rather than one, and run both warehouses live for about a week. The old provider keeps shipping until the new provider has counted and activated your fastest-moving SKUs, so no order is ever without a location that can fulfil it.
Usually the length of your contract notice period, because that is the binding constraint rather than the operational work. On a 30-day notice, the transfer starts around day 8 and full cutover lands around day 25 to 30. Store integration itself takes 1 to 3 business days.
Inventory leaving the old warehouse before the new one can sell it. That happens when the whole catalogue moves in one truck, or when the SKU file is not ready and receiving stalls at the new provider.
Check your contract. Picking, palletising and staging for outbound transfer is often billable, and release timelines after written request vary. Confirm both in writing before you serve notice.
Between the start of October and mid-January. Receiving queues are longest, warehouses are at peak capacity, and an error costs the most in the weeks that generate the most revenue.
What to do next
Pull your contract and find the notice period. That single number sets every other date on this page, and until you have it you are planning against a guess.
Once you have it, book a 15-minute call and we will build the reverse timeline with you, including the parts that sit with your current provider rather than with us. If the dates say wait until February, we will tell you that.