SMTP (Outbound)
Port 587 = plain connect then STARTTLS. Port 465 = TLS from the first byte — do not pick both.
Uncheck only if the server chain fails OpenSSL verification (for example Basic Constraints on the CA). Turning this off allows a malicious network to impersonate your mail host.
IMAP (Inbound Tracking)
Tracking & Unsubscribe
Public HTTPS URL used for open tracking, click tracking, and one-click unsubscribe links. Emails will not send without this.
How tracking works (Cloudflare Tunnel)

Tunnel ID configured: ee61dcff-6f91-4caf-aa61-7ccde65a1ce4 → Cloudflare hostname ee61dcff-6f91-4caf-aa61-7ccde65a1ce4.cfargotunnel.com.

Operator setup (one-time, you do this once for the whole system)
  1. Sign in to Cloudflare Zero TrustNetworks → Tunnels.
  2. Create a new tunnel (any name, e.g. email-tracking). Cloudflare gives you a Tunnel ID (UUID) and an install command.
  3. On the server running this Flask app, install cloudflared and run the install command Cloudflare gave you. The tunnel will show up as Healthy in the dashboard.
  4. Inside the tunnel, add a Public Hostname:
    • Subdomain: track
    • Domain: any zone you control on Cloudflare (e.g. iprecious.co.uk) — this is the operator's tracking root
    • Service: HTTPhttp://localhost:WEBHOOK_PORT (whatever port this Flask app runs on)
  5. Copy the Tunnel ID into the server's env file as CLOUDFLARE_TUNNEL_ID=<uuid> and restart Flask. The "TUNNEL NOT CONFIGURED" placeholder above will then auto-fill.

After this, every client can point their track.<clientdomain> CNAME at the same <tunnel_id>.cfargotunnel.com. Cloudflare routes by Host header.

Client setup (each new company, send these to the customer)

  1. Log into your DNS provider (Cloudflare, GoDaddy, Namecheap, etc.) and go to DNS for your domain.
  2. Add this CNAME record:
    Type:   CNAME
    Name:   track
    Target: ee61dcff-6f91-4caf-aa61-7ccde65a1ce4.cfargotunnel.com
    TTL:    Auto (or 5 minutes)
  3. If your DNS is on Cloudflare: leave the orange proxy cloud ON. Tunnels need it.
    If your DNS is somewhere else (GoDaddy, Namecheap, Route 53, etc.): just add the CNAME — nothing else to do. Cloudflare picks up traffic by Host header through the tunnel.
  4. Wait 1–5 minutes for DNS to propagate. Verify with:
    dig +short track.<yourdomain>
    # expect: ee61dcff-6f91-4caf-aa61-7ccde65a1ce4.cfargotunnel.com.
  5. SSL is handled automatically by Cloudflare — no certificates to install on your end.
  6. Enter the full URL above (e.g. https://track.<yourdomain>) into the Tracking base URL field at the top.

Worked example for acmeplumbing.co.uk:

DNS record: CNAMEtrackee61dcff-6f91-4caf-aa61-7ccde65a1ce4.cfargotunnel.com
Result URL: https://track.acmeplumbing.co.uk ← enter this above

Required before going live. Without a working tracking URL, unsubscribe links can't be generated and the system blocks all outgoing emails for this company.

When checked, http(s) anchors in HTML bodies are redirected through /track/click/… before the destination. Requires a valid tracking base URL.
Cancel
Diagnostics & Tracking Tests

SMTP can confirm handoff to server. True delivered/bounce/complaint/reply comes from IMAP polling and tracking events.

Sends a real email with a tracking pixel and unsubscribe link. Opening it logs an open event; clicking unsubscribe adds the address to suppression.
Preview weekly report
0
Delivered (7d)
107
Opens (7d)
0
Clicks (7d)
0
Replies (7d)
3
Hard bounces (7d)
0
Complaints (7d)
0
Unsubscribes (7d)