Analytics
Six supported providers, configured by value — never by script tag.
{ "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:
measurementIdstringrequiredMatches ^G-[A-Z0-9]{4,20}$.
plausible
Section titled “plausible”domainstringrequiredA bare hostname — no scheme, no path.
hoststringHTTPS origin of a self-hosted instance.
posthog
Section titled “posthog”projectApiKeystringrequiredMatches ^phc_[A-Za-z0-9]{16,}$.
apiHoststringHTTPS origin of a self-hosted instance.
fathom
Section titled “fathom”siteIdstringrequiredMatches ^[A-Z0-9]{6,12}$.
hoststringHTTPS origin of a self-hosted instance.
websiteIdstringrequiredA canonical UUID.
hoststringHTTPS origin of a self-hosted instance.
matomo
Section titled “matomo”siteIdstringrequiredMatches ^[0-9]{1,10}$.
hoststringrequiredHTTPS origin. Required for Matomo, unlike the others.
Why a registry
Section titled “Why a registry”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.
Identifiers are validated
Section titled “Identifiers are validated”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.