Migration guide

How to move from Mailgun to MailNesto

Export your contacts and designs from Mailgun, bring them into MailNesto and send your first campaign — usually within a day.

Overview

Moving from Mailgun to MailNesto

Mailgun is a developer’s sending service: mailing lists, templates and suppressions live behind an API, and campaigns are usually assembled in your own code. Teams move the marketing work to MailNesto so people who don’t code can build emails, segment, automate and read reports, and they often keep Mailgun underneath. Add your domain’s SMTP login as a delivery server, in the US or EU region, and every campaign, automation and transactional email from MailNesto goes out through Mailgun.

There’s no contact database to export in the usual sense. Mailing list members, suppressions and templates come out through the API, and reporting tables export to CSV with the Export button. Your sending domains, DNS records and sending history stay in Mailgun when you keep it as the delivery server. Connecting your own servers depends on your plan; see pricing.

Step by step

Five steps to switch

  1. 1

    Export from Mailgun

    No contact database to export. Mailing list members via API (GET /v3/lists/{address}/members/pages). Suppressions via the Suppressions API (bounces, unsubscribes, complaints per domain). Reporting tables export to CSV via the Export button.

  2. 2

    Import into MailNesto

    Contacts → Import: upload the CSV or Excel file (or paste it), map the columns, choose a list. Import only subscribed people, then paste unsubscribed, bounced and complained addresses into Audience → Suppression list so they never get email again.

  3. 3

    Bring your designs

    Fetch templates and versions via the Templates API, or copy HTML from the template editor. Then import the .html or .zip in Templates, or start from one of ours.

  4. 4

    Authenticate your domain

    Add the SPF, DKIM and DMARC records MailNesto shows you, then send a test. New senders ramp up gradually to protect your reputation.

  5. 5

    Rebuild automations

    Start from a recipe (welcome, birthday, win-back, abandoned cart) or build your own journey with branches and goals. Note: Template variables are passed per message (e.g. t:variables JSON); suppression lists should be imported to the new sender before first send.

Before you cancel Mailgun

A short checklist

Keep Mailgun running until your first campaigns from MailNesto look right.

  • Export unsubscribed, bounced and complained contacts too — they must stay suppressed
  • Note when and how people subscribed (consent) and keep it in a field
  • Download reports you want to keep; engagement history doesn’t move between tools
  • Replace merge tags — MailNesto uses {{first_name}} with optional fallbacks {{first_name|there}}
  • Update signup forms on your website to MailNesto’s forms or the WordPress plugin
  • Send to your most engaged people first while the new sender warms up
In Mailgun

Exporting everything from Mailgun

Menu names change from time to time — the steps below follow Mailgun’s own help pages, linked at the bottom.

  1. 1

    Page through list members. For each mailing list, call the Mailing Lists API (GET /v3/lists/{address}/members/pages) and follow the paging links. Each member has an address, a name, a subscribed flag and a vars dictionary; write them to a CSV with one column per var.

  2. 2

    Split out unsubscribed members. Members who used %mailing_list_unsubscribe_url% have subscribed set to false. Keep them out of the contact file and add them to the suppression list instead.

  3. 3

    Export bounces. GET /v3/{domain}/bounces returns each address with its SMTP code, error and date, up to 1,000 per page. Follow the next link until the list ends, and repeat for every sending domain.

  4. 4

    Export unsubscribes and complaints. The Suppressions API has matching lists for unsubscribes and complaints on each domain. Complaints matter most: those people marked your email as spam.

  5. 5

    Fetch templates. Get stored templates and their versions through the Templates API, or copy the HTML from the template editor. A template can hold up to 40 versions, so take only the active one.

  6. 6

    Save reporting tables. In the control panel’s reporting, use the Export button on a table to save it as CSV before you change anything.

Translation guide

Mailgun terms and merge tags in MailNesto

In MailgunIn MailNestoNotes
Mailing list (list@yourdomain)List
Member vars (JSON)Custom fieldsOne column per key, so vars.city becomes the city field.
%recipient.first_name%{{first_name}}
%recipient.yourvar%{{yourvar}}
%mailing_list_unsubscribe_url%{{unsubscribe_url}}
Template variables {{title}}{{title}}Simple variables keep their braces; they now read from contact fields.
{{#if}}, {{#each}}, {{#equal}} helpersConditional blocks, product blocks and RSS block
t:variables JSON per messagedata in the transactional APIValues you pass win; contact fields fill the rest.
Bounces, unsubscribes, complaintsSuppression list
o:tag on messagestag on transactional messagesFilter the message log by tag.
Automations

Rebuilding your Mailgun automations

  • Welcome email sent by your sign-up code → Welcome series, triggered when someone joins the list.
  • Trial reminders from your backend → Trial ending soon, which starts when a contact’s plan field changes to “trial” and stops if they upgrade.
  • Renewal emails from a cron job → Renewal reminder, seven days before a renewal_date field.
  • Receipts, OTPs and alerts stay in your code: call MailNesto’s transactional API with a templateId and data, and they still leave through Mailgun.
Watch out for

Common mistakes when leaving Mailgun

  • Variables passed per message don’t live on any contact. If your code supplied first names at send time, they may not be stored anywhere in Mailgun; pull them from your own database for the import.
  • EU domains send through smtp.eu.mailgun.org. Choose EU when adding the server, or the login will fail even with the right password.
  • Suppressions are per domain in Mailgun but account-wide in MailNesto: an address suppressed for one of your domains won’t get mail from any of them.
  • Add the Mailgun URL from the “Bounce & complaint webhooks” card to Mailgun’s webhooks for permanent failures, temporary failures and complaints. Three soft bounces in 30 days count as a bounce.
  • Opens and clicks in MailNesto reports come from MailNesto’s own tracking. Mailgun’s logs still show delivery detail for each message, so use both when looking into a problem.
FAQ

Questions about moving from Mailgun

Do I need to change DNS if Mailgun stays?

Your Mailgun records stay as they are. Optionally add a branded link domain such as links.yourbrand.com under Sending → Link domain, and check DMARC under Deliverability.

Can my app keep calling Mailgun’s API directly?

Yes. Nothing changes for mail your code sends itself. Only mail created in MailNesto goes through the SMTP server you add.

How fast does MailNesto send through Mailgun?

The default is 20 emails a second, adjustable per server, with an optional daily limit. Mail over the cap waits or moves to your other servers.

Can I use Mailgun as a backup only?

Yes. Give your main provider priority 1 and Mailgun priority 2. If the main server fails three sends in a row, mail moves to Mailgun automatically.

Where these facts come from (22 sources)

Mailgun is a trademark of its owner. This comparison is our own, made from public information on each vendor’s website (checked November 2026); we aren’t affiliated with them. Plans and prices change — check the vendor’s site before you decide, and tell us if something here is out of date and we’ll fix it.