All docs

Custom domains

Mint aliases on your own domain. Verify a TXT record, point an MX, done.

By default your aliases live at *@emailforward.xyz. If you'd rather hand out [email protected], you can point your own domain at us and we'll route it through the same pipeline — forwards, Telegram, history, reply-through, API access, all identical.

Custom domains are free. No per-domain fee, no tier gating, no limits per domain.

Before you start

You need:

  • A domain you control with editable DNS (TXT + MX records).
  • A signed-in session at /manage-email (ask for a link with the inbox that will manage the domain).

1. Add the domain

Open /manage-email, switch to the Domains tab, and click Add. Enter the domain (e.g. mail.yourdomain.com). We store it as pending and show you a TXT record to publish.

2. Publish the TXT record

We give you two values:

  • Name. Usually something like _emailforward.yourdomain.com.
  • Value. emailforward-verify=<random token>.

Add that as a TXT record in your DNS control panel. On most providers it looks like:

TypeNameValueTTL
TXT_emailforwardemailforward-verify=<token>300

Leave TTL short during setup — you can raise it after verification.

3. Point the MX record

For the domain itself (not the _emailforward. sub-record), publish an MX record:

TypeNameValuePriority
MX@mail.emailforward.xyz.10

This is what actually delivers mail to us. Without it, SMTP senders won't know where to go.

4. Verify

Back on the Domains tab, click Verify next to your domain. We do a live DNS lookup of the TXT record. DNS propagation can take a few minutes — if it fails, wait a bit and try again. Once verified, the domain row shows a green verified badge.

5. Mint aliases on your domain

Switch to the Aliases tab. The Domain dropdown now includes your verified domains alongside @emailforward.xyz. Pick yours, optionally type a prefix, and click Create. The alias lives at [email protected] and forwards to the inbox that owns the session.

You can also create via the API — pass "domain": "yourdomain.com" to POST /api/v1/aliases. See /docs/api for the full reference.

What works, what doesn't

Works on custom domains:

  • All email forwarding features (multi-recipient, Telegram delivery, history, pause, delete).
  • Tracker stripping.
  • Recipient verification.
  • API access.

Limitations today:

  • Two-way reply needs a sender signature we don't configure for third-party domains yet. Replies on custom-domain aliases are best-effort and may not deliver. Aliases at @emailforward.xyz are unaffected.
  • Catch-all on your domain isn't exposed in the UI yet — every alias is explicit.

Removing a domain

From the Domains tab, click the trash icon. We only allow removal once zero aliases are still using the domain — delete those first, or the request is rejected.

Troubleshooting

  • Verify says "TXT record not found". Your DNS change hasn't propagated. Try dig TXT _emailforward.yourdomain.com from a terminal; if the record isn't there yet, wait. If it's there but we still fail, double-check the exact value has no quotes stripped or whitespace.
  • Mail bounces with "relay access denied". MX is probably missing, pointing wrong, or TTL hasn't expired on a stale record. Check with dig MX yourdomain.com.
  • I published the TXT before adding the domain here. That's fine — just use the same value we generate. You may need to replace it.