Back to blog

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.

customersdataGDPR
An open planner with a pen resting on the page.
An open planner with a pen resting on the page.Photo Pixabay Monfocus

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 accounts
  • firstname, lastname
  • birthday — not always populated; optional field in PS checkout
  • newsletter — boolean, whether the customer opted in to email marketing at registration
  • optin — a second boolean, less commonly used, typically for partner marketing consent
  • date_add — registration date
  • active — whether the account is active
  • is_guest — whether the record is a guest checkout (no password set)
  • id_gender — maps to a ps_gender table (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, lastName
  • phone
  • tags — array of strings, useful for segmentation
  • emailMarketingConsent — object with marketingState and marketingOptInLevel
  • smsMarketingConsent — object for SMS opt-in status
  • note — free text, useful for migration metadata
  • addresses — was supported on CustomerInput in older API versions but is deprecated in 2026-01; addresses must be created via customerAddressCreate in 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.

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_customer and ps_address with a timestamp snapshot — do not re-export at different times
  • Filter out deleted = 1 and optionally active = 0 records
  • Map id_country and id_state to 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 call
KA

Author

Kévin Aubrée

Full-stack developer specialized in e-commerce and data migration systems. Founder of WarpForge.

Learn more

Internal linking

Read next

A desk with a laptop, a smartphone, and a coffee carafe.
2 August 2025

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
A small group workshop around a notebook and a laptop.
23 March 2026

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
A small group workshop around a notebook and a laptop.
25 January 2026

The most common mistakes in a PrestaShop to Shopify migration

A synthesis of the scoping, execution, and launch mistakes seen most often.

Read article