Pay
Pick the size that fits your list and check out on Stripe. Quick Clean is $25 for up to 200 rows.
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.
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:
Moving from Mailchimp? The same steps apply: clean the Mailchimp export first, then import it into Klaviyo. See Mailchimp audience cleanup.
We only clean the exported file. We never log in to or touch your Klaviyo account. 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. Review the change log, especially the consent and suppression columns, before you import. You run the import, map the columns and choose the consent options yourself.
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.
See a free before-and-after sample · sample files you can download
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.
Pick the size that fits your list and check out on Stripe. Quick Clean is $25 for up to 200 rows.
No account login, no call, no upload form.
A clean CSV plus a change log. Over 5,000 rows, the turnaround is scoped in your custom quote.
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.
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.
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.
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.
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).
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).
No. You export a file and email it. We only clean the exported file and never log in to or touch your Klaviyo account.
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.
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.
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.