Mailfully logo

Domain will not verify

Read the per-record DKIM and MAIL FROM statuses, find the DNS record that is missing or wrong, and re-check or restart verification.

A domain stuck short of verified has a DNS record that is missing, misnamed or changed somewhere between your DNS host and the resolver. The domain page shows a status for each record. Find your status below.

What each record status means

StatusWhat it meansWhat to do
PendingMailfully has not seen the record yet.Check that you published it. DNS changes can take a while to spread.
PublishedMailfully sees the record in DNS and is waiting for confirmation.Wait. The status changes to Verified on its own.
VerifiedThe record is confirmed.Nothing.
Not foundChecking has stopped and the record is missing.Publish the record, then click Refresh status.
Wrong nameThe record was published with your domain added twice, such as …acme.com.acme.com.Your DNS host adds the domain itself. Enter only the part before it.
Wrong valueA record exists at the right name with a different value.Copy the value again from the domain page.
Behind a proxyThe record resolves to a proxy's address instead of the DKIM target.Set the record to DNS only. In Cloudflare, turn off the orange cloud.
Could not checkThe lookup failed, so Mailfully cannot say what is wrong.Click Refresh status.

The DKIM and Mail From summaries at the top of the page use these labels too, plus two more. Needs a fix means a record is wrong and the page names which. Failed means checking stopped and the page gives the reason. Either a record was still wrong, or every record is published but the domain did not verify. In the second case, click Refresh status. The page also restarts verification once by itself, and not again within an hour. If it still fails, email contact@mailfully.com with the domain id.

Read the statuses in the API

GET /v1/domains/:id returns the domain's overall status alongside a dkim_status and mail_from_status for each of the two records that gate verification:

curl https://api.mailfully.com/v1/domains/dom_01J1PZ3M8Q7VXCK4T2R9WFH6BD \
  -H "Authorization: Bearer mf_live_xxxxxxxxxxxx"
{
  "status": "partially_verified",
  "dkim_status": "pending",
  "mail_from_status": "verified"
}

verified requires DKIM and MAIL FROM to both report verified. DMARC is advisory and never blocks it. See Verification statuses for what each value of status means.

Check what actually resolves

Run these lookups and read what comes back. The first line stands in for all three DKIM CNAMEs: repeat it for each of the three tokens Mailfully returned.

dig +short <token>._domainkey.mail.acme.com CNAME
dig +short send.mail.acme.com MX
dig +short send.mail.acme.com TXT
dig +short _dmarc.mail.acme.com TXT
  • An empty answer means the record is missing at your DNS host or has not spread yet. Look at the record at the host before you blame propagation. For a subdomain such as mail.acme.com, an empty answer can also mean the name was doubled inside your zone. Run dig +short <token>._domainkey.mail.acme.com.acme.com CNAME. An answer there means you entered the full name where your DNS host wanted only the part before acme.com.
  • A wrong target means the value at the host does not match what Mailfully returned. Compare it with your domain page or the API response.
  • A doubled suffix, where the resolved name ends in your zone twice, means you entered a full name at a host that adds the zone itself.

Other causes

CauseAffected recordWhat to do
TXT value split or unquotedSPF or DMARC TXTSome hosts wrap or split long TXT strings. Confirm the value matches what Mailfully returned exactly, with quotes where the host expects them.
MAIL FROM MX left out because it looked like it would clash with your mailMAIL FROM MXIt does not clash. See MX record conflicts.
Records added to the wrong zone because the domain is delegated elsewhereAnyConfirm your DNS is managed where you are editing it.

Re-check

Click Refresh status on the domain page, or call POST /v1/domains/:id/verify. It is safe to call repeatedly while you fix records:

curl -X POST https://api.mailfully.com/v1/domains/dom_01J1PZ3M8Q7VXCK4T2R9WFH6BD/verify \
  -H "Authorization: Bearer mf_live_xxxxxxxxxxxx"

See POST /v1/domains/{id}/verify for the full response shape.

After 72 hours

Checking stops 72 hours after you add the domain. To try again, fix the records, then click Refresh status on the domain page, or call POST /v1/domains/{id}/verify with {"restart_if_failed": true}. That starts a new 72-hour window.

Provider guides