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

# Custom Domains

> Connect a custom domain to serve your AI agent under your own brand instead of the default URL.

Connect a custom domain (e.g., `chat.yourcompany.com`) to serve your agent under your own brand instead of the default `dashboard.tinytalk.ai` URL.

The **Pro** plan includes one custom domain. All other paid plans can add custom domains as a paid add-on. Each add-on covers one custom domain record — if you want custom domains on multiple agents, you'll need an add-on for each.

An agent can be connected to multiple custom domains simultaneously.

<Info>
  Custom domains must be a subdomain (e.g., `chat.example.com`), not a root domain (e.g., `example.com`).
</Info>

## Setup

### 1. Add your subdomain in the dashboard

Go to your agent's **Settings → Domains → Custom Domains** and enter your desired subdomain (e.g., `chat.yourcompany.com`).

Tiny Talk will generate two DNS records for you to configure:

| Record type | Host                          | Value                          |
| ----------- | ----------------------------- | ------------------------------ |
| CNAME       | Your subdomain (e.g., `chat`) | `proxy.tinytalk.ai`            |
| TXT         | `_verify-[code]`              | `tinytalk-verification=[code]` |

### 2. Add DNS records at your domain provider

Add both records at your domain registrar or DNS provider. Here are instructions for common providers:

<AccordionGroup>
  <Accordion title="GoDaddy">
    1. Go to **My Products → Domains → DNS**
    2. Click **Add** for each record type
    3. Enter the CNAME and TXT records from the dashboard
    4. Save

    See [GoDaddy's DNS guide](https://www.godaddy.com/help/manage-dns-records-680) for details.
  </Accordion>

  <Accordion title="Namecheap">
    1. Go to **Domain List → Manage → Advanced DNS**
    2. Under **Host Records**, add the CNAME and TXT records
    3. Save changes

    See [Namecheap's CNAME guide](https://www.namecheap.com/support/knowledgebase/article.aspx/9646/2237/how-to-create-a-cname-record-for-your-domain/) for details.
  </Accordion>

  <Accordion title="Cloudflare">
    1. Go to the **DNS** tab for your domain
    2. Add the CNAME and TXT records
    3. Set the CNAME record to **DNS only** (grey cloud icon)

    <Warning>
      Do **not** enable Cloudflare's proxy (orange cloud) for the CNAME record — this will interfere with SSL certificate provisioning. If you use Cloudflare's SSL settings, set the mode to **Full (strict)**.
    </Warning>

    See [Cloudflare's DNS guide](https://developers.cloudflare.com/dns/manage-dns-records/how-to/create-dns-records/) for details.
  </Accordion>

  <Accordion title="Google Domains">
    1. Select your domain and click **DNS**
    2. Under **Custom records**, add the CNAME and TXT records
    3. Save

    See [Google's CNAME guide](https://knowledge.workspace.google.com/admin/domains/add-a-cname-record-to-your-domains-dns-records) for details.
  </Accordion>
</AccordionGroup>

<Tip>
  Set a low TTL (e.g., 300 seconds) during setup so DNS changes propagate faster. You can increase it after verification.
</Tip>

### 3. Verify

Return to the Tiny Talk dashboard and click **Verify**. DNS changes typically take a few minutes to 24 hours to propagate, though some providers may take up to 48 hours.

You can monitor propagation using a tool like [dnschecker.org](https://dnschecker.org).

### 4. SSL

Tiny Talk automatically provisions an SSL certificate via Let's Encrypt once your domain is verified. The certificate renews automatically — no action needed on your end.

Once setup is complete, you can serve both the SDK script and the widget from your custom domain. Update your [embed code](/install) to use your custom domain instead of the default Tiny Talk CDN:

```html theme={null}
<script
  src="https://chat.yourcompany.com/latest/tiny-talk-sdk.min.umd.js"
  data-tiny-bot-id="YOUR_BOT_ID"
  defer
></script>
```

For ES module imports:

```javascript theme={null}
import { createTinyBot } from 'https://chat.yourcompany.com/latest/tiny-talk-sdk.min.esm.js';
```

<Tip>
  Using your custom domain for the SDK script means visitors won't see any third-party URLs in network requests — everything loads from your own domain.
</Tip>

## Troubleshooting

<AccordionGroup>
  <Accordion title="SSL certificate not provisioning">
    Tiny Talk uses Let's Encrypt for SSL certificates. If your domain has **CAA records** configured, you must add a record allowing Let's Encrypt to issue certificates:

    ```
    0 issue "letsencrypt.org"
    ```

    If you're using Cloudflare, ensure the CNAME proxy is off (grey cloud) and SSL mode is set to **Full (strict)**.
  </Accordion>

  <Accordion title="Verification failing">
    * Confirm both the CNAME and TXT records are added correctly at your DNS provider
    * Double-check for typos in the record values
    * Wait for DNS propagation — use [dnschecker.org](https://dnschecker.org) to verify your records are visible globally
  </Accordion>
</AccordionGroup>

## Removing a custom domain

If you disconnect a custom domain, remember to delete the CNAME and TXT records from your DNS provider to keep your DNS configuration clean.
