{"doc":"custom-domains","title":"Use your own domain","markdown":"# Use your own domain\n\nServe a game from an address your fans recognise, such as `play.myclub.com`, as\nwell as its own Gamestage address. You add a CNAME and a TXT record; Gamestage issues the\ncertificate, renews it, and checks the records for you.\n\n```\n$ gamestage domain add club-quiz play.myclub.com\nAdded play.myclub.com to club-quiz.\nCreate the records shown where you manage DNS for myclub.com:\n  CNAME  play  ->  domains.gamestage.ai\n  TXT  _gamestage.play  ->  gamestage-verify=3ef6a274-29bd-49b8-920c-51a9a7bb105d\nThen run: gamestage domain status club-quiz --watch\n```\n\nCustom domains come with the Publisher plan, which includes one, and with\nEnterprise by contract. On Starter a game keeps its own address,\n`https://<game id>.apps.gamestage.ai`.\n\n## Add a domain\n\n1. In Stage, open the game, then **Settings**, then **Custom domain**. Or run\n   `gamestage domain add <game> <hostname>`.\n2. Create both records shown: the CNAME and the TXT at `_gamestage.<hostname>`, where your domain's DNS is managed. If\n   somebody else manages it, **Copy instructions** gives you a message to send\n   them.\n3. Leave the panel open, or run `gamestage domain status <game> --watch`. The\n   records are usually found within minutes of being added, and the certificate\n   follows a few minutes later.\n\nThe game's Gamestage address keeps working throughout and afterwards.\n\n| Type | Name | Value |\n| --- | --- | --- |\n| `CNAME` | `play` or `play.myclub.com` | `domains.gamestage.ai` |\n| `TXT` | `_gamestage.play` or `_gamestage.play.myclub.com` | `gamestage-verify=3ef6a274-29bd-49b8-920c-51a9a7bb105d` |\n\nThese values show the shape for `play.myclub.com`. Copy your own TXT value from\nStage or the CLI, because each claim gets a new token. Some DNS hosts ask for\nthe short name; others ask for the full name.\n\nKeep the TXT record in place after your domain is live. It is checked again\nwhenever Gamestage starts serving the hostname, including when you claim it\nagain. Removing and adding the domain gives you a new token, even in the same\nworkspace, so replace the old TXT value with the new one.\n\nIf your CNAME is right but the TXT is missing or has the wrong value, Stage\nstays at **Waiting for DNS** and names `_gamestage.play.myclub.com` as the missing\nTXT record. Add the value shown, then press **Check now**. The CLI also prints\nthe TXT reason and both records; run `gamestage domain status club-quiz --watch`\nto check again. After 72 hours the status becomes **Failed** and Stage offers\n**Try again**.\n\n**Subdomains only.** A CNAME cannot sit on a domain's own name, so\n`myclub.com` itself cannot point at Gamestage yet. Use `play.myclub.com` or\n`www.myclub.com`.\n\n**CAA records.** If your domain has CAA records, add one allowing\n`amazon.com`, because the certificate is issued by Amazon. Without it the\ncertificate fails and the panel says so.\n\n## What each status means\n\n| Status | Means | What to do |\n| --- | --- | --- |\n| Waiting for DNS | The CNAME does not point to `domains.gamestage.ai`, or your claim’s TXT value is missing. The panel names the missing record. | Add the record, or correct it. |\n| Issuing certificate | Both records are right and the certificate is on its way. | Nothing. It usually takes a few minutes. |\n| Live | The game is served at your domain. | Nothing. |\n| Not pointing | It was live, and the record has since gone or changed. We email the workspace owner once. | Restore the record. |\n| Failed | No record for 72 hours, the certificate failed, or the hostname is attached to another CloudFront distribution. The reason is shown. | Fix what it names, then press **Try again**. |\n\nA domain Gamestage was already serving, or issuing a certificate for, before 21\nOctober 2026, when the TXT record was introduced, keeps working without one. If\nyou remove it and claim it again, add the TXT value shown for the new claim.\n\n## Move or remove a domain\n\nPublisher includes one domain per workspace, on one game. To put it on another\ngame, open that game's panel and press **Move it here**, or run\n`gamestage domain add <game> <hostname> --move`. Moving the same hostname keeps\nits certificate and token within your workspace.\n\n**Remove domain**, or `gamestage domain remove <game>`, stops serving the game\nat that address straight away. Fans on it stop reaching the game; its own\naddress keeps working.\n\n## Reference\n\n| Command | Does |\n| --- | --- |\n| `gamestage domain add <game> <hostname> [--move]` | Adds the domain and prints both records. `--move` takes your plan's domain off its other game. |\n| `gamestage domain status <game> [--watch]` | Checks the records and the certificate now. `--watch` checks every 15 seconds until live or failed. |\n| `gamestage domain remove <game>` | Removes the domain. |\n\nEvery command takes `--json`.\n"}