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

# Set Tracking Domain

> Set or change the tracking domain every sending domain uses

Set or change your company tracking domain. Every sending domain uses it for
tracked links and opens, so you set it up once.

* Any subdomain you control works, for example `links.example.com`. It does not
  have to share a root with your sending domains. A bare domain such as
  `example.com` is rejected because most DNS providers cannot hold a CNAME
  there.
* After saving, publish the returned `trackingDomain.cnameRecord`. Sending never
  waits for it: new emails use Sequenzy's shared tracking domain until it
  verifies. Check it right away with [Verify Tracking Domain](./verify).
* Saving the current hostname again only rechecks it.
* Changing to a new hostname restarts verification for the new one. The
  previous hostname keeps serving links in emails you already sent, as long as
  you keep its old CNAME record.

Requires the `companies:manage` scope and owner or admin access.

## Request

```bash theme={null}
curl -X PUT "https://api.sequenzy.com/api/v1/tracking-domain" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "domain": "links.example.com" }'
```

## Body

<ParamField body="domain" type="string" required>
  The tracking hostname, a subdomain such as `links.example.com`. A leading
  `https://` and a trailing path are ignored.
</ParamField>

## Response fields

<ResponseField name="message" type="string">
  The next step, usually the CNAME record to add.
</ResponseField>

<ResponseField name="trackingDomain" type="object">
  The saved tracking domain. See [Get Tracking Domain](./get) for its fields.
</ResponseField>

<ResponseExample>
  ```json 200 theme={null}
  {
    "success": true,
    "message": "Add a CNAME record for links.example.com pointing to links1.sequenzydns.com. Links use the shared tracking host until it verifies.",
    "trackingDomain": {
      "domain": "links.example.com",
      "status": "pending",
      "active": false,
      "everVerified": false,
      "sslStatus": "pending_validation",
      "verifiedAt": null,
      "lastCheckedAt": "2026-09-28T12:00:00Z",
      "error": null,
      "cnameRecord": {
        "type": "CNAME",
        "name": "links.example.com",
        "value": "links1.sequenzydns.com"
      }
    }
  }
  ```

  ```json 400 theme={null}
  {
    "error": "Use a subdomain for tracking, for example links.acme.com."
  }
  ```

  ```json 403 theme={null}
  {
    "error": "You have view-only access to this company. Contact the owner to request edit permissions."
  }
  ```

  ```json 409 theme={null}
  {
    "error": "This tracking domain is already connected."
  }
  ```

  ```json 503 theme={null}
  {
    "error": "Cloudflare for SaaS is not configured."
  }
  ```
</ResponseExample>

A `503` means the tracking provider could not register the hostname. Nothing
was saved, so you can retry the same request.
