> ## Documentation Index
> Fetch the complete documentation index at: https://docs.contactbutton.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Pages and custom domains

> Publish a button.contact page, attach a verified custom domain with CNAME and TLS, and expose HTML, sitemap, manifest, llms.txt, and Agent Card discovery.

Every page receives a platform URL in the `button.contact` namespace. A verified custom domain can become canonical without removing the platform identity.

## Domain flow

1. Create a page and keep its UUID.
2. Create a domain under the same workspace and page.
3. Add the exact returned `cname_target` at your DNS provider.
4. Call the verification endpoint until the status is `verified`.
5. Enable the custom publish destination after certificate provisioning.

The API also returns `legacy_cname_target: button.contact` for existing installations. New domains should use the tokenized target so ownership can be verified without ambiguity.

<Warning>
  Before enabling new-domain creation, the platform operator must route the `*.domains.button.contact` wildcard to the Pages edge and provision its TLS certificate. Keep the legacy target available so existing customer CNAMEs continue to work.
</Warning>

## Discovery contract

Published pages provide semantic HTML, canonical metadata, schema.org JSON-LD, a sitemap entry, Markdown, a Contact Button manifest, `llms.txt`, and an A2A Agent Card. Custom domains expose the same paths at the domain root.

<Warning>
  Do not put credentials, private knowledge, unpublished form answers, or hidden integration configuration into public page metadata or agent instructions.
</Warning>


## Related topics

- [Attach a custom domain](/api-reference/domains/attach-a-custom-domain.md)
- [Detach a custom domain](/api-reference/domains/detach-a-custom-domain.md)
- [List custom domains](/api-reference/domains/list-custom-domains.md)
- [API quickstart](/quickstart.md)
- [Set up with a coding agent](/agents/coding-agents.md)
