Skip to content

Analytics

Six supported providers, configured by value — never by script tag.

json
{
"analytics": {
"provider": "plausible",
"options": { "domain": "docs.example.com" }
}
}

analytics is a registry of providers Reed knows how to emit, not a place to paste a snippet. Six are supported:

measurementIdstringrequired

Matches ^G-[A-Z0-9]{4,20}$.

domainstringrequired

A bare hostname — no scheme, no path.

hoststring

HTTPS origin of a self-hosted instance.

projectApiKeystringrequired

Matches ^phc_[A-Za-z0-9]{16,}$.

apiHoststring

HTTPS origin of a self-hosted instance.

siteIdstringrequired

Matches ^[A-Z0-9]{6,12}$.

hoststring

HTTPS origin of a self-hosted instance.

websiteIdstringrequired

A canonical UUID.

hoststring

HTTPS origin of a self-hosted instance.

siteIdstringrequired

Matches ^[0-9]{1,10}$.

hoststringrequired

HTTPS origin. Required for Matomo, unlike the others.

Adding a provider is a change to Reed — a reviewed, versioned registry entry — not a tenant configuration option. The error message says so directly when you name an unknown provider.

The reason is the same one behind head taking no scripts: a platform that builds other people’s repositories cannot let config inject arbitrary JavaScript and still be safe to run. A registry means every script Reed emits is one Reed’s own maintainers chose.

If your provider is not on the list, it is not configurable today. That is a genuine limitation rather than a workaround waiting to be discovered.

Each provider’s identifier is checked against its real format. A Plausible domain with a scheme, or a GA4 id missing its G- prefix, fails at reed check rather than producing a site that silently records nothing.

Self-hosted host values must be HTTPS origins.