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

# Migrate from Mailgun to MailChannels Email API

> Learn how to migrate a Mailgun sending integration to MailChannels sender-risk infrastructure.

## Core difference

Mailgun is strongly domain-centric. Sending, tracking, templates, webhooks, suppressions, and routes are often configured per domain. MailChannels is centered on governing many downstream senders through account and sub-account credentials, JSON send payloads, DKIM authentication, Domain Lockdown, per-message tracking settings, webhooks, and account or sub-account suppression policy.

## Feature mapping

| Mailgun concept              | MailChannels concept                 | Migration approach                                                              |
| ---------------------------- | ------------------------------------ | ------------------------------------------------------------------------------- |
| Domain-scoped send API       | `/send` payload                      | Replace Mailgun form-data calls with MailChannels JSON payloads.                |
| Sending domains              | DKIM and Domain Lockdown             | Recreate authentication with MailChannels DKIM records and DNS publication.     |
| Account and domain templates | Application-managed Mustache content | Export templates and move storage or versioning outside MailChannels.           |
| Per-domain tracking          | Per-message `tracking_settings`      | Convert domain defaults into application send-time decisions.                   |
| Account and domain webhooks  | MailChannels webhooks                | Recreate webhook endpoint enrollment and update event consumers.                |
| Domain suppressions          | MailChannels suppression list        | Collapse domain-scoped suppression behavior into account or sub-account policy. |
| Subaccounts                  | MailChannels sub-accounts            | Map subaccounts directly when tenant boundaries should remain separate.         |
| Inbound routes               | No MailChannels Email API equivalent | Replace inbound forwarding or webhook routing with another receiving service.   |

## Send payload notes

Mailgun send calls commonly use multipart form fields. MailChannels expects JSON. Build a translation layer around the application-level message model rather than copying request fields directly.

| Concern             | Mailgun behavior                              | MailChannels behavior                                        |
| ------------------- | --------------------------------------------- | ------------------------------------------------------------ |
| Request shape       | Form-data fields and domain-specific endpoint | JSON payload sent to `/send` or `/send-async`                |
| Domain selection    | Often implicit in endpoint domain             | Explicit sender domain and DKIM configuration                |
| Recipient variables | Mailgun recipient variables                   | `dynamic_template_data` inside MailChannels personalizations |
| Tracking            | Domain-level defaults                         | Per-message `tracking_settings`                              |
| Webhooks            | Account or domain scoped                      | MailChannels webhook endpoint with different event schema    |

## Template migration

Mailgun templates can exist at account or domain scope. MailChannels does not provide the same stored-template control plane, so templates should move into application code or an external template store. If a Mailgun template has domain-specific variants, preserve those variants explicitly in the new template naming or configuration model.

## Suppression policy

Recommended defaults:

| Mailgun source                   | MailChannels target                                                                                                 |
| -------------------------------- | ------------------------------------------------------------------------------------------------------------------- |
| Complaints and permanent bounces | Suppress as both `transactional` and `non-transactional`.                                                           |
| Unsubscribes                     | Suppress as `non-transactional` unless policy requires blocking all mail.                                           |
| Domain-specific suppressions     | Decide whether to preserve isolation with MailChannels sub-accounts or centralize suppression at the account level. |

## Inbound migration

Mailgun inbound routes do not map to MailChannels Email API resources. Inventory routes early and replace them with a dedicated inbound mail service, application mailbox processing, or another webhook-based receiving architecture.

## Cutover checklist

* Replace Mailgun form-data send calls with MailChannels JSON requests.
* Move domain-specific tracking defaults into application send settings.
* Export and relocate templates.
* Create and publish MailChannels DKIM records.
* Recreate webhook consumers for MailChannels events.
* Decide whether Mailgun subaccounts or domains need MailChannels sub-account isolation.
* Replace inbound routes before changing production MX or routing behavior.
