Skip to main content

Custom Domains

Assign your own domain names to Clue2App applications. Every app gets a default URL like appname.namespace.apps.clue2.app, but you can add custom domains like api.example.com or www.mysite.com.

Clue2App supports two DNS methods:

MethodSetupPer-subdomain DNSBest for
DELEGATION (recommended)One-time NS record setupAutomatic — no manual DNS per appTeams managing multiple apps under one domain
CNAME_ONLYNo registrar changesManual — 2 CNAME records per subdomainQuick setup for a single subdomain

DELEGATION creates a dedicated DNS zone in AWS Route53. After a one-time NS setup at your registrar, all subdomains and TLS certificates are fully automatic.

1. Register your domain

c2a domain register example.com --method DELEGATION

This returns 4 NS (nameserver) records:

DNS Setup Required

Add these NS records at your domain registrar for example.com:

1. NS ns-888.awsdns-47.net
2. NS ns-1569.awsdns-04.co.uk
3. NS ns-1175.awsdns-18.org
4. NS ns-61.awsdns-07.com

2. Update nameservers at your registrar

Go to your domain registrar and replace the existing nameservers with the ones from step 1.

Replacing Nameservers

This transfers DNS control to Clue2App's Route53 zone. If you have existing DNS records (MX for email, A records for other services), you'll need to recreate them in Route53 before switching nameservers. Contact support if you need help migrating existing records.

Registrar-specific instructions:

GoDaddy
  1. Go to My Domains → select your domain → DNSNameservers
  2. Click Change NameserversEnter my own nameservers
  3. Enter the 4 NS values from step 1
  4. Click Save
Squarespace (Google Domains)
  1. Go to Domains → select your domain → DNSNameservers
  2. Switch to Custom nameservers
  3. Enter the 4 NS values from step 1
  4. Click Save
Namecheap
  1. Go to Domain List → select your domain → Nameservers
  2. Select Custom DNS
  3. Enter the 4 NS values from step 1
  4. Click the checkmark to save
Cloudflare

Cloudflare acts as both registrar and DNS provider. To delegate to Route53, you'd need to transfer the domain to a different registrar. Alternatively, use CNAME_ONLY mode with Cloudflare (see below).

3. Verify NS propagation

NS changes typically take 5–30 minutes. Verify with:

c2a domain verify example.com

Output when ready:

✓ All NS records verified! Domain is ready for use.
Subdomains will get automatic TLS certificates (~90s).

4. Add domains to your apps

c2a domain add --app frontend www.example.com
c2a domain add --app backend api.example.com

That's it — no manual DNS changes needed. Each subdomain gets:

  • Automatic DNS record in Route53
  • Automatic TLS certificate via Let's Encrypt (~90 seconds)
  • Automatic Knative domain mapping

5. Check status

c2a domain assignments --app frontend

Status progression: PendingDNS VerifiedIssuing cert...Live


Quick Start — CNAME_ONLY

For simple setups where you don't want to change nameservers. You manage DNS manually at your provider.

1. Register your domain

c2a domain register example.com

Or with the method explicitly:

c2a domain register example.com --method CNAME_ONLY

2. Add a domain to your app

c2a domain add --app myapi api.example.com

3. Add DNS records at your provider

Create 2 CNAME records at your DNS provider:

#TypeNameValuePurpose
1CNAMEapi.example.comingress.apps.clue2.appRoutes traffic to your app
2CNAME_acme-challenge.api.example.com_acme-challenge.api.example.com.apps.clue2.appEnables automatic TLS certificate
Some registrars reject ingress.apps.clue2.app

If your registrar rejects the CNAME value, use the raw load balancer hostname instead: a4418732860c946b68cefdd6a85c0a97-1177710527.us-west-2.elb.amazonaws.com

4. Wait for activation

Once DNS propagates (seconds to minutes):

  • Status changes: Waiting for DNSIssuing certificateLive
  • Your app is accessible at https://api.example.com with a valid TLS certificate

Common Patterns

Multiple apps under one domain

Register a domain once, then assign different subdomains to different apps:

c2a domain register example.com --method DELEGATION
# (set up NS records at registrar, verify)

c2a domain add --app frontend www.example.com
c2a domain add --app backend api.example.com
c2a domain add --app docs help.example.com

Multiple domains per app

Assign multiple domains to the same app:

c2a domain add --app myapp api.example.com www.example.com admin.example.com

Subdomain zone (e.g., app.example.com)

If you don't want to delegate your entire domain, register a subdomain zone instead:

c2a domain register app.example.com --method DELEGATION

Then at your registrar, add NS records for app.example.com (not the root domain). This leaves your existing DNS intact while delegating only the app. subdomain.

c2a domain add --app frontend web.app.example.com
c2a domain add --app backend api.app.example.com

CLI Reference

c2a domain register

Register a custom domain for your project.

c2a domain register <domain> [--method DELEGATION|CNAME_ONLY] [--project <name>]
OptionDefaultDescription
--methodCNAME_ONLYDELEGATION for automatic DNS, CNAME_ONLY for manual
--projectactive projectProject to register the domain under

c2a domain add

Add one or more custom domains to an app. Auto-registers the base domain if needed.

c2a domain add --app <app-name> <fqdn> [<fqdn>...] [--method DELEGATION|CNAME_ONLY] [--no-wait]
OptionDescription
--app, -aApp name to assign domain(s) to (required)
--method, -mDNS method for auto-registration if domain isn't registered yet
--no-waitSkip polling for status
--project, -pProject name

c2a domain info

Show domain details and reprint NS record setup instructions.

c2a domain info <domain>

c2a domain verify

Verify NS records are correctly configured for a DELEGATION domain. Performs a live DNS lookup.

c2a domain verify <domain>

c2a domain list

List all domains (platform + project custom domains).

c2a domain list [--project <name>] [--format table|json]

c2a domain assignments

List domain assignments for the current project.

c2a domain assignments [--app <name>] [--project <name>] [--format table|json]

c2a domain status

Check DNS delegation status for a domain (via API).

c2a domain status <domain>

c2a domain unassign

Remove a domain assignment from an app.

c2a domain unassign <fqdn> [--yes]

c2a domain delete

Delete a registered custom domain and all its assignments.

c2a domain delete <domain> [--yes]

MCP Tools

If you're using Clue2App via Claude Code or another MCP client, these tools are available:

ToolDescription
c2a_domains_registerRegister a domain zone (DELEGATION or CNAME_ONLY)
c2a_domains_addAdd custom domain(s) to an app
c2a_domains_infoShow domain details and NS instructions
c2a_domains_verifyVerify NS records for a DELEGATION domain
c2a_domains_listList domains in the project
c2a_domains_removeRemove a domain assignment
c2a_domains_deleteDelete a registered domain

Console UI

Adding a domain

  1. Open your app in the console
  2. Go to the Domains tab
  3. Click Add Domain
  4. Select a registered domain from the dropdown (or register a new one)
  5. Enter the subdomain name
  6. Click Add

For DELEGATION domains, the status will show "Issuing cert..." and go live automatically in ~90 seconds.

For CNAME_ONLY domains, the status will show "Waiting for DNS" — follow the CNAME instructions shown.

Domain status indicators

StatusDELEGATIONCNAME_ONLY
PendingIssuing cert...Waiting for DNS
DNS VerifiedIssuing cert...Issuing cert...
ActiveLiveLive
FailedCheck logsCheck DNS records

DNS Provider Guides

Cloudflare

  1. Go to your domain's DNS settings in the Cloudflare dashboard
  2. Click Add record
  3. For each CNAME record:
    • Type: CNAME
    • Name: the subdomain (e.g., api) or full name for the challenge record
    • Target: the value from the table above
    • Proxy status: DNS only (gray cloud) — do NOT proxy through Cloudflare
  4. Click Save
Cloudflare Proxy

Set the proxy status to DNS only (gray cloud icon). If the orange cloud (proxied) is enabled, TLS certificate issuance will fail because Cloudflare intercepts the ACME challenge.

GoDaddy

  1. Go to My Products → select your domain → DNS
  2. Click Add under DNS Records
  3. For each CNAME:
    • Type: CNAME
    • Name: the subdomain part only (e.g., api, _acme-challenge.api)
    • Value: the target value
    • TTL: 1 Hour (or lower)
  4. Click Save

Squarespace (Google Domains)

  1. Go to DNS settings for your domain
  2. Under Custom records, click Manage custom records
  3. For each CNAME:
    • Host name: the subdomain (e.g., api)
    • Type: CNAME
    • Data: the target value
    • TTL: 3600
  4. Click Save
Squarespace CNAME limitation

Squarespace may reject ingress.apps.clue2.app as CNAME data. Use the raw ELB hostname instead (shown in the CLI output).


Troubleshooting

Domain stuck on "Waiting for DNS" (CNAME_ONLY)

  • Verify both CNAME records are set correctly at your DNS provider
  • DNS propagation can take up to a few hours depending on TTL settings
  • If using Cloudflare, ensure proxy is disabled (gray cloud)
  • Run dig api.example.com CNAME to verify the record resolves

Domain stuck on "Issuing certificate"

  • For CNAME_ONLY: verify the _acme-challenge CNAME is set correctly
    dig _acme-challenge.api.example.com CNAME
  • For DELEGATION: verify NS records are propagated
    c2a domain verify example.com
  • Certificate issuance typically takes 60–90 seconds after DNS is verified

NS records not propagating (DELEGATION)

  • Run c2a domain verify <domain> to check
  • Verify you replaced (not just added) the nameservers at your registrar
  • Some registrars take up to 48 hours, but most propagate within 30 minutes
  • Try checking from a public resolver: dig NS example.com @8.8.8.8

Domain shows "Failed"

  • The system timed out waiting for DNS or certificate
  • Check and fix your DNS records, then remove and re-add the domain

Reprint NS records

If you need to see the NS records again after registration:

c2a domain info example.com

Limitations

  • Apex domains (e.g., example.com without www): Supported with DELEGATION mode only
  • Wildcard certs: Only available with DELEGATION mode
  • Let's Encrypt rate limits: 50 certificates per registered domain per week
  • DNS propagation: Depends on your DNS provider and TTL settings
  • DELEGATION nameserver change: Transfers DNS control — existing records must be recreated in Route53