Migration
Migrate PrestaShop customers to Shopify: what transfers and what stays behind
Customer data, passwords, purchase history, GDPR consent — what actually migrates to Shopify and how to manage the transition.

Pre-migration audit
Do you have a complex catalog or SEO concerns?
We audit your PrestaShop store, define the migration plan, then execute cleanly in Shopify without guesswork.
Customer data migration is the most legally sensitive part of a PrestaShop-to-Shopify move, and the one where teams are most likely to make decisions they will regret. The technical questions (which fields map where) are answerable. The compliance questions (what you are allowed to transfer and how) require careful attention to GDPR, your existing consent records, and how you document the transfer.
This guide covers both dimensions: what Shopify can accept, what your PrestaShop export contains, and how to handle the gaps responsibly.
What the PrestaShop customer record contains
The ps_customer table holds the following fields that are relevant for migration:
email— the unique identifier, present for all accountsfirstname,lastnamebirthday— not always populated; optional field in PS checkoutnewsletter— boolean, whether the customer opted in to email marketing at registrationoptin— a second boolean, less commonly used, typically for partner marketing consentdate_add— registration dateactive— whether the account is activeis_guest— whether the record is a guest checkout (no password set)id_gender— maps to aps_gendertable (typically 1 = M, 2 = F, 3 = unspecified or not asked)
Addresses live in ps_address, linked by id_customer. Each customer can have multiple addresses. The address record contains: firstname, lastname, company, address1, address2, postcode, city, phone, phone_mobile, and id_country / id_state referencing geographic lookup tables.
What ps_customer does not contain: a password you can use. PrestaShop hashes passwords using a combination of the MD5 algorithm and a per-store salt (in older versions) or bcrypt (in 1.7.x with the right configuration). You cannot extract a usable password hash and replay it in Shopify — the hashing schemes are incompatible.
What Shopify accepts for customer creation
The Shopify GraphQL customerCreate mutation accepts:
email(required)firstName,lastNamephonetags— array of strings, useful for segmentationemailMarketingConsent— object withmarketingStateandmarketingOptInLevelsmsMarketingConsent— object for SMS opt-in statusnote— free text, useful for migration metadataaddresses— was supported onCustomerInputin older API versions but is deprecated in2026-01; addresses must be created viacustomerAddressCreatein a separate mutation call
What Shopify does not accept: a password at customer creation time. Shopify generates an invitation email mechanism instead.
This is the fundamental gap: you cannot silently migrate customer credentials. Your customers will need to set a new password on Shopify, and you need a plan for communicating that.
Handling the password transition
There is no workaround for this. PrestaShop passwords cannot be imported into Shopify in any form. What you can do is control the experience:
Option 1: Send a password reset email at migration time. Shopify allows you to send an account activation email via customerGenerateAccountActivationUrl mutation or through the Admin panel. When you import customers, you can immediately trigger these emails. The risk: a large batch of activation emails from a new domain can trigger spam filters, and customers who are not expecting them may ignore them.
Option 2: Import silently and let customers discover the change naturally. When a customer tries to log in after launch and fails, Shopify's "Forgot password" flow handles the reset. This is the lowest-friction technical option but the highest-friction customer experience. Expect a spike in support tickets asking "I can't log in to my account."
Option 3: Targeted re-engagement. Before launch, identify your active customers (those who have placed at least one order in the last 12 months). Send them a dedicated email explaining the new platform and providing a direct link to reset their password. This approach combines a clean re-engagement campaign with the account activation need.
Most teams underestimate how many customers will not bother resetting their password. Based on typical e-commerce behavior, expect 40-60% of your customer base to never complete account activation. That is not a migration failure — it reflects normal churn in a customer database. But it does mean your "active customer" count in Shopify will look lower than in PrestaShop for the first several months.
GDPR and consent data transfer
This is where teams make their most significant compliance mistakes. Moving customer data from one platform to another is a processing activity under GDPR, and it requires a legal basis. The most common applicable basis is legitimate interest or the continuation of a pre-existing contractual relationship.
For the basic customer record (email, name, address, order history): the transfer is generally supported by the continuation of your contractual relationship with the customer. They placed an order with your business; that business is continuing on a new platform; you have a legitimate interest in maintaining the records necessary to fulfill support and warranty obligations.
For marketing consent data (newsletter and optin fields): this is more nuanced. The newsletter = 1 flag in PrestaShop tells you the customer opted in to marketing at some point, but it does not tell you when, how, or under what version of your privacy policy. In 2026, regulators — particularly the CNIL in France and equivalent authorities in Germany, Spain, and Italy — have been active in enforcement actions specifically around consent records that lack timestamps and mechanism documentation.
The safest approach is to map newsletter = 1 to Shopify's emailMarketingConsent.marketingState = SUBSCRIBED and marketingOptInLevel = SINGLE_OPT_IN, while retaining your PrestaShop consent records as an audit trail. If you are using an email marketing platform (Klaviyo, Mailchimp, Brevo), that platform's subscriber list is your authoritative consent record — not the Shopify customer record. Align your Shopify import with your email platform data, not the other way around.
Guest checkouts (records where is_guest = 1 in PrestaShop) occupy a gray area. These customers did not create an account, which means they did not consent to account creation. Importing them as full Shopify customers — with a password reset email prompting them to activate an account — is arguably creating an account they did not request. The pragmatic approach most teams take is to import them without sending activation emails, so their order history is accessible to your support team, but no account is actively surfaced to the customer.
What data to include in the customer note field
The Shopify customer note field is free text and a good place to store migration metadata that does not have a native Shopify field. Useful things to include:
- PrestaShop customer ID (
PS ID: 12345) — allows support to look up the original record during the transition period - Registration date if you want it preserved visibly (
Registered: 2019-03-15) - Loyalty tier or group from PrestaShop if you used customer groups (
PS Group: Wholesale) - Data source marker (
Imported from PrestaShop, 2026-03-23)
This note is visible to your Shopify admin users and your support team, but not to customers.
Using Shopify tags for segmentation
The tags field on a Shopify customer accepts an array of strings and is queryable in the Admin panel, Shopify Flow, and most email marketing integrations. Tags are how you replicate PrestaShop customer groups in Shopify.
If your PrestaShop store uses customer groups (standard customer, professional, wholesale, B2B), map those to Shopify tags during import. A customer in the "Wholesale" group in PrestaShop becomes a Shopify customer with the tag wholesale. Your Shopify price lists, automatic discounts, or Shopify Markets configurations can then target these tags.
Tag the entire imported cohort with something like ps-migrated as well. This creates a segment you can use in Klaviyo or Shopify Email to send a dedicated re-engagement campaign to, separate from customers who registered directly on Shopify after launch.
The order history question
Customers who log into their Shopify account after migration will not see their past orders unless you have also imported those orders. Order history migration is a separate topic, but the two are linked: if you import customers without orders, your support team can fulfill warranty claims and handle returns, but customers cannot self-serve their order status.
Whether to import full order history is a business decision based on your return policy window, your support team's needs, and the complexity of your order data. For stores with a 2-year return window and active loyalty programs, order history is worth importing. For stores where most sales are transactional and one-time, importing only the last 12-24 months of orders is usually sufficient.
How WarpForge handles the customer migration
WarpForge reads from ps_customer and ps_address directly, constructs the customerCreate input with correct emailMarketingConsent mapping, and runs customerAddressCreate for each address after the customer record is created. Guest checkouts are imported separately and flagged in the customer note.
The consent mapping is explicit: newsletter = 1 maps to SUBSCRIBED with SINGLE_OPT_IN, newsletter = 0 maps to UNSUBSCRIBED. The PrestaShop customer ID is always recorded in the note field for audit purposes. Tags are generated from PrestaShop customer groups.
If you are evaluating how to handle your specific customer base — consent history, guest checkout volume, loyalty program complexity — the import preview in WarpForge shows you the exact mapping before any data is written to Shopify. That preview step is where most teams discover issues they did not know they had.
A practical checklist before you start
- Export
ps_customerandps_addresswith a timestamp snapshot — do not re-export at different times - Filter out
deleted = 1and optionallyactive = 0records - Map
id_countryandid_stateto ISO country and region codes (Shopify uses ISO 3166) - Decide your policy for guest checkouts before you start
- Document your consent basis for the transfer in your GDPR records
- Align your Shopify customer consent status with your email platform's subscriber list
- Plan your customer communication before launch — do not let account activation emails be the first thing customers hear about the new store
Need an execution plan
Turn a useful article into a scoped project.
A 15-minute call is enough to validate scope, risks, and the right execution order for your migration.
Book a callAuthor
Kévin Aubrée
Full-stack developer specialized in e-commerce and data migration systems. Founder of WarpForge.
Learn moreInternal linking
Read next

Pre-migration data audit: the 12 checks to run on PrestaShop
A short but rigorous audit is enough to expose most migration risks.
Read article
E-commerce replatforming: when and why to switch platforms
The warning signs that it's time to migrate your online store. Hidden costs of the status quo, decision criteria, and key steps for a successful replatforming.
Read article
The most common mistakes in a PrestaShop to Shopify migration
A synthesis of the scoping, execution, and launch mistakes seen most often.
Read article