> For the complete documentation index, see [llms.txt](https://acoservice.gitbook.io/acoservice-documentation/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://acoservice.gitbook.io/acoservice-documentation/setting-up-your-tenant/custom-domain.md).

# Custom domain

Use your own domain like myaco.com instead of \<slug>.acoservice.app.

Every tenant gets a free `<your-slug>.acoservice.app` URL. To use your own domain (e.g. `myaco.com`), you add it on your ACO's Domains page in the console and point a CNAME at ACOService.

## Step 1 — Buy a domain (or use one you have)

Any registrar (Namecheap, Cloudflare, GoDaddy, etc.). The domain itself can be `.com`, `.io`, `.gg`, anything.

## Step 2 — Add the CNAME record at your DNS provider

In your DNS provider's dashboard, add a CNAME record:

| Field              | Value                                  |
| ------------------ | -------------------------------------- |
| Type               | `CNAME`                                |
| Host / Name        | `@` (root) **or** `www` (subdomain)    |
| Target / Points to | `acoservice.app` (the platform domain) |
| TTL                | `3600` (1 hour) is fine                |

If your registrar doesn't support CNAME on the root (`@`), use `www.myaco.com` instead and set up a redirect from root → `www`.

## Step 3 — Add the domain on your ACO's Domains page, then check DNS

Open your ACO in the [owner console](https://acoservice.app/owner) and go to its Domains page. Type your domain in **Add a domain you own** and press **Add**. It appears in your list of addresses, tagged custom.

Press **Check DNS**. It looks for a CNAME pointing at `acoservice.app` and tells you what it found: not resolving, resolving but pointing somewhere else, or pointing at the right place. DNS changes can take anywhere from a few minutes to 48 hours to show up, so a "does not resolve" result right after you add the record is normal. Re-run Check DNS until it agrees.

You can also check from a terminal:

```bash
dig +short myaco.com
```

You should see `acoservice.app` (or its IP) in the response. Or use [whatsmydns.net](https://whatsmydns.net) for a global view.

## Step 4 — Make it your primary domain

Once Check DNS shows your domain pointing at `acoservice.app`, press **Make primary**. The console uses your primary domain for things like the **Open admin console** link; your other addresses, including your `.acoservice.app` subdomain, keep working.

## Step 5 — Update your Discord OAuth redirects

This is **critical** and easy to forget. In your Discord OAuth app (see [Creating Your Discord OAuth App](/acoservice-documentation/setting-up-your-tenant/discord-application.md)):

* Add the new redirect URL: `https://myaco.com/api/auth/callback/discord`
* Keep the existing `https://<your-slug>.acoservice.app/api/auth/callback/discord` (so the subdomain still works as a fallback).

Save the Discord OAuth settings.

## Step 6 — Test the custom domain

Open `https://myaco.com` in a private window:

* Site loads with your branding.
* Sign-in works (no "redirect URI mismatch" error).

If sign-in errors out, you forgot Step 5. Add the redirect URL in Discord.

## SSL certificate

ACOService uses Cloudflare for SSL termination. Once your CNAME resolves, SSL automatically works for your domain. No manual cert provisioning.

If you see an SSL error after Check DNS reports the domain resolving:

* Wait another 10 minutes (Cloudflare may need to issue the cert).
* Check that you used a **CNAME** not an **A record**.
* Confirm the domain is actually added on your Domains page. Check DNS only checks a domain that is on your list.

## Multiple custom domains

You can have several, for example `myaco.com` and `myacogroup.com`. Add a CNAME for each one and add each on your Domains page. Discord OAuth needs the redirect URL added for each.

## Removing a custom domain

Press **Remove** on the domain's row in your Domains page. If it is your current primary domain, make another one primary first; the console will not remove the domain you are currently using as primary.

Remove the CNAME at your DNS provider too (or just point it elsewhere). After both, the domain stops working for ACOService. Your platform subdomain (`<slug>.acoservice.app`) keeps working; it can never be removed.

{% hint style="success" %}
**Custom domain live.** Last branding piece: [feature flags](/acoservice-documentation/setting-up-your-tenant/feature-flags.md).
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://acoservice.gitbook.io/acoservice-documentation/setting-up-your-tenant/custom-domain.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
