# Use Your Own Subdomain

> Serve your Grovs links from a branded subdomain you control, like links.acme.com, with SSL included.

Source: https://docs.grovs.io/docs/links/custom-domains/use-your-own-subdomain

Links on a custom subdomain look like `https://links.acme.com/summer-sale` instead of using the default `*.sqd.link` host.

## Before you start

- An active paid plan. Without one, the dashboard prompts you to upgrade in **Settings → Usage & Billing**. See [Custom Domains](https://docs.grovs.io/docs/links/custom-domains#plans-and-billing).
- A subdomain you control, such as `links.acme.com`, and access to its DNS settings.

Submit the subdomain in Grovs before you change DNS. Grovs issues SSL first, and traffic only moves once DNS points at Grovs, so existing links keep working.

## Set up your subdomain

### 1. Open the Domain settings

Go to **Links → Link Settings → Domain** and click **Use your own subdomain**.

### 2. Enter your subdomain

Type the hostname, for example `links.acme.com`, and click **Add subdomain**. Grovs previews the full URL (`https://links.acme.com`).

Use ASCII characters only. Each project gets one custom subdomain.

### 3. Add the DNS records

Add each record Grovs shows at your DNS provider. Your provider may call **Host** "Name" or "Subdomain", and **Value** "Target" or "Points to".

| Checklist item                  | Record                   | Notes                                                                                           |
| ------------------------------- | ------------------------ | ----------------------------------------------------------------------------------------------- |
| **Hostname ownership verified** | `TXT` (if shown)         | If the hostname's DNS is already on Cloudflare, ownership completes once the CNAME is in place. |
| **SSL certificate issued**      | `TXT` for SSL validation | If an `_acme-challenge` record exists, replace its value or add another with the same name.     |
| **CNAME pointing to Grovs**     | `CNAME`                  | Add it once SSL is active. This record moves traffic to Grovs.                                  |

The checklist shows progress as it goes:

- _Preparing SSL validation TXT_: the record appears once Grovs creates it.
- _SSL validated, certificate deploying_: nothing to add. This usually takes a couple of minutes.
- _Waiting for DNS to point at Grovs_: the CNAME doesn't resolve yet.

> **Warning:** On Cloudflare DNS, set the CNAME to **DNS only** (gray cloud), not **Proxied** (orange cloud). A proxied record blocks the certificate and stops links from resolving.

### 4. Wait for activation

Status refreshes automatically as DNS propagates. Certificate issuance usually takes a few minutes. When the domain shows **Active**, new links resolve on your subdomain.

### 5. Update your mobile apps

Add the subdomain to each app and ship an updated build, so deep links open the app on the new host.

**iOS**

Add `applinks:links.acme.com` to the **Associated Domains** entitlement. See **Developers → SDK Setup → iOS**.

**Android**

Add the subdomain to your App Links **intent filters**. See **Developers → SDK Setup → Android**.

## Status reference

| Status                      | Meaning                                                                    |
| --------------------------- | -------------------------------------------------------------------------- |
| **Pending** / **Verifying** | DNS and SSL are still validating. Click **View setup** to see what's left. |
| **Active**                  | The subdomain is live and serving links.                                   |
| **Verification failed**     | Setup couldn't complete. Click **Fix** to review the records and retry.    |
| **Suspended**               | The subdomain is being removed.                                            |

## Remove a subdomain

In **Links → Link Settings → Domain**, click **Manage**, then **Remove**, and confirm. Removal is immediate: links stop resolving on the subdomain and fall back to your `*.sqd.link` host. You can add the subdomain again later.
