Domains
Point a custom domain at a production app and the platform verifies DNS and provisions TLS for you.
Configure custom domains that point to your production app. You can't configure custom domains for preview apps.
Before you start
You'll need:
- A linked project.
- A production app with a promoted, running deployment.
- Access to edit DNS records within your DNS provider.
Domain commands target the production branch. Pointing them at any other branch fails with BRANCH_NOT_DEPLOYABLE.
Add a custom domain
1. Add a domain
bunx @prisma/cli@latest app domain add shop.acme.com --app webThe command registers the custom domain for your production app. If the CNAME record isn't visible yet, it prints the record name and value for you to create.
2. Create CNAME Record
Add the printed DNS record which looks like switchboard.{region}.prisma.build.
Example:
| Type | Name | Value | TTL |
|---|---|---|---|
| CNAME | shop | switchboard.fra.prisma.build | 300 |
Switchboard is the routing layer that sits in front of your Compute app. Switchboard verifies the domain, provisions and terminates TLS, then forwards traffic to your app: one domain, one CNAME, one Compute app.
3. Wait for DNS propagation
Verify using:
bunx @prisma/cli@latest app domain wait shop.acme.com --app webwait polls until the domain is active, up to 15 minutes. For a single status check, use --timeout 0:
bunx @prisma/cli@latest app domain wait shop.acme.com --app web --timeout 0 --jsonIn --json mode, wait streams newline-delimited status events, so an agent can track provisioning as it progresses.
Remove a domain
bunx @prisma/cli@latest app domain remove shop.acme.com --app webRemoving detaches the domain from the app; pass --yes to skip the confirmation prompt. Prisma can't touch your DNS, so the CNAME record stays behind: delete it at your provider once you no longer need it.
States
A domain moves through these states:
| Status | Meaning |
|---|---|
pending_dns | Waiting for your CNAME record to be visible |
verifying | DNS found; ownership and routing are being verified |
provisioning_tls | The TLS certificate is being issued |
active | The domain is fully provisioned and routing traffic to your app |
failed | Registration or provisioning failed; see the failure reason |
Limits
- Custom domains are only available on production apps.
- DNS uses CNAME records.
- Up to 3 custom domains per app; more returns
DOMAIN_QUOTA_EXCEEDED. - There's no workspace-wide domain list in the CLI.
Troubleshooting
bunx @prisma/cli@latest app domain show shop.acme.com --app web
bunx @prisma/cli@latest app domain retry shop.acme.com --app webshow gives you the exact state, certificate details, and any DNS hints. retry restarts stuck provisioning; if a domain isn't in a retryable state, it returns DOMAIN_RETRY_NOT_ELIGIBLE.
Next steps
- Deployments: promote a deployment to production first.
- Known limitations: what the beta can and can't do.
app domainreference: every domain subcommand and flag.