> ## Documentation Index
> Fetch the complete documentation index at: https://docs.instantcampaign.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Move from Klaviyo, ActiveCampaign, Kit or Mailchimp

> Bring your contacts with their consent and suppressions, your templates and your automations from another email platform.

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](https://docs.instantcampaign.ai/guides/audience-and-campaigns/import-contacts.md) (**Audience → All contacts → Import Contacts**). The dialog recognises these exports from their header row and maps the columns for you:

| Platform | How to export | What is recognised |
| - | - | - |
| **Klaviyo** | Lists & Segments → a list or segment → Manage → Export to CSV (include all properties) | `Email`, names, phone, organisation, location, `Source`, **Email Marketing Consent** and its timestamp, suppression reason, every custom property |
| **Mailchimp** | Audience → All contacts → Export Audience. The zip holds separate files for subscribed, unsubscribed and cleaned contacts: import each one | `Email Address`, names, phone, `OPTIN_TIME`, `TAGS`, your merge fields. A **cleaned** file imports as bounced and an **unsubscribed** file as unsubscribed |
| **Kit (ConvertKit)** | Subscribers → select all → Export | `email_address`, `first_name`, `state`, `created_at`, `tags`, your custom fields |
| **ActiveCampaign** | Contacts → select all → Export | `Email`, names, phone, `Account`, `Tags`, `Date Created`, `Status`, your custom fields |

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](https://docs.instantcampaign.ai/guides/email-and-templates/template-library.md) 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](https://docs.instantcampaign.ai/guides/sending-and-workspace/spark.md): 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](https://docs.instantcampaign.ai/guides/migration/export-everything.md).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.