Domains
Add sending domains, configure DNS records, and verify ownership.
One-click Cloudflare DNS setup
If your domain uses Cloudflare DNS, SMTPfast can configure DKIM, SPF, DMARC, and the MAIL FROM bounce subdomain in one step via Cloudflare Domain Connect. No copy-pasting DNS records.
- Add the domain in SMTPfast. SMTPfast detects you are on Cloudflare from the NS records.
- On the domain detail page, click Connect Cloudflare. A new tab opens at
dash.cloudflare.comshowing every DNS record SMTPfast wants to add for this domain. - Approve. Cloudflare writes the records, then redirects you back to SMTPfast.
- Click Verify Now on the detail page. Status flips to verified within a few minutes.
For every other provider (GoDaddy, IONOS, Squarespace, Namecheap, Route 53, etc.) the manual DNS records below still work. We are rolling out one-click setup to additional providers as their Domain Connect templates get onboarded.
/v1/domainsAdd a new sending domain. Returns the DNS records you need to configure.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| domain | string | Yes | The domain name to add (e.g. yourapp.com) |
Request Body
{
"domain": "yourapp.com"
}Response
{
"id": "dom_xyz789",
"domain": "yourapp.com",
"status": "pending",
"dns_records": [
{
"type": "CNAME",
"name": "abc123._domainkey.yourapp.com",
"value": "abc123.dkim.amazonses.com",
"purpose": "DKIM signing"
},
{
"type": "CNAME",
"name": "def456._domainkey.yourapp.com",
"value": "def456.dkim.amazonses.com",
"purpose": "DKIM signing"
},
{
"type": "CNAME",
"name": "ghi789._domainkey.yourapp.com",
"value": "ghi789.dkim.amazonses.com",
"purpose": "DKIM signing"
},
{
"type": "TXT",
"name": "yourapp.com",
"value": "v=spf1 include:amazonses.com ~all",
"purpose": "SPF authorization"
},
{
"type": "TXT",
"name": "_dmarc.yourapp.com",
"value": "v=DMARC1; p=none;",
"purpose": "DMARC policy"
},
{
"type": "MX",
"name": "bounce.yourapp.com",
"value": "feedback-smtp.us-east-1.amazonses.com",
"priority": 10,
"purpose": "MAIL FROM bounce delivery"
},
{
"type": "TXT",
"name": "bounce.yourapp.com",
"value": "v=spf1 include:amazonses.com ~all",
"purpose": "MAIL FROM SPF"
}
]
}/v1/domainsList all domains on your account with their verification status.
Response
{
"data": [
{
"id": "dom_xyz789",
"domain": "yourapp.com",
"status": "verified",
"created_at": "2026-04-01T10:00:00Z",
"verified_at": "2026-04-01T10:15:00Z"
},
{
"id": "dom_abc456",
"domain": "staging.yourapp.com",
"status": "pending",
"created_at": "2026-04-05T14:00:00Z",
"verified_at": null
}
]
}/v1/domains/:idGet full details for a domain including its DNS records and verification status.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | The domain ID |
Response
{
"id": "dom_xyz789",
"domain": "yourapp.com",
"status": "verified",
"created_at": "2026-04-01T10:00:00Z",
"verified_at": "2026-04-01T10:15:00Z",
"dns_records": [
{
"type": "CNAME",
"name": "abc123._domainkey.yourapp.com",
"value": "abc123.dkim.amazonses.com",
"status": "verified"
},
{
"type": "CNAME",
"name": "def456._domainkey.yourapp.com",
"value": "def456.dkim.amazonses.com",
"status": "verified"
},
{
"type": "CNAME",
"name": "ghi789._domainkey.yourapp.com",
"value": "ghi789.dkim.amazonses.com",
"status": "verified"
},
{
"type": "TXT",
"name": "_dmarc.yourapp.com",
"value": "v=DMARC1; p=none;",
"status": "verified"
}
]
}/v1/domains/:id/verifyTrigger a verification check for the domain. SMTPfast will query your DNS records and update the status.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | The domain ID |
Response
{
"id": "dom_xyz789",
"domain": "yourapp.com",
"status": "verified",
"verified_at": "2026-04-05T12:30:00Z"
}Claiming a domain another account holds
A domain belongs to one account. If someone added your domain before you (a former contractor, an old account, a typo on their side) and never verified it, adding it returns 409 with code: "domain_claimable" and a TXT record bound to your team. Publish that record, call the claim endpoint, and the domain moves to you in its unverified state; you then publish the DKIM, SPF and DMARC records as usual. The previous holder is told by email and any mail they still had queued through the domain is cancelled. A domain the other account verified at any point in the past cannot be claimed this way; contact support.
/v1/domains/claimThe TXT record to publish before claiming a domain. Requires the domain:read scope.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| domain | string | Yes | The domain to claim (query parameter) |
Response
{
"domain": "acme.com",
"record": { "type": "TXT", "name": "_smtpfast-claim.acme.com", "value": "smtpfast-claim=3f9a...", "ttl": "Auto" }
}/v1/domains/claimCheck the TXT record and move the domain to your team. Requires the domain:write scope. Limited to 20 checks per hour per team.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| domain | string | Yes | The domain to claim |
Request Body
{ "domain": "acme.com" }Response
{
"id": "dom_xyz789",
"domain": "acme.com",
"status": "pending",
"created_at": "2026-09-03T09:00:00.000Z",
"message": "Domain claimed. Publish its DNS records to verify it for sending."
}DNS Record Types
DKIM (CNAME records)
DomainKeys Identified Mail cryptographically signs outgoing emails so receiving servers can verify they came from your domain. SMTPfast provides three SES DKIM CNAME records.
SPF (TXT record)
Sender Policy Framework tells receiving servers which mail servers are allowed to send email on behalf of your domain. SMTPfast should be included in your existing SPF record if one already exists. Do not publish multiple SPF TXT records for the same hostname; merge providers into one record instead.
DMARC (TXT record)
Domain-based Message Authentication, Reporting, and Conformance defines how receiving servers should handle emails that fail SPF or DKIM checks. A basic p=none policy is recommended to start, then tighten to p=quarantine or p=reject once you confirm everything works.
MAIL FROM (MX and TXT records)
SMTPfast uses a bounce subdomain such as bounce.yourapp.com so bounce handling and SPF alignment match your sending domain. Two records are needed on the bounce subdomain: an MX pointing at SES (so receivers can deliver bounce reports) and a SPF TXT authorising SES on the bounce subdomain itself.
Troubleshooting
Status stuck on “DNS records visible, waiting for SES”
SES has seen your DKIM records and is finishing identity verification on its own schedule (typically minutes, sometimes up to a few hours). Click Verify Now on the domain detail page to refresh status. No action needed.
MAIL FROM shows “Failed” even though the records are in DNS
SES does not auto-retry MAIL FROM verification once it has marked the configuration failed. Click Verify Now in the SMTPfast UI; it re-arms the MAIL FROM identity behind the scenes which kicks SES into a fresh check. Status moves back to pending, then to verified within a few minutes if the records are correct.
DKIM stays on “Failed” for several hours
Confirm the three CNAME records are present and resolvable (most DNS providers proxy CNAMEs by default; on Cloudflare, ensure the cloud icon next to each DKIM CNAME is grey, not orange). If the records are correct and DKIM still shows as Failed, contact us at [email protected] and we will retry verification on the SES side.
I want to delete a domain and start over
The domain detail page has a Danger zone at the bottom of the Configuration tab. Deleting removes the SES identity, all DKIM tokens, and verification state. Any API key still sending from that domain stops working immediately. Re-adding the same domain afterwards generates fresh DKIM tokens, so the existing CNAMEs in DNS need to be replaced.