---
title: "Migration Assistant"
description: "Move from Resend, SendGrid, Mailgun, Postmark, Brevo, or Loops with one read-only API key."
url: https://www.unitpost.com/guides/migration
section: Guides
updated: 2026-07-23
---
# Migration Assistant

## Migration Assistant

> Move from Resend, SendGrid, Mailgun, Postmark, Brevo, or Loops with one read-only API key.

The Migration Assistant (Settings → Migration (/dashboard/settings/migration)) moves your data from another email platform into Unitpost in about five minutes. It supports Resend, SendGrid, Mailgun, Postmark, Brevo, and Loops, and carries over seven kinds of data: contacts (with custom fields and subscription state), segments, topics, templates, domains, suppressions, and webhook endpoints.

### How it works

- Connect — pick your provider and paste an API key (a read-only key is all it needs; it only ever reads from your old provider). The key is validated, KMS-encrypted, used once to fetch a snapshot, then deleted.
- Preview — the assistant fetches everything in the background and shows a full preview: per-entity counts, samples, conflicts with data already in your workspace, and explicit warnings for anything the provider can't export. You can leave the page; the job persists and updates live.
- Accept — nothing is written until you accept. Choose which entities to include and how to resolve conflicts (skip or update), then import. A full report shows every row that was imported, skipped, or failed.

### What key do I need?

For every provider, one API key is all it takes — the assistant does the rest. A few providers have one extra detail worth knowing before you paste the key:

- Resend — any API key (resend.com/api-keys (https://resend.com/api-keys)); read access is enough.
- SendGrid — a key with Full Access, or Restricted Access with read permission on Contacts, Marketing, Templates, Suppressions, Sender Authentication, and Webhooks (Settings → API Keys (https://app.sendgrid.com/settings/api_keys)).
- Mailgun — your account-level Private API key (Settings → API Security (https://app.mailgun.com/settings/api_security)), not a domain sending key.
- Postmark — an Account API token (Account → API Tokens (https://account.postmarkapp.com/api_tokens)) migrates everything in one run: domains plus every server's templates, suppressions, and webhooks. A single Server token also works, but can't read domains.
- Brevo — an API key from Settings → SMTP & API (https://app.brevo.com/settings/keys/api). One thing to check first: if your account blocks unauthorized IPs for API keys (Security → Authorized IPs (https://app.brevo.com/security/authorised_ips)), turn it off before migrating — under “Blocking unauthorized IP addresses”, choose Deactivate for API keys. Brevo rejects API calls from unlisted IPs even when the key is valid. Keys created with the MCP toggle work too.
- Loops — any API key (Settings → API (https://app.loops.so/settings?page=api)).

### Safety model

- Read-only on the source — the assistant never sends, changes, or deletes anything on your old provider.
- Key custody — the API key is encrypted with KMS the moment you submit it, stored separately from the job, used once for the snapshot fetch, and deleted immediately after (also on failure, cancel, or expiry). It is never shown or re-readable.
- Opt-in writes — your Unitpost workspace is untouched until you explicitly accept the preview. Cancel any time before that.
- Zero downtime — your current provider keeps sending throughout. Migrate, verify DNS on the recreated domains, then switch your API key over whenever you're ready.

### What to expect

- Domains are recreated with fresh DKIM keys — you'll publish new DNS records here; your old provider's records stay valid until you remove them.
- Webhook endpoints get new signing secrets, so update your verifier after import.
- Templates carry over their HTML and variables; provider-specific template syntax is flagged in the preview when it can't be converted.
- Suppressions (bounces, complaints, unsubscribes) carry over so you never re-email someone who opted out.
- Anything a provider's API can't export is called out in the preview — never silently dropped. The preview expires if unaccepted, and one migration runs per workspace at a time.

> **Ask Unit to help:** The Unit assistant in the dashboard can check your migration's status, walk you through the preview, and explain any warning — just ask it about your migration.

## Related

- [How it all fits together](https://www.unitpost.com/guides/overview): The contacts → segments → campaigns flow and the rules that keep it safe.
- [Dashboard](https://www.unitpost.com/guides/dashboard): Your account at a glance — sending health, recent activity, and what needs attention.
- [Domains](https://www.unitpost.com/guides/domains): Verify sending domains so your mail authenticates and lands in the inbox.
