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

# Domain Verification

> Prove ownership of the domains you're testing

Before Mjolnir starts a run, you must verify that you own or are authorised to test the target domains. This is a one-time step per domain — once verified, you don't need to re-verify for future runs.

You can verify domains in four ways. The wizard will pick the most convenient one for your DNS setup automatically, but you can always switch tabs and use a different method.

***

## Method 1: One-click DNS (Domain Connect)

If your DNS is managed by **Cloudflare** (or another [Domain Connect](https://www.domainconnect.org/)-supporting provider), Mjolnir can add the verification record for you. This is by far the fastest option.

Mjolnir automatically detects whether your domain supports one-click setup. If it does, you'll see a panel offering **Continue to Cloudflare** (or **Continue** for other providers) above the manual verification tabs.

<Steps>
  <Step title="Click Continue">
    The setup wizard opens your DNS provider's Domain Connect consent page in a new tab.
  </Step>

  <Step title="Approve the request">
    Sign in to your DNS provider (e.g. Cloudflare) and approve the request to add the verification record. Mjolnir's apply URL is RSA-SHA256 signed so your provider can verify the request originates from Borg.
  </Step>

  <Step title="Return to Odin">
    You're redirected back to the setup wizard. Verification then runs automatically and the domain status flips to ✅ Verified within a few seconds.
  </Step>
</Steps>

<Info>
  Mjolnir requests only the DNS records it needs for verification. It never asks for broader DNS or account permissions.
</Info>

If your domain's DNS provider doesn't expose a Domain Connect endpoint, this panel doesn't appear and you'll need to use one of the manual methods below.

***

## Method 2: TXT record

Add a TXT record to your domain's DNS.

| Field | Value                                |
| ----- | ------------------------------------ |
| Type  | `TXT`                                |
| Name  | `_borg-verify.{your-domain}`         |
| Value | `borg-verify={your-generated-token}` |

The exact values are generated for your organisation and shown in the setup wizard. Copy them directly from there.

<Tip>
  If your DNS provider doesn't support custom record names, you can place the TXT record on the root domain instead — Mjolnir will find it either way.
</Tip>

TXT records typically propagate within a few minutes but can take up to 48 hours in rare cases. Most DNS providers update within 5–10 minutes.

**Cloudflare users**: the wizard offers a one-click "Open Cloudflare DNS" link next to the TXT instructions that takes you straight to the DNS records page for your domain.

***

## Method 3: CNAME record

Add a CNAME record to your domain's DNS configuration.

| Field | Value                                  |
| ----- | -------------------------------------- |
| Type  | `CNAME`                                |
| Name  | `{your-generated-token}.{your-domain}` |
| Value | `verify.borg.{your-generated-token}`   |

Both values are generated for your organisation — copy them from the wizard.

**How to add a CNAME record:**

<AccordionGroup>
  <Accordion title="Cloudflare">
    1. Go to your domain in the Cloudflare dashboard
    2. Click **DNS > Records > Add record**
    3. Set Type to `CNAME`, Name to the provided value, and Target to the provided value
    4. Set Proxy status to **DNS only** (grey cloud). Proxied CNAME records won't resolve correctly for verification.
    5. Click **Save**
  </Accordion>

  <Accordion title="AWS Route 53">
    1. Open the Route 53 console and go to **Hosted zones**
    2. Select your domain and click **Create record**
    3. Set Record type to `CNAME`, Record name to the provided value, and Value to the provided value
    4. Click **Create records**
  </Accordion>

  <Accordion title="GoDaddy">
    1. Log in and go to **My Products > DNS**
    2. Click **Add** and select `CNAME`
    3. Fill in the Name and Value fields with the provided values
    4. Click **Save**
  </Accordion>
</AccordionGroup>

***

## Method 4: File upload

Host a specific text file at a known URL on your domain.

**Place the file at:**

```text theme={null}
https://{your-domain}/.well-known/borg-verification.txt
```

**File contents:**

```text theme={null}
{your-generated-token}
```

The file should be publicly accessible over HTTPS, return a `200` status code, and contain only the token (no extra whitespace or HTML).

<Tip>
  This method is useful if you don't have access to DNS but can deploy a file to your web server or CDN.
</Tip>

***

## Verifying

Mjolnir polls each domain every few seconds while the step is open, so as soon as the record is in place the status flips automatically. You can also click **Retry** on any domain to check immediately.

**Status indicators:**

* 🔄 **Checking** — Mjolnir is looking for the record
* ✅ **Verified** — record found and validated
* ❌ **Failed** — record not found yet (try again after DNS propagation)

<Frame caption="A successful domain verification in the setup wizard">
  <img src="https://mintcdn.com/borgresearchas/PosxlzFQ8VizB4Dq/images/checks-passed.png?fit=max&auto=format&n=PosxlzFQ8VizB4Dq&q=85&s=c137d6b3de7200575d8b9f8cfdd68356" alt="Domain verification showing all checks passed" width="2321" height="388" data-path="images/checks-passed.png" />
</Frame>

If verification fails, double-check that:

* You used the exact values shown in the wizard (copy-paste, don't retype)
* DNS changes have had time to propagate (wait a few minutes and retry)
* The file is accessible over HTTPS without a redirect

If you're still having trouble, contact us at [mail@borghq.io](mailto:mail@borghq.io).

***

## After verification

Once every target domain is verified, the **Run Assessment** button becomes active. Click it to launch Mjolnir.

You'll be redirected to the live run dashboard, where you can watch the assessment as it runs.

<Info>
  Domain verification persists. Once a domain is verified, you don't need to re-verify it for future runs against the same domain.
</Info>
