# What if my domain isn't verifying?

> A step-by-step checklist for a domain stuck at pending or failed: confirm the records were added exactly, wait for propagation, clear conflicting records, and re-verify.

A freshly added domain starts at `pending` and only flips to `verified` once MailBlastr can resolve the DNS records it generated for it. When the records are published correctly, a domain often verifies within about **15 minutes**. If it stays `pending` for a long time — or goes `failed` — it is almost always a DNS publishing issue, not a problem with your account.

Work through the checklist below in order. After each change, give DNS time to propagate and then click **Verify** in the dashboard (or call [`POST /domains/:id/verify`](https://www.mailblastr.com/docs/api/domains-verify)) to re-check.

## Verification checklist

1. **Confirm every record was added exactly.** All four entries must be published: the **DKIM TXT** record, the **SPF MX** and **SPF TXT** on the `send.` subdomain, and the **DMARC TXT**. Compare each `Name` and `Value` character-for-character against the [DNS records](https://www.mailblastr.com/docs/domains/dns) shown in the dashboard (or the [`POST /domains`](https://www.mailblastr.com/docs/api/domains-create) response). A single transposed character will block verification.
2. **Wait for propagation.** DNS changes take anywhere from a few minutes to several hours to propagate, depending on your provider and the record TTLs. A domain sitting at `pending` shortly after you publish is normal — wait, then re-verify.
3. **Check for conflicting old records.** If you previously used another email provider, delete stale records that clash — an old `_dmarc` TXT, a pre-existing SPF TXT on the `send.` host, or an outdated DKIM TXT at `mailblastr._domainkey`. Two conflicting records for the same name will fail verification.
4. **Make sure the DKIM TXT value is intact.** The DKIM record is a single TXT at `mailblastr._domainkey.<domain>` holding a long public key (`v=DKIM1; k=rsa; p=...`). Some DNS UIs truncate, wrap, or split long TXT values — paste the value exactly as MailBlastr shows it, with no added quotes or line breaks, so the full key resolves.
5. **Avoid auto-appended domain suffixes.** Many DNS UIs append your domain to the `Name` automatically. If you paste `mailblastr._domainkey.yourdomain.com` into such a field you can end up with `mailblastr._domainkey.yourdomain.com.yourdomain.com`. Enter only the host portion when the UI adds the domain for you.
6. **Click Verify (or call the verify endpoint).** Verification is not automatic — after publishing or fixing records, trigger a fresh check. MailBlastr re-queries DNS and updates the domain and each record to `verified`, `failed`, or still `pending`.

## What each status means

| Status | What to do |
| --- | --- |
| `pending` | MailBlastr has not yet confirmed the records. Wait for propagation, double-check the values, and re-verify. |
| `failed` | DKIM verification failed — the record was not found or is incorrect. Fix the DNS (most often the DKIM TXT) and re-verify. |
| `verified` | Done — the domain and its subdomains can send email. |

> **Note:** Verification keys off **DKIM**: the `mailblastr._domainkey.<domain>` TXT record must resolve for the domain to flip to `verified`. The SPF and DMARC records improve deliverability, but the DKIM TXT is what MailBlastr checks for the identity.

## Records added at the wrong DNS provider

If your domain’s DNS is managed in more than one place — for example the registrar where you bought it, plus a host like Vercel or Cloudflare you later pointed it at — it is easy to publish the records at a provider that is **not** the one actually answering DNS queries. MailBlastr then never sees them and the domain stays `pending`.

Run a nameserver lookup for your domain (any public DNS-checker tool, or `nslookup -type=NS yourdomain.com`) to confirm which provider currently controls your DNS, then add the MailBlastr records **there**.

## Region-mismatch and multiple-regions errors

The MAIL FROM `MX` value embeds your domain’s sending region — for example `feedback-smtp.us-east-1.amazonses.com`. If the region in the published record does not match the region your domain was created in, verification fails with a region error:

| Error | Cause | Fix |
| --- | --- | --- |
| `region-mismatch` | The MAIL FROM `MX` points to a different region than the one your domain is configured for. | Update the `MX` value to the exact host shown in your dashboard’s [DNS records](https://www.mailblastr.com/docs/domains/dns) table. |
| `multiple-regions` | More than one `MX` record on `send.yourdomain.com` points to different regions. | Remove every `MX` on that host except the one matching your domain’s region — all MX for the host must point to the same region. |

> **Note:** The MAIL FROM region is also a common victim of the auto-appended-suffix problem: a value saved as `feedback-smtp.us-east-1.amazonses.com.yourdomain.com` will fail. Some DNS UIs fix this if you add a **trailing dot** (`feedback-smtp.us-east-1.amazonses.com.`), which marks the value as a fully-qualified name they must not modify. See [Choosing a region](https://www.mailblastr.com/docs/domains/region).

## Confirm the records are actually visible

When values look right but the domain still won’t verify, check what the public DNS is really returning. Any browser-based DNS-checker tool works, or query directly from a terminal — you should see the same values MailBlastr shows you:

```bash
# DKIM (the single public-key TXT record)
nslookup -type=TXT mailblastr._domainkey.yourdomain.com

# SPF TXT on the MAIL FROM subdomain
nslookup -type=TXT send.yourdomain.com

# MAIL FROM feedback MX
nslookup -type=MX send.yourdomain.com

# DMARC
nslookup -type=TXT _dmarc.yourdomain.com
```

> **Warning:** DNS changes can take up to **72 hours** to propagate globally (often much faster). If verification still fails after about 24 hours and the records resolve publicly with the exact values shown, re-check for proxying/flattening and conflicting old records before assuming an account issue.

> **Warning:** You can only send from a **verified** domain (or a subdomain of one). Sending from an unverified domain returns a `validation_error`. See [Managing domains](https://www.mailblastr.com/docs/domains/managing).
