Aannot8

Environments

Hostname patterns that decide where the widget loads, which lane feedback goes into, and what counts as production.

An environment is a name plus a set of hostname patterns. On every page load the widget reports its hostname and Annot8 matches it against the project's environments.

Manage them in Project → Settings → Environments.

Why they matter

Three things depend on the match:

  1. Whether the widget loads at all. A hostname matching no environment gets nothing. This is the security boundary — it's what stops your script tag being lifted onto someone else's site.
  2. Which lane the feedback lands in. Threads are filed against the matched environment and the inbox can filter on it, so a local experiment never pollutes production triage.
  3. Whether production rules apply. On a production environment the widget stays hidden unless you explicitly enable it.

Patterns

PatternMatches
app.example.comThat host exactly
*.example.comAny subdomain of example.com
*.vercel.appPreview deployments
pr-*.example.comA prefix wildcard
localhostLocal development
127.0.0.1Local by IP

A single field can hold several patterns separated by spaces or commas:

localhost *.local 127.0.0.1

The most specific matching pattern wins, so app.example.com beats *.example.com when both would match.

A bare * is rejected. There's no way to make the widget embeddable from any origin — that's deliberate, since it's exactly what a stolen script tag would need.

Patterns are normalised before matching: a scheme, port, path, query, or leading www. is stripped, so pasting https://app.example.com/dashboard stores app.example.com.

A typical setup

EnvironmentPattern
Productionexample.com *.example.com
Stagingstaging.example.com *.vercel.app
Developmentlocalhost *.local 127.0.0.1

The Free plan allows 2 environments per project. Paid plans are unlimited.

What counts as production

An environment is treated as production if it's the project's default environment, or if it's literally named "Production".

On a production environment the entire widget panel — annotation and live chat — is hidden unless Show widget in production is on in Settings → Features. Analytics is the exception and keeps collecting either way.

The default environment can't be deleted.

Why the widget isn't showing up locally

Nine times out of ten: the hostname doesn't match any environment. Add a Development environment with localhost *.local 127.0.0.1 and reload.

If you're on a non-standard host — a .test domain, a LAN IP, a tunnel URL from ngrok or Cloudflare — add that pattern too. The port is ignored, so localhost covers localhost:3000 and localhost:5173 alike.

See Troubleshooting for the rest.

On this page