NessGate

Verification Guide

To register or change a listing, NessGate asks you to prove you control your domain. When you submit the form on the homepage, you receive a unique code that looks like:

nessgate-verification=7f82a19c41d0…

Place that code using any one of the three options below, then click Verify Now. The code expires after 60 minutes and works once. After successful verification you can remove the file, record, or field — it is only needed during the check.

Is this safe? Yes — here is exactly what happens

Verification is deliberately designed so that there is nothing to trust us with. NessGate:

The verification code itself is a random string with no meaning. It is not a key, it grants no access to anything, and it expires within 60 minutes. The worst thing that can ever happen from placing it is that someone reads a random string — which is why the same technique (a token in /.well-known/ or a DNS TXT record) is the industry standard used by Google Search Console, Let's Encrypt, and Microsoft 365 for domain verification. You can delete the file or record immediately after verifying.

Option A — a file on your website

Create a plain-text file at:

https://yourdomain.com/.well-known/nessgate-verification.txt

containing exactly your code, e.g. nessgate-verification=7f82a19c41d0…

Typical hosting setups

HostingHow
Own server (Apache, Nginx)Create a folder named .well-known in your web root and put the file inside.
cPanel / PleskUse the File Manager: open your site's public folder (often public_html), create .well-known, add the file. Enable "show hidden files" if the folder is invisible.
WordPressUpload via your host's file manager or SFTP into the site root — not through the WordPress admin.
Vercel / Netlify / static hostsAdd .well-known/nessgate-verification.txt to your public (or output) folder and redeploy.
GitHub PagesCommit the file at .well-known/nessgate-verification.txt in your Pages branch.
Shopify / Wix / SquarespaceThese platforms usually don't allow arbitrary file uploads — use Option B (DNS) instead.

Check yourself: open the file's URL in a browser. If you can see the code, so can NessGate.

Option B — a DNS TXT record (works with every provider)

Add a TXT record in your domain's DNS settings:

FieldValue
TypeTXT
Name / Host_nessgate  (some providers want the full _nessgate.yourdomain.com)
Value / Contentnessgate-verification=YOUR_CODE
TTLDefault (or the lowest offered)

Where to find DNS settings at major providers

ProviderPath
CloudflareDashboard → your domain → DNS → Records → Add record
GoDaddyMy Products → your domain → DNS → Add New Record
NamecheapDomain List → Manage → Advanced DNS → Add New Record
Squarespace DomainsDomains → your domain → DNS Settings → Custom Records
WixDomains → ⋯ → Manage DNS Records → TXT
IONOSDomains & SSL → your domain → DNS → Add Record
OVHWeb Cloud → Domain names → DNS zone → Add an entry
PorkbunDomain Management → DNS Records
HostingerDomains → your domain → DNS / Name Servers

DNS changes usually appear within a few minutes but can take up to an hour. You can check with nslookup -type=TXT _nessgate.yourdomain.com or any online DNS lookup tool before clicking Verify Now.

Option C — a field inside your JSON file

Available when your JSON is hosted on the domain itself (e.g. https://example.com/data.json or www). If your file lives on another subdomain such as data.example.com, use Option A or B — ownership of a domain must be proven from the domain itself, never from a subdomain.

Add one top-level field to the JSON file you are registering:

{
  "nessgate_verification": "YOUR_CODE",
  "...": "your existing data stays unchanged"
}

This is the fastest option if you can already edit the JSON file, since it proves control of the exact file you're registering. Remove the field after verification if you wish.

What should your JSON contain? Anything you want

NessGate enforces no schema. Your file only needs to be valid JSON — the structure, field names, and depth are entirely yours, because modern AI models can read any reasonable format. Describe what makes your business useful to an AI: who you are, what you offer, how to reach you, where to find more.

If you'd like a starting point, here are three optional examples. Copy one, replace the values with your own, delete what doesn't apply, and add whatever is missing — none of these fields are required, and you may also reuse schema.org vocabulary if you prefer.

Example: corporate profile
{
  "name": "Acme GmbH",
  "legal_name": "Acme Industries GmbH",
  "description": "Industrial pump manufacturer serving 40 countries.",
  "founded": 1985,
  "headquarters": "Stuttgart, Germany",
  "industries": ["manufacturing", "industrial equipment"],
  "products": [
    {
      "name": "AquaFlow 300",
      "category": "centrifugal pumps",
      "url": "https://acme.example/products/aquaflow-300"
    }
  ],
  "certifications": ["ISO 9001"],
  "contact": { "sales": "sales@acme.example", "phone": "+49 711 000000" },
  "updated": "2026-09-08"
}
Example: e-commerce
{
  "name": "Sunrise Coffee",
  "description": "Specialty coffee roaster with worldwide shipping.",
  "currency": "EUR",
  "shipping_regions": ["EU", "UK", "US"],
  "catalog_url": "https://sunrise.example/products.json",
  "bestsellers": [
    {
      "name": "Ethiopia Yirgacheffe 250g",
      "price": 12.90,
      "sku": "ETH-250",
      "url": "https://sunrise.example/p/eth-250"
    }
  ],
  "returns_policy": "https://sunrise.example/returns",
  "support": "help@sunrise.example",
  "updated": "2026-09-08"
}
Example: local service
{
  "name": "Fairfax Dental Care",
  "description": "Family dental clinic.",
  "services": ["checkups", "orthodontics", "implants"],
  "address": "123 Main St, Fairfax, VA 22030, USA",
  "hours": { "mon-fri": "08:00-18:00", "sat": "09:00-13:00" },
  "phone": "+1 703 000 0000",
  "booking_url": "https://fairfaxdental.example/book",
  "insurance_accepted": ["Delta Dental", "Cigna"],
  "languages": ["English", "Spanish"],
  "updated": "2026-09-08"
}

Tip: an "updated" date helps AI systems judge freshness, and keeping the file small and factual beats marketing copy — but again, this is your file and your call.

Updating or removing a listing

No account exists, so every change is proven the same way: submit the domain again on the homepage (with the new JSON URL to update, or use "Remove a listing" to delete), receive a fresh code, place it, and verify. The new pointer replaces the old one.

Troubleshooting

MessageWhat it means
"The JSON URL must use HTTPS"Only https:// URLs are accepted, on the default port.
"…must be hosted on yourdomain.com"The JSON must live on the domain being registered or one of its subdomains — not a third-party site.
"Verification failed"The code wasn't found yet. Check the file URL / DNS record / JSON field for typos, wait a few minutes if you used DNS, and try again.
"…the JSON URL check failed"Ownership was proven, but the URL didn't return HTTP 200 with valid JSON (max 1 MB).
"Invalid or expired token"More than 60 minutes passed, or the code was already used. Start again from the homepage.