Skip to main content
Moving platforms comes down to three things: your contacts (with who opted out), your templates, and your automations. InstantCampaign reads the files the other platforms already let you export, so you don’t need an API key or a migration service.

1. Contacts

Export your contacts from the old platform as CSV, then use the normal contact import (Audience → All contacts → Import Contacts). The dialog recognises these exports from their header row and maps the columns for you: Any other CSV works too; you then map the columns yourself.

What carries over

  • Opt-outs stay opted out. Unsubscribed, bounced, cleaned, cancelled and spam-complaint statuses become Unsubscribed, Bounced or Complained here, and those contacts are never mailed. When a file has more than one status column (Klaviyo’s consent and suppression reason), the most restrictive one wins. Klaviyo profiles marked never subscribed are imported as unsubscribed, because they never gave marketing consent.
  • Pending stays pending. Unconfirmed double opt-in contacts (Kit “inactive”, ActiveCampaign “unconfirmed”) arrive as pending and are not mailed until they confirm.
  • Subscribe dates. Klaviyo’s consent timestamp, Mailchimp’s OPTIN_TIME, Kit’s created_at and ActiveCampaign’s Date Created become the contact’s subscribe date and the date of the consent record.
  • Tags become lists. Each distinct tag becomes a list with the same name (an existing list of that name is reused), and the contacts carrying the tag are added to it. Up to 50 tags per import.
  • Custom properties become custom fields. Columns the dialog doesn’t recognise are proposed as New field, typed from their values (text, number, yes/no or date). Change the type or choose Skip before importing. A workspace holds up to 50 custom fields.
  • System columns are skipped: Klaviyo IDs, Mailchimp LEID/EUID/MEMBER_RATING, IP addresses and similar.
You still confirm how the list was collected (the consent step) on every import. Contacts beyond your plan’s contact limit are not created, and the result tells you how many.

2. Templates

Export your templates as HTML. On Content → Templates, click Import, choose the Zip of HTML tab and upload a .zip of the .html files (up to 200 files and 20 MB). Each file becomes a template named after the file, imported in the background. Files that could not be imported are listed with the reason. Imported HTML is cleaned (scripts and active content removed), its CSS inlined, and it waits for template review like any uploaded HTML. To turn one into editable blocks, open it and use the HTML import with AI conversion.

3. Automations

On Automations, click Rebuild from another platform. Either describe the flow in your own words, or paste or upload the flow’s export:
  • Klaviyo: the flow’s JSON from the Flows API.
  • ActiveCampaign: the automation’s export (JSON or text).
Spark reads the flow’s structure only (its trigger, emails and their subject lines, waits, splits and list or tag steps) and drafts a journey. Email addresses and anything that looks like one are removed first, and no contact data is sent to the AI model. The journey is created as a draft: check the trigger, pick the templates for each email, and activate it yourself when it is right. SMS and push steps have no equivalent and are left out. You can do the same from Spark: paste the steps and ask it to rebuild the automation.

Leaving is just as easy

Everything you build here can be downloaded at any time, on every plan. See Export everything.