CustomDomain Docs

Provider setup

What to create at each DNS provider so the records can be written for you, which server address to allow, and what each provider requires before you start.

To connect a domain with an API key, the customer (or you, on their behalf) creates a credential at the DNS provider. In the console each part of it is a separate labeled field (Namecheap asks for API username and API key, OVHcloud for a region and three keys), next to a link to the page where it is created and numbered steps, so nobody has to know a wire format. Calling the API directly, you send the parts joined into one credential.token with the matching provider key; the formats are listed in DNS providers.

Where a provider offers it, signing in with the provider, approving access at the provider, one-click setup or a Route 53 access role needs no key at all; see DNS providers. Two more ways need no key pasted either. Secure sign-in (offered to selected workspaces for now) has your customer sign in to the provider in a secure window, and where the provider allows it our software makes the key itself, as it does at GoDaddy and Namecheap. DNS hosting asks the domain's owner to change one setting where the domain was bought, its nameservers, and writes every record after that with no key. An API key is the fourth of the six ways to connect, and this page is about it.

Give every credential the least it needs: permission to read and edit DNS records on the zone. Never reuse an account-wide admin key.

Our server's address, for allowlists

Some providers only answer API calls from addresses on a list. On the hosted service, DNS writes come from 100.48.24.176. It must be allowed at Namecheap, Dynadot, Epik, NameBright, Internet.bs, Combell, Vultr, WEDOS and REG.RU, at Subreg if it refuses the address, and on any IP restriction you set at ClouDNS, NameSilo, TransIP, GleSYS, Openprovider, NS1, Scaleway or Exoscale (an IAM policy with an IP condition at the last two). A Plesk or DirectAdmin server must accept calls from it too, since a host can limit its API to listed addresses and a firewall may block the rest. Moniker takes the address once, when its support team issues the key, rather than through a self-serve list.

Registrars and DNS hosts

ProviderproviderHow to create the credentialBefore you start
GoDaddygodaddyPersonal Access Token page: + Generate Token, tick only domains.domain:read and domains.dns:update, set a short expiration, Generate Token, copy it (shown once).Any GoDaddy account that holds a domain can create one. Or use secure sign-in, which makes the token for you. See GoDaddy.
NamecheapnamecheapAPI Access: switch API Access on, copy the API key, add 100.48.24.176 under Whitelisted IPs. Your API username is your Namecheap username.Only accounts that qualify. Or use secure sign-in, which turns the API on for you. See Namecheap.
Alibaba Cloud DNSalidnsRAM console (China site: ram.console.aliyun.com): a RAM user with AliyunDNSFullAccess, then create an AccessKey and copy the ID and secret.The domain must be a zone in Alibaba Cloud DNS; on the International site a domain registered elsewhere needs a paid Public Zone instance.
101domaindomain101My Account: Developer Tools, API and MCP; make a key with the DNS read and DNS write scopes (lasts a year at most) and copy it.Only the account's primary user, with two-factor authentication on, can make a key. The domain must use 101domain's nameservers (ns1, ns2 and ns5.101domain.com).
ALL-INKL.COMallinklYour KAS login and password (the login looks like w0123456), plus the current one-time code if the KAS login uses two-factor authentication.Used once and never stored.
ArsysarsysIn the Panel de Control, activate the DNS API for the hosting plan. The login is the hosting plan's domain; the API password is the Panel de Control password you had when you activated it.Used once and never stored.
AzionazionAzion Console: Account Menu, Personal Tokens, + Personal Token, choose a short expiry and copy the token before you close the dialog.The token needs access to Edge DNS, and the domain must already be a zone in your Azion account.
Binary LanebinarylaneDeveloper API in mPanel: + Create Token, name it and copy the token (shown once).Binary Lane tokens cannot be limited, so a token can manage your whole account: it is used once and never stored, and you should delete it in mPanel once the domain is connected. The domain must already be on Binary Lane DNS (ns1 to ns3.binarylane.com.au), where a record's TTL is fixed at one hour.
Bunny DNSbunnyAccount API key.
ClouDNScloudnsAPI settings: API & Resellers, Add new user (or an API sub-user limited to the zone), set a password; copy the auth-id (or the sub-user's ID or name).API access comes with ClouDNS's paid plans.
CombellcombellMy Combell: Dashboard, Settings, API, Users, the API key button next to your administrator, then activate it and copy the API key and API secret; add 100.48.24.176 under Dashboard, Settings, API, IP restrictions.The API comes with Reseller Hosting. A combell.nl account uses the Netherlands site choice. Combell refuses calls from addresses that are not on the list, and DNS applies only on Combell's nameservers.
ConstellixconstellixManage Profile, Generate API Keys; copy the API Key and Secret Key (shown once).
cPanel hostscpanelIn cPanel, Security, Manage API Tokens, Create; copy the token, your cPanel username and the server's hostname.We connect on port 2083. O2switch uses the same steps, with the o2switch provider key.
deSECdesecToken management: create a token and copy the secret (shown once).
DigitalOceandigitaloceanAPI tokens: Generate New Token with every domain scope under Custom Scopes.Or sign in with DigitalOcean.
DirectAdmin hostsdirectadminIn DirectAdmin, open Login Keys, make a key that allows only CMD_API_SHOW_DOMAINS and CMD_API_DNS_CONTROL, and copy it (shown once) with your username and the server's hostname.You choose DirectAdmin yourself: nothing detects it from nameservers. The server must be reachable from 100.48.24.176 and use a certificate a browser trusts. We connect on port 2222 (or 443 when you add :443 after the hostname). A key made with no command ticked allows every command, so tick only those two.
DNSimplednsimpleAccount page, API & Access tab, Add, Generate token.Or sign in with DNSimple.
DNS Made EasydnsmadeeasyConfig, Account Information: tick the box to generate API keys, then copy the API Key and Secret Key.Business (DNS-25) plan and above; only the account's primary user sees the keys.
DomeneshopdomeneshopAPI page (sign in first): make an API token and copy the token and its secret.The domain must use Domeneshop's DNS service (ns1 to ns3.hyp.net). Domeneshop documents no way to limit a token, so make one for this.
DreamHostdreamhostAPI page: type a name over the comment (the list keeps 32 characters), tick All dns functions only (never All functions!), Generate a new API Key now!, and copy the key shown under "We created you a new API Key".The domain's DNS must be hosted at DreamHost: a domain DreamHost only registers has no records the key can change. A sub-account needs Billing Account privileges to make a key. DreamHost's API cannot add MX, ALIAS or CAA records, so add those in the panel's DNS settings. Make the key on this page, not on DreamHost's newer API keys page, whose API we do not use yet.
DynadotdynadotAPI settings (Tools, API): click Unlock your account, turn API Enabled on, copy the Production API key and secret, add 100.48.24.176 and click Set IP Address.Allow about 15 minutes for the whitelist. To sign in with Dynadot instead, switch MCP Enabled on the same page; it cannot be switched on for you, because the page asks for your password.
easyDNSeasydnsUser, Security, REST API section: copy the API token, then Regenerate the API key and copy it (shown briefly).You may be asked to fill in a short registration form first.
EpikepikAPI Settings: Add IP Address 100.48.24.176, Save Changes, copy the signature under User API Settings.
ExoscaleexoscaleExoscale Portal: IAM, Keys, create an API key with a role that allows only the DNS service, and copy the key and its secret (shown once).The domain must already be added under DNS in the Portal. A zone on Exoscale DNS uses DNSimple's nameservers, so it is detected as DNSimple: nothing detects Exoscale, and you choose it yourself.
GandigandiPersonal Access Tokens: Create a token, choose the organization that owns the domain, pick 1 year, keep The whole organization, turn on only "Manage domain name technical configurations" (Gandi turns on "See and renew domain names" with it), then Create and copy the token (shown once).Gandi makes a token only for an organization with a full address: if it asks, fill the address in first. A token ends after 1 year at most, so make a new one before then.
GcoregcoreGcore portal: Profile, API tokens, Create token; copy the token (shown once).The token can change every DNS zone in your account, so make one for this. The domain must use Gcore's nameservers (ns1.gcorelabs.net and ns2.gcdn.services).
GleSYSglesysProfile, Control API access, Create for the project; allow Domain under Permissions. The username is the project ID (CL12345).
HetznerhetznerHetzner Console: the project, Security, API tokens, Generate API token with Read & Write.Tokens from the old DNS Console (dns.hetzner.com) no longer work.
hosting.dehostingdeProfile: Create new API key, allow only Display and Edit under DNS Service, Zones, and copy the key (shown once).The domain's DNS zone must be at hosting.de (ns1 to ns3.hosting.de). For a reseller subaccount's zone, make the key in the subaccount.
HostingerhostingerhPanel, API: create a token.
Huawei Cloud DNShuaweicloudMy Credentials, Access Keys: Create Access Key, copy the Access Key ID and Secret Access Key (shown once).Use a sub user's key with only DNS record permissions, not the account's own root key.
InfomaniakinfomaniakManager, API tokens: Create a token with the dns:read and dns:write scopes, confirm with your password and copy it (shown once).The DNS zone must be at Infomaniak. The API allows 60 requests a minute.
Internet.bsinternetbsSign in, My Account, Get my API key; set the API password under My Account, Account Security, Change API password; add 100.48.24.176 under My Account, My Profile, Reseller Settings, API allowed IP address(es).Internet.bs refuses calls from addresses that are not on that list.
INWXinwxCustomer area: make a sub account that has only the DNS role and no two-factor login, then enter its username and password.A login that uses Mobile TAN is refused, because a one-time code can't be given unattended. Used once and never stored. The domain must use INWX's nameservers.
IONOSionosDeveloper portal: create an API key; copy the public prefix and the secret (shown once).IONOS has not onboarded one-click setup for us yet.
Joker.comjokerIn your free Joker.com reseller account (or rpanel.io): My Profile, Manage Joker.com API access keys; make a key that can read and change DNS and copy it.The domain must be in that reseller account and use Joker.com's own nameservers (ns.joker.com), not mixed with others. A write replaces the whole zone, so a zone holding a record type the API cannot write back (ALIAS, for one) is refused. A root domain gets A records.
LinodelinodeAPI tokens: Domains Read/Write, everything else No Access.Or sign in with Linode.
LoopialoopiaLoopia Customer Zone: Account Settings, LoopiaAPI, create an API user (its name ends in @loopiaapi) and allow getDomains, getSubdomains, getZoneRecords, addSubdomain, addZoneRecord, updateZoneRecord and removeZoneRecord. Enter the API user and its password.The domain needs LoopiaDNS or web hosting, and Loopia's nameservers (ns1.loopia.se and ns2.loopia.se). Used once and never stored. A TXT value over 255 bytes is added by hand.
LuaDNSluadnsAccount Settings: tick Enable API Access, then create an API key; use it with your account email.
MetanamemetanameAccount settings: copy your account reference and your API key.The key can change every DNS zone in your account, and the domain must use Metaname's own nameservers. A key made before 11 July 2023 reads every MX priority as 0, so MX records are rewritten on each run until you make a new key.
MonikermonikerSign in, My account, Request API key; copy the API key and password.API access is activated by Moniker support and eligibility depends on account type. Give Moniker 100.48.24.176 when you request the key.
Mythic BeastsmythicbeastsAPI users: create a key with one Primary DNS API v2 permit for your domain (hostname *, type all); copy the key ID and secret.The domain must use Mythic Beasts DNS (ns1 and ns2.mythic-beasts.com).
Name.comnamecomAPI settings: create a production token; copy the username and token.With two-step verification on, also switch on Name.com API Access in Security settings.
NameBrightnamebrightAPI management: request API access and wait for NameBright to approve it, then create a client and add 100.48.24.176 to its IP whitelist (the list of addresses allowed to use it). Paste the client ID, which looks like nb:youraccount:yourclient, and the client secret.NameBright has to approve API access first. A token request from an address that is not on the whitelist is refused with a 403. Domains won at DropCatch.com are managed in your NameBright account, so the same steps apply to them.
NameSilonamesiloAPI Manager: accept the terms and Generate.Or use one-click setup.
netcupnetcupCustomer Control Panel: Master data, API; for a domain on CloudDNS, under API Keys make a key and copy it; for a domain on the classic nameservers, under Legacy API Keys create an API key and copy it, then generate the API password and copy it (shown once; a new one replaces the old everywhere), and enter your customer number too.The domain must use netcup's own nameservers. Neither key can be limited to DNS, so make one for this and delete it when you disconnect.
NetlifynetlifyApplications: New access token.The domain must use Netlify DNS. Or sign in with Netlify.
NjallanjallaAPI settings: add a token.
NS1ns1NS1 Connect portal: User Settings, Users & teams, API keys, Create API key; allow Manage zones under DNS (to limit it to one domain, turn off Allow by default and add the domain under Allowed zones and records), Save API key and copy the secret (shown once).The domain must be a primary zone of the account. If the account or the key has an IP allow list, include 100.48.24.176.
OpenprovideropenproviderEnable API access for your user (Account, Account Overview, username, Edit), then POST your control panel username and password to https://api.openprovider.eu/v1beta/auth/login and copy data.token.Tokens last 48 hours, so they are used once.
OVHcloudovhToken page for your region (Europe, Canada, United States): rights GET, POST, PUT and DELETE on /domain/zone/*, then copy the application key, application secret and consumer key.Grant access at OVHcloud works only where a deployment has registered OVHcloud applications; the hosted service has not.
Plesk hostspleskYour Plesk login and password, and the address you open Plesk at, without https://.Used once and never stored. You choose Plesk yourself: nothing detects it from nameservers. The server must be reachable from 100.48.24.176 and serve a trusted certificate; we connect on port 8443 (or 443 when you add :443 after the name), and your plan has to allow DNS zone management.
PorkbunporkbunAPI Access: create a key and copy the API Key and Secret Key.Turn on API Access for the domain: in Domain Management, click Details next to the domain, then API Access (or use Opt In All Domains on the API Access page). Porkbun refuses every change to a domain with it off, and we say so (porkbun_api_access_disabled). If the key has an IP allowlist, include 100.48.24.176; if it has a domain allowlist, include this domain. The domain must use Porkbun's nameservers. Or approve access at Porkbun.
Realtime RegisterrealtimeregisterRealtime Register portal: open your profile page (an administrator can also use Account details, then Users) and generate an API key. Copy it right away, because Realtime Register shows it only once. Paste the key alone, without the words ApiKey.You need your own Realtime Register portal login. Realtime Register sells to web hosts and resellers, so if one of them sold you the domain you have no login and no key: sign in where you bought it. The domain must use ns1 and ns2.yoursrs.com (Basic DNS) or ns1 and ns2.premiumdns.zone (Premium DNS). A zone linked to a DNS template cannot be changed until you decouple it (DNS, Zones, choose the zone, Update), and we stop and say so. We write A, AAAA, CNAME, MX, SRV and TXT records, but not CAA, and a root domain uses A records. Realtime Register documents no IP allowlist or request limit.
REG.RUregruSettings, API (Настройки API): set an alternative API password (not your account password). Under IP address ranges (Диапазоны IP-адресов) click Add IP (Добавить IP), enter 100.48.24.176 and Save (Сохранить). Enter your REG.RU login and the API password.The domain must use ns1.reg.ru and ns2.reg.ru; a domain on REG.RU hosting nameservers is edited in the hosting panel instead. A, AAAA, CNAME, MX and TXT only: no CAA or SRV, no CNAME at the domain itself, no TTL per record. REG.RU allows 1200 API calls an hour per account and per IP address, and the address limit is shared by everyone connecting through ours, so a rate-limit message means try again within the hour. To revoke access, change the API password or remove our address.
ScalewayscalewayIAM API keys: generate an API key for an IAM application and copy its secret key (shown once).The application needs the permission set DomainsDNSFullAccess on the Project that holds the domain, and the domain must use ns0 and ns1.dom.scw.cloud. A key made a moment ago can be refused for a few minutes. BookMyName and Online.net zones are added by hand.
Simply.comsimplyAccount, API keys: create a key; use it with your account number (S123456).
SpaceshipspaceshipAPI Manager: New API key with dnsrecords:read and dnsrecords:write.
Subreg.czsubregSubreg login: use the login and password you sign in with (an admin account signs in as ADMIN#LOGIN and needs the API access flag).Used once and never stored. If Subreg refuses the address, allow 100.48.24.176 in the account's API settings. DNS applies only on ns.gransy.com and ns2 to ns5.gransy.com, and CAA and SRV records are added by hand.
Tencent Cloud DNSPoddnspodCAM console (International site: console.tencentcloud.com/cam): a sub-user with programmatic access and a policy allowing only dnspod:DescribeRecordList, dnspod:CreateRecord, dnspod:ModifyRecord and dnspod:DeleteRecord (or QcloudDNSPodFullAccess), then create an API key and copy the SecretId and SecretKey (the SecretKey is shown only when created).Choose the site the account is on (China or International). Records are written on the Default line.
TransIPtransipAPI settings: switch the API on, create an access token (up to 1 month), Read-only off.Switch off the token's whitelisted IP option, or whitelist 100.48.24.176.
united-domainsuniteddomainsOrder the DNS API product in your portfolio, then Create new API key; copy the whole key (prefix, dot, secret; shown once).The DNS API is an add-on.
VercelvercelTokens: create a token for the scope that owns the domain.Or install CustomDomain™ on Vercel.
VultrvultrAPI settings: enable the API, copy the key, add 100.48.24.176/32 under Access Control.
webnames.cawebnamescaManage Users: add a dedicated API user and copy its username and key (shown once).Needs the Domain and Account Management Toolkit add-on (a paid extra) and DNS Hosting with custom records on the domain. Writes only A, AAAA, CNAME and TXT records, so MX, SRV and CAA (email records included) are added by hand, and the zone has one TTL, 6 hours, that the API cannot change.
WebsupportwebsupportWebAdmin: click your account name, then Security and sign-in, API authentication, Generate new API access; copy the identifier and the secret.The key can change every domain in your Websupport account, so make one just for this.
WEDOSwedosWEDOS client admin panel: open WAPI in the left menu, set a WAPI password, and enter your account email with that password (not your account password). Add 100.48.24.176 to the allowed IP list on the same screen.WEDOS also runs most services from a prepaid deposit balance, so the account needs funds.
WixwixAPI Keys, signed in as the account owner: Generate API Key, name it, give it the account permissions that cover domains, copy the key (shown once) and the Account ID on the same page.A key made by a co-owner is refused for domains. The domain must be registered at Wix or connected to a Wix site by nameservers, not by pointing.
Zone.eezoneeeMinu Zone: account menu, Security, API keys, create a key.The key can change every DNS zone in the account, so make one just for this.

Cloud DNS

These take a credential created by someone with admin access to the cloud account. No approval of our service is needed.

Amazon Route 53 (route53)

  • Recommended: an access role. The console offers it first for Route 53: you create a role in your AWS account that lets us change the zone's records, so there is no secret to paste, and you can delete the role any time.
  • Or an IAM access key. In the IAM console, use a user allowed route53:ListHostedZonesByName, plus route53:ListResourceRecordSets and route53:ChangeResourceRecordSets on the hosted zone, create an access key, and paste the Access key ID and Secret access key. Temporary credentials (keys starting with ASIA) also need the Session token.

Google Cloud DNS (gcpdns)

Open Cloud Shell in the project that holds the zone, signed in with the DNS Administrator role, run gcloud auth print-access-token, and paste the token with the project ID. The token expires within an hour, so it is used once and never kept.

On the hosted service you can also use Sign in with Google Cloud: sign in with the Google account that can edit the domain's public Cloud DNS zone. CustomDomain™ finds the Google Cloud project that holds the zone and writes the records. It asks for these scopes: openid, email, ndev.clouddns.readwrite and cloudplatformprojects.readonly. Until Google finishes reviewing the app, Google may show a notice that it has not verified the app yet. The project ID and access token above stay available as the other option.

Azure DNS (azuredns)

Open Azure Cloud Shell as someone with DNS Zone Contributor on the zone's resource group, run az account get-access-token --resource https://management.azure.com/ --query accessToken -o tsv, and paste the token with the subscription ID and resource group. The token expires within about an hour, so it is used once and never kept.

Sign in with Azure DNS skips all of the above: sign in with the Microsoft account that manages the zone, and we find the subscription and resource group that hold it among the subscriptions that account can list zones in. The zone must be a public Azure DNS zone (a private zone is never used), there must be only one such zone for the domain, and the account needs the Reader role on its subscription and a role that can edit the zone (DNS Zone Contributor); only the directory the account signs in to is searched. Azure also requires multifactor authentication for the change, and an organization that limits user consent needs an admin to approve CustomDomain™ once. Microsoft's consent screen asks to sign you in and view your basic profile and email address, plus Azure Service Management access as you; we use that access only to list subscriptions and DNS zones and to write the records into the one zone we found. When a check fails, the sign-in says which account you used (its email address, or its sign-in name when the account has no mailbox) and what to change.

GoDaddy

GoDaddy offers no OAuth sign-in to third parties and has not onboarded our one-click templates (Domain Connect), so there is no "Sign in with GoDaddy" of the usual kind. Four ways in run today, and the console and the widget show the ones that fit the domain, the recommended one first:

  • Secure sign-in. Your customer signs in to GoDaddy in a temporary browser and enters the code GoDaddy texts when the token is made. Our software makes a Personal Access Token on GoDaddy's developer page, CustomDomain™ checks it and keeps it, and the domain is connected through GoDaddy's API. If no token can be made, the same session edits the domain's DNS page: a change that only adds records goes ahead by itself, and one that replaces or removes a record waits for your customer's approval. It is offered to selected workspaces, and the domain check says whether it runs for a domain (rails.cloud_browser). See Secure sign-in.
  • A token you make yourself. GoDaddy's API documentation grants domain management access to any account that holds at least one domain (or is on a plan with management access) and recommends Personal Access Tokens; the older key and secret pairs (sso-key) are deprecated for the Domains API. Create a token with only domains.domain:read and domains.dns:update and a short expiration.
  • The records by hand. It works on every GoDaddy account.
  • DNS hosting. The owner changes the domain's nameservers at GoDaddy to CustomDomain™'s once, and every record is written after that (see Managed DNS). GoDaddy's API reads and changes nameservers, so a connected GoDaddy key or a secure sign-in can make that change for the owner; going back to GoDaddy's own DNS is done by secure sign-in or by hand. Your customers are offered it only where your application turns DNS hosting on (the nameserver migration guide calls that setting Domain maintenance).

Root domains need A records: GoDaddy has no ALIAS.

The key a secure sign-in makes at GoDaddy

The token carries GoDaddy's whole Domains and DNS group, which is more than the two scopes you tick when you make one yourself: DNS, nameservers and transfers. Its rights say what it reaches beyond the domain's DNS records, transfer here: it can also transfer the domain away from GoDaddy. The groups for GoDaddy's other products (Commerce, Email and Hosting) are never ticked. The console says it in a sentence on the domain's key card.

The token lasts one year, the longest GoDaddy offers, so it is watched. Thirty and seven days before its end your application gets credential.expiring, and your customer is sent a reconnect link when you gave us their address; see When the key ends, and reconnecting.

Reuse of GoDaddy keys is held for now

At other providers, a second secure sign-in for an account the workspace already keeps a key for swaps its new key into that provider account instead of adding another. At GoDaddy that is held for now: each sign-in keeps its own key. A second sign-in for the same GoDaddy account therefore leaves two tokens at GoDaddy, each named with the day and minute it was made so you can tell them apart on GoDaddy's token page, and the one you stop using is deleted there by hand, since no provider has an API that revokes a key.

The hold also keeps GoDaddy keys out of any reuse beyond your own team. Saved access for returning customers is not offered at any provider yet, and when it is, GoDaddy is left out of it. A GoDaddy key a teammate made at a sign-in started in the console still connects your next domain of the same application, as at any other provider.

Namecheap

Namecheap has no sign-in switched on for third parties (sign-in through its MCP server is built but not switched on yet, see below), and its API opens only to some accounts, so which way in runs depends on the account. The console and the widget show the ones that fit the domain, the recommended one first:

  • Secure sign-in. Your customer signs in to Namecheap in a temporary browser. Where the account qualifies for the API, our software turns Namecheap's API access on if it is off, adds 100.48.24.176 to the allowed list, and CustomDomain™ keeps the account's own key; Namecheap shows its API terms and asks for the account password, and both are your customer's to answer in the window. For an account that does not qualify, the same session edits the domain's DNS page (an added record goes ahead by itself; a replaced or removed one waits for your customer's approval), and a domain whose DNS is somewhere else ends the session with a message saying so. It is offered to selected workspaces, and the domain check says whether it runs for a domain (rails.cloud_browser). See Secure sign-in.
  • An API key you make yourself. Namecheap only turns the API on for accounts with 20 or more domains, a balance of $50 or more, or $50 spent in the last 2 years. Switch API access on under Profile, Tools, Namecheap API Access and copy the API key; your API username is your Namecheap username. Whitelist 100.48.24.176: Namecheap rejects every request from an address that is not on the list.
  • The records by hand. Domains on Namecheap hosting nameservers are edited in cPanel's Zone Editor, not through this API; add those records by hand.
  • DNS hosting. The owner changes the domain's nameservers at Namecheap to CustomDomain™'s once, and every record is written after that (see Managed DNS). Namecheap's API reads and changes nameservers and can put a domain back on Namecheap's own DNS (BasicDNS), so a connected Namecheap key or a secure sign-in can do the registrar side. Your customers are offered it only where your application turns DNS hosting on.

Namecheap's API replaces the whole zone on each write. The adapter reads the zone and writes it back with only our records changed.

The key a secure sign-in keeps at Namecheap

The key is the account's own, not one made for us. Namecheap's keys have no scopes, so it holds every right Namecheap's API gives the account, transfers and renewals included where the API offers them: its rights say account. It has no end date, so it is never renewed. Because it is the account's own key, a second secure sign-in for the same account never leaves an older key behind at Namecheap. To end the access, remove the account in Connected accounts (that deletes our copy) and switch API access off where it was switched on.

Remembering a key (optional)

A provider key is used to write the records. In the console, Remember this key for my <provider> account starts ticked: untick it to use the key once and have it forgotten. Through the API, POST /v1/connections/{id}/apply never keeps a key; connect it as a provider account to keep it.

A remembered key becomes a continuous provider account for all of that account's domains, checked against the provider before it is kept. It is:

  • sealed at rest: encrypted with AES-256-GCM under the control plane's GRANT_ENCRYPTION_KEY or GRANT_ENCRYPTION_KEYS;
  • server-side only: the plaintext never leaves the server; the browser only ever sees the account's details (provider, a label, its domains and last use);
  • one-click reusable: the next time you connect a domain at that provider, Use saved key applies the records without re-entering anything, and the key puts records back if they disappear (where automatic repair is on) and removes them when the domain is removed;
  • revocable any time: open the account on the console's Connected accounts page and choose Revoke; the key is deleted and its domains stay connected.

A deployment with neither GRANT_ENCRYPTION_KEY nor GRANT_ENCRYPTION_KEYS cannot keep provider accounts, so its console keeps the key itself (AES-256-GCM under WEB_SECRET_KEY, one per workspace and provider), only to connect more domains. Keys saved that way are listed under Keys to move on the Connected accounts page until you move them to an account. Saving or removing one of them needs a member or above; a viewer only sees them.

Credentials that are passwords or expire within hours are never kept, whatever the request asks: ALL-INKL.COM KAS logins, Arsys API passwords, INWX, Subreg, Loopia and Plesk logins, Google Cloud DNS and Azure DNS access tokens, and Openprovider tokens. A Binary Lane token is never kept either, because it cannot be limited to DNS. See Ownership & setup types and Security.

Connecting more domains on the same account

For providers whose API can list an account's domains, among them Cloudflare, GoDaddy, Amazon Route 53, Namecheap, IONOS, united-domains, Epik, NameBright and cPanel hosts (including o2switch), one key can connect the other domains on that account in a single step. After the first apply, the console offers Connect more domains, lists the account's other zones, and lets you Select all or pick a subset, with no need to re-enter the key. See Bulk connect.

Signing in with the provider

Signing in with the provider needs an OAuth app registered with that provider under your company's identity, which is a business step, not code. The hosted service has one for Cloudflare, DigitalOcean, DNSimple, Azure DNS (Sign in with Azure DNS; users in other organizations see an unverified publisher warning until the app has a verified publisher), Linode, Netlify, Vercel (the CustomDomain™ integration) and WordPress.com, and one for Google Cloud DNS (Sign in with Google Cloud; until Google finishes reviewing the app, Google may show a notice that it has not verified the app yet). It offers Porkbun's Approve access at Porkbun, which needs no registration, and the sign-in through Dynadot's and Unstoppable Domains' own MCP servers.

That list says which sign-ins the product has and the hosted service is set up for. Whether the hosted service has each provider's OAuth app registered is confirmed one provider at a time, so do not promise a sign-in for DigitalOcean, Linode (Akamai Cloud) or Azure DNS from this page alone: POST /v1/domains:check says whether a sign-in runs for a domain (rails.oauth.available, with reason oauth_client_not_registered when the app is not registered), and the console and the widget follow it. Where a sign-in is not on, the provider's other ways in apply.

Built, but not yet switched on for the hosted service:

  • Grant access at OVHcloud, which needs an OVHcloud application for each region served.
  • Sign in through the provider's MCP server for Hostinger, Namecheap, Spaceship, XServer Domain and Muumuu Domain. A deployment switches each one on by listing it in MCP_SIGNIN_PROVIDERS; the hosted service lists only Dynadot and Unstoppable Domains, and adds the others once the provider approves CustomDomain™ and a live test passes.

Until a sign-in is on, an API key, one-click setup, secure sign-in where it is offered and adding the records by hand cover the same providers.

Secure sign-in is not one of these sign-ins. It needs no app registered with the provider, because your customer signs in on the provider's own pages in a temporary browser, and it exists for providers that offer no sign-in a third party can use, GoDaddy and Namecheap among them.

A sign-in is used once and dropped unless it is kept. CustomDomain™ keeps sign-ins at Cloudflare, DigitalOcean, DNSimple, Linode, Netlify, Porkbun, Vercel and WordPress.com by default, encrypted, and the console's Keep this sign-in box lets you use one once instead. See Managed sign-in grants.

On this page