Static Astro 5 site for BlueCap Strategies with exact live-site content parity, deployed to k3s via GitOps (ArgoCD). - Page copy in Markdown content collections (services, focus-areas, pages, insights) with a Zod SEO schema enforced at build time - Homepage + About restored to exact live copy; real live-site imagery - Build-time SEO linter (scripts/seo-lint.mjs) and Playwright e2e suite - Multi-stage Dockerfile (nginx serves dist/) and Kustomize manifests (k8s/) - Per-agent robots.txt; config-driven PostHog + Umami analytics scaffold - ADRs and engineering docs under docs/ Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
32 lines
1.6 KiB
Markdown
32 lines
1.6 KiB
Markdown
# ADR-0005: Visitor analytics — PostHog + Umami side-by-side trial
|
|
|
|
**Status:** Accepted — 2026-07-15
|
|
|
|
## Context
|
|
|
|
The owner leans toward richer data (PostHog: autocapture, funnels, session replay) but the site is
|
|
a low-traffic B2B advisory brochure with a Digital-ESG / low-energy positioning, and self-hosting
|
|
PostHog is resource-heavy. Rather than decide in the abstract, the owner chose to **trial both**
|
|
and compare. This is product/visitor analytics — distinct from the monylog ops telemetry (ADR-0004).
|
|
|
|
## Decision
|
|
|
|
Run **PostHog and Umami side-by-side initially** to evaluate which fits. Recommended trial setup:
|
|
|
|
- **PostHog — Cloud free tier** (1M events/mo) rather than self-host, to avoid loading the homelab
|
|
during evaluation; reverse-proxy ingest through our domain to reduce ad-blocker loss.
|
|
- **Umami — self-hosted** in k3s (lightweight, cookieless, no consent banner).
|
|
|
|
Both are wired through a single config-driven `Analytics.astro` component in `BaseLayout`, gated by
|
|
env vars, so either can be toggled and a winner kept without code churn. Track the same event set
|
|
in both (consultation-CTA clicks, per-service/focus CTA source, insights reads, contact submits).
|
|
|
|
## Consequences
|
|
|
|
- Temporary dual instrumentation (slightly more script weight during the trial).
|
|
- **Privacy/consent must cover the superset:** PostHog (esp. session replay) likely triggers
|
|
cookie-consent + privacy-policy obligations; add these before enabling PostHog in production.
|
|
- Decision criteria: insight value vs. weight/consent/ESG fit. Revisit with a follow-up ADR naming
|
|
the winner and the retirement of the other.
|
|
- Detail in `docs/seo-aeo-optimization.md` §6b.
|