Deplo
Platform

Custom Domains

Attach a branded domain to any deplo.sh project.

Every project gets a free subdomain at <slug>.deplo.sh. If you need a branded URL (e.g. reports.acme.com), you can attach a custom domain.

How it works

1. Attach domain  →  PATCH /projects/:id  { custom_domain: "reports.acme.com" }
2. Add DNS record →  reports.acme.com  CNAME  proxy.deplo.sh
3. Verify         →  POST /projects/:id/verify-domain
4. Done           →  custom_domain_status = "active"
                     TLS certificate provisioned automatically

Step 1 — Attach the domain

Via the CLI

deplo projects update <slug> --domain reports.acme.com

Via the REST API

curl -X PATCH https://api.deplo.sh/workspaces/<workspaceId>/projects/<projectId> \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{ "custom_domain": "reports.acme.com" }'

Response includes "custom_domain_status": "pending".

To remove a custom domain: deplo projects update <slug> --domain "" or set { "custom_domain": "" } via the API.

Step 2 — Add a CNAME record

In your DNS provider, create:

Name / HostTypeValue / Target
reports (or reports.acme.com)CNAMEproxy.deplo.sh

DNS propagation typically takes a few minutes but can take up to 48 hours.

Tip: Check propagation with dig reports.acme.com CNAME or dnschecker.org.

Step 3 — Verify the domain

Via the CLI

deplo projects verify-domain <slug>

Via the REST API

curl -X POST https://api.deplo.sh/workspaces/<workspaceId>/projects/<projectId>/verify-domain \
  -H "Authorization: Bearer <token>"

Success response

{
  "custom_domain": "reports.acme.com",
  "custom_domain_status": "active",
  "verification": {
    "status": "active",
    "message": "Domain reports.acme.com is verified and active.",
    "expected_cname": "proxy.deplo.sh",
    "found_cnames": ["proxy.deplo.sh"]
  }
}

Domain status values

StatusMeaning
pendingDomain is set but not verified. Traffic still served via <slug>.deplo.sh.
activeCNAME verified. Custom domain is live. TLS is active.
errorVerification failed — see verification.message.

TLS / HTTPS

Certificates are provisioned automatically by Cloudflare SSL for SaaS when the domain status becomes active.

  • Auto-renew before expiry
  • Minimum TLS 1.2
  • HTTP → HTTPS redirect handled by Cloudflare

Troubleshooting

ProblemFix
Status stays errorRun dig <your-domain> CNAME — confirm it points to proxy.deplo.sh.
HTTPS shows a cert warningWait up to 15 minutes for Cloudflare to provision the cert after verification.
Domain verified but shows 404Make sure the project has a live deployment (live_deployment_id is not null).
Verification returns DNS lookup failed immediatelyDNS has not propagated yet. Wait a few minutes and retry.

What's next?

On this page