Klaviyo merge profiles: clean your export of duplicate profiles before you merge or re-import

Klaviyo merges profiles on its own only when it sees identifiers like an email and a phone number linked, so a customer with two email addresses stays two profiles. Manual merges are permanent, and duplicate rows in an import are skipped without a guaranteed winner. Below: Klaviyo's own steps first, then our done-for-you cleanup of your file, back in 24 hours on Quick Clean (up to 200 rows).

Rather not do it by hand? Skip to done-for-you cleanup, from $25.

How to merge profiles in Klaviyo: what you can do natively

Klaviyo identifies a profile by identifiers it ranks as Profile ID, External ID, Email, Phone number and Anonymous mobile app ID. It merges two profiles automatically only when an action links their identifiers: "For Klaviyo to identify that multiple profiles belong to the same customer, the identifiers associated with each profile need to be recognized together" (Klaviyo help: Understanding identity resolution). When a customer used different email addresses, a Klaviyo team member answering on the Klaviyo Community (June 2023) wrote that "they would have multiple unique profiles in Klaviyo" and suggested "manually merging profiles you’ve identified as being duplicate customers" (Klaviyo Community, June 2023). Profiles with different email addresses stay separate until you merge them by hand:

  1. Klaviyo export profiles. Go to Audience > Lists & segments, click into the list or segment, choose Manage list (or Manage segment) > Export to CSV, pick the properties, then click Start Export. "If you want to export everyone in your account, create a segment containing all profiles first." Exports from the last 30 days are under Settings > Other > Downloads (Klaviyo help: Export a list or segment · Klaviyo help: Export all people). Klaviyo adds: "Never email this all-inclusive segment".
  2. Merge the true duplicates in Klaviyo. Open the profile you want to remove and select Merge profile under Profile actions. Type the email address or name of the profile to keep, press Return or Enter to search, select it, then click Merge profiles. Properties on the kept profile stay; "Properties on the profile you remove will be added to the profile you keep only when they do not already exist on the remaining profile", and event data is copied over. "This action is permanent." (Klaviyo help: Delete, merge, and export a profile)
  3. Combine duplicate rows in the file before any re-import. "Compare the duplicate rows and keep 1 row per contact with the values you want to import." Klaviyo "does not always keep the first row" (Klaviyo help: Duplicate or missing identifier errors · Klaviyo help: Troubleshooting list imports).
  4. Prepare the file for Klaviyo. Use a CSV of 50 MB or less, a unique header for each column, and a valid identifier (an email address, phone number or External ID) on every row (Troubleshooting list imports). For phones: "A separate country column is not required when each phone number includes + and its country calling code" (Klaviyo help: Accepted phone number formats).
  5. Klaviyo import CSV. Open the list, choose Manage list > Import contacts > Upload, and map your columns. For a property-only update, "Deselect any consent or consent timestamp columns to keep subscription status unchanged", select Only import the consent in my file, and don't select Apply bulk consent. "Blank cells do not clear existing property values." Contacts newly added to a list can enter its list-triggered flows, so set those flows to Draft first (Klaviyo help: Import profile properties using a CSV).
  6. Check the import. Open the list's Imports tab (it shows imports from the last 7 days) and click Download error file, if available, to see which rows were skipped (Duplicate or missing identifier errors).

Moving from Mailchimp? The same steps apply: clean the Mailchimp export first, then import it into Klaviyo. See Mailchimp audience cleanup.

Or let us clean the file before you merge or re-import

  • You send the Klaviyo export from step 1, or the Mailchimp or other export you're about to import, as a CSV or Excel file. Send one file: if your profiles sit in several exports, paste them into one sheet first, and same-email rows in it are merged.
  • Rows with the same email (ignoring capitalization and spaces at the start or end) are merged into one row: the first row is kept and its blank fields are filled from the later rows. Every merge and every fill is listed in the change log, so you decide what survives before Klaviyo skips duplicate rows on its own.
  • Rows with the same full name and company (when your file has a company column) but a different or missing email are flagged, not merged: that's the customer using multiple email addresses. Each one is marked needs_review, with a note naming the row it may match, so you choose which address to keep, or merge the two profiles in Klaviyo yourself (step 2). Misspelled names aren't caught.
  • Invalid, missing and personal (for example Gmail or Yahoo) emails are flagged in qa_notes. We don't fix or verify mailboxes.
  • Names in ALL CAPS or all lowercase are re-cased. US phone numbers are formatted +1-XXX-XXX-XXXX. Numbers with a non-US country code (starting with + or 00) are kept as you sent them (extra spaces trimmed only). Numbers with no country code and 10 digits are treated as US. Placeholder phones like N/A are blanked and logged. Anything we can't read is kept as-is, with a note in qa_notes. Line breaks inside cells are turned into spaces (except in the email column, where a broken email is flagged invalid instead), and the CSV is saved as UTF-8.
  • Klaviyo phone note: Klaviyo's list import tool accepts numbers with hyphens that start with + and the country calling code (its own example is +12-345-678-900), so our US output (+1-XXX-XXX-XXXX) is accepted by Klaviyo list import as is for numbers without an extension. Numbers with a non-US country code (starting with + or 00) come back as you sent them (extra spaces trimmed only), and 10-digit numbers with no country code are treated as US, so check that each international number starts with + and its country calling code, or add a Country column. Klaviyo's stricter phone requirement applies only to API requests, not to the list import tool (Klaviyo help: Accepted phone number formats). Formatting a phone number doesn't add SMS consent: "Contact details alone do not establish SMS consent."
  • You get back the cleaned CSV (with status, qa_notes and source_row columns), a change log with every merge, every fill from a duplicate, every email and possible-duplicate flag, and every edited cell listed by row, with its old and new value, a QA report with counts (rows in and out, duplicates merged, possible duplicates flagged, emails flagged and cells edited), and your original file, unchanged.
  • What we don't do: we don't merge, delete or edit anything inside Klaviyo. We don't change consent, subscription or suppression status in your Klaviyo account. We don't promise deliverability, inbox placement or bounce rates, we don't verify mailboxes, we don't find, buy or add contacts, and we don't merge rows that only might be the same person.

Clean my Klaviyo export · $25 (up to 200 rows, back in 24h)

Bigger list? Intro $99 for up to 500 rows (48h) · Growth $299 for 501 to 2,000 rows (72h) · Bulk $499 for 2,001 to 5,000 rows (5 business days) · over 5,000 rows, custom quote. See all sizes.

What you get back

  • Every change is logged with its original row number.
  • Possible duplicates are flagged for your review, never blind-merged; same-email duplicates are merged and listed in the change log.
  • Your original file is returned alongside the cleaned one.

See a free before-and-after sample · sample files you can download

Start a Quick Clean · $25 (up to 200 rows)

Check your CSV free first

Check your CSV for exact-email duplicates and formatting problems free in your browser before you import it into Klaviyo. Your file never leaves your computer.

Run the free CSV Preflight Checker

How it works

Pay

Pick the size that fits your list and check out on Stripe. Quick Clean is $25 for up to 200 rows.

Email us your CSV (reply to your receipt or send it to slrescue@mail.grokbot.com)

No account login, no call, no upload form.

Get it back: 24h (Quick Clean, up to 200 rows), 48h (Intro), 72h (Growth), 5 business days (Bulk)

A clean CSV plus a change log. Over 5,000 rows, the turnaround is scoped in your custom quote.

Flat pricing

Your $25 Quick Clean counts toward any bigger cleanup within 14 days.

Not sure how messy it is? CRM Hygiene Scorecard (written diagnosis), $29 · DIY HubSpot and Salesforce import checklist, $9. Agencies: white-label batches. Moving lists between email tools? See Mailchimp audience cleanup · Brevo duplicate contacts cleanup · ActiveCampaign merge duplicate contacts.

Questions

Does Klaviyo merge duplicate profiles automatically?

Only when it sees the identifiers together. Klaviyo merges profiles when an action links an email address, phone number or anonymous mobile app ID, for example a form or an event that includes both an email and a phone (Klaviyo help). A customer who used two different email addresses keeps two profiles; a Klaviyo team member on the Klaviyo Community (June 2023) suggested merging those by hand (Klaviyo Community). We flag rows with the same full name and company so you can see which ones to review before you import.

How do I merge two profiles in Klaviyo, and what happens to their history and consent?

Open the profile you want to remove and select Merge profile under Profile actions. Search for the profile to keep, press Enter, select it, then click Merge profiles. Event data is copied to the kept profile, its own properties stay, and the removed profile only fills properties that don't already exist. Email consent and suppression are merged, so review them before sending. It can't be undone (Klaviyo help). We don't merge profiles inside Klaviyo; we clean the file.

Does Klaviyo remove duplicates when I import a CSV?

It skips them, but not predictably: "Klaviyo can skip duplicate rows, and you should not rely on the first row in your file being imported" (Klaviyo help). Values in your file overwrite values already on a matching profile, while blank cells leave existing values alone (Klaviyo help). We merge same-email rows in the file before you import and log every value we fill, so nothing disappears without a record; conflicting consent or opt-out values (consent columns we recognise by header name) are flagged needs_review, never overwritten.

What is the Klaviyo phone number format for imports?

For the list import tool, numbers need + and the country calling code, or a Country column. Hyphens and spaces are accepted; Klaviyo's own example is +12-345-678-900. Its stricter requirement applies only to API requests (Klaviyo help). Our +1-XXX-XXX-XXXX output for US phones without an extension is accepted by Klaviyo list import. Numbers with a non-US country code (starting with + or 00) come back as you sent them (extra spaces trimmed only), and 10-digit numbers with no country code are treated as US, so check that each international number has + and a country calling code. Formatting a phone doesn't add SMS consent: "Having someone's email address and phone number does not itself mean they have consented to both channels" (Klaviyo help).

Will you change who's subscribed or suppressed?

Not in Klaviyo: we never touch your Klaviyo account, and you control the import and its consent options. In the file, consent and suppression columns are kept (extra spaces trimmed), but when two rows share an email, blank cells on the kept row can be filled from the duplicate row, and every fill is listed in the change log. If the two rows disagree on one of these values (consent columns we recognise by header name), the row is flagged needs_review and the kept value is never overwritten; both values are listed in the change log and in qa_notes, so you decide which applies. A consent column with an unusual header still has any conflict logged in the change log. Tell us the column name when you order and we'll treat it as consent. Review the change log, especially the consent and suppression columns, before you import. For a property-only update, Klaviyo says to deselect consent columns and select Only import the consent in my file, not Apply bulk consent (Klaviyo help).

Do you need access to my Klaviyo account?

No. You export a file and email it. We only clean the exported file and never log in to or touch your Klaviyo account.

How fast is delivery?

From when we receive your file: Quick Clean (up to 200 rows) within 24 hours, Intro within 48 hours, Growth within 72 hours, Bulk within 5 business days. Over 5,000 rows is scoped in your quote.

What if the cleaned file isn't right?

If the file isn't what we promised, we fix it once for free within 48 hours. If it still isn't right, you get your money back for the part we couldn't deliver. If we're late, you choose a full refund or a free rush job.

What happens to my data?

Your file is used only for your job and deleted after delivery on request. We never log in to your CRM, and we never invent, buy, or append emails.

Try the free in-browser CSV dedupe teaser (data never leaves your browser). Freelancers: see the referral kit.