# App addresses and custom domains

> Use returned addresses and explicit owned-domain setup.

- Canonical page: https://docs.userland.fun/guides/domains-and-slugs/
- Docs index for agents: https://docs.userland.fun/llms.txt

> **For agents:** Read the [complete native guide](/native-guide.md) and current `context.get` capabilities. Use only implemented operations and preserve exact Account, app and environment authority.

Use the generated production or protected-preview address returned by the operation. Do not construct one from an app ID or assume a historical demo URL remains valid. Custom slugs are not a native operation.

When advertised, `routes.set` attaches an owned custom production hostname. DNS ownership and certificate checks run as a separate operation so pending DNS does not hold the app writer. Follow the returned setup records and operation state; a submitted hostname is not an active address.

`routes.remove` closes that hostname's admission and reconciles its exact provider record. Cookie policy is explicit: the default remains host-isolated. The owned-site option requires ownership of the parent site and deliberate application cookie/CSRF configuration. Never claim a domain is ready before DNS, certificate and routing evidence confirms it.
