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 atship.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.
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: 300Both 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
Code Mode
Live-preview code artifacts with multi-file support, shareable links, and popular framework templates.
Code Canvas Database
Live Neon Postgres database with window.__db SDK, end-user auth, seeds, CSV, Try-to-fix, and schema history.
Pricing & Billing
Plans, AI credits, upgrading/downgrading, and billing management via Stripe.