Custom Tracking Domain — Brand Your Open & Click Links in AcelleMail

By default your open- and click-tracking links route through the platform's own domain. Point them at your own subdomain (e.g. track.yourdomain.com) so every link recipients hover looks like yours. This guide walks the real Tracking Domains screen, both setup methods (Auto-SSL and Host Redirect), and how to switch a campaign over to it.

What this is for

Every link in your campaign gets rewritten at send time so the platform can count opens and clicks before forwarding the recipient to the real URL. Out of the box, that rewritten link uses the platform's own domain — so when a recipient hovers a link, they see a domain that isn't yours.

A custom tracking domain swaps that out for a subdomain you own, like track.yourdomain.com. Same tracking mechanics, but every link looks like it belongs to your brand. That's better for recipient trust and keeps your sending domain and link domain aligned.

This is the full setup walkthrough. If you just want the short version of why it matters, see Custom tracking domain for click URLs.

Before you start

  • Pick a subdomain you don't already use for anything else — track.yourdomain.com, click.yourdomain.com, and links.yourdomain.com are all common. It'll be dedicated to tracking.
  • You'll need access to your DNS provider (Cloudflare, Route 53, Namecheap, etc.) to add a record.
  • The verify screen shows one of two setup methods depending on how your install is configured. Read both sections below and follow the one your screen shows — you don't choose; the app picks based on the install.

Step 1 — Open Tracking Domains

In the left sidebar under Sending, click Tracking Domains. The page is titled Tracking Domains with the subtitle "Use custom domains for open and click tracking links."

If you have none yet, you'll see an empty state ("No tracking domains yet"). Click the green Add tracking domain button in the top right.

Step 2 — Enter your subdomain

On the Add Tracking Domain form:

  • Scheme dropdown — choose http:// or https://. Pick https:// if your tracking host serves over TLS (recommended).
  • Domain field — enter the hostname only, no path. For example: track.yourdomain.com. The on-screen help says it directly: "Enter the hostname only — no path (e.g. track.yourdomain.com)."
  • Port — leave blank. It's optional and only needed for non-standard setups.

Click Save and continue. You'll see the flash "Tracking domain added — please complete setup below" and land on the Setup & Verify screen. The status badge reads Unverified (orange) until you finish.

Step 3 — Complete setup (the screen tells you which method)

The verify screen shows ONE of the two setups below. Do whichever one your screen displays.

Method A — Auto-SSL (Caddy)

If your install runs the auto-SSL setup, you'll see a card headed Auto-SSL Setup (Caddy) with a small DNS table. It tells you to point your tracking subdomain at the server hostname shown:

Host name Type Value
track.yourdomain.com. A / CNAME (the server hostname shown on screen — there's a copy button)

At your DNS provider, add an A record or CNAME for your tracking subdomain pointing to that value. The screen notes: "Point your domain to this server using an A record or CNAME. SSL will be provisioned automatically." You don't manage a certificate yourself in this mode — it's issued for you once DNS resolves.

Method B — Host Redirect

If your install uses the host-redirect setup, you'll see a card headed Host Redirect Setup with four numbered steps. This is for when your tracking subdomain points at a web server you control:

  1. Download the tracking script — click Download tracking script (.zip). The zip contains two files: index.php and .htaccess.
  2. Upload to the document root — upload both files to the document root of your tracking host. Don't put them in a subfolder.
  3. Nginx servers only — add a rewrite rule — Apache reads the included .htaccess automatically; Nginx doesn't, so the screen gives you a small location block to paste into your server config. (Skip this step entirely if you're on Apache.)
  4. Verify the setup — once the files are in place, you're ready to verify.

Either way, give DNS a few minutes. The screen reminds you: "DNS changes can take 5 minutes to a few hours to propagate."

Step 4 — Click Verify now

When DNS has propagated and (for Method B) the script is uploaded, click the Verify now button. The app checks that your tracking host is reachable and responding correctly.

On success you'll see "Domain verified successfully" and the card flips to the verified state: "Your tracking domain is active. All campaign links will now use this domain for open and click tracking." The status badge turns Verified (green).

Not ready? Click I'll do this later — the domain stays Unverified and you can come back to the Setup / Verify action from the list anytime.

Step 5 — Use it on a campaign

A verified tracking domain doesn't apply automatically — you select it per campaign. In the campaign wizard, open the Setup step and find the Advanced Settings section ("Tracking, DKIM signing, and delivery options").

There's a Tracking domain dropdown. By default it's set to None (use default). Open it, search if you have several, and pick your verified domain (it shows as the full URL, e.g. https://track.yourdomain.com). Send the campaign.

From that send onward, the open- and click-tracking links in that campaign use your branded domain. You can confirm it on the campaign overview, which shows the selected Tracking domain in its stats panel.

Common issues

What you see What to do
Status stays Unverified after you click Verify now The message is: "Verification failed — make sure the tracking script is uploaded to the document root and the server is reachable, then try again." For Method B, re-check both files are in the document root (not a subfolder). For both methods, give DNS more time, then click Verify now again.
Domain shows Verified but campaign links still use the default The tracking domain is selected per campaign. Open the campaign's Setup → Advanced Settings → Tracking domain dropdown and pick your domain (it defaults to "None (use default)").
You don't see a Tracking Domains item in the sidebar Your plan may not grant tracking domains. This menu only appears when your plan allows at least one.
You edited an already-verified domain Editing resets it to Unverified ("Tracking domain updated — please re-verify below"). Run Verify now again.

What to do after

  • Send a quick test campaign with the new tracking domain selected, then hover a link in the received email to confirm it shows your subdomain.
  • If you run multiple campaigns, remember the tracking domain is chosen per campaign — set it each time, or it falls back to the default.
  • Tightening up the rest of your sending identity? See How to set up SPF, DKIM, and DMARC records.

Related articles

14 comments

8 comments

  1. joel.anders.se
    What's your recommendation for sub-domains? We send from mail.example.com AND notifications.example.com. Same DKIM selector or separate?
    1. admin
      Honest answer: it depends on your provider. SES handles it gracefully; Mailgun is stricter. We'll add a provider-by-provider table in the next revision.
  2. linhvu.dev
    DNS setup is one of those things where you don't know what you don't know. This article should be required reading for anyone running their own mail.
  3. i.rossi.mil
    Thanks for the explicit cautionary tales. The alignment-vs-pass distinction is exactly where I lost a week last year.
    1. admin (edited)
      Appreciate it. If anything in this needs updating, ping us — we revisit articles every few months.
  4. v.petrova.ru
    If you use Vercel or Netlify for the apex, watch out — they sometimes override TXT records via their auto-DNS feature. Bit us once with a stripped SPF record
  5. femi.adeyemi
    Hit the 10-lookup SPF limit when we tried to layer SES on top of an existing Google Workspace setup. Flattened with a tool (spfwizard.com) and it's been fine since. That tool's worth a mention.
  6. aditi.s.bom
    The SPF flattening explanation finally made it click for me. I'd been hitting the 10-lookup limit and didn't understand why nesting includes counted.
  7. anna.k.pm
    quick question: do receivers actually enforce the SPF -all hard fail, or do most just downrate? I've heard mixed things and I'm hesitant to switch from ~all.
    1. admin
      same answer as above for saas-tenant — works the same way per-tenant, with the caveat that the cron must be set per-customer (not just system-wide).
  8. tnovak.cz
    Worth noting: our DNS provider (Cloudflare) caches negative responses for 1 hour. We added a TXT record, dig showed it, but mail-tester said missing for another 40 minutes. Almost lost our minds. TTL was set to 300 but the parent zone NS cache held.
    1. admin
      Thanks for sharing. The pattern you describe is exactly the use case we built that feature for — glad it landed for you.
    2. admin (edited)
      Appreciate the data point. Your numbers align with what our larger-volume customers report; helpful to see a third confirmation...

More in DNS & Domain Setup