Guides

Migrate from another tool

Move from Mailchimp, Brevo, Kit, Loops or any other tool

The part that needs care is your reputation, not the import: mailbox providers distrust a new domain setup that sends to a large list at once.

Set up your domain first

Add your sending domain in Settings › Domains and publish the records at your DNS provider. Set up your domain.

You can keep sending from your old tool during the move: its records and Kula's live side by side.

  • DKIM: Kula's three records have their own names, so they do not replace your old tool's.
  • DMARC: a domain has only one DMARC record. If you already have one, keep it: Kula accepts any valid DMARC policy.

A new domain on Kula starts with a warm-up: about 1,000 marketing emails on the first day, doubling day after day as you keep sending. Start the move a week or two before a big send.

Export your contacts

Export your subscribed contacts as CSV from your old tool, with their first name, last name and the fields you use (plan, company, country…).

Leave out unsubscribed, bounced and complained contacts, or import them into a separate file you do not send to. If you can, export your old tool's suppression list too and add those addresses with Add address in Settings › Suppressions, or in bulk with the suppressions API, so they never receive a marketing email from you again.

Most tools let you export a segment. Exporting "opened in the last 6 months" separately lets you send to your best readers first.

Import into the right lists

Create your lists in Lists, then import each file from Contacts › Import. Kula maps the usual column names, turns the other columns into attributes, and skips invalid, role and undeliverable addresses. Import contacts.

An import never resubscribes contacts who unsubscribed from a list in Kula, so you can re-import an updated file later.

Understand the review

Contacts who have never opened an email from you in Kula are under review. Each campaign reaches a capped share of them, picked at random, and the cap grows as results come in healthy. Each contact leaves review on their first open or click. Contacts under review.

In practice, for a list of 20,000 people:

  • your first campaigns reach part of the list, and the rest receive the next ones;
  • send regularly, and start with your most engaged readers: their opens lift the cap fastest.

Recreate your emails

  • Design: set your logo, color and footer once in Settings › Email design.
  • Campaigns: paste your content into the editor, or switch to HTML to reuse an existing template as is. Writing emails.
  • Merge tags: replace your old syntax with Kula variables, such as *|FNAME|* with {{ contact.first_name | default: "there" }}.
  • Transactional emails: create one template per email, with an alias, and switch your app to POST /v1/emails. Transactional emails.
Paste an old email into the Assistant and ask it to turn it into a campaign draft or a template.

Rebuild your automations

Recreate each automation as a flow: a list subscription or an event as trigger, then emails, waits and conditions.

Imports never start a flow, so your existing subscribers will not receive your welcome series again. Only new subscribers do.

If your automations were triggered by actions in your product, send those actions as events from your app. Onboarding with events.

Switch your forms and your app

  • Replace your signup forms with Kula forms, or point your own forms to the contacts API.
  • Update your app to create contacts and send events to Kula.
  • Set up webhooks if your app needs to know about unsubscribes and bounces.

Turn off the old tool

Once your first campaigns and flows run well, stop sending from your old tool and cancel it. Remove its DKIM records from your DNS after a few weeks, when no email signed by it can still be in transit.

Import contacts

File format, mapping and skipped rows

Deliverability

What Kula does to keep emails in the inbox