Most merchants planning a Shopify migration assume their customer accounts and order history will simply “come across” the same way products and images do. It’s a reasonable assumption, and it’s wrong, and finding that out mid-migration, with a launch date already booked, is a bad time to learn it.
Shopify’s native import tools are genuinely good at what they’re built for: bringing in customer records as customer records. They are not built to recreate years of transactional order history as if those orders had happened inside Shopify. That distinction trips up a lot of migrations, particularly for stores that lean on order history for loyalty programs, repeat-purchase segmentation, or customer service lookups.
This post walks through exactly what Shopify’s customer CSV import and order tools actually support, where the API and apps come in to fill the gaps, and the password problem almost every migration runs into. If you’re mapping out a platform move, this is the part of the plan that deserves the most scrutiny before you commit to a go-live date.
The short answer: customers migrate cleanly, orders don’t (not as “real” orders)
Before the detail, here’s the direct answer to the question most people are actually asking:
- Customer profiles (name, email, phone, addresses, marketing consent, tags) migrate reliably via Shopify’s native CSV import.
- Order history as genuine, fully-functional Shopify orders, the kind that show up in reporting exactly as if the purchase happened on Shopify, complete with the original payment transaction, generally cannot be recreated through CSV import. Shopify doesn’t offer a “bulk order CSV importer” in admin the way it does for customers and products.
- A usable record of past orders (for customer service reference, lifetime value calculations, or segmentation) can be brought across, but it takes API or app work, and the result is a record of the order, not a live re-creation of the original transaction.
- Passwords never transfer. Every migrated customer needs to set a new password (or use Shopify’s passcode-based login, depending on which customer account experience you’re running).
If your migration plan currently says “we’ll just import a CSV of past orders,” that’s the assumption to challenge first.
What Shopify’s native customer CSV import actually does
Shopify’s built-in customer import (Settings → Customers → Import customers) accepts a CSV with a defined set of columns: first name, last name, email, company, address fields, phone, marketing consent (email and SMS), tax-exempt status, tags, and a note field. You can bring in tens of thousands of records this way in one pass, and it’s a solid, low-risk process.
What it will not do:
- Attach a purchase history to those profiles automatically
- Preserve an original “customer since” date beyond what’s inferable from account creation
- Import store credit or gift card balances (these need separate handling, gift cards have their own import mechanism, and store credit typically needs an app or manual reconciliation)
- Import saved payment methods (no ecommerce platform lets you migrate stored card details directly, for PCI compliance reasons, customers re-enter payment details the next time they check out)
For most merchants, the customer CSV import covers the core of what matters: a clean, opted-in customer list ready to receive email marketing and log in to their account. The complexity sits almost entirely in the order history question.
Why order history doesn’t just “come across”
This is the mechanic that surprises people. On most other platforms, exporting and reimporting historical orders is either native or close to it. Shopify treats orders differently, because an order in Shopify isn’t just a data record, it’s tied to a payment gateway transaction, a fulfillment status, tax calculation, and (if not suppressed) customer notification triggers.
There is no general-purpose “import orders CSV” feature in the Shopify admin for arbitrary historical order data the way there is for customers and products. The options merchants actually have are:
- Shopify’s Store Importer app, this only works for a specific list of supported source platforms (this varies over time, so check current support in Shopify’s own documentation before relying on it) and is generally only usable in the early setup window of a brand-new store, before you’ve started trading on Shopify. It’s designed for brand-new stores migrating in, not for topping up an already-live store with historical data.
- The Shopify Admin API (Order resource), this is where most real order-history migrations actually happen. A developer (in-house or agency) writes a script that reads historical order data from the old platform’s export and creates corresponding order records in Shopify via the API. Critically, these API-created orders can be flagged so they don’t trigger “order confirmation” or “shipping confirmation” emails to customers for orders that happened years ago, and they’re typically marked in a way that distinguishes them from live transactions.
- Third-party migration apps, several Shopify App Store apps specialise in bulk order migration and handle a lot of this API work for you, with varying levels of fidelity depending on how much detail (line items, discounts, refunds, custom order statuses) you need preserved.
What you get from options 2 and 3 is a functional historical record, visible against the customer profile, searchable, useful for lifetime value and segmentation, but it is fundamentally a recreation, not the original transaction. Payment gateway details, for instance, don’t carry across; the original charge happened on the old platform’s processor, not Shopify’s.
The password problem (and why it’s unavoidable)
Every ecommerce platform stores customer passwords as a hash, not as plain text, that’s standard, non-negotiable security practice. The problem is that different platforms use different hashing algorithms, and in almost every real-world migration, you don’t have a way to convert one platform’s password hash into something Shopify (or any other platform) can validate against a customer’s actual password.
In practice, this means migrated customers cannot log in with their old password. There are two common ways this plays out on Shopify, depending on which customer account experience the store is using:
- Classic customer accounts (password-based): migrated customers need to go through a password reset flow the first time they try to log in. Sending a “your account has moved, set your password” email as part of launch is standard practice.
- Shopify’s newer customer account experience (passwordless, using one-time email codes): this sidesteps the password problem somewhat, since there’s no stored password to migrate in the first place, customers verify via a code sent to their email each time. It doesn’t eliminate the “your account looks unfamiliar” friction, but it removes the explicit reset step.
Either way, plan for a short customer communication around this. It’s a minor speed bump, not a real risk, but only if merchants are told about it in advance rather than discovering it via support tickets after launch.
A practical checklist for planning your customer and order data migration
Use this as a working checklist when scoping the customer/order side of a Shopify migration:
- [ ] Export a clean customer list from your current platform (dedupe before you migrate, not after)
- [ ] Confirm which fields you actually need in Shopify (most stores don’t need every custom field the old platform tracked)
- [ ] Decide whether marketing consent needs to be re-confirmed or can carry across (this has real compliance implications under Australian Spam Act and Privacy Act obligations, get this right, not just fast)
- [ ] Decide how much historical order data actually matters, full line-item detail, or just aggregate lifetime value and order count for segmentation?
- [ ] If full order history matters, scope the API/app-based approach early, this is development work, not a checkbox in admin, and it affects your timeline
- [ ] Check gift card balances and store credit separately, these need their own migration path
- [ ] Plan and schedule customer communication about the password reset requirement
- [ ] Test the full customer login journey on a staging store before launch, not after
When to bring in a specialist
A lot of this is genuinely doable by a technically confident in-house team for a small store with a few hundred customers and simple order history. Where it gets risky is at volume, or when the business actually depends on that historical data, subscription businesses, loyalty programs, B2B accounts with negotiated pricing history, or stores where customer service teams rely on being able to look up “what did this customer order last time.”
At that point, the cost of getting it wrong (duplicate customer records, broken segmentation, lost marketing consent records, a support team fielding “where’s my order history” tickets for months) outweighs the cost of doing it properly the first time. This is exactly the kind of technical migration work a dedicated Shopify migration engagement is built to handle, mapping out what actually needs to move, building the API-based order import where it’s genuinely worth the effort, and making sure customer accounts work cleanly from day one rather than becoming a slow-burn support problem.
FAQ
Can I import historical orders into Shopify using a CSV file?
Not through a general native CSV importer in the Shopify admin, that doesn’t exist for arbitrary historical order data. Bulk historical orders are typically brought in via the Shopify Admin API (often through a developer script or a specialised migration app), which lets you create order records without triggering old notification emails.
Will my customers be able to log in with their old password after migration?
No. Passwords are stored as platform-specific hashes and can’t be converted between platforms. Customers on Shopify’s classic account experience will need to reset their password; on Shopify’s newer passwordless account experience, they’ll simply verify via a one-time email code instead.
Do gift card balances and store credit transfer automatically?
No, these need separate handling from customer and order data. Gift cards have their own import process, and store credit balances typically require an app or a manual reconciliation process, factor this into your migration timeline separately.
How long does a full customer and order data migration typically take?
For a straightforward customer list with minimal historical order requirements, it can be handled in a few days as part of a broader migration. Where full order history needs to be recreated via the API, migrations like this typically take several additional weeks depending on order volume and how much line-item detail needs to be preserved, this is general industry experience, not a fixed number, since every store’s data complexity differs.
Does marketing consent carry across when I migrate customers?
It can be included in the customer CSV import, but whether you should rely on old consent records depends on how and when that consent was originally collected. Under Australian privacy and spam regulations, it’s worth reviewing your consent basis with the migration rather than assuming it all still applies.
Ready to plan your migration properly?
If you’re weighing up a Shopify move and want to know exactly what will and won’t transfer for your specific store, a Shopify audit is a practical starting point, or if you’re ready to talk through timelines and scope, you can book a call with our team.