Shopify customer ID from another shop import: IDs are unique per store. A CSV from shop B does not match on ID here. Next lookup is email, then create.
2026-10-29

Shopify customer IDs from another shop will not match on import

You export 12,000 customers from shop A. Import into shop B. Preview marks rows as updates that you thought were new — or you get twins: same email, two IDs. The Customer ID column from A is meaningless in B. Shopify does not share those numbers across stores.

Shopify customer ID from another shop import is the match order in Import customers from CSV for OO - Bulk Customer Data Editor. If the ID exists in this store, that customer is updated. Otherwise the app looks up email. Still missing: create (email or phone required). A foreign ID is ignored when it does not exist here.

The app is Free. 0 reviews — do not invent a rating. Spreadsheet in admin: locale, tax exempt, tags, notes, addresses, metafields the shop defines. Excel and Google Sheets via CSV. Listing extras: fields Shopify’s standard editor is weak at in bulk, plus store-to-store migration.

Live: bulk save in batches. Earlier: import customers from CSV. This piece is only the ID trap between shops.

A Customer ID is not a global passport

Inside one shop the ID is the stable key. Export docs: keep Customer ID for a re-import *into this shop*. Across stores it is a different universe.

How it breaks:

Paste IDs and expect overwrite. Shop B does not know `gid://shopify/Customer/123` from A. Lookup falls to email. Two people, same address, different inboxes: two records. Same email: update of the B customer, including filled CSV cells.

Clear the ID column “because it is another shop”, and leave email empty. Step 3 fails: create needs email or phone.

Assume an ID miss skips the row. It does not. Foreign ID ignored → email. That is the migration path the docs describe: a Shopify CSV from another store *can* be imported.

Forget locale and tax exempt. Those columns are often empty or store-default after a native export. Empty CSV cells do not change existing values on updates. Second pass in the grid, or filled cells in the file.

What the import actually does

Docs steps:

  1. Customers in the app → Import

  2. Upload `.csv`

  3. Preview import — creates vs updates

  4. Confirm. Large files in batches with progress — keep the tab open

  5. Failed or skipped rows: Import results to review or download

Formats: this app’s own export CSV, or Shopify’s standard customer export (First Name, Email, Accepts Email Marketing, Default Address, …). Yes/no marketing values map to subscribed/unsubscribed.

FAQ: empty cells never clear on updates. Read-only columns (total spent, order count, created date) do not write back. Select-all matching up to 50,000 is the spreadsheet, not this CSV job.

Walkthrough: shop A winds down, shop B takes B2B

Two Advanced stores. A is the old EU shop. B is the new primary domain. 4,200 wholesale accounts. In A, locale `en` and tax exempt are correct. Native Shopify export from A.

  1. Install OO - Bulk Customer Data Editor on B. Free.

  2. Import the Shopify CSV. Preview: mostly create, a handful of updates on emails already used as tests in B. Do not panic about A’s IDs — they will not match.

  3. Leave the tab open. Batches. Results: rows with neither email nor phone are out. Fix those separately.

  4. In the grid: filter Locale empty or not `en`. Bulk apply `en`. Save, tab open. Tax exempt: second filter, yes/no, Save. Empty CSV cells would not have overwritten those flags on updates; on creates they follow whatever the CSV actually held.

  5. Spot-check: same human, A’s ID maybe in a note, a new ID in B. Order migration is a different Shopify job; this is the customer file.

Same email as guest on A and account on B: import updates B. Tags and note from the CSV apply when the cell is filled. Unwanted? Catch it in Preview, or leave those columns empty so updates skip them.

Do this next

  1. Export from the source. Decide: Shopify CSV or this app’s export (grid columns, including ID — that ID becomes the key *after* they live in B).

  2. Import on B. Preview. Search a known email: create or update?

  3. Confirm. Tab open. Read results.

  4. Second pass in the table: locale and tax exempt, the listing USPs native CSV often drops.

  5. From then on: re-import in B with B’s Customer ID, not A’s.

Migrate customers between stores is the wider story. This is why A’s ID column is not an update key.

Wrap

Shopify customer ID from another shop import is expected behaviour. IDs are unique per shop. Match: this-store ID, else email, else create (email or phone). Foreign IDs are ignored. Empty cells leave updates alone.

Import A’s CSV into B with OO - Bulk Customer Data Editor, trust Preview, and fix locale in bulk — do not force the old ID.

online origins logo full

The Shopify Select partner for ambitious e-commerce businesses that want to grow!

linkedin online origins iconinstagram online origins icon

Reviews

5/5

Check on Google

Mail: info@onlineorigins.nl

Tel: 073 234 0612

KVK: 89825624

BTW: NL865123639B01

Bruistensingel 500,
5232 AH 's-Hertogenbosch
Cookies

© 2026 Online Origins