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
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:
| Clients | Monthly Volume | Mailgun Cost | Mailcow Cost | Annual Savings |
|---|---|---|---|---|
| 10 | 100K | $90/mo | $5-10/mo | $960-1,020 |
| 25 | 250K | $200+/mo | $10-15/mo | $2,220-2,280 |
| 50 | 500K | $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:
- Provision Hetzner CX21 ($5/month)
- Check IP against blacklists (MXToolbox)
- Install Mailcow via Docker
- Access admin panel, change default password
Step 2: Add Client Domains
For each GHL client:
- Mailcow Admin → Configuration → Domains → Add Domain
- Enter client's sending domain (e.g., marketing.clientdomain.com)
- Mailcow generates DKIM key
- 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
- SPF:
Step 3: Create SMTP Credentials
For each client domain:
- Mailcow Admin → Mailboxes → Add Mailbox
- Create:
[email protected] - Set a strong password
- This mailbox is used for SMTP authentication only
Step 4: Connect to GoHighLevel
In each client's GHL sub-account:
- Settings → Email Services → Add SMTP
- Enter:
- Host:
mail.yourdomain.com(your Mailcow hostname) - Port: 587
- Username:
[email protected] - Password: the mailbox password
- Encryption: STARTTLS
- Host:
- Test the connection
- 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
| Feature | Mailcow | Postal |
|---|---|---|
| Best for | Full email server (send + receive) | Outbound sending platform |
| Delivery Dashboard | Basic (logs) | Yes (web UI with events) |
| Multi-org | Multi-domain | Multi-organization |
| Webhooks | No | Yes (bounce/complaint) |
| Webmail | Yes (SOGo) | No |
| RAM Required | 2GB+ | 2GB+ |
| GHL Integration | SMTP credentials | SMTP 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
- Mailcow: Documentation
- Hetzner: Cloud Pricing
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.