Mapping locations
Stock does not just live in a store — it lives at a location. So before anything can sync, we have to know which of your partner store’s locations corresponds to which of the main store’s.
The model: slots
Section titled “The model: slots”Each of the main store’s inventory locations is a slot. Every partner location that should participate is mapped onto exactly one slot.
MAIN STORE PARTNER A PARTNER B ────────── ───────── ───────── Warehouse ◄── slot 1 ──► EU Warehouse Fulfilment DC Retail ◄── slot 2 ──► Berlin Shop (not mapped)The rule is one to one, both ways: a partner location maps to exactly one slot, and a slot has at most one location per partner store. You cannot point two partner locations at the same slot, and you cannot point one partner location at two slots.
Routing between partners follows from that. If a partner sells from a location mapped to slot 1, the change lands at every other store’s slot-1 location. There is no separate partner-to-partner mapping to maintain.
A slot is a main-store location, and it is created for you rather than configured: creating the group turns the main store’s default location into the group’s first slot, and changing that default location moves the slot with it.
If your main store isn’t multi-location
Section titled “If your main store isn’t multi-location”If “Location-sensitive adjustments” is off at your main store, the location dimension is switched off across the whole group. Everything resolves to a single slot, and there is nothing to map — the Locations tab replaces the grid with a note saying exactly that.
Two things follow. It is read from the main store’s setting, not from yours, so a partner sees the same note whatever its own setting says. And you cannot map partner locations while it is off; turn it on at the main store first.
That is the simplest setup and the right one if your locations are labels over a single physical pile. Turn it on only when your locations hold genuinely separate stock — see Set up multi-location inventory.
Setting it up
Section titled “Setting it up”-
Get the main store’s default location right first.
It becomes the group’s slot. Changing it later moves the slot and can strand mappings that pointed at the old one, so settle it before you map partners rather than after.
-
Open Settings → Multi-store → Locations — the mapping is edited only at the main store. A partner sees the same grid, read-only, with a note saying so.
The tab shows a grid: the main store’s slots down one side, each partner store across the other. Empty cells are unmapped locations.
-
Have each store refresh its own location list.
Refresh locations reads the store you are currently in — it cannot fetch a partner’s list for it. If a partner’s column shows raw numeric ids instead of names, or a location you just created is missing, someone has to open Settings → Multi-store at that store and press Refresh locations there. The tab names any store that has never reported.
A stale list never blocks you: if a store has reported nothing at all, the cell becomes a text box and you can type the location id by hand.
-
Map each partner location onto a slot.
Choose the slot that holds the same physical role: the warehouse that ships the same orders, the shop that serves the same customers. Names do not have to match; the mapping is what matters.
-
Leave locations you don’t want to participate unmapped.
Unmapped is a legitimate, deliberate state — a partner’s returns-processing location or a damaged-goods bin has no business receiving group stock changes. It just has to be a decision, not an oversight.
-
Check the Ledger.
Place one real order (or watch a day while the group is still recording only) and look for rows saying “Location not mapped”. Each one names a location you still need to decide about.
Changing a mapping later
Section titled “Changing a mapping later”Remapping is allowed, takes effect immediately for new changes, and needs no clean-up first: picking a different location for a slot — or moving a location to a different slot — replaces the old mapping in the same step. You never have to unmap before you remap.
Changes already in flight land at the location they were prepared for — we do not re-target a message that has already left. So after a remap, expect a short tail of changes arriving at the old location. The hourly check settles the totals.
Removing a mapping (the × that appears when you hover a mapped cell) does not delete anything. It simply stops that location participating; subsequent changes for it are recorded as “Location not mapped”.
Mappings that lost their slot
Section titled “Mappings that lost their slot”If the main store’s slot changes underneath a partner mapping — most often because the main store’s default location moved — the partner’s row survives but no longer points at anything. Those rows get their own amber panel, “Mappings without a main store location”, above or below the grid, naming each stranded store and location with a Remove mapping button.
Nothing travels through a stranded mapping. Either remove it or map that store’s location onto a slot that still exists.
When Shopify moves an order
Section titled “When Shopify moves an order”If Shopify reroutes an order’s fulfilment to a different location after we have already synced it, we issue a correction pair: we give the quantity back at the old location’s counterpart and take it at the new one. Both halves are recorded under the same entry in the Ledger, so you can see the move as one event rather than two mysterious opposite adjustments.
Until that correction lands, the totals are right but the split across locations can be stale. The hourly check heals it.
When a location is deleted
Section titled “When a location is deleted”If a partner deletes a location we are mapping to, Shopify starts rejecting our writes and we mark that mapping dead. Nothing syncs through it any more.
Fix it by picking a different location for that slot at that store, or by removing the mapping. You do not have to clear the dead one first — choosing a replacement replaces it.
Troubleshooting
Section titled “Troubleshooting”| Symptom | Cause | Fix |
|---|---|---|
| Stores linked, Ledger full of “Location not mapped” | that partner location has no slot | map it |
| A partner column shows raw numbers, or a location is missing from the picker | that store has not reported its locations, or its list is stale | press Refresh locations inside that store’s Settings → Multi-store. Or type the location id into the cell |
| The grid does not respond to clicks | you are on a partner store; only the main store edits the map | do it at the main store |
| Everything lands at one location | the main store has location-sensitive adjustments off, so the whole group is single-slot | turn it on at the main store if your locations hold separate stock |
| Stock landed at the wrong location after a reroute | a change was already in flight when Shopify moved the order | the hourly check heals it; totals were never wrong |
| An amber “Mappings without a main store location” panel | the slot those rows pointed at is gone | remove the mapping, or map that location onto a slot that exists |