Connect Postal to GoHighLevel by creating a Postal organization and credential, then adding it as a custom SMTP service in GHL: Host is your Postal hostname, Port 25 or 587, and the SMTP credential Postal generates. Postal provides per-organization tracking, making it ideal for agencies managing multiple GHL sub-accounts.
Postal + GoHighLevel Integration: SMTP Setup
Why Postal for GoHighLevel
Postal is an open-source mail server designed for transactional and marketing email. Unlike Mailcow (which is a full email suite), Postal focuses on sending — which makes it a clean fit for GoHighLevel agencies that need SMTP relay without mailbox management.
For Mailcow-based integration, see our Mailcow + GHL guide. For general GHL SMTP setup, see our GoHighLevel SMTP guide. Key advantages over Mailgun for GHL agencies:
- Flat cost: $5-10/month VPS vs per-email Mailgun pricing
- Built-in tracking: Open tracking, click tracking, delivery status per message
- Multi-organization: Each client gets isolated credentials and metrics
- Web UI: Visual message logs, not just API responses
Prerequisites
Before connecting to GHL:
- Postal is installed and running (setup guide)
- DNS is configured — SPF, DKIM, DMARC for your sending domain(s)
- Your VPS IP is clean — check blacklists with MXToolbox
- Port 25 is open on your VPS
Step 1: Create an Organization
In Postal's web UI:
- Click Organizations → New Organization
- Name it (e.g., "Agency Name" or "Client Name")
- Save
Organizations in Postal isolate sending credentials, domains, and statistics. Use one per client or per GHL sub-account.
Step 2: Create a Server
Within the organization:
- Click Servers → New Server
- Name it (e.g., "GHL Sending" or "Client-Marketing")
- Save
Step 3: Add a Domain
In the server settings:
- Go to Domains → Add Domain
- Enter the sending domain (e.g.,
clientdomain.com) - Postal shows required DNS records — add them all:
- SPF include or IP authorization
- DKIM TXT record (Postal generates the key)
- Return-path CNAME
Verify the domain in Postal after DNS propagation.
Step 4: Generate SMTP Credentials
- Go to Credentials → Add Credential
- Postal generates a username and key
- Copy these — they're your SMTP authentication
Important: Postal credentials are per-server. Each server can have multiple credentials for different applications.
Step 5: Configure GoHighLevel
In GoHighLevel:
- Go to Settings → Email Services → Add SMTP
- Enter:
| Field | Value |
|---|---|
| SMTP Host | postal.yourdomain.com |
| SMTP Port | 25 |
| Username | (from Postal credential) |
| Password | (from Postal credential) |
| Encryption | STARTTLS |
- Test the connection
- Save and assign to the sub-account
Practitioner note: Postal defaults to port 25 for SMTP submission, which works but some networks block it. If you need port 587, configure it in Postal's config file. Most GHL setups work fine on port 25 since the connection is server-to-server, not through an ISP that might block outbound port 25.
Multi-Client Agency Setup
For agencies managing multiple GHL sub-accounts:
Option A: One Organization Per Client
Postal Server
├── Organization: Client A
│ ├── Domain: clienta.com
│ ├── Credentials: clienta-smtp
│ └── Separate tracking/stats
├── Organization: Client B
│ ├── Domain: clientb.com
│ ├── Credentials: clientb-smtp
│ └── Separate tracking/stats
└── Organization: Client C
└── ...
Each client gets their own credentials in GHL. Domain reputation is per-domain, so one client's poor practices don't affect DNS records for others (though they share the same IP).
Option B: One Organization, Multiple Domains
Simpler for agencies that want centralized management:
Postal Server
└── Organization: My Agency
├── Domain: clienta.com
├── Domain: clientb.com
├── Domain: clientc.com
└── Credentials: agency-smtp
All clients use the same credential but send from their own domains. Less isolation but easier to manage.
Practitioner note: I always use Option A for agencies. The per-organization isolation in Postal means you can show each client their own sending statistics without exposing other clients' data. It also makes it easy to disable a specific client's sending without affecting others.
Postal vs Mailcow for GoHighLevel
| Feature | Postal | Mailcow |
|---|---|---|
| Primary purpose | Sending/relay | Full email suite |
| Message tracking | Built-in (opens, clicks) | No built-in tracking |
| Multi-org support | Native | Via domains/mailboxes |
| Webmail | No | Yes (SOGo) |
| RAM required | 2GB | 2GB |
| Best for | Agencies sending through GHL | Businesses needing full email |
For pure GoHighLevel SMTP relay, Postal is the better fit. You get per-message tracking, organization isolation, and a web UI designed for sending operations. Mailcow includes a lot of features (webmail, calendar, contacts) that GHL agencies don't need.
Troubleshooting
Connection Refused
Check that port 25 is open on your VPS firewall and that Postal's SMTP service is running:
docker compose logs postal-smtp
Authentication Failed
Verify the credential is active in Postal and the username/password match exactly. Postal credentials are case-sensitive.
Emails Going to Spam
Check in order: PTR record, SPF record includes server IP, DKIM record matches Postal's generated key, DMARC record exists. Use Postal's message inspector to see authentication results per message.
Practitioner note: Postal's message log is its killer feature for troubleshooting. Click any message and see the full delivery log — SMTP conversation, authentication results, receiving server response. When a GHL client says "my email went to spam," you can pull up the exact message and see why in 30 seconds.
If you want Postal set up and optimized for your GoHighLevel agency, schedule a consultation — I deploy Postal infrastructure for agencies that want self-hosted sending with professional tracking.
Sources
- Postal: Documentation
- Postal: GitHub Repository
- GoHighLevel: Custom SMTP Documentation
- Hetzner: Cloud Servers
v1.0 · April 2026
Frequently Asked Questions
Can I use Postal with GoHighLevel?
Yes. Postal provides SMTP credentials that work with GoHighLevel's custom SMTP settings. Create an organization and server in Postal, generate SMTP credentials, and enter them in GHL's email service configuration.
Is Postal better than Mailgun for GoHighLevel?
Postal is self-hosted (flat $5-10/month VPS cost) vs Mailgun's per-email pricing. At 50K+ emails/month, Postal saves significant money. Mailgun has better deliverability tools and support. Postal gives you more control and visibility into sending.
How do I set up SMTP credentials in Postal?
In Postal web UI: Organizations → your org → Servers → your server → Credentials. Click 'Add Credential' to generate a username and password. Use these in GoHighLevel's custom SMTP configuration.
Can Postal handle multiple GoHighLevel agencies?
Yes. Create separate Postal organizations for each agency or client. Each organization gets isolated credentials, domains, and tracking. One Postal server handles many organizations with clear separation.
What port does Postal use for SMTP?
Postal listens on port 25 (standard SMTP) by default. For client submission (GoHighLevel), use port 25 with STARTTLS. Some Postal configurations also support port 587. Check your Postal setup for available ports.
Want this handled for you?
Free 30-minute strategy call. Walk away with a plan either way.