4 min read

Mailgun to GoHighLevel, the zero downtime SOP

Keep templates, keep suppression, keep transactional on Mailgun if you want, rebuild marketing in GoHighLevel.

Keep templates, keep suppression, keep transactional on Mailgun if you want, rebuild marketing in GoHighLevel.

🏆 Start your Highlevel journey today

Learn more

Objective

Move marketing email and automation from Mailgun to GoHighLevel in 7 days, protect deliverability, keep suppression intact, avoid list fatigue.

Scope

  • In scope, Mailgun Mailing Lists, templates, basic segments, campaigns, webhooks, suppressions
  • Out of scope, deep app transactional logic, keep that on Mailgun or your app SMTP

Roles

  • Owner, approves DNS changes and final cutover
  • Marketing ops, runs exports, imports, template rebuilds, workflow logic
  • Dev or admin, DNS, webhooks, store connections

Prerequisites

  • GoHighLevel account ready
  • Access to DNS, SPF, DKIM, DMARC
  • Exports from Mailgun, contacts, lists, suppressions, any campaign metadata
  • If ecommerce, Stripe connected, or Shopify or WooCommerce connected

Timeline and tasks

Day 0, sender domain and plan

  • Create a dedicated sending subdomain, for example mail.yourbrand.com
  • Add SPF, DKIM, DMARC in DNS, verify inside GoHighLevel
  • Pick your path, keep Mailgun as custom SMTP in GoHighLevel for week 1, or send natively and warm cohorts

Day 1, export and field mapping

  • From Mailgun, export contacts, list membership, variables if lists were used
  • Export suppressions, unsubscribes, bounces, complaints
  • Decide mapping, lists to tags, variables to custom fields, segments to Smart Lists
  • Create missing custom fields in GoHighLevel, for example last_engaged_at, source, plan_tier

Day 2, import with proper suppression

  • Import active contacts, map email, name, phone, fields, tags
  • Import suppressions into a holding tag, for example tag, suppressed_email
  • Run a one time Workflow, if tag suppressed_email then set Email DND true, then remove the tag
  • Build Smart Lists that mirror your key segments, 90 day engaged, VIP, product owners, trials

Day 3, forms, pages, attribution

  • Rebuild forms in GoHighLevel Forms, add hidden fields, utm_source, utm_medium, utm_campaign, gclid, wbraid, fbclid
  • Recreate top landing pages in Funnels or Sites. If needed for one day, embed the old form, then replace it
  • Confirm Payments or store connections for purchase events

Day 4, campaigns to Workflows

  • Rebuild, Welcome, Lead magnet, Nurture, Promo, Reactivation, Post purchase
  • Triggers to use, form submitted, tag added, purchase received, appointment status changed, Email Event opened or clicked
  • Replace webhook branches with Workflow conditions. When you need external events, use Webhook actions to receive or send
  • Add a preference center flow that updates fields and toggles Email DND based on choices

Day 5, templates and warmup

  • Recreate templates in the GoHighLevel builder, header, footer, legal, unsubscribe, preferences
  • If sending through Mailgun via custom SMTP inside GoHighLevel, send to recent clickers first, then openers, then 90 day engaged
  • If sending with GoHighLevel native, use the same cohort warmup. Hold cold contacts for a re permission run

Day 6, cutover

  • Swap all embedded forms and pages to GoHighLevel versions
  • Pause Mailgun campaign jobs or cron tasks. Keep the account active for reporting for two to four weeks
  • Turn on Google Ads offline conversions and Meta Conversions API from Workflows

Day 7, monitor and tighten

  • Watch opens, clicks, replies, unsubscribes, complaints, bounce codes, attributed conversions
  • Consolidate tags, standardize naming, lock Smart Lists and core Workflows
  • Document DNS, list health, mapping, automations, and send thresholds for future hires

Mapping guide, Mailgun to GoHighLevel

Mailgun item GoHighLevel target Notes
Mailing Lists Tags Use prefixes, list_newsletter, list_buyers
Variables Custom fields Mirror names one to one
Segments or filters Smart Lists Recreate with tags, fields, dates, activity
Campaigns Workflows or Campaigns Triggers, waits, conditions, goal checks
Templates Email Templates Replace variables with merge fields or custom values
Unsubs, bounces, complaints Email DND Import with a tag, flip DND via Workflow, then remove tag
Webhooks, events Workflow Webhook steps Receive or push as needed
Forms, site hooks Forms, Surveys, Funnels, Sites Add hidden UTMs and click IDs

One audience strategy. Use tags and Smart Lists. Avoid duplicate lists.


Preference center, fast build

  • Create a Profile Update form with checkboxes for topics and frequency
  • On submit, update fields and tags, if full opt out, set Email DND true
  • Send a confirmation email for audit trail

Deliverability checklist

  • SPF, DKIM, DMARC pass, From domain matches the authenticated domain
  • Warm by cohorts, recent clickers, then openers, then 90 day engaged
  • Complaint rate under 0.1 percent, hard bounces under 2 percent
  • Email Event filters scoped to each send inside Workflows
  • Validate suppression, sample contacts on DND never receive mail

QA, acceptance, rollback

  • QA, Smart List counts match old segments within 5 percent, template variables render correctly, preference form updates fields and DND
  • Acceptance, first two sends hit target inbox placement and KPIs on the engaged cohort
  • Rollback, if inboxing drops, send via Mailgun SMTP inside GoHighLevel, reduce volume, send only to last 30 day clickers, fix root cause before expanding

Common pitfalls and fixes

  • Segment counts are off, align rolling windows, time zones, and last_engaged_at logic
  • Branches on opens or clicks do not run, scope Email Event to the same message or campaign and extend waits
  • Template variables break, map to GoHighLevel merge fields, seed test with sample data
  • Reputation dip, keep Mailgun SMTP for week one, then migrate traffic gradually

About transactional email

Keep true transactional mail on Mailgun, receipts, OTPs, password resets. Run marketing and lifecycle from GoHighLevel. This separation protects reputation during warmup.


FAQ

Can I keep my suppression list
Yes. Import unsubscribes, bounces, and complaints with a suppression tag, then flip Email DND via a Workflow.

Can I keep sending through Mailgun during migration
Yes. Connect Mailgun as custom SMTP in GoHighLevel, warm cohorts, then switch to native sending later if you prefer.

How do I replace webhook automations
Use Workflow triggers and conditions. Add Webhook actions to receive or send app events.

Do I need to re confirm my list
No, if status and suppression are handled as above. Only new opt ins use your double opt in Workflow.

What about transactional email
Keep it on Mailgun. Send marketing from GoHighLevel. Cleaner reputation, cleaner warmup.