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:
- never asks for passwords, API keys, or hosting credentials — there is nothing to enter anywhere on this site except your domain and a URL;
- never gets access to your server, DNS account, or code — you make the change yourself, in your own systems;
- never asks you to install or execute anything — no scripts, no plugins, no agents;
- only performs a read-only public lookup — a single HTTPS
GETof a public URL, or a public DNS TXT query. These are the same requests any browser or DNS resolver on the Internet can already make against your site.
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
| Hosting | How |
|---|---|
| Own server (Apache, Nginx) | Create a folder named .well-known in your web root and put the file inside. |
| cPanel / Plesk | Use 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. |
| WordPress | Upload via your host's file manager or SFTP into the site root — not through the WordPress admin. |
| Vercel / Netlify / static hosts | Add .well-known/nessgate-verification.txt to your public (or output) folder and redeploy. |
| GitHub Pages | Commit the file at .well-known/nessgate-verification.txt in your Pages branch. |
| Shopify / Wix / Squarespace | These 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:
| Field | Value |
|---|---|
| Type | TXT |
| Name / Host | _nessgate (some providers want the full _nessgate.yourdomain.com) |
| Value / Content | nessgate-verification=YOUR_CODE |
| TTL | Default (or the lowest offered) |
Where to find DNS settings at major providers
| Provider | Path |
|---|---|
| Cloudflare | Dashboard → your domain → DNS → Records → Add record |
| GoDaddy | My Products → your domain → DNS → Add New Record |
| Namecheap | Domain List → Manage → Advanced DNS → Add New Record |
| Squarespace Domains | Domains → your domain → DNS Settings → Custom Records |
| Wix | Domains → ⋯ → Manage DNS Records → TXT |
| IONOS | Domains & SSL → your domain → DNS → Add Record |
| OVH | Web Cloud → Domain names → DNS zone → Add an entry |
| Porkbun | Domain Management → DNS Records |
| Hostinger | Domains → 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
| Message | What 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. |