Migrate from Brevo to Klaviyo: a safe cutover plan
Short answer. Migrate in five phases: inventory Brevo, preserve consent and suppressions, connect Klaviyo to the store, rebuild and test flows, then cut over by message owner. Import opt-outs before any marketing send, keep the two platforms from sending the same journey, and preserve a read-only rollback window. Do not treat the migration as one contact CSV.
Brevo and Klaviyo use different objects, event names, automation logic, and billing definitions. A reliable migration translates the business rules, not only the data columns.
The project duration depends on integrations, flow count, markets, channels, custom events, and approval capacity. Use gates rather than promising a fixed number of weeks.
The five migration gates
| Phase | Gate to pass |
|---|---|
| 1. Inventory | Every sending asset, event, list, suppression, domain, and owner is documented |
| 2. Data | Active consent and non-contactable records are separated and mapped |
| 3. Platform | Store events, profiles, catalog, consent, and authentication pass QA |
| 4. Journeys | Critical flows pass trigger, exclusion, rendering, and conversion tests |
| 5. Cutover | One system owns each message, monitoring and rollback are ready |
Do not cancel Brevo when the Klaviyo account is created. Cancel only after data retention, opt-out handling, reporting exports, and the rollback period are complete.
Phase 1: inventory Brevo
Create a migration register with:
- Contact lists and segments.
- Contact attributes and formats.
- Email, SMS, WhatsApp, and other channel consent.
- Unsubscribes, hard bounces, complaints, and blocklisted contacts.
- Campaign and automation templates.
- Active workflows and contacts currently inside them.
- Ecommerce and custom events.
- Forms and landing pages.
- Transactional senders and templates.
- Domains, DKIM, DMARC, IPs, and routing.
- API keys, webhooks, plugins, and data feeds.
- Reports required for historical comparison.
For each workflow, write the business rule in plain English:
When a consented prospect updates a cart, wait two hours. If no order occurs, send the saved cart. Stop all remaining messages after an order.
That sentence is more useful than a screenshot when rebuilding in Klaviyo.
Separate four contact populations
Do not create one file called all contacts final.csv.
| Population | Migration treatment |
|---|---|
| Proven active subscribers | Import with preserved consent evidence through the appropriate Klaviyo subscription process |
| Unsubscribed contacts | Import to suppression before sends |
| Hard bounces and complaints | Import to suppression or retain as non-contactable according to Klaviyo's current process |
| Unknown or unproven consent | Import without subscribing if needed for analysis, or leave quarantined |
Email and SMS consent are separate. A valid email subscriber is not automatically eligible for SMS.
Klaviyo's CSV property import documentation explicitly warns against updating subscription status when importing properties unless that is the intended, evidenced action. Selecting import without updating status preserves existing subscribers and suppressions in an account.
Export from Brevo
Export and date:
- Active consented email contacts with source and date where available.
- Email unsubscribes.
- Hard bounces and blocklisted addresses.
- Spam complaints or abuse suppressions.
- SMS consent and opt-outs separately.
- Contact attributes and list memberships.
- Campaign and automation performance.
- Event logs needed for validation or recent journey state.
Store raw exports read-only. Create working copies for mapping. Keep a data dictionary with source column, destination property, type, example, null behavior, and owner.
Map Brevo data to Klaviyo
| Brevo concept | Klaviyo destination | Migration note |
|---|---|---|
| Contact attribute | Profile property | Normalize dates, booleans, numbers, currency |
| List membership | List or source property | Preserve explicit signup source |
| Dynamic segment | Rebuilt segment definition | Do not import as a permanent list only |
| Ecommerce event | Native integration event or custom metric | Use Klaviyo event names and payload |
| Workflow | Flow | Rebuild trigger, filters, delays, splits, exits |
| Blocklist or opt-out | Suppression and consent state | Import before marketing |
| Template | Klaviyo template or custom HTML | Replace syntax and dynamic variables |
Do not duplicate native Shopify order history into profile properties if the Klaviyo integration already provides it. Decide which data source is authoritative.
Phase 2: import suppressions first
Klaviyo supports CSV suppression import. Prepare a file with the exact required identifier, commonly an Email column, and import it before any campaign or flow can send.
Then verify a sample:
- Former Brevo unsubscriber is suppressed in Klaviyo.
- Hard-bounced address cannot receive marketing.
- A complaint is not accidentally reactivated.
- SMS status remains independent.
- Importing profile properties does not change consent.
Unsuppressing a profile does not erase a prior opt-out. Do not use unsuppression as a bulk migration shortcut.
Phase 3: connect the ecommerce platform
Install Klaviyo's current native integration for the store and test:
- Profile identity.
Viewed Productwhere supported and consented.Added to Cartif implemented.Checkout Started.Placed Order.- Fulfillment, cancellation, and refund data.
- Product ID, variant, price, currency, and order ID.
- Historical order synchronization.
- Shopify email and SMS consent sync.
Use test profiles and a documented test order. Do not activate a browse or abandonment flow until the required metric appears with correct data.
If Brevo tracking remains installed during transition, prevent duplicate event-driven sends. Remove old tracking only after Klaviyo event QA and cutover approval.
Authenticate the Klaviyo sending setup
Configure the branded sending domain using Klaviyo's current DNS instructions. Do not copy DNS values from an article. They are account-specific.
Verify:
- DKIM and DMARC results in received headers.
- Visible From and reply addresses.
- Link branding and redirect behavior.
- Existing SPF record remains syntactically valid if changes are required.
- Other legitimate senders remain covered by the domain policy.
- DMARC aggregate reporting continues.
A new platform does not always mean a new domain or dedicated IP. Choose architecture from current sending volume, reputation, and Klaviyo guidance.
Phase 4: rebuild flows in priority order
1. Welcome
Trigger from the correct marketing list. Deliver the signup promise immediately after eligibility. Split existing customers from prospects and stop first-order promotion after purchase.
2. Checkout and cart abandonment
Use the native integration's actual metrics. Add Placed Order zero times since starting this flow and prevent cart, checkout, and browse journeys from overlapping.
3. Post-purchase
Trigger on Placed Order, but coordinate with transactional order messages. Use fulfillment and product data for care, support, review, and replenishment timing.
4. Browse abandonment
Launch only after Viewed Product works for identifiable and eligible profiles. Use a light message and stop after cart, checkout, or purchase.
5. Winback and sunset
Build from purchase-cycle and multi-signal inactivity. Do not use opens alone. The winback and sunset guide provides current filter and suppression logic.
For every flow, preserve a record of the Brevo rule and the Klaviyo implementation. Some differences are deliberate improvements; label them so post-migration reporting does not confuse redesign with platform effect.
Rebuild templates and personalization
Brevo template syntax and event variables do not transfer directly. Recreate:
- Profile-property fallback.
- Event and product variables.
- Conditional content.
- Repeating cart or order blocks.
- Coupon generation.
- UTM parameters.
- Footer, unsubscribe, and preference links.
- Locale, currency, and market rules.
Test missing data. A template that works only when first name, product image, and discount code are present is not production ready.
Avoid duplicate journeys during coexistence
Create a message-ownership matrix:
| Message | Brevo owner | Klaviyo owner | Cutover condition |
|---|---|---|---|
| Newsletter | Yes, then no | No, then yes | Full campaign QA and audience approval |
| Welcome | No after date | Yes after date | Forms point to Klaviyo list |
| Cart | No after date | Yes after date | Cart event and purchase exit pass |
| Order confirmation | Keep or migrate separately | Only if approved | Transactional reliability test |
| Post-purchase | No after order cutoff | Yes after order cutoff | Product and fulfillment paths pass |
Use an exact cutoff timestamp and timezone. Profiles already inside a Brevo workflow may need to finish, be removed, or be excluded from the replacement flow.
Deliverability ramp
Changing platforms can change sending infrastructure, link domains, traffic pattern, and how mailbox providers see the stream. Start with recent consented customers and verified clickers, then expand in controlled tiers.
Do not use Apple privacy opens as the sole warm audience. Monitor:
- Delivery and deferral by provider.
- Hard bounces.
- Complaints and unsubscribes.
- Verified clicks and orders.
- Daily volume against the plan.
Keep campaign volume and newly activated flows on one calendar. Several flows going live can add more traffic than the first campaign.
Cutover-day checklist
- Suppressions imported and sampled.
- Active consent import reconciled.
- Store integration and events pass.
- DNS and message headers pass.
- Critical flows are live or scheduled under one owner.
- Brevo duplicates are paused at the cutoff.
- Forms and preference centers point to the right system.
- Transactional messages have one owner.
- Monitoring owners and stop conditions are online.
- Rollback can restore the previous message owner without resubscribing anyone.
Rollback and retention
Keep Brevo read-only for the agreed period. Preserve invoices, consent evidence, suppression exports, performance, templates, and configuration needed for audit or troubleshooting.
Rollback should mean pausing Klaviyo ownership and restoring a known Brevo path. It should not mean importing a stale contact file or sending from both systems.
Before closing Brevo, run one final delta export of unsubscribes, bounces, and complaints created during coexistence and reconcile them in Klaviyo.
Post-migration validation
Compare pre- and post-migration periods with the same definitions:
- Delivered and provider errors.
- Click and order rate.
- Revenue per recipient.
- Net store revenue and refunds.
- Flow eligibility and volume.
- Complaints and unsubscribes.
- Active profile count and billing.
- Form conversion and consent source.
Do not require Klaviyo to outperform Brevo immediately to declare the migration technically successful. First verify data and customer experience. Then optimize and test incrementality.
Common migration mistakes
- Importing all Brevo contacts as subscribed.
- Forgetting blocklists and complaints.
- Copying flows without rewriting business rules.
- Activating all Klaviyo flows at once.
- Leaving both platforms on the same trigger.
- Treating open-rate changes as proof of platform quality.
- Canceling Brevo before the suppression delta and retention period.
- Changing ESP, domain, IP, creative, frequency, and offer simultaneously.
FAQ
Can I migrate Brevo contacts to Klaviyo with a CSV?
Yes, but contacts are only one part of the migration. Separate active consent from suppressions, map properties carefully, and rebuild events, segments, templates, and flows.
Should I import unsubscribes into Klaviyo?
Yes. Import non-contactable records through Klaviyo's current suppression process before marketing. This prevents former Brevo opt-outs from being contacted again.
Do subscribers need to opt in again?
Changing processors does not automatically erase valid brand consent, but you must preserve evidence and respect the original channel and scope. Have market-specific requirements reviewed by counsel.
Can Brevo keep transactional email while Klaviyo handles marketing?
Yes. Define routing, domain authentication, event ownership, and reporting so transactional and marketing streams do not duplicate or conflict.
How long should Brevo remain accessible?
Long enough to complete rollback, opt-out reconciliation, reporting retention, and legal or contractual requirements. Choose the period in the project plan rather than using a universal number.
Migrate permission and logic, not just records
A successful cutover preserves consent, customer state, and message ownership while improving the operating system. Deliver helps teams plan, implement, and validate the migration. Book a Brevo-to-Klaviyo migration diagnostic.
Want to apply this to your stack?
Spend 30 minutes with Charlotte to review your CRM setup, size the opportunity and leave with a practical action plan.
Book a 30-minute call →