The Scenario
Your brand has been on Mailchimp for three years. You decided to move to Klaviyo six weeks ago. The migration checklist has one item that keeps getting pushed to tomorrow: the 8,000-contact profile import. You have a Google Sheet — the CRM export — with email, first name, last name, city, lifetime value, and a VIP flag in columns A through F. The Klaviyo account is live. The welcome flow is configured. The only thing missing is the audience.
The bad version:
- Check Klaviyo's bulk import documentation to confirm which fields are standard and which need to be submitted as custom properties, then spend 20 minutes formatting the CSV header row to match.
- Upload the file, watch the import job queue, come back 10 minutes later to find that 340 rows failed because the LTV column contained dollar signs that the parser choked on.
- Re-clean the CSV, re-upload, wait again — and repeat the check-for-errors-and-reformat cycle until all 8,000 land.
The migration has been on the list for six weeks not because it is technically hard, but because every time you sit down to do it, the friction of the prep work eats an hour you did not have.
The Easy Way: One Prompt in SheetXAI
SheetXAI is an AI agent that lives inside your Google Sheet. It reads the CRM export, understands the column layout, and calls Klaviyo's bulk profile import endpoint for you — cleaning data along the way if you ask it to.
Bulk import all rows from this sheet into Klaviyo profiles — email in column A, first name in column B, last name in column C, and LTV in column D as a custom property named "lifetime_value"
What You Get
- Profiles are submitted to Klaviyo's bulk import endpoint in batches of up to 10,000 per job.
- Standard fields (email, first name, last name) map to Klaviyo's native profile fields. LTV lands as a custom property visible in segments and flow conditions.
- A summary row is written at the bottom of the sheet: total submitted, total succeeded, and any row-level errors with the row number and reason.
What If the Data Is Not Quite Ready
The LTV column has currency symbols that will break the import
Bulk import all rows into Klaviyo profiles using email (column A), first name (column B), last name (column C), and LTV (column D) — strip dollar signs and commas from column D before setting it as the "lifetime_value" custom property
Phone numbers need E.164 normalization before import
Create Klaviyo profiles for every row in the "Migration" sheet using email (column A), phone (column B) — normalize column B to E.164 format first — and custom properties from columns C through F
The VIP flag should drive profile tagging
Bulk import all rows into Klaviyo profiles; for rows where column F is "VIP", set a custom property "vip_status" to true; for all other rows set it to false
Full data cleanup and import in one pass
Clean and import all 8000 rows into Klaviyo: normalize emails in column A to lowercase, remove duplicate emails keeping the row with the higher LTV in column D, strip formatting from the LTV value, then create profiles with email, first_name, last_name, and lifetime_value — write IMPORTED or FAILED into column G for each row
Combining cleanup with import in one prompt means you stop context-switching between a spreadsheet editor and an import wizard.
Try It
Get the 7-day free trial of SheetXAI and open the migration sheet your team exported from Mailchimp, then ask it to push all 8,000 contacts into Klaviyo profiles. Also see how to update profiles with RFM scores once the import is done.
