Skip to content

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.

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 “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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

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”.

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.

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.

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.

SymptomCauseFix
Stores linked, Ledger full of “Location not mapped”that partner location has no slotmap it
A partner column shows raw numbers, or a location is missing from the pickerthat store has not reported its locations, or its list is stalepress Refresh locations inside that store’s Settings → Multi-store. Or type the location id into the cell
The grid does not respond to clicksyou are on a partner store; only the main store edits the mapdo it at the main store
Everything lands at one locationthe main store has location-sensitive adjustments off, so the whole group is single-slotturn it on at the main store if your locations hold separate stock
Stock landed at the wrong location after a reroutea change was already in flight when Shopify moved the orderthe hourly check heals it; totals were never wrong
An amber “Mappings without a main store location” panelthe slot those rows pointed at is goneremove the mapping, or map that location onto a slot that exists