Migration · Klaviyo

Migrate from Klaviyo

Shopify catalog sync is verified first, then abandoned cart, welcome and post-purchase flows are rebuilt and measured against the old baseline.

Timeline

48 hours typical

Suppression first. DNS last. Keep the old platform read-only for 72 hours.

Step 1

Export

Export profiles, lists, segments, flows, templates and suppression state.

Step 2

Shopify

Reconnect the Shopify store and verify catalog/order sync before importing flows.

Step 3

Flows

Rebuild abandoned cart, welcome and post-purchase first. Measure against the old baseline.

Step 4

Cutover

Switch the sending domain and API keys. Keep the old flows paused for 72 hours.

A single suitcase open on a bed, folded cream shirts inside.

The short version

  • A Klaviyo account holds four things that behave differently in a migration: profiles, events, segments and flows. The first two move as data; the last two are rebuilt by a person who understands why they exist.
  • Reconnect Shopify and prove the catalog and order sync with a real test order before a single flow is rebuilt. Every abandoned-cart message depends on that connection being correct.
  • Rebuild abandoned cart, welcome and post-purchase first. Put the remaining flows in a dated backlog, because rebuilding the long tail before cutover is how ecommerce migrations lose a quarter.
  • Consent and suppression are the legally weighted part. Under DPDP you need a record of who agreed, to what purpose, when and through which notice — a purchase is not consent for marketing.
  • The sending domain needs authentication and a warm-up measured in days, not hours. That is calendar time nobody can compress by working weekends.
  • Imports carry contact records with consent and suppression flags. Flow logic, predictive properties and historical event streams do not come across, and any plan that assumes otherwise will slip.

The inventory sheet that sets your calendar

Build a spreadsheet before you build anything else. Six columns are enough: what the asset is, where it lives, who owns it, whether it is data or logic, where it is going, and how you will prove it arrived. The last column is the one teams skip, and it is the one that turns a hopeful migration into a checkable one. Proof can be a row count, a screenshot, a seed inbox that received the right message, or a test order that produced the right event.

Count everything, including the things you intend to abandon. Profile counts, list counts, segment counts, active flow counts, template counts, and the number of custom properties that are actually populated rather than merely defined. A property that exists on four hundred profiles out of ninety thousand is a decision to make, not a column to port. Do the same for segments: a segment with no flow attached and no campaign in the last year is a candidate for deletion, and deleting it now saves you from rebuilding it badly later.

Layout of the migration inventory sheet with one row per asset type and columns for owner, destination and proof of arrival. Profile counts Segment owners Flow triggers Template tags Suppression list
Figure 2. The inventory is the project plan. Every row that has no owner is a row that will be discovered late.

Then check the number that affects your bill rather than your calendar. LoopNow counts marketing contacts, meaning subscribed, unmuted and mailed in the last twelve months. Unsubscribed and suppressed contacts are free and unlimited. If your Klaviyo profile count includes five years of one-time buyers who never opened anything, the plan you need may be smaller than the raw export suggests, and the suppressed portion of your list should be imported for compliance reasons without worrying about allowance.

Reconnect the store before you rebuild anything

Every ecommerce flow in the account depends on the store connection being correct, and the connection is upstream of everything else. Reconnect Shopify to LoopNow and verify the catalog and order sync before importing flows, exactly as the migration sequence in our own notes says. Catalog means product identifiers, variants, prices and availability. Order sync means the events that trigger flows: order placed, order fulfilled, order cancelled, refund issued. If the identifiers differ, a product block in a rebuilt template will render an empty grid and nobody will notice until a customer replies to ask what they were supposed to buy.

Test with a real order, not a preview. Place a low-value order in the store, pay for it, let it flow through fulfilment, and watch what arrives in the new workspace. Then place a cash-on-delivery order, because COD is the case that breaks imported flows most often: the order is confirmed, the payment is not captured, and the post-purchase sequence needs to branch. A flow built against a test event that skipped payment will behave differently from one built against the real thing, and the difference usually appears in the message that asks a customer to review a product they have not received.

Sequence from connecting the Shopify store through catalog import, order sync, a test order and only then rebuilding flows. 1 Connect Shopify 2 Import catalog 3 Sync orders 4 Place test order 5 Rebuild flows
Figure 3. Store connection first. A flow rebuilt against an unverified catalog is a template that fails quietly at scale.

Only after that test order behaves correctly should anyone touch the flow canvas. The order of operations is not bureaucratic. It is the difference between debugging a template and debugging a data pipeline while a customer waits.

Three flows first, the rest later

Rebuild the three flows that carry the most revenue and the most risk: abandoned cart, welcome, and post-purchase. Those three cover the moments where a missing message is visible to a customer within minutes. Everything else — browse abandonment, winback, sunset, birthday, VIP tiers, replenishment reminders — goes into a backlog with a date, an owner and a rough effort estimate. This is not a compromise on quality. It is the only sequence that gets a store onto a new stack before the next festive season.

Budget the work honestly. A simple abandoned-cart flow with one wait step, one email and one WhatsApp nudge is two to three days including template QA and seed tests. A welcome series with three messages and a branch on first-time versus returning buyer is around a day if the templates already exist and two if they do not. Post-purchase with a review request and a COD confirmation branch is another two days. Segment rebuilds and template porting each take an afternoon per handful of items. None of these numbers include the warm-up, which is calendar time rather than effort.

Planning estimate of effort in working days for the first three flows, segment rebuilds, template porting and the warm-up window. Abandoned cart 3d Welcome series 1d Post-purchase 2d Segment rebuild 2d Template port 1d Warm-up wait 7d
Figure 5. Planning estimates for a mid-sized store, not measured averages. Warm-up is elapsed days and cannot be parallelised with the build.

Decision latency is the hidden cost. Every flow you rebuild needs somebody to approve the copy, the offer and the timing, and that person is usually the founder or the head of growth, who is also running the festive calendar. Book their review slots in the same week you book the build, or the build finishes and then waits four days for a yes.

The rebuild is a translation, not a copy

A flow definition reads as a list of sentences: when this happens, wait this long, check this condition, send this message, then branch. Rebuilding it means writing those sentences again in a canvas that may model time, filters and exits differently. Do it with the old flow open on a second screen and a notebook beside you, and write down the intent of each step before you drag anything. The step that says wait four hours usually exists for a reason somebody remembers, and that reason is often that the fulfilment system takes three hours to confirm the order.

Translate in this order: trigger, filter, delay, message, branch, exit. Triggers map to events, and the event names in the new workspace should be the ones your store actually emits after the test order. Filters map to conditions on profile and order data, and every filter you cannot express should be written on a list of gaps rather than quietly dropped. Delays map to waits, but check whether the new canvas counts in hours or in business hours, because a four-hour wait that skips weekends changes the customer experience on a Friday evening order.

The LoopNow workflow canvas showing a rebuilt abandoned-cart flow with a wait step, an email node and a WhatsApp branch.
Figure 6. Rebuilt flows live on the canvas with explicit waits and exits. Review the whole path before activating, not just the first message.

Branches are where translations drift. A branch on order value, a branch on first purchase, a branch on COD versus prepaid: each one needs a test case that proves both sides run. And each flow needs an exit condition, so that a customer who buys while the cart flow is waiting does not receive a reminder for a purchase they already completed. That single exit rule prevents the most common complaint after an ecommerce migration.

Segments and templates: rebuild the query, then the render

A Klaviyo segment is a saved query over profiles and events. A LoopNow segment is also a condition set, but the field list differs, so the translation is rarely one-to-one. Start with the segments that feed a live flow or a monthly campaign and ignore the rest. For each one, write the question it answers in plain language — customers who bought twice in ninety days and never opened a WhatsApp message — then rebuild that question against the fields you actually have.

Some conditions will not survive. Predictive properties are the obvious example: a score that has been trained on a large retail dataset is not a field you can copy into another product, and our comparison pages are explicit that Klaviyo’s ecommerce depth and predictive analytics are best in class. If a flow depends on a predicted lifetime value threshold, the honest options are to replace it with a simpler behavioural rule, to run it from a data warehouse and push the result in as a field, or to leave that flow where it is until the replacement is proven.

Decision tree for handling imported segments: static lists, dynamic conditions and predictive properties each take a different route. How does this segment survive? decision Static list Import once, then decay Dynamic condition Rebuild against new fields Predictive property No equivalent, verify
Figure 7. Three kinds of segment, three outcomes. Predictive properties need a replacement rule or a warehouse job, not a field mapping.

Templates are the part everybody thinks is easy, and the part that produces the most support tickets in week one. Build a translation table for merge tags before you touch the editor: old tag on the left, new field on the right, a note about what happens when the field is empty. The empty case matters more than the happy case, because a first-name tag that resolves to nothing produces a greeting like Hi comma, and that is the screenshot customers post.

Product blocks and dynamic content need the catalog to be correct, which is why the store connection comes first. Check discount codes and coupon blocks separately: a coupon generated by the old platform will not exist in the new one, and a flow that sends a dead code is worse than a flow that sends no code. Links need the same care. Tracking parameters, deep links into the app and the preference centre URL all change when the sending domain changes, and a preference centre that returns a 404 turns an unsubscribe into a spam complaint.

Then run the boring QA, and keep watch on segment drift afterwards. Render every template in Gmail, Outlook and a Rediff inbox, check the plain-text alternative, the sender name, the sender identity in the footer and the unsubscribe link. On the segment side, a rebuilt audience that matches twelve thousand contacts on day one and nine thousand on day thirty is either genuinely behavioural or subtly broken, and only a weekly count tells you which. Put the counts on a dashboard for the first month and treat a sudden divergence as a bug rather than a market signal.

Domain authentication and the warm-up you cannot skip

Authenticate the domain you will actually send from, and prefer a dedicated sending subdomain over the root domain. SPF, DKIM and a DMARC record are the baseline; the exact records come from the workspace, and they must be published in your DNS host rather than in a vendor’s dashboard. If the old platform used a shared sending domain, your reputation does not travel with you, because it was never yours. That is the single biggest deliverability surprise in this migration.

Warming is a schedule, not an activity. Start with the smallest, most engaged slice of the list — the people who opened something in the last thirty days — and increase volume only while bounce and complaint behaviour stays flat. Our timeline below is a conservative shape for a mid-sized list; the actual thresholds live in the sending dashboard and in Google Postmaster Tools, and nobody should quote you a universal number of messages per day. A dedicated IP is not automatically better for a small list, and shared infrastructure is not automatically worse.

Eleven-day warm-up schedule from domain authentication through seed tests, a first engaged-segment batch and full-list sending. Day 1 Authenticate the sending subdomain DKIM, SPF and DMARC published Day 2 Seed test to Gmail, Outlook, Rediff Check placement and rendering Day 4 First batch to the most engaged segment Smallest send of the month Day 7 Expand to thirty-day openers Hold if complaints move Day 11 Full list, then campaigns Flows before broadcasts
Figure 8. A conservative warm-up shape for a mid-sized list. Thresholds are set in the sending dashboard, not in this guide.

Two errors account for most warm-up failures. The first is warming with a campaign, because campaigns go to the least engaged part of the list and the inbox providers learn the wrong thing about you. The second is warming with your best-performing old subject lines and offers, which produces engagement that will not repeat once normal content resumes. Warm with the messages you intend to send for the next year, to the people most likely to want them, and accept that the first ten days are slower than the calendar wants them to be.

A ten-day plan with four checkpoints

Ten working days is realistic for a store with a few dozen flows and a list in the low lakhs, provided the store connection is straightforward and the approver is available. Days one and two are inventory, export, consent mapping and suppression merge. Days three to five are the Shopify connection, catalog import, test order, template translation table and the first flow. Days six to eight are the second and third flows, segment rebuilds and the start of warm-up. Days nine and ten are parallel running, cutover and the rollback rehearsal. Warm-up continues past day ten, which is why campaigns wait.

Four checkpoints decide whether the plan advances. Checkpoint one: the inventory is signed off and every asset has an owner. Checkpoint two: a real test order produced the right events and the right first message in a seed inbox. Checkpoint three: consent and suppression counts reconcile, with a written explanation for every difference. Checkpoint four: the rollback has been executed once, in advance, by the person who would have to do it at midnight. A migration that skips checkpoint four is not planned; it is hoped for.

Ten-day migration plan grouped into four workstreams with the assets handled in each block of days. Days 1 to 2 Export Consent map Suppression Sign-off Days 3 to 5 Shopify Templates First flow Seed list Days 6 to 8 Flow two Flow three Segments Warm-up Days 9 to 10 Parallel run Cutover Rollback test Post checks
Figure 9. Four blocks of days, four checkpoints. Warm-up starts inside the plan and finishes after it.

Write the plan as a table with an owner per day, and put the checkpoints in the calendar as meetings with a named decision maker. The most common schedule failure is not technical. It is a checkpoint that nobody had authority to pass, so the team waited three days for a yes that could have been given on day two.

Parallel running without mailing anyone twice

Parallel running does not mean sending every message from both platforms. It means running the new stack on a defined slice of traffic while the old stack keeps the rest, and comparing outcomes over the same window. The slice has to be chosen so that a duplicate message is impossible: suppressed contacts, internal seed addresses, and report-only flows are safe to duplicate. Anything that sends a coupon, a cart reminder or a welcome message is not.

The comparison itself needs discipline. Pick one segment, one seven-day window and one metric per flow — delivered, opened, clicked, placed order — and compare like with like. An open rate measured after Apple’s mail privacy changes is a weak signal on both platforms, so prefer clicks and orders. If the new flow performs materially worse, the cause is usually a broken link, a rendering problem or a mistimed wait step rather than the platform, and the fix is found by reading the seed inbox rather than by rewriting the copy.

Comparison of message types that are safe to duplicate during parallel running and those that must never run on two platforms. Safe to duplicate Never run twice • Suppressed contacts• Internal seed inboxes• Report-only segments• Operational alerts• Historical imports • Welcome series• Abandoned cart• Post-purchase• Coupon-bearing sends• Any campaign
Figure 10. Duplication is safe only where the customer cannot receive the same message twice. Coupons and cart reminders are never safe.

Decide in advance what result would stop the cutover. A welcome flow that delivers, but with a 404 on the offer link, is a stop. A cart flow that sends correctly but converts slightly below the old baseline in a seven-day window is a conversation, not a stop, because seven days is not enough evidence to prove a difference either way. Writing that distinction down before you have the numbers prevents an argument after them.

Cutover, rollback and the 72-hour rule

Cutover is a sequence with a small number of irreversible steps, and the trick is to keep them last. Pause the old flows rather than deleting them. Activate the three new flows for the full list. Lower the TTL on the sending DNS records a day earlier so propagation is measured in minutes rather than hours. Then point the records, watch the first sends land, and keep the old account read-only for seventy-two hours rather than cancelling it. Read-only is the state that lets you compare, export a missing report, or answer a customer question about a message sent last Tuesday.

Rollback needs a definition before it needs a drill. Rolling back means re-enabling the old flows, restoring the previous DNS records, and accepting that any message sent from the new stack stays sent. It does not un-send anything, and it does not restore the old account’s event history. Say that out loud in the cutover meeting, because somebody will assume otherwise. The practical rollback window is the first two hours after DNS changes, when a broken authentication record is still cheap to reverse.

Cutover sequence from pausing old flows through activating new ones, changing DNS, watching for 72 hours and revoking old keys. 1 Pause old flows 2 Activate new flows 3 Point DNS records 4 Watch 72 hours 5 Revoke old keys
Figure 11. The irreversible steps sit at the end. Read-only mode is what makes the 72-hour window useful rather than symbolic.

Keep the old API keys alive until the first week’s numbers are reviewed, then revoke them deliberately and record the date. A key that nobody remembers to revoke is an access path that survives the vendor relationship, and it will appear in somebody’s security review six months later with no owner attached.

What comes across, what we rebuild, and what stays

Be precise with your team about the boundary, because optimism here costs more than any technical problem. Contact records, custom fields, consent state, suppression lists and campaign templates come across, with the caveats about fields and rendering described above. Flow logic does not: there is no path in our migration that carries a flow definition from another platform into the canvas, which is why the rebuild is a scheduled task rather than an import. Segments come across as conditions you rebuild, not as saved objects.

Predictive properties, historical event streams and the old account’s reporting do not come across at all. If your board deck depends on three years of cohort charts, export those as files before you close the account, and decide who owns the archive. The same applies to A/B test history: the results are valuable and the data behind them is not portable, so a PDF per significant test is a reasonable cost.

Decision view of what survives a platform move: contact data imports, flow logic is rebuilt and event history stays behind. What survives the move? decision Contact data Imports as records Flow logic Rebuilt by hand Event history Stays in Klaviyo
Figure 12. The honest boundary. Anything in the right-hand branches needs a plan, an owner and a date before cutover.

Then close cleanly. Keep the old account read-only for thirty days for report access, confirm the final invoice and the GST treatment with your finance team, and ask the vendor in writing what happens to the data after closure. Under DPDP, the erasure question runs in both directions: your customers can ask you to delete their data, and you should be able to say where it lives, including in an account you no longer use. LoopNow answers the residency half of that question with AWS Mumbai in ap-south-1, which is also the sentence your privacy notice should contain.

Frequently asked questions

How long does a Klaviyo migration actually take?

For a mid-sized Shopify store, ten working days is realistic for export, store reconnection, three rebuilt flows, consent mapping and cutover, with warm-up continuing afterwards. A very small list with two flows can be done in two or three days. Anything with dozens of active flows and a large segment library is a month of part-time work, and the assisted path in our pricing notes is quoted at 48 hours for the parts that are done for you.

Can you import my Klaviyo flows automatically?

No. Contact records, custom fields, consent state and suppression flags import, but flow definitions are rebuilt on the canvas. The logic, delays, filters and exits are specific to the source platform, and a mechanical translation would produce flows that look correct and behave differently. We would rather tell you that now than discover it during your festive season.

Will my sending reputation move with me?

Domain reputation does not transfer between platforms, and if you were sending from a shared domain it was never yours to move. You authenticate your own sending subdomain with SPF, DKIM and DMARC, then warm it from your most engaged segment upwards. Expect the first two weeks to be slower than steady state, and do not schedule a major campaign inside that window.

What happens to unsubscribes and hard bounces?

They import as suppression, not as an editable field. Any contact with an unsubscribe, complaint, hard bounce or erasure request is excluded from marketing sends regardless of any other flag in the file. Suppressed contacts do not count toward the marketing contact allowance, which is why importing them is both a compliance duty and free.

How does DPDP affect a list I built on Klaviyo?

The obligation follows the data, not the tool. You need a lawful basis, a notice that described the purpose, and a record of consent per contact. Where provenance is unclear, import as suppressed and re-permission deliberately rather than treating the import as fresh consent. Our DPDP page describes the ledger and erasure workflow in more detail, and your counsel should confirm your specific notices.

Do I need to rebuild every segment before switching?

No. Rebuild the segments that feed a live flow or a recurring campaign, and leave the rest in a backlog with an owner. A segment nobody has used in a year is a deletion candidate, not a migration task. Track counts weekly for the first month so that a broken condition shows up as a number rather than as a quiet drop in revenue.

What does the migration cost on top of the plan?

Published plans start at ₹2,999 a month plus 18% GST for Starter, ₹7,999 for Growth and ₹24,999 for Scale, with Enterprise from ₹75,000. Migration assistance is discussed on the call rather than priced from a table, because the work depends on flow count. Your real cost is internal time: roughly two weeks of a marketer and a few days of a developer.

Can I keep Klaviyo running while I test LoopNow?

Yes, on a defined slice and never on the same message type. Seed inboxes, suppressed contacts and report-only segments are safe. Welcome, cart, post-purchase and anything carrying a coupon must exist on one platform only, or a customer receives the same offer twice and your discount budget doubles.

What should I check in the first week after cutover?

Delivered, bounced and complaint counts per flow; whether every link resolves on mobile; whether the preference centre records an unsubscribe; whether a COD order follows the right branch; and whether the consent ledger shows the imports you performed. Compare one metric per flow against the old baseline over the same seven-day window before drawing conclusions.

Sources and further reading

  1. Klaviyo help centre
  2. Klaviyo developer documentation
  3. Shopify developer documentation
  4. MeitY: Digital Personal Data Protection Act, 2023
  5. LoopNow pricing and plan allowances
LoopNow AI Answers from published LoopNow pages
Hi — ask me about LoopNow products, pricing, DPDP or migration. I answer from the published site and can connect you to the team.
Contact page