Custom domain publishing (Code Canvas)

Point your own domain at a published Code Canvas project. Use the Entri integration for a one-click DNS push, or add the records yourself. Cloudflare provisions SSL automatically.

How it works

Publish to the web

Open your Code Canvas project, click Publish, and ship the page. You'll get a default ship.opencharts.com/<token> URL.

Open Custom Domain

Inside the Publish modal, expand the Custom Domain section. Enter the host you want (e.g. landing.acme.com).

Pick Automatic or Manual

Automatic uses Entri — we detect your DNS provider and push the records for you. Manual hands you the records to add yourself.

Wait for SSL

Cloudflare provisions an SSL certificate via SSL for SaaS. The modal auto-polls every 8 seconds — most domains land in 2–10 minutes.

Plan requirement

Custom domain publishing requires Starter or higher. Free accounts can still publish at ship.opencharts.com/<token>.

You must publish your project first — the Custom Domain section only appears once the site is live.

Automatic (Entri) — recommended

Entri detects your DNS provider (GoDaddy, Cloudflare, Namecheap, Route 53, and 60+ others) and pushes the records straight to your registrar. You log in once with the provider's OAuth flow; we never see your DNS credentials.

Records pushed:

  • CNAME — points your host at ship.opencharts.com.
  • TXT — Cloudflare's ownership / pre-validation record. Required for SSL provisioning. We surface it on the row if Entri couldn't push it for any reason so you can add it manually.
The publish modal hides itself while Entri's overlay is open and reopens automatically when you finish or close Entri.

Manual DNS configuration

If Entri doesn't support your registrar, or you prefer to manage DNS yourself, pick Manual in the modal. After clicking Add, the row shows the exact records to add at your registrar:

type: CNAME
name: <your subdomain>      (or @ for apex)
value: ship.opencharts.com
TTL: 300

type: TXT
name: _cf-custom-hostname.<your domain>
value: <token shown in the modal>
TTL: 300

Both records must be present for Cloudflare to validate ownership and issue an SSL certificate.

Timing expectations

Most domains:SSL issued and active within 2–10 minutes of the DNS records propagating. The modal auto-polls every ~8 seconds while a domain is pending — you don't need to click Refresh.

Slow registrars: Some registrars cache DNS aggressively. If a domain stays "verifying" for more than 15 min, double-check the records at your registrar match what the modal shows.

Background sweep: A cron runs every 5 min and re-polls Cloudflare for any pending domain younger than 48h — so a domain can flip to Active even after you close the modal.

Troubleshooting

Status is "Verifying" for > 15 minutes

Either the CNAME or the ownership TXT hasn't propagated. Use a tool like dnschecker.org to confirm both records are visible from public resolvers, then click the refresh icon on the row.

Status flipped to "Failed"

Cloudflare gave up after multiple retries — usually because the CNAME points somewhere else or the TXT is missing. Remove the row, fix DNS at your registrar, and add the domain again.

"This domain is already connected to another project"

Each hostname can map to one published project at a time. If you used to host it on another project, remove it from there first — unpublishing the old project also cleans up the domain mapping automatically.

Unpublishing

Unpublishing the project automatically detaches every custom domain attached to it — the Cloudflare hostname and the edge KV mapping are both cleaned up. You can also remove individual domains from the modal without unpublishing the whole site.

Related Articles

Was this article helpful?