Skip to main content
Move your contacts, lists, suppressions, templates, domains and senders into Brudcast in one run.
Before you start:
  • Get an API key from your old provider. See Supported providers for which fields you need and where to find them.
  • Check your plan’s contact allowance. Contacts beyond it aren’t imported.
  • Keep your old account active until you’ve finished after you migrate.
1

Pick your provider

Go to Migrations. Under Where are you moving from?, select the service you use today. Type in Search providers… to find it quickly.
2

Connect it

Paste the credentials the form asks for, and choose the region if it asks. Select Connect.Brudcast checks the key, then counts what your account holds. A large account can take a minute. Nothing is written yet.
3

Choose what to bring across

Under Choose what to bring across, select the kinds you want. Each shows how many items were found. Kinds the provider can’t supply are listed underneath, with the reason.
  • Suppressions stays selected while Contacts is, so addresses that bounced or unsubscribed at your old provider stay suppressed here.
  • Without Custom fields, the values in those fields are dropped.
  • Without Lists, contacts arrive without their list memberships.
When contacts are included, set how to treat them:
  • Contacts you already have: Leave them untouched imports only people who are new here. Update them overwrites names and field values with what your old provider holds.
  • Tag imported contacts (optional): every contact the migration writes gets these tags, so you can find them as a group later.
  • List name prefix (optional): added to the start of each imported list’s name, to keep imported lists apart from ones you built here.
4

Confirm and start

Confirm and start shows what the migration will create. For contacts it splits new people from ones you already have, and leaves out suppressed addresses.For a large account the new-and-existing split is worked out from the first 2,000 contacts; the run reports the real figures as it goes.Tick I have permission to email these contacts, and bringing them over from your provider does not change that. Then select Start migration.
5

Watch the progress

The migration page shows Progress, one row per kind, in the order they run. Each moves from Waiting to Running to Done. The numbers update live.You can leave the page. The run carries on, and a notification tells you when it’s finished.
6

Review what came across

When the run finishes, the section becomes What came across. Each row shows how many items were imported, how many were already here or suppressed, and how many failed.If any items failed, download that row’s error report. It’s a CSV listing each item and the reason.What to do next lists the follow-up work, such as publishing DNS for imported domains. See After you migrate.

What happens next

When the run ends you get a notification: Migration complete, with the number of records imported, or Migration failed. Select View migration to open it. Your provider key is erased at this point. To run another migration, connect again.

Cancel a migration

While a migration is queued or running, you can stop it. Select the cancel option on the migration page, then confirm in Cancel migration run. Select Keep Running to change your mind. The run stops at the next safe point, after the batch it’s working on. Everything already imported stays.

What comes across

A migration only reads from your old provider. Nothing there is changed or deleted, and nothing is written here until you select Start migration: the Confirm and start step previews every kind first. Campaign history, reports, engagement data, API keys and SMTP passwords stay with your old provider. The kinds always run in that order, so each can use the ones before it: custom fields and lists come before contacts, so contacts land with their values and memberships, and suppressions come before contacts, so an address your old provider saw bounce is never brought back as a contact you can mail. One kind failing doesn’t stop the others, and cancelling keeps what’s already imported. Your provider key is stored encrypted and erased when the run finishes, so a finished migration can’t be replayed against your old account. Contacts you already have are matched by email address, and you choose whether to leave them untouched or update them. Each kind has its own status too: Waiting, Running, Done, Skipped or Failed.

Supported providers

You can migrate from 11 providers, grouped in the dashboard as Marketing email, Transactional email and SMS. Select Where to find them on the Connect step to open the provider’s own page. Not every provider can supply every kind. Transactional services (Mandrill, Postmark, SparkPost, ZeptoMail) send on behalf of an app and hold no contact lists, so they bring suppressions, templates and domains only; Mandrill is Mailchimp’s transactional service, so migrate from Mailchimp to bring contacts across. Mailchimp and SparkPost verify a whole sending domain rather than individual from addresses, so their domains come across instead of a sender list. Mailgun and ZeptoMail set the from address on each message, so add your senders once the domain is verified. Termii phonebooks are keyed on phone numbers while Brudcast identifies imported contacts by email address, so they arrive as empty lists, and your registered sender IDs come across as SMS sender IDs.
Mailgun and SparkPost: choose the region (US or EU) your account was created in. The wrong region looks exactly like a wrong key, and the connection fails.

Merge tags from your old provider

Every provider writes personalization differently, so imported templates have their merge tags rewritten into Brudcast’s {{ tag }} syntax, in the subject, HTML and plain text. Mailchimp’s *|FNAME|*, Mailjet’s [[data:firstname]], Mailgun’s %recipient.first_name% and Brevo’s {{ contact.FIRSTNAME }} all become {{first_name}}, and Mailgun’s %recipient% becomes {{email}}. A leading recipient., contact. or subscriber. is dropped, the name is lowercased, and spaces, dots and hyphens become underscores, so COMPANY_NAME becomes {{company_name}}. A default value, such as Mailjet’s [[data:firstname:"there"]], is dropped: Brudcast has no fallback values, and an empty field renders as empty text. A tag whose name can’t become a valid Brudcast tag is left exactly as the provider wrote it. That covers Mailchimp system tags with a colon, such as *|MC:SUBJECT|*, and logic or loops such as {{#if plan}} and {{#each items}}, which have no equivalent here and need rewriting by hand. They’re left visible on purpose: a tag you can see in the editor is easy to fix, while one that quietly rendered as nothing would reach your recipients unnoticed. Built-in tags are filled per recipient, as is any tag matching one of your custom field keys. Every other tag becomes a fill-once placeholder you set when you use the template. See Placeholders and merge tags.

After you migrate

A migration brings your data across. A few things still need you.
1

Publish DNS for your sending domains

Imported sending domains start unverified, whatever their state at your old provider, because verification means Brudcast’s own records are published. Open each domain under Channels > Email, publish the records it shows at your DNS host, and verify. Keep your old provider’s records in place until you’ve fully moved. See Verify your domain.
2

Check your senders and contacts

Imported email senders can send as soon as their domain verifies. SMS sender IDs from Termii arrive pending, because every sender ID needs Brudcast’s own approval; see Sender IDs. List memberships came across as they were, suppressed addresses were left out, and Termii phonebooks arrive as empty lists you can fill with a CSV import.
3

Review your templates and suppressions

Imported templates open with their merge tags rewritten. Look for tags left as they were, such as logic blocks, and for fill-once placeholders you didn’t expect. Bounces, complaints and unsubscribes from your old provider are in Contacts > Suppressions with the source import. Leave them there: they’re the reason your old reputation was healthy.
4

Switch your app over

If your app sent email through your old provider, create a sending key and send to POST https://mailing-service.prod.brudcast.com/api/v1/send, or create an SMTP user and point your app at out-smtp.prod.brudcast.com. Move one kind of mail at a time, such as receipts first, and watch the results.
5

Ramp up gradually

Your reputation at your old provider doesn’t come with you. New-account sending limits apply by your organization’s age, and a sudden large send can be held for review. Send to your most engaged contacts first, then widen the audience over the following weeks.
When you’ve finished, revoke the API key you used at your old provider. Brudcast has already erased its copy, but removing unused keys is good practice. Keep your old account until every domain is verified here and your mail is flowing.

Troubleshooting

Why: the key is wrong, expired or lacks read access, or (for Mailgun and SparkPost) you chose the wrong region. Fix: create a fresh key with read access and check the region. See Supported providers.
Why: the stored key was erased, because the run finished or was cancelled. Fix: start a new migration and connect again.
Why: a finished run can’t be started again. Fix: start a new migration. Contacts you already imported are matched, so they aren’t duplicated.
Why: you reached your plan’s contact allowance during the run. Fix: upgrade your plan, then run the migration again with Leave them untouched to bring in the rest.
Why: the provider refused that part of the request, often because the key lacks read access to it. The other kinds still ran. Fix: give the key the missing access and run a new migration for just that kind.

Verify your domain

Publish DNS for the domains you brought across.

Placeholders and merge tags

How template tags work once they’re here.

Import contacts from a CSV

For providers not on the list.