Migration
ActiveCampaign to Klaviyo migration service
ActiveCampaign is an email platform with a sales CRM bolted to it — deals, pipelines, accounts and tasks. Klaviyo is an email and SMS platform built on store events, with no sales layer at all. So the migration starts with a question the export cannot answer: where does the CRM half go? Then lists, tags and per-list consent become one profile, and every automation is rebuilt as a flow.
The mechanics
What happens to the CRM half of ActiveCampaign?
It needs a new home, because Klaviyo has nowhere to put it. Deals, pipelines, stages, accounts and sales tasks have no equivalent object in Klaviyo. So before any contact is exported, the sales layer is assigned a destination — a CRM, ActiveCampaign kept for sales only, or retirement — and only a summary reaches Klaviyo.
Not sure this is your crossing? If you are coming from Mailchimp, there is no CRM layer to rehome and the work centres on collapsing audiences into profiles — our Mailchimp to Klaviyo migration page covers that. If you have not yet decided whether to move at all, our ActiveCampaign vs Klaviyo comparison for ecommerce sets out which fits which kind of shop. If you are staying on ActiveCampaign and want it to work harder, that is ActiveCampaign automation consulting, not a migration. And if you are already on Klaviyo, the Klaviyo automation consultant page is the one you want.
ActiveCampaign's shape. A contact is one record for the whole account, but it belongs to one or more lists, and the list is the unit of consent: a contact is active, unsubscribed, unconfirmed or bounced on each list separately. Tags are free-text labels with no schema behind them, and because automations trigger on a tag being added, tags end up carrying much of the account's state. Alongside the marketing side sits a sales CRM: deals in pipelines with stages, owners and values, accounts as company records, tasks, and contact or deal scores computed from rules.
Klaviyo's shape. The profile is the record, one per person for the account, and custom data lives in profile properties. A list is an explicit membership; a segment is a stored definition evaluated continuously. Underneath both sits an event stream — placed an order, started a checkout, viewed a product — fed by the store integration and the onsite tracking snippet, and that stream is what flows trigger on. Consent is held per channel, and anyone who must not be mailed sits on a suppression list. There are no deals, no pipelines, no company records and no profile tags.
The consequence. This is a narrowing as much as a move. ActiveCampaign stored sales state and marketing state in one place; Klaviyo stores marketing state and behaviour. Anything the sales team reads every morning is settled first — exported to a CRM, left where it is, or archived — and only what marketing needs, such as is a customer or account owner, comes across as a property. Everything after that decision is a load in the right order, checked by count.
| ActiveCampaign object | How ActiveCampaign models it | Where it lands in Klaviyo | The decision it forces |
|---|---|---|---|
| Deal and pipeline | A sales opportunity with a stage, value, owner and primary contact | Nothing — Klaviyo has no deal object | Which system owns the pipeline from now on, and which deal facts marketing still needs as properties |
| Account | A company record linked to contacts, with its own custom fields | Nothing directly — a company name or ID carried as a profile property | Whether any flow or segment genuinely needs company data, and which single field carries it |
| Tasks and sales notes | Activity logged against contacts and deals by the sales team | Nothing — out of scope for an email platform | Where sales history lives afterwards, and who must still be able to open it |
| Contact | One record with standard and custom fields, a per-list status, tags and a score | One profile, identified by email address or phone number | Which contacts travel at all — long-bounced and never-engaged records are usually better left behind |
| List | A subscription container and the unit of consent; a contact can be on several | A Klaviyo list where it is a real audience, or a profile property where it only described someone | Which lists were genuine email categories, and which were only ever segments |
| Tag | A free-text label, usually the thing an automation triggers on | A profile property, a list, a segment condition, or nothing — profiles carry no tags | Which tags were state, which were segmentation, and which are debris |
| Custom field | Typed contact fields, including dropdowns and dates | Profile properties, created and typed before the load | Which fields anything still reads, and how dates are normalised so date-triggered flows can use them |
| Contact and deal scores | Computed by scoring rules from actions the contact takes | A frozen number as a property — the rules behind it do not travel | Whether the score is kept as a historical value, replaced by an engagement segment, or retired |
| Automation | Trigger, conditions, waits, goals and actions; runs once or multiple times | A flow triggered by a list, a segment, an event or a date property, with filters and splits | Which automations are rebuilt, which are merged, and which were really sales tasks that leave with the CRM |
| Site and event tracking | A tracking script that records page visits and custom events for triggers | Klaviyo's onsite tracking snippet, recording activity as events on the profile | Which page-visit triggers are still wanted, and the date the old script comes off the site |
| Ecommerce data | Orders and customer data synced from the store by an integration | A native store integration that backfills historical orders as events | Whether the store is treated as the source of order history — it usually should be |
| Email templates | Designer-built emails using percent-sign personalization tags | Rebuilt templates using Klaviyo's own template syntax | Which templates are rebuilt properly, and which are retired instead of carried |
| Forms and landing pages | Embedded or hosted forms that subscribe a contact to a list | Klaviyo sign-up forms, plus every embed repointed by hand | Who owns the list of every place a form is embedded, and the date the old one stops accepting entries |
| SMS consent | A separate SMS opt-in where SMS was used at all | A separate SMS subscription status with its own consent record | Whether SMS is in scope, and whether the recorded consent is good enough to carry or must be collected again |
| Sending domain | An authenticated domain with a reputation built on ActiveCampaign's infrastructure | A Klaviyo sending domain, authenticated against new infrastructure | How fast volume ramps, which profiles go first, and who watches bounce and complaint rates |
Consent is the one mapping you cannot get wrong. ActiveCampaign records an unsubscribe against a list; Klaviyo records it against a profile and a channel. A contact unsubscribed from one list and active on another needs a rule, and the safe rule is that any email opt-out suppresses the profile. Unsubscribed and bounced contacts are imported as suppressed rather than skipped, so a later re-import cannot quietly resurrect them, and the counts are reconciled on both sides against the baseline in the FTC's CAN-SPAM compliance guide (opens in new window) before anything sends.
Sequence
How does an ActiveCampaign automation become a Klaviyo flow?
By hand, one at a time. ActiveCampaign automations start from a list subscription, a tag, a form, a score or a site visit; Klaviyo flows start from a list, a segment, an event or a date property. Each automation is read, its real trigger named, its waits and goals re-expressed as delays and filters, and its re-entry behaviour chosen deliberately.
Rehome the sales layer first
Deals, pipelines, accounts and tasks given a destination and an owner before any export. Automations that only moved deals or assigned tasks are marked as leaving with the CRM, not rebuilt in Klaviyo.
Object map, then scaffold
Lists, tags, custom fields and scores listed on one page, each with a named destination. Every profile property created and typed, and the store integration connected so historical orders backfill as events before profiles load.
Sample import and reconcile
A few hundred contacts first, counted in and counted out, with properties, date values and suppression states checked by hand. This is where a tag sorted into the wrong property shows up.
Tags are sorted, because profiles have none
A mature ActiveCampaign account usually carries far more tags than anyone can explain, and they do three different jobs. Some describe the person — wholesale, webinar attendee — and become profile properties. Some define an audience you send to, and become a list or a segment condition. And many exist only to tell an automation where a contact had got to — welcome-step-3 — and those do not travel, because a Klaviyo flow tracks its own progress. The sort is written into the object map, so nobody decides it row by row during the load.
Custom fields become properties, and dates are fixed first
Field names are settled before a row loads, and so are field types. A birthday or a renewal date that arrives as text looks perfectly correct on screen while every date-triggered flow ignores it, so date values are normalised to the ISO 8601 date format (opens in new window) before the load and checked by sorting on them rather than by reading them. The ActiveCampaign contact ID is kept as a property too, so any record can be traced back to its source while the old account is still open.
Waits, goals and re-entry are re-expressed, not copied
An automation that began on subscribes to list is rebuilt on that list in Klaviyo only if the list survived the object map; otherwise the real entry event is found — usually the form submission or the first order. ActiveCampaign goals, which jump a contact forward once a condition is met, become flow filters or conditional splits that end the path explicitly. Wait until steps become timed delays with a defined exit, so nobody sits in a flow for a quarter. And the runs once or multiple times setting becomes a deliberate choice of flow filter, because a welcome series must not restart while a browse-abandonment flow should.
Site tracking and order history change sources
ActiveCampaign's page-visit triggers depend on its own tracking script, and Klaviyo's browse and checkout flows depend on its onsite snippet and the store integration. Both scripts can run side by side during the build, so the new events start accumulating before cutover. Purchase history — first order date, lifetime value, what somebody bought last — comes from the store itself, which the native integration backfills as events. That is the honest answer to "does our history come with us": commerce history arrives from the platform that recorded it, and email engagement history does not arrive at all.
Templates are rebuilt, and every personalization tag is translated
Builder formats do not cross. Exported HTML can be pasted in, but it arrives as a single block nobody on your team can edit afterwards. Templates that earn it are rebuilt from Klaviyo's own blocks, and each ActiveCampaign personalization tag is rewritten into Klaviyo's template syntax with an explicit default value — a missing default is exactly how a broadcast goes out addressed to "Hi ," and it is visible only on the profiles where the field was empty. Both vendors document the export and import surfaces this work uses, in the ActiveCampaign Help Center (opens in new window) and the Klaviyo Help Center (opens in new window).
Cutover, freeze and the way back
Cutover is a scheduled hour, not something that sneaks up. Marketing writes into ActiveCampaign stop, a final delta of anyone who subscribed or unsubscribed during the build is loaded, forms and tracking are repointed, the UTM scheme on outbound links is matched or changed on a known date, and the next send goes from Klaviyo. Nothing is deleted on the day. If the sales team is staying on ActiveCampaign, the account carries on as their CRM; otherwise it stays read-only through a lookback period, which is what makes rollback a real option rather than a reassuring word.
Where this sits next to the rest of the work
This page is the one-time port and nothing else: the sales-layer decision, contacts, lists, tags, fields, consent, templates, automations, the sending domain and the cutover. What comes after it — flow architecture, segmentation strategy, API and webhook work — is ongoing build work on our Klaviyo automation consultant page. If the deals need a proper CRM to land in, the ActiveCampaign to HubSpot migration page covers that crossing, and the CRM migration services overview sets out the others we handle. If the question is still which processes are worth automating across the whole operation, start at AI automation for ecommerce brands.
Some of what your automations were doing should not be rebuilt inside an email platform at all. Logic that keeps a CRM and Klaviyo in step, that needs real retries, or that has to read unstructured text and decide something, belongs a layer up — the territory of workflow automation proper, called from a webhook and with a run history you can inspect next Tuesday. How engagements work explains how a fixed scope and a fixed price per stage get agreed before any of it starts.
Sending
Does our sending reputation follow us to Klaviyo?
Partly, and not enough to skip a warm-up. If you authenticated your own domain in ActiveCampaign, some of its reputation travels with it, but the sending infrastructure behind it changes completely. Records are published and verified first, then volume ramps gradually from the most recently engaged profiles outward while bounce and complaint rates are watched.
Klaviyo sends from a dedicated sending domain — usually a subdomain of yours — which means SPF, DKIM and DMARC records are published and verified before anything goes out. That is not optional housekeeping: the bulk-sender requirements in Google's email sender guidelines (opens in new window) treat missing authentication, a high reported spam rate and a missing one-click unsubscribe header as reasons to filter or reject mail outright, and the other large providers have converged on the same expectations.
Then the warm-up itself. The first sends go to the profiles who opened or clicked most recently, because their engagement is the signal that tells providers the new path is wanted. Daily volume rises in steps, bounce and complaint rates are checked before each step, and a step is repeated rather than advanced if either climbs. The cold segment goes last or does not go at all, which is usually the moment a list gets honestly smaller and the reporting gets honestly better. If SMS is in scope it has its own gate: US carriers expect brand and campaign registration before they deliver reliably, and email consent is not consent to text anyone.
The honest part
What genuinely cannot come across from ActiveCampaign?
The sales layer and the send history. Contact records, field values, list membership and consent state all move. Deals, pipelines, accounts and tasks have no Klaviyo equivalent, and campaign opens, clicks and reports stay with the platform that sent them. Automations, templates and scoring rules are never imported; each one worth keeping is rebuilt.
| What | Treatment | Why |
|---|---|---|
| Deals, pipelines, accounts and tasks | Rehomed or archived | Klaviyo has no sales objects, so they go to a CRM, stay in ActiveCampaign, or are exported for the record |
| Contact records and field values | Moves | They load cleanly once every profile property exists, is typed, and means one thing account-wide |
| List membership | Moves deliberately | Carried as a list, a property or both, by a rule set in the object map rather than decided at import time |
| Tags | Sorted | Profiles carry no tags, so each becomes a property, a list, a segment condition, or is dropped |
| Subscription and suppression state | Moves deliberately | Unsubscribed and bounced contacts import as suppressed, and both counts are reconciled before any send |
| Historical order data | Arrives from the store | The store integration backfills it as events — it comes from the system that recorded it, not from the old platform |
| Scores | Frozen or retired | The scoring rules do not export; the last value can be kept as a property for reference |
| Automations | Rebuilt | They do not export, and the trigger model is different — a rebuild against lists, segments and events is the only honest option |
| Email templates | Rebuilt | Builder formats do not translate, and every personalization tag is rewritten with an explicit default value |
| Forms and site tracking | Replaced | Anything still pointing at the old account keeps adding contacts to the platform you are leaving |
| Campaign reports and engagement history | Stays behind | Opens, clicks and per-send results have no destination record, so the old account is the archive |
You own the result outright: profiles in your own account, a written decision on where the sales layer went, an object map showing where every list, tag, field and score went, flows documented against the automation they replaced, a warm-up schedule, and a note of what was deliberately left behind. This is a fixed-scope engagement that ends — quoted per stage against a written scope, not sold as the first month of a retainer. We are an independent consultancy working inside your accounts through each platform's own interface and API; we hold no partner or certification badge from either vendor and will not imply one. And if the honest answer on the call is that your sales team relies on ActiveCampaign's CRM more than your marketing needs Klaviyo, that is what you will hear.
Questions
Common questions before leaving ActiveCampaign
What happens to our ActiveCampaign deals and pipelines?
They need a home decided before anything moves, because Klaviyo has no deals, pipelines, accounts or sales tasks. That home is usually a CRM, and sometimes ActiveCampaign itself kept for the sales team alone. Klaviyo can hold a summary of the sales relationship as profile properties, but never the pipeline itself.
Do our ActiveCampaign automations import into Klaviyo?
No. Automations do not export in any format Klaviyo reads, and the trigger models differ — one starts from a list subscription, a tag, a form, a score or a site visit, the other from a list, a segment, an event or a date property. Each automation worth keeping is read, its real trigger named, and rebuilt as a flow.
What happens to our ActiveCampaign tags?
Each one is sorted, because a Klaviyo profile has no tags. Tags that describe a person become profile properties, tags that define an audience you send to become lists or segment conditions, and tags that only told an automation where a contact had reached usually do not travel, since the rebuilt flow tracks that itself.
Does our email engagement history come across?
Opens, clicks and campaign reports stay in ActiveCampaign, because they belong to the platform that did the sending and there is no destination record to import them into. Order and browsing history is different: it is backfilled through Klaviyo's store integration, which is the source the new flows and segments read anyway.
Can we email the whole list on the first day in Klaviyo?
Not safely. Even with the same domain, the sending infrastructure behind it changes, and mailbox providers judge the new combination on what it does next. Authentication records are published and verified first, then volume is ramped from the most recently engaged profiles outward while bounce and complaint rates are checked between steps.
Does ActiveCampaign have to stay switched on after the move?
If your sales team stays on it, yes, as their CRM. If not, it stays read-only for a lookback period so reports, deal history and old templates can still be opened. Either way, what stops on cutover day is marketing writes: every form, tracking script and integration is repointed so new subscribers land in Klaviyo.
Free consultation
Tell us what is costing you the most time
Describe the process. You get a straight read on whether it is worth automating, roughly what it would take, and what we would tackle first — on a call that costs nothing.
- Under an hour, free, and no obligation
- Fixed price per stage, agreed before any work starts
- You own everything we build, documented and in your accounts
- If you do not need us, we will say so on that call
The form is the fastest way to reach us — we reply from a real person, usually within one business day.
Staying on ActiveCampaign after all? See ActiveCampaign automation consulting.