Skip to main content
Every published application answers on a *.vertraweb.app subdomain. Custom domains let the same application answer on addresses you own, like api.yourcompany.com, with an HTTPS certificate the platform issues and renews for you. Adding, changing or removing a domain never restarts the application.

Before you start

The application is published to the web (at least 512 MB of RAM).
Your account is on the Starter 2 plan or higher. The number of domains per application grows with the plan, see Limits.
You can edit the DNS records of the domain at your registrar or DNS provider.

Add a domain

1

Add the domain in the dashboard

Open the application, go to Network, and in Domains choose Add domain. Type the hostname, for example example.com or api.example.com. Leave Also include www on if you want the automatic companion described below.
2

Create the DNS records

Open DNS records on the domain. Create each record at your DNS provider exactly as shown. The table has a CNAME that points the hostname at Vertra Cloud, and usually a validation record for the certificate.Remove any existing A, AAAA or CNAME record with the same name first: two records for one name is the most common reason a domain never validates.
3

Wait for DNS and the certificate

Most providers propagate in minutes; the worst case is 48 hours. Once the records resolve, the platform validates the domain and issues the SSL certificate automatically. HTTP is redirected to HTTPS.
4

Check it

The first command must print the target address; the second must answer with your application’s status code.
The same flow is available in the API, the CLI (vertra app domains) and the MCP server.

Root domains and www

When you add a root domain (example.com), the platform also adds www.example.com, and when you add www.example.com it also adds the root. This automatic companion redirects to the domain you added with a permanent redirect (308), so both addresses work and only one is canonical. The companion does not count toward your plan’s domain limit and is removed together with the main domain. Turn off Also include www ("www": false in the API) to add only the hostname you typed. Other subdomains, like app.example.com, have no companion. To swap which one is the main domain, open the companion’s menu and choose Make primary. It then serves the application and the former main domain redirects to it.
A CNAME record on the root domain only works at DNS providers that support CNAME flattening, ALIAS or ANAME. The DNS standard doesn’t allow a CNAME at the root, and many registrars don’t offer a workaround. The dashboard warns you when a domain is a root domain. If your provider can’t do it, add www.example.com with the companion turned off and point only that name.

Port, path prefix and redirect

Open Advanced options when you add a domain, or Edit on an existing one. All three apply right away, without a restart.
By default a domain reaches your application on port 80. A domain can point at any port from 1 to 65535 instead, so one application can serve a site on one domain and an API on another. An application can use up to 5 ports besides 80 across its domains; the platform answers DOMAIN_PORT_LIMIT_REACHED beyond that. Your application must listen on the port you choose, on 0.0.0.0, in addition to port 80, which its *.vertraweb.app address keeps using.
A literal path added in front of every request that reaches the domain. With /api, a request for https://api.example.com/users reaches your application as /api/users. It starts with /, doesn’t end with /, and only accepts letters, digits and . _ ~ -.Recommended for APIs. A website has to run under that path: its static files and its own redirects must respect it.
Send every request from this domain to another domain of the same application, keeping the path and the query string. Choose the status code: 301 or 308 (permanent), 302 or 307 (temporary). 307 and 308 keep the request method; 301 and 302 may turn a POST into a GET. The default is 308. A redirect can’t point to another redirect, and the target domain must be active.

Status and SSL

Each domain shows a status and a certificate state. Statuses refresh in the background and every time you open DNS records.
A domain that stays pending, moved or deleted for 14 days is removed automatically, and we notify you by email. There is no earlier warning, so check domains that haven’t become active. Fix the DNS records, or remove the domain yourself. After the automatic removal, delete the DNS records you created.

Remove a domain

Open the domain’s menu in Network and choose Remove, or call Remove Application Domain. The domain stops answering right away and the application is not restarted.
Removing a domain does not change your DNS. Delete the CNAME and the validation TXT records at your DNS provider, for the domain and for its www companion. If they stay, the name keeps pointing at Vertra Cloud and another customer could claim it. Do the same after you unpublish the application and after the automatic removal of a domain that stayed without DNS for 14 days.

Using Cloudflare

If the domain’s DNS lives on Cloudflare, create the CNAME with the proxy off (grey cloud, “DNS only”) until the certificate is issued. With the proxy on, validation sees Cloudflare’s addresses instead of your record. After HTTPS works you may turn the proxy on; in that case set the SSL mode to Full (strict), since the application already serves a valid certificate. The Flexible mode causes a redirect loop, because the platform redirects HTTP to HTTPS.

Limits

Custom domains start at the Starter 2 plan. Domains per application, not counting the automatic companion: Up to 5 different ports besides 80 per application, on every plan that has domains. Plans and limits is the reference.

Troubleshooting

Run dig +short app.example.com. No answer means the record doesn’t exist yet or has a typo; an IP address instead of the target means there’s still an old A record, or the Cloudflare proxy is on.
The certificate is only issued after DNS validation. Wait a few minutes after the records resolve, then reload. If it persists, remove the domain and add it again in Network.
You’re behind a proxy in Flexible SSL mode. Switch it to Full (strict).
The domain is fine; the application isn’t listening. It must listen on 0.0.0.0 and on the port set for that domain (80 by default, see PORT in Configuration).
DOMAIN_LIMIT_REACHED means the application already has as many domains as the plan allows. DOMAIN_ALREADY_IN_USE means the hostname is attached to another application. APP_NOT_PUBLISHED means the application has no *.vertraweb.app address yet, publish it first. The full list is in Errors.
Unpublishing the application removes all of its custom domains along with the subdomain, but not your DNS records: delete them. Publishing again means adding the domains again and creating the records shown for each.
Last modified on November 1, 2026