
You export shop A. Columns look complete: names, tags, locale. Email is blank because those people paid at the counter. Import into shop B. Preview says create. Then a failed row. The rule is Shopify customer import email or phone required: if the customer does not already exist in this store, the CSV row needs at least Email or Phone.
Docs Import failed or customer not found: *To create a customer that doesn’t exist in this store, the row needs at least an Email or Phone.*
OO - Bulk Customer Data Editor is Free. 0 reviews, launched 15 September 2026. Spreadsheet editor in admin: bulk edit, import, export. Listing call-outs: Customer Locale and tax-exemption status — fields Shopify’s standard editor is weak at in bulk. No other OO app in this post.
Earlier: save bulk edits in batches. That was the save bar. This is the create rule on import.
Customer ID exists in *this* store → update.
Else look up Email.
Still missing → create, and create needs email or phone.
A Shopify CSV from another shop is allowed. Foreign Customer IDs will not match (IDs are per store). Then email, or new. A row with only a first name and a tag has nothing to match and nothing to open a customer with. Shopify still wants a contact method on a new profile. That is not a preview glitch.
Names and tags now, contact “later”. Later never runs. Put Email or Phone on the row, or do not create via this file.
Only shop A’s Customer ID. Docs: that ID will not match here. Without email the app falls through to create — which still wants Email or Phone. Copy the email or the phone from shop A onto the row.
Phone stuffed in Note. Import reads the Phone column (Shopify headers or this app’s export). A sentence in Note is not Phone.
Empty Email on an update. Empty cells do not clear existing values. Updating a customer with a blank Email cell leaves the address as-is. The requirement is for create, not “blank means wipe”.
Shopify validation (bad phone format, incomplete address rules, marketing consent Shopify rejects). Empty file / no data rows — need a header and at least one data row. Start with one or two rows. Prefer Shopify customer export headers, or the sample CSV in the import dialog. Yes/no marketing values map (yes → subscribed, no → unsubscribed).
Flow: Customers → Import → upload `.csv` → Preview import (create vs update) → confirm. Large files run in batches; keep the tab open. Import results lists skipped or failed rows.
Formats: this app’s export, and Shopify’s standard customer CSV (`First Name`, `Email`, `Accepts Email Marketing`, `Default Address` …).
You can carry Locale or tax exempt in the same file — listing USPs — but without Email and Phone that locale never becomes a new profile.
Four hundred customers, ninety with a mobile only. First CSV: names, tags, locale `en`, Email empty, numbers in a homemade `Mobile` column.
Preview: lots of creates. Result: rows without a recognised Phone header fail or skip.
Fix:
Download the sample CSV, align headers.
Rename `Mobile` to the Phone header the app/Shopify expects.
Two test rows: phone-only, email-only. Preview: create.
Import the rest. Leave the tab open. Read results.
Patch Locale or tax exempt in the spreadsheet editor afterwards if the CSV omitted them — bulk apply, select-all matching up to 50,000.
Rows that already had email match on Email when the ID is foreign. Those are updates. An empty Phone cell there does not wipe the number.
Preview is the split between create and update. Creates with neither Email nor Phone are the rows to fix now, not after the error toast.
Mixed files (existing customers plus newcomers) are normal when you migrate shops. Updates may have a blank Email cell. Creates may not. In Sheets, filter Email empty and Phone empty before upload. That subset is the risk.
Shopify Help on customer import/export is the native CSV. This app accepts those headers plus its own export. Native Shopify import is weak on locale and tax exempt — that is why the listing highlights them. The contact rule is stricter on create: without Email or Phone there is no profile, so there is no locale to fix later.
Phone format: if Shopify rejects the value, the row fails as validation, not as “missing email and phone”. Same troubleshooting page, two buckets. Fill something first, then make the format legal for the shop.
Partial import: after a validation error you can edit the customer in the spreadsheet if create succeeded. If create never happened, there is no row to open. Repair the CSV and retry, or create the customer by hand and bulk-edit afterwards.
UTF-8 BOM on export helps Excel with names. It will not invent a Phone column.
Do not claim native Shopify CSV already matches locale/tax-exempt/metafields without checking. Select-all matching caps at 50,000. Not every metafield type is editable. Empty cells do not clear. A Customer ID from another shop is not the same person here.
The editor is still the place to bulk-apply Locale and tax exempt after a successful create. This article is the gate.
Open Import, use the sample, put Email or Phone on every row that must create. Preview before you confirm thousands of lines. The Bulk Customer Data Editor listing is Free.
Shopify customer import email or phone required is the create gate. Match order is ID, then email, then new. Empty cells do not clear on update.
No customer without a contact field. Import in the editor and trust preview: create rows need Email or Phone in the column, not in the note.
Services
Reviews
5/5
Mail: info@onlineorigins.nl
Tel: 073 234 0612
KVK: 89825624
BTW: NL865123639B01
Bruistensingel 500,© 2026 Online Origins