Make data migration look effortless
Data migration is more than moving a list from one platform to another. It's about connecting your client's entire tech stack to Klaviyo so they can take advantage of the rich segmentation and personalization available with a rich dataset. Get this right and everything that follows will run on a solid foundation. Rush it and you'll be untangling problems for weeks.
Note: this lesson focuses on native integrations. If you are not working with a native integration, we will talk through your key steps with a custom integration.
A strategic approach to data migration
Hear from Jen Wallace from Klaviyo Master Elite Partner, Northern Commerce , on data migration best practices. Her tips will elevate your integration workflow from a simple step-by-step format to an opportunity to drive value with a customer.
Explain how profiles sync from integrations
As you integrate Klaviyo with various tools, it is important to keep your client aware of how profiles are collected and stored in Klaviyo as detailed in the table below.
For more about profiles and consent statuses, head to our Help Center article: Understanding consent in profiles .
Profile Type | Definition | Traits | Is Active? |
Suppressed | Profiles that are suppressed when someone unsubscribes, an email hard bounces once, or soft bounces 7 consecutive times. | • Can receive transactional messages (e.g., post-purchase flow confirmations) • Cannot receive marketing messages | ✗ |
Manually Suppressed | Unengaged profiles that have been manually suppressed by you or your client, and can no longer receive marketing messages. | • Still have marketing consent, so can be unsuppressed in the future • Can receive transactional messages (e.g., post-purchase flow confirmations) • Cannot receive marketing messages | ✗ |
Subscribed | Those profiles who have explicitly consented to receive marketing from your client’s brand. | • Can receive transactional messages (e.g., post-purchase flow confirmations) • Can receive marketing campaigns | ✓ |
Never Subscribed | Profiles that have either not subscribed to marketing at all, or have only given your client implicit consent to be messaged. Technically, your never subscribed profiles can receive marketing campaigns but this can impact your overall deliverability. We recommend contacting your legal team before getting in touch with these profiles. | • Typically receive automated flows like abandoned cart emails • Can receive transactional flow messages (e.g., post-purchase flow confirmations) • Cannot receive marketing campaigns | ✓ |
Connect your client's tech stack
This is your foundation. The ecommerce integration creates the profile structure Klaviyo uses to match all incoming data orders, events, and customer history.
To do this:
- Click the menu with your company’s name in the lower left-hand corner of the Klaviyo app; then, choose Integrations from the menu that appears.
- Click All Integrations, then scroll or search for your ecommerce platform.
- Once you find your platform, click to open the integration tool and follow the on-screen instructions. You may be briefly redirected into your ecommerce platform to log in and authenticate. Pro tip: check Collect email subscribers in your integration settings so that future subscribers from your ecommerce platform are synced into Klaviyo.
- Once you’ve successfully integrated, it may take anywhere from a few minutes to a few days for all your data to appear in Klaviyo depending on how much data you are syncing. To check the progress of your data sync, head to Analytics > Metrics.
⚠️ Once connected, confirm data is actually flowing before you move on. Navigate to Analytics > Metrics and check that events are appearing.
This step must happen before you import your active subscriber list. Suppressions are your client's unsubscribers, hard bounces, and chronic soft-bouncers. Uploading them ensures Klaviyo never contacts unmarketable profiles.
How to upload:
- Before you start, turn off any flows triggered by the list you’re uploading, unless you want the flow to send to all of the imported contacts.
- Navigate to Audience > Profiles > Suppressed Profiles (upper right)
- Select Upload File > Choose File
- Select your suppression CSV and click Upload Suppressions
Now that your store is connected and suppressions are in place, your list import will match against real profile data and your warming segments will be ready to go.
Choose the approach in the dropdown menus below that fit your client’s situation:
Suppression CSV format is strict. The file must contain email addresses only. If any additional columns are included, Klaviyo will reject the entire import. Make sure your client exports a clean single-column file before you try to upload.
Migrate your CRM data
Campaign Monitor, Salesforce Marketing Cloud, and Mailchimp all integrate directly with Klaviyo. Each brings over subscriber lists, suppressions, and up to 90 days of open and click data.
But, if you are not using one of these three platforms, you're doing a manual CSV upload. Choose the approach that fits your client's situation (and don’t forget, we have some great help articles here ).
Approach 1: Multiple segmented lists
Upload separate CSVs broken out by engagement window: all subscribers, then 30-, 60-, 90-, and 180-day engaged segments.
Best for: Messy data or tight timelines. Warming segments are ready to go immediately after upload.
Help center article: How to import a list using a CSV upload
Approach 2: Single list with engagement properties
Upload one master CSV with engagement data mapped as profile properties: Last opened, Last clicked, and optionally Date Added.
Best for: Clean data and clients where you want maximum segmentation flexibility long-term. More setup upfront, more power later.
Help center article: How to import profile properties using a CSV upload
Troubleshooting import errors
Formatting errors are the most common reason imports fail. A few things to watch for:
- Dates and timestamps: Values like Last opened must follow a specific format (YYYY-MM-DD HH:MM:SS). A missing timestamp defaults to midnight UTC and can throw off date-triggered flows. See accepted formats.
- Custom properties with multiple values: These need JSON array formatting in your CSV: ["value1","value2"]. Plain text won't map correctly to the List data type.
- Ongoing suppressions: If your client needs continuous list hygiene, a suppression webhook automates the process so you're not manually uploading files on repeat.
If you are still having issues, do not hesitate to reach out to Klaviyo Customer Support!
Onboarding more than just email?
If your client is also onboarding SMS, WhatsApp, or other Klaviyo products, data migration looks different for each channel. Follow Phase 2 of the Onboard a Client to Klaviyo project plan for guidance on migrating data across your client's full tech stack.