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
| Status | What it means | What to do |
|---|---|---|
| Pending | Mailfully has not seen the record yet. | Check that you published it. DNS changes can take a while to spread. |
| Published | Mailfully sees the record in DNS and is waiting for confirmation. | Wait. The status changes to Verified on its own. |
| Verified | The record is confirmed. | Nothing. |
| Not found | Checking has stopped and the record is missing. | Publish the record, then click Refresh status. |
| Wrong name | The 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 value | A record exists at the right name with a different value. | Copy the value again from the domain page. |
| Behind a proxy | The 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 check | The 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. Rundig +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 beforeacme.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
| Cause | Affected record | What to do |
|---|---|---|
| TXT value split or unquoted | SPF or DMARC TXT | Some 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 mail | MAIL FROM MX | It does not clash. See MX record conflicts. |
| Records added to the wrong zone because the domain is delegated elsewhere | Any | Confirm 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.
