Skip to content

Questions · Published 2026-11-07 · Updated 2026-11-07 · AgentiSend

How do I verify a sending domain at my DNS provider?

To verify a sending domain at your DNS provider, publish the rows GET /domains/{id}/setup lists, then call POST /domains/{id}/verify. Steps for 15 providers.

To verify a sending domain at any DNS provider, publish every required row from GET /domains/{id}/setup on that provider's DNS screen, then call POST /domains/{id}/verify. The records are the same everywhere. Only the form differs, so the records are described once below, then each provider's form as that provider documents it.

Providers on this page: Cloudflare, DigitalOcean, Gandi, GoDaddy, Google Domains, Hostinger, IONOS, Namecheap, Netlify, OVHcloud, Porkbun, Route 53, Squarespace, Vercel, Wix.

The records to publish

POST /domains registers the name. GET /domains/{id}/setup returns one row per record, with record, host, type, value, priority, and required. A TXT row also has value_strings and value_bind. Paste those. The DKIM value is the one on the row.

A new domain sends once the required rows resolve. Domains and DNS names them: the DKIM TXT, and the return-path MX and TXT. Root SPF and DMARC are recommended. A tracking CNAME is on the sheet only when tracking is available, and it never blocks verification. If host is @, that row is the apex. If the apex already has an SPF TXT, merge the sheet's value into that one record. A second SPF TXT on the same name invalidates both.

curl -sS -X GET https://api.agentisend.com/domains/9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42/setup \
  -H "Authorization: Bearer $AGENTISEND_API_KEY"
200
{
  "commands": {
    "cloudflare": [],
    "gcloud": [],
    "route53": {}
  },
  "deep_link": "example",
  "detected": false,
  "domain": "example",
  "nameservers": [],
  "provider": {
    "dnsConsoleUrl": "example",
    "id": "example",
    "name": "example"
  },
  "provider_hints": {
    "cloudflare": "example",
    "godaddy": "example",
    "namecheap": "example",
    "route53": "example"
  },
  "records": [],
  "zone": "example",
  "zone_file": "example"
}
Response

Read it back

POST /domains/{id}/verify reports which required rows resolved. GET /domains/{id} is the sheet with each row's status.

Cloudflare

The steps below are the ones Cloudflare documents, as of September 2026.

The setup response includes commands.cloudflare, the request bodies for Cloudflare's DNS API, and provider_hints.cloudflare, which says to paste the zone-relative host, that the apex is @, and not to paste the full name.

Manage DNS records (updated May 6, 2026) says: open the DNS Records page, select Add record, choose a Type, complete the required fields, and select Save. The fields vary by type. Proxy status (updated April 21, 2026) names the columns Type, Name, and Content, and says only A, AAAA, and CNAME records can be proxied. MX and TXT are always DNS-only. The same page says DNS-only is recommended for records that do not serve web traffic, such as email records and domain-verification records. For a tracking CNAME, choose DNS-only on that proxy control.

Put the row's host in Name and the row's value in Content. Do not append the domain to host. For an MX, commands.cloudflare includes priority from the row; the create-record page says the required fields vary by type.

If the domain was added to Cloudflare by a hosting partner, that same article says to manage the records at the hosting partner.

DigitalOcean

The steps below are the ones DigitalOcean documents, as of 29 September 2026.

How to create, edit, and delete DNS records (last verified 13 July 2026) says: Networking, Domains, the domain, Create a record, choose the type, fill the fields, Create Record. For a TXT, Hostname is @ at the apex or the label only for a subdomain, and TXT Value is the row's value. The same page says DKIM and SPF are TXT records created with that TXT option. For an MX, Hostname is the name the record applies to, Mail providers mail server is the row's value, and Priority is the row's priority. Edit and delete are on the record's More menu. capturedOn: 2026-09-29.

Gandi

The steps below are the ones Gandi documents, as of 29 September 2026.

These steps apply when the domain uses Gandi LiveDNS. How do I update my DNS records? says: Domain in the left menu, the domain, the DNS Records tab. In table mode, Add opens a dialog for the record, the pencil edits one, and the trash deletes one. The same page lists TXT and MX among the types, and says an external nameserver means the records are edited at that other host. It also says a change can take up to 72 hours. Put the row's host in the name the dialog asks for, and the row's value in the target. capturedOn: 2026-09-29.

GoDaddy

The steps below are the ones GoDaddy documents, as of September 2026.

provider_hints.godaddy on the setup response says to paste the zone-relative host, and that the apex is @.

Add a TXT record says: sign in to the Domain Portfolio, select the domain, select DNS, select Add New Record, select TXT. Name is the host without the domain; enter @ for the apex, or a prefix such as send or as1._domainkey. Value is the text. TTL defaults to 1 hour on that page. Select Save, or Save All Records if you added several. Domains with Domain Protection ask for a verification code before the save.

Add an MX record uses the same path and then MX from the Type menu. Name, Priority, and Value are the fields. The article says a lower priority number is preferred, and that changing MX records can interrupt mail already on the domain. Put the sheet's host in Name, the row's priority in Priority, and the row's value in Value. The article also says GoDaddy adds MX records itself when the domain uses GoDaddy nameservers and a GoDaddy email product; otherwise you add the provider's values, which here are the sheet's.

Both articles say most DNS updates take effect within an hour and can take up to 48 hours.

Google Domains

Google Domains registrations moved to Squarespace. The steps below are Squarespace's, for a migrated Google Domains registration, as of September 2026.

The setup response includes commands.gcloud for Cloud DNS. When the nameservers still match Google, provider.name on the setup response is "Google Domains / Cloud DNS" and provider.dnsConsoleUrl is https://console.cloud.google.com/net-services/dns/zones. A registration that moved to Squarespace is edited in Squarespace, not at that URL. If the domain uses some other nameserver host, edit DNS there. Squarespace's edit article says the same: records you add in Squarespace apply when the domain is registered through Squarespace or connected with Nameserver Connect.

About the Google Domains migration to Squarespace (updated May 28, 2026) says to sign in at squarespace.com/login and choose Continue with Google.

Adding TXT records (updated April 27, 2026) says: open the domains dashboard, click the domain, click DNS, then DNS Settings, scroll to Custom records, click Add record, reauthenticate, choose TXT, and Save. Name is @ when the row's host is @. Otherwise Name is the host only (as1._domainkey, send, _dmarc), because the article says Squarespace appends the domain. Text is the row's value. Troubleshooting says a TXT longer than 255 characters has to be split into strings under that length. Use value_strings for that split, on the one TXT the sheet describes, then let POST /domains/{id}/verify say whether the published record matches.

DNS records for email says an MX is the same Add record path with Type MX. Name is @ or the subdomain. Priority is a number from 0 through 255. Mail server is the host you are directing to. Put the row's priority in Priority and the row's value in Mail server. The edit article says a change can take 24 to 48 hours: Edit your domain's DNS records (updated September 22, 2026).

Hostinger

The steps below are the ones Hostinger documents, as of September 2026.

zone_file on the setup response is a BIND file of these rows, not the rest of the zone.

How to Manage DNS Records at Hostinger (updated September 15, 2026) says: Hostinger dashboard, Domains in the left sidebar, DNS, then the domain. You land on the DNS records page. Add a record with type, name, content, TTL, and any other field that type requires, then click Add Record. The article says that if the domain's nameservers point somewhere else, you manage DNS on that platform instead.

How to manage TXT records says the type is TXT, the host is @ for the domain, and a subdomain's name (not the full name) for anything else. The value is what the email provider gives you, which here is the row's value or its value_strings. The article says the default TTL is 14400 seconds when you were not given another one, and to allow up to 24 hours.

How to manage MX records says: Domains, Manage, DNS / Nameservers, type MX. Name is @ for the domain or the subdomain name. Mail server is the provider's host. Priority is the provider's number, and a lower number is higher priority. Put the row's value in Mail server and the row's priority in Priority.

The manage-DNS article also documents Import of a BIND zone file, with Append adding records beside the ones already there and Replace deleting the current zone. Use Append with zone_file if you import. Replace would remove records that are not on the sheet.

IONOS

The steps below are the ones IONOS documents, as of 29 September 2026.

Managing TXT records says: for the domain, click the gear under Actions and select DNS, click Add Record, select TXT, put the host in Host name (@ or the row's host), put the text in Value, then click Save. The same article says the default TTL makes the setting active immediately, and that @ is the wildcard it documents for the host field. An MX row uses the same DNS screen and the type on the sheet; that TXT article does not list MX field labels, so this page does not invent them. capturedOn: 2026-09-29.

Namecheap

The steps below are the ones Namecheap documents, as of September 2026.

provider_hints.namecheap on the setup response says to paste the zone-relative host, and that the apex is @.

These articles apply when the domain uses Namecheap BasicDNS, PremiumDNS, or FreeDNS. How do I add TXT/SPF/DKIM/DMARC records (updated April 14, 2025) says: Domain List, Manage, the Advanced DNS tab, Add new record. Choose TXT Record even for SPF, DKIM, and DMARC. Host is @ for the apex, or the subdomain only (as1._domainkey, send, _dmarc) — the article says not to include the domain name in Host. Value is the row's value, or every value_strings entry when the TXT is split. Then Save all changes. The article says newly created host records normally take 30 minutes.

The MX is not that button. How can I set up MX records (updated January 20, 2025) says: Advanced DNS, the Mail Settings section, Custom MX. The Google Workspace example on that page is Type MX Record, Host, Value, Priority, TTL. Put the sheet's host in Host (not @, unless the row's host is @), the row's value in Value, and the row's priority in Priority. The same article says a CNAME on the bare domain prevails over MX, so do not add a CNAME at @.

If the domain points at Namecheap Web Hosting DNS, the TXT article says to add the records in cPanel instead.

Netlify

The steps below are the ones Netlify documents, as of 29 September 2026.

These steps apply when the domain uses Netlify DNS. DNS records says: select the domain, Add new record at the bottom of the DNS records section, choose the type, fill the fields that type shows, and Save. The same page lists TXT and MX as supported types, and says a TXT value is up to 255 characters. When GET /domains/{id}/setup splits a TXT into value_strings, paste each string as its own TXT rather than one value past that limit. Manage DNS records repeats Add new record, the type menu, and Save. A domain on another DNS host is edited there. capturedOn: 2026-09-29.

OVHcloud

The steps below are the ones OVHcloud documents, as of 29 September 2026.

How to add a DNS TXT record says the zone is at Web Cloud, Domain names, the domain, DNS zone. Click Add an entry, select TXT, put the string in Value, and click Add. For a name that is not the apex, the same article says to fill Subdomain with the label only (as1._domainkey, not the full name) before Value. Editing an OVHcloud DNS zone says Add an entry also offers MX, and that a target which is a hostname must end with a dot or the zone name is appended. SPF records say an existing SPF may already be a TXT or an SPF type: edit that row rather than adding a second one, and a full v=spf1 string can be pasted as TXT. capturedOn: 2026-09-29.

Porkbun

The steps below are the ones Porkbun documents, as of September 2026.

How to Add DNS Records on Porkbun (updated April 15, 2026) says: log in, and on Domain Management either click DNS under the domain or open Details and the edit icon under DNS Records. In Manage DNS Records, click Add Record. The fields are Type, Host, Answer/Value, TTL, and Notes. Type is the row's type. The article lists A, CNAME, MX, and TXT as the common types, and says TXT and MX use the same form: choose Type, enter Host, enter Answer.

Host for the root is blank. The article says to leave Host empty for the root domain, not to type @. So a row whose host is @ gets an empty Host, and any other row gets that host (as1._domainkey, send, _dmarc, links) with the domain left off. Answer is the row's value, or every value_strings entry when a TXT is split. For an MX or an SRV the article says an extra Priority field appears; put the row's priority there. TTL can stay at the default. Click Add.

The article's note on CNAME says the Host of a CNAME cannot be empty and cannot be shared with another record on the same name. A tracking CNAME uses the sheet's host, which is not the apex.

Route 53

The steps below are the ones Amazon documents for Route 53, as of September 2026.

The setup response includes commands.route53, a change batch whose record Name is the full name with a trailing dot. provider_hints.route53 says: "Use the full name with a trailing dot. Quote each TXT string." That hint is the batch. The console form below is the other path, and Amazon's simple-record page tells you not to type @ into Record name.

Creating records by using the Amazon Route 53 console says: open the Route 53 console, choose Hosted zones, choose the hosted zone, choose Create record, choose Simple routing, then Create records. Values specific for simple records lists Routing policy, Record name, Value/Route traffic to, Record type, and TTL. For a record with the same name as the hosted zone, that page says to leave Record name empty and not to enter @. So an apex row (host @) gets an empty Record name, and any other row gets host (as1._domainkey, send, _dmarc, links).

Record type is the row's type. For a TXT, Value is the row's value, or the value_strings when the TXT is split. For an MX, the MX record type says each value contains a priority and a domain name, and the console example is a priority, a space, then the mail host (10 mail.example.com). Use the row's priority, a space, then the row's value.

The creating-records page says changes generally propagate to all Route 53 name servers within 60 seconds, and that GetChange is how you check.

Squarespace

The steps below are the ones Squarespace documents, as of 29 September 2026.

These steps apply when the domain is registered through Squarespace or connected through Nameserver Connect. Edit your domain's DNS records (last updated 22 September 2026) says: open the domains dashboard, click the domain, click DNS, then enter the new information in Type, Name, Priority, TTL, or Data. Put the row's host in Name and the row's value in Data. For an MX, Priority is the row's priority. The same article says a change can take 24 to 48 hours to update, and that deleting or editing a record affects how the domain connects. If the domain is not on Squarespace nameservers, that article says to edit DNS at the other provider. capturedOn: 2026-09-29.

Vercel

The steps below are the ones Vercel documents, as of 29 September 2026.

These steps apply when the domain uses Vercel's nameservers. Managing DNS records says: open Domains, click the domain, then add a record with Name, Type, Value, and, for an MX, priority. Name is the prefix only: as1._domainkey, not as1._domainkey.example.com. The same page says a record can take up to 24 hours to update, and that a domain on another provider's nameservers is edited at that provider. Vercel does not host mailboxes; the page says MX and TXT records are how mail and verification are attached. capturedOn: 2026-09-29.

Wix

The steps below are the ones Wix documents, as of 29 September 2026.

These steps apply when the domain is connected to Wix via nameservers. Managing DNS records says: go to Domains, click the Domain Actions icon, click Manage DNS records, scroll to the record type, click Add Record, enter the fields, click Save, then click Save Changes. The same article says that if you were told to put @ in Host Name, leave Host Name blank. Adding or updating TXT records repeats that blank Host Name for an apex TXT, with the row's value in Value. Adding or updating MX records says a provider that is not in the dropdown is added under Other, and further TXT or CNAME rows go through Manage DNS Records. If the domain is connected by pointing, those articles say to edit DNS at the other host. capturedOn: 2026-09-29.

Written by the AgentiSend team.