docs
v1 Pricing Dashboard
Concepts / custom-domains

Custom domains

Point a domain you own at mailfixture and create inboxes on it. Your domain, your reputation — signup forms that blocklist shared testing domains have nothing to match against.

Why a custom domain

Shared domains are a demo funnel, and we're honest about their physics: any domain that hands out free programmatic addresses eventually lands on disposable-email blocklists (the full story). A custom domain ends that race permanently — signup-a1@testmail.acme.com is indistinguishable from any other address on your company's infrastructure, because it is your company's infrastructure. Custom domains are available on every paid plan.

Setup: two DNS records

Register the domain with POST /v1/domains or the dashboard wizard; either way you get two records to publish, with copy buttons in the dashboard:

DNS records (exact values come from your setup instructions)
; ownership proof
_mfx.testmail.acme.com.   TXT   "mfx-verify=<your-token>"

; mail routing
testmail.acme.com.        MX    10  <mx-target-from-your-instructions>
important Use a dedicated subdomaintestmail.acme.com, not acme.com. The MX record routes ALL mail for that name to mailfixture; putting it on a domain that already receives real email would reroute your actual mail. A subdomain carries your root domain's reputation without touching its mail flow.

Verification

Both records must check out: the TXT proves you control the domain, the MX proves mail will actually arrive. Trigger a check with the dashboard button or POST /v1/domains/{id}/verify — and for a domain's first 7 days a background task re-checks every 60 seconds anyway, so verification usually lands on its own as soon as your DNS propagates. You'll get an email when the domain goes fully green. Checks bypass DNS caches, so a freshly published record is seen within your DNS host's own propagation time, not a TTL later.

Until verification completes, mail to the domain is rejected — inbound routing switches on only when ownership is proven.

Using it

Pass the domain when creating inboxes; everything else — TTLs, long-polling, extraction — works identically to the shared domain:

terminal
$ curl -s -X POST https://api.mailfixture.com/v1/inboxes \
    -H "Authorization: Bearer $MAILFIXTURE_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{"domain": "testmail.acme.com"}'

The domain belongs to your account alone: no other account can create inboxes on it, and addresses you haven't created still 550-reject — a custom domain is not a catch-all.

Removing a domain

DELETE /v1/domains/{id} removes the domain and everything on it — every inbox and every message. Mail to the domain starts bouncing once your MX record is gone; remember to clean up the two DNS records.

Next

“Disposable email detected”
The blocklist arms race, explained.
Inboxes & TTLs
Creating inboxes on your domain.
Pricing
Custom domains ship with paid plans.
Was this page useful? yes no Concepts: Attachments →
ON THIS PAGE
edit this page ↗
report an issue ↗