What each platform needs
Mailchimp
A CSV or TXT file, separated by commas, not semicolons; Excel (.xls) files aren't accepted. Files over 200 MB, or about a million contacts, can cause errors. Every row needs an email address, or a phone number for SMS contacts.
Klaviyo
A CSV of up to 50 MB with a header row, imported into a list. Every row needs an email address or a phone number.
Brevo
A CSV, XLSX or TXT file of up to 250 MB with one sheet, separated by commas, semicolons or tabs, saved as UTF-8 or Windows-1252. Every contact needs an email, an SMS, WhatsApp or landline number, or an external ID.
Errors, and the fix
Email addresses are rejected
All three refuse incomplete or malformed addresses. Klaviyo rejects any containing ( ) , : ; [ / ] or spaces, Brevo doesn't accept special characters, and Mailchimp can't read accented characters before the @. Mailchimp also removes addresses with misspelled common domains, so check for spaces and typos such as gmial.com.
info@ and sales@ addresses disappear
Mailchimp removes role-based addresses from imports automatically. Ask for a named person's address instead.
Contacts are missing or merged
Klaviyo skips later rows that repeat an email or phone number. Mailchimp imports a repeated email once and lets later rows update it. Brevo allows one contact per email. Remove duplicates first, so you choose which row's details survive. CSV duplicate rows guide.
Phone numbers land in the wrong country
Start them with + and the country code. Mailchimp's SMS numbers must be in E.164 format (+ then up to 15 digits), Klaviyo needs the country code, and Brevo applies your default country code to numbers without a +. Excel tends to drop the +: Brevo suggests typing an apostrophe before it. CSV phone numbers guide.
Tags are split in the wrong places
Mailchimp reads one Tags column, with tags separated by commas. A tag that contains a comma needs double quotes ("Monday, Wednesday"), tags are limited to 100 characters, and emoji can't be imported. Brevo's multiple-choice attributes look like ['Music'|'Sports'] instead.
Dates and birthdays are wrong
Mailchimp reads YYYY-MM-DD or MM-DD-YYYY for dates, and month and day only (MM/DD or DD-MM) in a birthday field. Brevo's date attributes follow your account's setting, DD-MM-YYYY or MM-DD-YYYY. Year first avoids most mix-ups. CSV date formatting guide.
Accents turn into � or go missing
The file wasn't saved as UTF-8. Brevo skips any value containing the replacement character �. Save as CSV UTF-8 from Excel, or download as CSV from Google Sheets. CSV special characters guide.
Existing details are wiped
When Mailchimp updates existing contacts, blank fields in your file erase what's stored. Brevo only erases data with blanks if you turn on that option. Leave out columns you don't mean to change.
Consent and subscription status
Bring across whether each person agreed to marketing, not only their address. Importing everyone as subscribed is the quickest way to spam complaints.
Mailchimp
You choose one status for the whole import: Subscribed, Unsubscribed or Non-subscribed. Imported subscribers skip the signup process, so Mailchimp asks you to be sure you have permission to email them. An import doesn't change the status of contacts already in your audience, and unsubscribed or bounced addresses already there aren't imported again.
Klaviyo
Consent can come from a column, with the values Subscribe, Never Subscribed or Unsubscribed. Only mark people Subscribe if they agreed to receive marketing email.
Brevo
SMS, WhatsApp and phone each have their own blocklist, so a contact who unsubscribes from one can still be reached on the others, if they agreed to it.
Before you import
Collect the list in the right format
Send whoever has the contacts a form instead of a spreadsheet. Emails, phone numbers, duplicates and consent values are checked as they type, and the download is ready to import. Data is checked in the browser and never stored by us.