Quick Answer

Connect Mailcow to GoHighLevel: 1) Deploy Mailcow on a VPS (Hetzner CX21, $5/month), 2) Configure DNS (MX, SPF, DKIM, DMARC, PTR), 3) Create a dedicated SMTP mailbox in Mailcow for GHL, 4) In GHL Settings → Email Services → add SMTP with host mail.yourdomain.com, port 587, mailbox credentials. Total cost: ~$5/month for unlimited sending vs $35-275/month on Mailgun. Ideal for GHL agencies sending 100K+ emails/month across multiple clients.

GoHighLevel + Mailcow Self-Hosted SMTP: Complete Integration

By Braedon·Mailflow Authority·GoHighLevel Email·Updated 2026-03-31

Why Mailcow for GoHighLevel

At $5/month, Mailcow handles the same email volume that costs $90-275/month on Mailgun. For GHL agencies managing 10-50 clients, the math is compelling:

ClientsMonthly VolumeMailgun CostMailcow CostAnnual Savings
10100K$90/mo$5-10/mo$960-1,020
25250K$200+/mo$10-15/mo$2,220-2,280
50500K$275+/mo$15-20/mo$3,060-3,120

For the detailed server-side setup, see our Mailcow + GHL integration guide. For Postal instead, see Postal + GHL.

Setup

Step 1: Deploy Mailcow

Follow our Mailcow setup guide for full instructions:

  1. Provision Hetzner CX21 ($5/month)
  2. Check IP against blacklists (MXToolbox)
  3. Install Mailcow via Docker
  4. Access admin panel, change default password

Step 2: Add Client Domains

For each GHL client:

  1. Mailcow Admin → Configuration → Domains → Add Domain
  2. Enter client's sending domain (e.g., marketing.clientdomain.com)
  3. Mailcow generates DKIM key
  4. Add DNS records to client's domain:
    • SPF: v=spf1 ip4:YOUR_SERVER_IP -all
    • DKIM: TXT record from Mailcow
    • DMARC: v=DMARC1; p=none; rua=mailto:[email protected]
    • PTR: Set reverse DNS on VPS to mail.yourdomain.com

Step 3: Create SMTP Credentials

For each client domain:

  1. Mailcow Admin → Mailboxes → Add Mailbox
  2. Create: [email protected]
  3. Set a strong password
  4. This mailbox is used for SMTP authentication only

Step 4: Connect to GoHighLevel

In each client's GHL sub-account:

  1. Settings → Email Services → Add SMTP
  2. Enter:
    • Host: mail.yourdomain.com (your Mailcow hostname)
    • Port: 587
    • Username: [email protected]
    • Password: the mailbox password
    • Encryption: STARTTLS
  3. Test the connection
  4. Send a test email and verify SPF/DKIM/DMARC pass

Step 5: Warmup

New domains need warmup even on self-hosted infrastructure. Follow the GHL warmup guide:

  • Week 1: 50-100 emails/day per domain
  • Week 2-3: Gradually increase
  • Week 4+: Normal volume

Step 6: Monitoring

Mailcow doesn't have a delivery tracking dashboard like Postal. Set up monitoring:

Minimum:

  • HetrixTools (free) for blacklist monitoring
  • UptimeRobot (free) for server availability
  • Check Mailcow logs weekly for errors

Recommended:

  • n8n workflow for automated monitoring
  • Google Postmaster Tools per client domain
  • Microsoft SNDS registration for sending IP

Mailcow vs Postal for GHL

FeatureMailcowPostal
Best forFull email server (send + receive)Outbound sending platform
Delivery DashboardBasic (logs)Yes (web UI with events)
Multi-orgMulti-domainMulti-organization
WebhooksNoYes (bounce/complaint)
WebmailYes (SOGo)No
RAM Required2GB+2GB+
GHL IntegrationSMTP credentialsSMTP credentials

For GHL agencies: Postal is slightly better due to its delivery tracking dashboard and webhook support. Mailcow is better if you also need incoming email (employee mailboxes, client webmail).

Our recommendation: See Mailcow vs Postal comparison for the full breakdown.

Practitioner note: This is the setup I use for my own agency clients. One Hetzner CX31 ($9/month) handles 20+ client domains at 200K+ total monthly emails. The cost savings over Mailgun at that volume: $2,000+/year. The key: proper monitoring. Set up HetrixTools + n8n alerts on day one.

Practitioner note: The biggest risk with Mailcow for GHL: no delivery monitoring built into GHL. With Mailgun, you can at least check the Mailgun dashboard. With Mailcow, you're reading raw logs unless you set up Postal (which has a dashboard) or build monitoring with n8n. Don't skip the monitoring layer.

If you want Mailcow deployed and configured for your GHL agency, schedule a consultation — I handle the full setup including monitoring automation.

Sources


v1.0 · March 2026

Frequently Asked Questions

How much does this cost vs Mailgun?

Mailcow on Hetzner CX21: $5/month (unlimited emails). Mailgun Foundation: $35/month (50K emails). Mailgun Scale: $90/month (100K). At 200K emails/month: Mailcow saves $170/month ($2,040/year). At 500K: saves $265/month ($3,180/year).

Is this reliable enough for client email?

Yes, with proper setup and monitoring. Mailcow includes automatic TLS renewal, antispam (Rspamd), and Docker-based updates. The limitation: you're the support team. If the server goes down at 2am, you fix it. Mitigate with monitoring alerts and a hosted backup SMTP.

Can I use one Mailcow server for multiple GHL clients?

Yes. Mailcow supports multiple domains. Create a separate domain and SMTP mailbox for each client. Each client's GHL sub-account uses its own domain's SMTP credentials. Reputation is isolated per domain.

What VPS specs do I need?

Hetzner CX21 (2GB RAM, $5/month) handles up to ~100K emails/month. Hetzner CX31 (4GB RAM, $9/month) handles 100K-300K. Hetzner CX41 (8GB RAM, $16/month) handles 300K+. Always check the IP against blacklists before deploying.

What about delivery monitoring?

Mailcow's built-in monitoring is basic (log files). For GHL agencies: add n8n ($5/month VPS) for automated blacklist monitoring, bounce detection, and Slack alerts. Or consider Postal instead of Mailcow for its built-in delivery tracking dashboard.

Want this handled for you?

Free 30-minute strategy call. Walk away with a plan either way.