# RevCent MCP Guide: `InitializeTrackingDomainDNS`

AI/MCP-focused guide for initializing DNS tracking for a RevCent Tracking Domain.

This document explains the `InitializeTrackingDomainDNS` operation, why it exists, when to run it, required prerequisites, how it depends on SSL, what RevCent verifies, and how to confirm the Tracking Domain is ready for use.

---

## Related Documentation

AI/MCP clients should also read these related files:

| Operation / Overview | Link | Why It Matters |
|---|---|---|
| Tracking Domain Overview | `https://revcent.com/documentation/markdown/mcp/operation/OverviewTrackingDomain.md` | Broad context for Tracking Domains, DNS tracking, visitor attribution, URL parameters, metadata, Track.js, WooCommerce tracking, and reporting. |
| CreateTrackingDomain | `https://revcent.com/documentation/markdown/mcp/operation/CreateTrackingDomain.md` | Explains the full setup lifecycle: create domain, add A records, initialize SSL, add CNAME records, initialize DNS. |
| GetTrackingDomain | `https://revcent.com/documentation/markdown/mcp/operation/GetTrackingDomain.md` | Retrieves A records, SSL status, CNAME records, DNS status, and current Tracking Domain configuration. |
| InitializeTrackingDomainSSL | `https://revcent.com/documentation/markdown/mcp/operation/InitializeTrackingDomainSSL.md` | Initializes SSL and returns required CNAME records. |
| InitializeTrackingDomainDNS | `https://revcent.com/documentation/markdown/mcp/operation/InitializeTrackingDomainDNS.md` | Completes DNS tracking setup after A records, SSL, and CNAME records are ready. |
| EditTrackingDomain | `https://revcent.com/documentation/markdown/mcp/operation/EditTrackingDomain.md` | Edits name, description, URL Parameter Sets, or legacy URL parameters. |
|


---

## Operation Summary

Operation:

```text
InitializeTrackingDomainDNS
```

Title:

```text
Initialize DNS for A Tracking Domain
```

Purpose:

```text
Initialize DNS for a specific Tracking Domain using the Tracking Domain ID.
```

This operation completes the DNS tracking setup process for a Tracking Domain.

It should be run only after:

```text
CreateTrackingDomain
    ↓
Add A records
    ↓
InitializeTrackingDomainSSL
    ↓
Add CNAME records
    ↓
SSL certificate is issued
    ↓
InitializeTrackingDomainDNS
```

`InitializeTrackingDomainDNS` is the final initialization step before the Tracking Domain is ready for use.

---

## Why DNS Initialization Is Required

A Tracking Domain is not ready immediately after creation.

It becomes ready only after:

- A records exist in DNS,
- SSL has been initialized,
- CNAME records have been added,
- SSL certificate has been issued,
- DNS initialization verifies the necessary DNS records.

`InitializeTrackingDomainDNS` tells RevCent to verify the required DNS records and complete the DNS tracking initialization process.

Simple purpose:

```text
InitializeTrackingDomainDNS = verify records + complete DNS tracking setup
```

---

## Must Be Run After SSL

`InitializeTrackingDomainDNS` should be run after SSL setup is complete.

The live operation instructions state that the user must have:

1. added the necessary A records,
2. initialized SSL with `InitializeTrackingDomainSSL`,
3. added the required CNAME records,
4. then run `InitializeTrackingDomainDNS`.

Important:

```text
Do not run InitializeTrackingDomainDNS before InitializeTrackingDomainSSL.
Do not run InitializeTrackingDomainDNS before CNAME records are added.
Do not run InitializeTrackingDomainDNS before ssl.status = ISSUED.
```

Correct prerequisite:

```text
ssl.status = ISSUED
```

Use `GetTrackingDomain` to confirm SSL status before running DNS initialization.

---

## Correct Setup Sequence

The full setup sequence is:

```text
1. CreateTrackingDomain
2. Add A records returned by CreateTrackingDomain/GetTrackingDomain
3. InitializeTrackingDomainSSL
4. Add CNAME records returned in ssl.cname_records
5. Confirm ssl.status = ISSUED
6. InitializeTrackingDomainDNS
7. Confirm dns.status = COMPLETE
```

A Tracking Domain is ready when:

```text
ssl.status = ISSUED
dns.status = COMPLETE
```

---

## Prerequisites

Before calling `InitializeTrackingDomainDNS`, verify:

- Tracking Domain exists,
- `tracking_domain_id` is known,
- A records have been added to the root domain DNS,
- `InitializeTrackingDomainSSL` has been run,
- CNAME records from `ssl.cname_records` have been added to DNS,
- SSL status is `ISSUED`,
- the user controls DNS for the root domain,
- enough DNS propagation time has passed.

Use:

```text
GetTrackingDomain
```

to check:

- `a_records`,
- `ssl.status`,
- `ssl.cname_records`,
- `dns.status`.

---

## Input Schema

`InitializeTrackingDomainDNS` requires:

| Field | Type | Required | Description |
|---|---:|---:|---|
| `tracking_domain_id` | string | Yes | 20-character Tracking Domain ID. |

Example request:

```json
{
  "tracking_domain_id": "TTTTTTTTTTTTTTTTTTTT"
}
```

Only send supported fields.

---

## Output Schema

Successful output can include:

| Field | Type | Description |
|---|---:|---|
| `api_call_id` | string | 20-character API call ID. |
| `api_call_unix` | integer | Unix timestamp when the API call was initiated. |
| `code` | integer | API response code. `1` indicates success. |
| `tracking_domain_id` | string | 20-character Tracking Domain ID. |
| `result` | string | Result message. |

After running this operation, use `GetTrackingDomain` to confirm:

```text
dns.status = COMPLETE
```

---

## What RevCent Verifies

When `InitializeTrackingDomainDNS` runs, RevCent verifies that all necessary DNS records are present.

The operation description states:

```text
RevCent will verify that all necessary DNS records are present before completing the initialization process.
```

If records are missing:

```text
RevCent returns an error.
```

If all required records are present and SSL certificate has been issued:

```text
RevCent completes initialization and the Tracking Domain is ready for use.
```

---

## DNS Status Values

Use `GetTrackingDomain` to inspect:

```text
dns.status
```

Possible DNS status values:

| Status | Meaning | AI/MCP Guidance |
|---|---|---|
| `AWAITING_SSL` | DNS setup is waiting for SSL status `ISSUED`. | Finish SSL/CNAME validation first. |
| `NOT_INITIALIZED` | DNS setup has not started. | Run `InitializeTrackingDomainDNS` only after SSL is issued. |
| `PENDING` | DNS initialization is in progress. | Wait and check again with `GetTrackingDomain`. |
| `COMPLETE` | DNS tracking setup is complete and ready to use. | Tracking Domain is DNS-ready. |

Do not call the domain ready unless:

```text
dns.status = COMPLETE
```

---

## SSL Status Dependency

Use `GetTrackingDomain` to inspect:

```text
ssl.status
```

Relevant values:

| SSL Status | Meaning | DNS Initialization Guidance |
|---|---|---|
| `NOT_INITIALIZED` | SSL setup has not started. | Run `InitializeTrackingDomainSSL` first after A records are added. |
| `PENDING_VALIDATION` | Waiting for CNAME validation. | Add/verify CNAME records; do not initialize DNS yet. |
| `VALIDATION_TIMED_OUT` | CNAME validation timed out. | Fix CNAME records/reset/retry SSL before DNS initialization. |
| `ISSUED` | SSL certificate issued. | Safe to run `InitializeTrackingDomainDNS`. |
| `FAILED` | SSL issuance failed. | Fix SSL setup before DNS initialization. |

Required:

```text
ssl.status = ISSUED
```

---

## Recommended AI/MCP Workflow

```text
1. User asks to complete DNS tracking setup.
2. Use GetTrackingDomain.
3. Confirm A records exist and were added to DNS.
4. Confirm ssl.cname_records exist and were added to DNS.
5. Confirm ssl.status = ISSUED.
6. If SSL is not issued, do not run DNS initialization.
7. If SSL is issued, call InitializeTrackingDomainDNS.
8. Use GetTrackingDomain to verify dns.status.
9. When dns.status = COMPLETE, tell the user the Tracking Domain is DNS-ready.
```

---

## When Not to Run

Do not run `InitializeTrackingDomainDNS` when:

- the Tracking Domain does not exist,
- A records have not been added,
- `InitializeTrackingDomainSSL` has not been run,
- CNAME records have not been added,
- SSL status is not `ISSUED`,
- DNS is already `COMPLETE`,
- the user is trying to edit name/description/URL parameters,
- the user is trying to report on attribution,
- the root domain is wrong.

Use the correct operation instead:

| Situation | Correct Operation |
|---|---|
| Tracking Domain does not exist | `CreateTrackingDomain` |
| Need A records | `GetTrackingDomain` |
| Need to start SSL | `InitializeTrackingDomainSSL` |
| Need CNAME records | `InitializeTrackingDomainSSL` response or `GetTrackingDomain` |
| Need to edit name/parameters | `EditTrackingDomain` |
| Need to report attribution | `BigQueryRunQuery` |

---

## Example: Correct DNS Initialization Flow

```text
CreateTrackingDomain
    ↓
User adds A records
    ↓
InitializeTrackingDomainSSL
    ↓
User adds CNAME records
    ↓
GetTrackingDomain confirms ssl.status = ISSUED
    ↓
InitializeTrackingDomainDNS
    ↓
GetTrackingDomain confirms dns.status = COMPLETE
```

Example request:

```json
{
  "tracking_domain_id": "TTTTTTTTTTTTTTTTTTTT"
}
```

---

## Tracking Domain Ready Definition

A Tracking Domain is ready for use only when both conditions are true:

```text
ssl.status = ISSUED
dns.status = COMPLETE
```

Use `GetTrackingDomain` to confirm.

Do not say the domain is ready if:

- SSL is `PENDING_VALIDATION`,
- SSL is `NOT_INITIALIZED`,
- SSL failed,
- DNS is `AWAITING_SSL`,
- DNS is `NOT_INITIALIZED`,
- DNS is `PENDING`.

---

## After DNS Initialization

After DNS initialization is complete, the Tracking Domain can support RevCent DNS tracking and attribution workflows.

Next steps may include:

- install/configure RevCent Track.js where applicable,
- enable WooCommerce/plugin DNS tracking where applicable,
- confirm visitor ID handling,
- confirm URL Parameter Sets or URL parameters,
- test a tracked visit,
- test conversion attribution,
- confirm metadata is attached to Sales,
- build BigQuery reports by attribution metadata.

Remember:

```text
InitializeTrackingDomainDNS completes DNS readiness.
It does not install Track.js or configure site/plugin visitor handling by itself.
```

---

## WooCommerce / Third-Party Shop Guidance

For WooCommerce stores, a DNS-complete Tracking Domain helps RevCent attach visitor and URL parameter metadata to Sales and their lifecycle.

Correct setup goal:

```text
WooCommerce store domain is DNS-complete in RevCent
    ↓
Visitor tracking and URL parameters are captured
    ↓
Sales can include attribution metadata
    ↓
Reports can show origination and lifecycle of sales
```

After DNS is complete, confirm the WooCommerce plugin or site integration is configured to use RevCent tracking correctly.

---

## Troubleshooting

### Error: Missing DNS Records

If RevCent returns an error that DNS records are missing:

```text
1. Use GetTrackingDomain.
2. Review a_records.
3. Review ssl.cname_records.
4. Confirm the user added all records to DNS.
5. Check DNS provider formatting.
6. Allow DNS propagation.
7. Retry InitializeTrackingDomainDNS after records are correct.
```

### DNS Status Is `AWAITING_SSL`

This means SSL is not ready.

Recommended:

```text
1. Check ssl.status with GetTrackingDomain.
2. If NOT_INITIALIZED, run InitializeTrackingDomainSSL.
3. If PENDING_VALIDATION, verify CNAME records.
4. If VALIDATION_TIMED_OUT or FAILED, fix/reset/retry SSL where applicable.
5. Only run DNS initialization after ssl.status = ISSUED.
```

### DNS Status Is `PENDING`

DNS initialization is in progress.

Recommended:

```text
Use GetTrackingDomain to check again after a reasonable propagation/processing period.
```

### DNS Status Is `COMPLETE`

The Tracking Domain is DNS-ready.

Recommended next steps:

```text
Configure Track.js / plugin tracking.
Verify visitor tracking.
Verify conversion attribution.
Verify URL parameter metadata.
```

---

## Best Practices

1. Always run `GetTrackingDomain` before DNS initialization.
2. Confirm A records are added.
3. Confirm SSL was initialized.
4. Confirm CNAME records are added.
5. Confirm `ssl.status = ISSUED`.
6. Only then call `InitializeTrackingDomainDNS`.
7. Verify with `GetTrackingDomain` after running.
8. Do not describe the domain as ready until `dns.status = COMPLETE`.
9. Remind users DNS propagation can take time.
10. Keep DNS setup separate from URL parameter configuration.
11. Use the Tracking Domain overview for broader tracking/conversion context.
12. Use the CreateTrackingDomain guide for the full setup lifecycle.

---

## Common Mistakes to Avoid

Do not:

- run DNS initialization before SSL initialization,
- run DNS initialization before CNAME records are added,
- run DNS initialization before SSL is issued,
- confuse A records with CNAME records,
- assume DNS propagation is instant,
- ignore RevCent missing-record errors,
- call the Tracking Domain DNS-ready too early,
- use DNS initialization to edit URL parameters,
- use DNS initialization to install Track.js,
- use DNS initialization for reporting,
- try to fix wrong root domain with DNS initialization.

---

## AI/MCP Decision Guide

| User Intent | Correct Action |
|---|---|
| Complete DNS tracking setup | Use `InitializeTrackingDomainDNS` after SSL is issued. |
| Start SSL setup | Use `InitializeTrackingDomainSSL`. |
| Retrieve A/CNAME records | Use `GetTrackingDomain`. |
| Check SSL status | Use `GetTrackingDomain`. |
| Check DNS status | Use `GetTrackingDomain`. |
| DNS status is `AWAITING_SSL` | Finish SSL setup first. |
| SSL status is `ISSUED` and records are added | Run `InitializeTrackingDomainDNS`. |
| DNS status is `COMPLETE` | Tracking Domain is DNS-ready. |
| Change URL parameters | Use `EditTrackingDomain`. |
| Report attribution | Use `BigQueryRunQuery`. |

---

## Final AI/MCP Instruction

Use `InitializeTrackingDomainDNS` only after the Tracking Domain has been created, A records have been added, SSL has been initialized, CNAME records have been added, and `ssl.status = ISSUED`.

This operation verifies the necessary DNS records and completes DNS tracking setup. After running it, use `GetTrackingDomain` to confirm `dns.status = COMPLETE`.

A Tracking Domain is ready for use only when:

```text
ssl.status = ISSUED
dns.status = COMPLETE
```

Do not run `InitializeTrackingDomainDNS` before completing SSL setup.


---
Document Parent Directory
* [Operations](https://revcent.com/documentation/markdown/mcp/operation/index.md) - AI/MCP details and overviews for operations available within the RevCent MCP.