# ChatGPT Sites custom domains, explained · Stacktree

Source: https://stacktr.ee/chatgpt-sites-custom-domain

[Skip to content](#main) [Stacktree](/)[Developers](/developers)[Agents](/agents)[Docs](/docs)[Use cases](/use-cases)[Pricing](/pricing)[Blog](/blog)[Dashboard](https://app.stacktr.ee)[Sign in →](https://app.stacktr.ee)      By [ Steve Smith ](/about) · Founder, Stacktree  ·  Last updated September 11, 2026          how to

#  Put a ChatGPT Site on a domain you own.

   Status as of September 11, 2026. ChatGPT Sites does support custom domains, with documented hedges worth reading before you promise a client anything. Here is what OpenAI documents today, the DNS reality, what a domain does not change about who can view the site, and the gated own-domain route when the page is a client deliverable.

  [ Get started free ](https://app.stacktr.ee/?join=1&from=seo_chatgpt_sites_custom_domain)   install npx stacktree-install
Copy
     No card · 3 pages free · about a minute

##  Can a ChatGPT Site have a custom domain?

Yes, where the feature is available. OpenAI's documentation describes connecting an apex domain or a subdomain you already own to a ChatGPT Site by updating DNS records, though not for Enterprise-owned sites at launch; without one, the site serves from a `chatgpt.site` address. What a custom domain does not change is who can view: a Site is either public or limited to signed-in, invited viewers (since September 2026 that can include a named person outside your workspace, who must sign in with the invited ChatGPT account), with no gate a client can pass without an account. For a gated deliverable on your own domain, the working route is to publish the HTML to [a host with account-free gates](/custom-domains), such as Stacktree.

## What OpenAI documents today

 Creating a Site requires a paid ChatGPT plan; OpenAI's help center lists every plan except Free and Go, and Sites reached the UK, the EEA, and Switzerland on 20 July 2026 after a launch exclusion. Custom domains were added to the documentation shortly after the July 2026 launch: you can connect an apex domain or a subdomain you already own by updating DNS records, "where available", and not for sites owned by an Enterprise workspace at launch. In our own hands-on test on 22 August 2026, a personal account's site settings offered the custom-domain option, alongside analytics and environment variables. OpenAI's 11 September 2026 update listed "Add your own custom domain" among its headline features; the documented limits above did not change.

 Without a custom domain, the site serves from OpenAI's namespace. Launch-era sites published at `{name}.openai.chatgpt.site`; new sites now publish at a user-namespaced address like `{site}.{account}.chatgpt.site`. Updates redeploy to the same URL, which is genuine replace-in-place and worth crediting.

## The DNS reality

 Connecting a domain means updating records at your registrar; the domain stays registered where it is, and nothing transfers to OpenAI. Beyond that, the public documentation is thinner than you might expect: it stops short of naming the record types, describing a verification step, explaining certificate handling, or stating how many domains a plan gets. Those answers live inside the connect flow rather than on a public page, so the honest planning advice is: run the flow in your own workspace before you promise a client a date, and allow for ordinary DNS propagation on top.

 The "where available" hedge is doing real work. The docs say availability can depend on your plan, region, and workspace settings, and Enterprise-owned sites are excluded at launch. Until the option appears in your own site settings, treat it as unconfirmed for your account.

 One adjacent, tested fact: renaming a Site's ChatGPT-hosted address returns an HTTP 307 redirect from the old address, carrying deep routes and query strings intact. Old links keep working for humans, but a 307 is temporary, so search engines are never told a move is permanent. If an address matters to you long-term, put the domain you own in front early rather than renaming later.

## What a custom domain does not change

 The domain changes the address, not the audience. The documented viewing options are the same with or without one: a Site is public to anyone on the internet, or restricted to signed-in, invited viewers. Since September 2026 the owner can add a named person outside the workspace as a viewer of a private Site (from a personal account too), which is a real improvement for one-off client access, but the help center is explicit that invited visitors "must sign in with the account that received access." There is no passcode, no email-domain gate a viewer can pass without an account, no link-only private mode, and no documented expiry. So `report.yourstudio.com` on a ChatGPT Site is either open to the whole internet or closed to anyone not signed in to an invited ChatGPT account; there is no setting for a client who will not create one.

 The publishing side is also unchanged: Sites is created and managed in conversation, with no documented API, MCP surface, or CLI, and no documented export. And built-in analytics (visitors and page views) is not available for Enterprise-owned sites. None of this is a flaw if the site is a team tool or a public microsite; it only bites when the page is a private deliverable.

## Client work on your own domain, with a gate

 This section describes Stacktree, our product, so read it as us explaining where we fit. The case Sites does not cover is the common one in client work: a page at `reports.yourstudio.com` that one named person outside your company can open, with no account, and that nobody else can find. The route:

  - Get the deliverable as a single HTML file. There is no documented Site export, so do not try to move the Site. Ask ChatGPT for a static, single-file HTML rendering of the page, or have an agent produce it directly.
 - Publish it to Stacktree. Drag and drop, or over MCP from Claude, Codex, or Cursor. The URL is unguessable and never indexed by default.
 - Gate it. Add a passcode (on every plan, including free) or restrict viewing to the client's company email domain (paid). The client types a code or their work email; no account exists to create.
 - Bind your domain. Add the hostname, create the CNAME and TXT records it gives you, and SSL provisions automatically through Cloudflare for SaaS. Solo ($19 per month) includes 1 domain, Studio ($79) 10, Firm 25, and a domain re-binds to any page whenever the next engagement starts.
  Because a Stacktree page updates in place, revising the deliverable never changes the URL under the domain. And if the client gets more than one deliverable, bind the hostname to a [client space](/client-spaces) instead of a single page: `acme.yourstudio.com` then serves everything filed for that client behind one passcode. The full DNS detail, including claiming a parent domain once with a wildcard CNAME, is on [the custom domains page](/custom-domains).

 To be fair about the trade: Stacktree hosts static HTML only, with no server logic or database. If what you built is a live application and the audience is the open internet or your own team, ChatGPT Sites now handles the domain natively and there is no reason to leave. The route above exists for the audience Sites does not serve: gated, account-free, on your domain.

FAQ

## Frequent questions

     Can a ChatGPT Site have a custom domain? +  Yes, where the feature is available. OpenAI's documentation describes connecting an apex domain or a subdomain you already own to a ChatGPT Site by updating DNS records. The stated exceptions: Enterprise-owned sites do not get custom domains at launch, and the docs hedge that availability can depend on your plan, region, and workspace settings.   How do I add a custom domain to a ChatGPT Site? +  Connect a domain you already own from the site's settings, then update the DNS records at your registrar. OpenAI documents the connection as a DNS update rather than a transfer, so the domain stays registered where it is. The docs do not publish a general DNS reference naming the exact record types; the specifics arrive when you run the connect flow, and ordinary DNS propagation applies.   Which ChatGPT plans get custom domains for Sites? +  Creating a Site needs a paid plan: OpenAI's help center lists every plan except Free and Go. Custom domains are documented "where available" rather than per plan, with one stated exclusion, Enterprise-owned sites at launch. In a hands-on test in August 2026 the custom-domain option was offered on a personal account's site settings.   What URL does a ChatGPT Site get without a custom domain? +  An address under chatgpt.site. Launch-era sites published at {name}.openai.chatgpt.site; by August 2026 new sites published at a user-namespaced address like {site}.{account}.chatgpt.site. Renaming a site keeps old links working through an HTTP 307 redirect that carries routes and query strings, though a 307 is temporary and never tells search engines the move is permanent.   Can I password-protect a ChatGPT Site on my own domain? +  Not within Sites. A Site is either public or restricted to signed-in, invited viewers. Since September 2026 you can invite a named person outside your workspace, but they must sign in with the ChatGPT account that received the invitation; no passcode or email-domain gate is documented for viewers without accounts, and no expiry either. If the page must sit on your domain behind a gate a client passes with no account, host the HTML on Stacktree instead: passcodes are on every plan including free, and email-domain gates plus custom domains start on Solo at $19 per month.   Can an agent publish to a custom domain automatically? +  Not through ChatGPT Sites: it is created and managed in conversation, with no documented API, MCP surface, or CLI. If the publisher is an agent pipeline, have it publish the HTML over MCP to Stacktree and bind the domain there. An agent without a subscription can rent a single domain slot for $5 per 30 days over x402, settled in USDC with no card and no human in the loop.
Keep reading

## Related guides

   -  [ Codex Sites is now ChatGPT Sites Codex Sites went GA as ChatGPT Sites on 9 July 2026: every paid plan, public publishing, custom domains. ](/blog/sites-in-codex-explained)
-  [ Custom domains on Stacktree CNAME plus TXT, automatic SSL, re-bindable, and the wildcard parent-domain claim. ](/custom-domains)
-  [ ChatGPT Sites explained The living status post: cost, access, domains, privacy, and what is still undocumented. ](/blog/what-is-chatgpt-sites)
-  [ Sharing a ChatGPT Site with a client The audience question in full: a signed-in invited viewer or the open web, and the account-free option. ](/blog/share-chatgpt-site-with-client)
-  [ Can a Codex Site have a custom domain? The workspace-era predecessor, where the answer was simply no. ](/blog/codex-sites-custom-domain)
-  [ Client spaces One address per client, every deliverable behind it, one passcode. ](/client-spaces)
-  [ Pricing Solo at $19/mo includes 1 custom domain; Studio at $79 includes 10. ](/pricing)

References

## Sources and further reading

   -  [ ChatGPT Sites documentation ↗ OpenAI's docs: custom domains (apex or subdomain via DNS, "where available", not Enterprise-owned sites at launch), the four sharing options including named external viewers who must sign in, and versioned same-URL deploys. ](https://learn.chatgpt.com/docs/sites)
-  [ OpenAI Help Center: Creating and managing ChatGPT Sites ↗ Plan availability (every paid plan except Free and Go), the regional rollout, and the rule that invited visitors must sign in with the account that received access. ](https://help.openai.com/en/articles/20001339-creating-and-managing-chatgpt-sites)
-  [ ChatGPT Sites update: 5M sites, private sharing, custom domains (@ChatGPT) ↗ The 11 September 2026 announcement: invite teammates to edit, invite specific people to a private Site, database inspection, custom domains. ](https://x.com/ChatGPT/status/2098457920291946894)
-  [ Cloudflare for SaaS: custom hostnames ↗ The mechanism Stacktree uses to verify hostnames and issue certificates for customer domains. ](https://developers.cloudflare.com/cloudflare-for-platforms/cloudflare-for-saas/)

##  Your domain, your gate, no account for the client.

 Publish the HTML, add a CNAME and a TXT record, send one link. Custom domains start on Solo at $19 a month.

 [ Sign up free → ](https://app.stacktr.ee/?join=1&from=cta_chatgpt_sites_custom_domain)   install npx stacktree-install
Copy
       Private hosting for the HTML your agents make.

[](https://betalist.com/startups/stacktree?utm_campaign=badge-stacktree&utm_medium=badge&utm_source=badge-featured)[Featured on](https://devhunt.org/tool/stacktree)[](https://buildlist.io)[Get started free](https://app.stacktr.ee/?join=1)

## Product

- [Templates](/templates)
- [Example deliverables](/examples)
- [Custom domains](/custom-domains)
- [Client feedback](/client-feedback-loop)
- [One-time links](/one-time-view-links)
- [See how pages get read](/page-engagement)
- [Made with Stacktree](/made-with)
- [Security](/security)
- [Watch the demo](/demo)

## Agents

- [All integrations](/agents)
- [Claude Code](/claude-code)
- [OpenAI Codex](/codex)
- [Cursor](/cursor)
- [Claude.ai connector](/claude-ai-connector)
- [MCP server](/mcp-publish-html)
- [Deploy from Claude Code](/deploy-html-from-claude-code)
- [Skills](/skills)
- [Slack app](/slack)
- [n8n node](/n8n)
- [Agent payments (x402)](/x402)

## Alternatives

- [All comparisons](/alternatives)
- [Head-to-head comparisons](/compare)
- [Tiiny Host](/tiiny-host-alternative)
- [GitHub Pages (private)](/github-pages-private-alternative)
- [Vercel](/vercel-alternative-for-agents)
- [ngrok](/ngrok-alternative-for-html)
- [Display.dev](/display-dev-alternative)
- [Static.app](/static-app-alternative)
- [OpenAI Codex Sites](/openai-codex-sites-alternative)
- [here.now](/here-now-alternative)
- [Shippage](/shippage-ai-alternative)
- [Best private hosting](/best-private-html-hosting)

## Use cases

- [All use cases](/use-cases)
- [Share with clients](/share-with-clients)
- [Send a file to a client](/share-html-file-with-client)
- [Share Claude artifacts](/share-claude-artifacts)
- [Share Jupyter notebooks](/share-jupyter-notebook-html)
- [Host Storybook privately](/host-storybook-privately)
- [Architecture diagrams](/share-architecture-diagrams)
- [AI-generated reports](/host-ai-reports)
- [Internal HTML tools](/internal-tool-hosting)
- [Private HTML hosting](/private-html-hosting)
- [Vibe-coded page hosting](/vibe-coding-hosting)
- [Leave a website builder](/website-builder-migration)

## Learn

- [Blog](/blog)
- [Glossary](/glossary)
- [FAQ](/faq)
- [Agent-loop hosting](/agent-loop-hosting)
- [Why agents need a publish primitive](/blog/why-agents-need-a-publish-primitive)
- [MCP servers explained](/blog/mcp-servers-explained-for-developers)
- [What changed in the 2026-07 MCP spec](/blog/mcp-2026-spec-changes)
- [Sites in Codex explained](/blog/sites-in-codex-explained)
- [Private-by-default hosting](/blog/private-by-default-html-hosting)
- [An agent paid us $1 (x402)](/blog/agent-paid-to-provision-itself)
- [When a loop hits a paywall](/blog/loop-engineering-paywall)
- [Pricing](/pricing)
- [Self-host (new)](/self-host)
- [Changelog](/changelog)
- [Docs](https://stacktr.ee/docs)
- [About](/about)
© 2026 Stacktree · stacktr.ee

[Privacy](/privacy)[Terms](/terms)[Security](/security)[Dashboard](https://app.stacktr.ee)[npm](https://www.npmjs.com/package/stacktree-mcp)[Sitemap](/sitemap.xml)[llms.txt](/llms.txt)[API spec](/openapi.json)

---
Full markdown summary of the Stacktree marketing surface: https://stacktr.ee/llms-full.txt
