ADR-081: Platform Web Analytics (GTM, Clarity, GA4)
Estado
Accepted — 2026-08-25
Contexto
IVPrior necesita medir el funnel SaaS público (landing, signup, login, pricing) y la UX de esas páginas. Capas distintas que no sustituyen esto:
| Capa | Herramienta | Rol |
|---|---|---|
| Ops | Prometheus / Loki / Grafana (ADR-028) | Latencia, errores, uptime |
| Producto interno | Cash dashboard (DOC-021) | Cash Recovered, DSO, promises |
| Marketing / UX web | GTM + Clarity (+ GA4 / Ads vía GTM) | Funnel, heatmaps, session insights |
Patrón: IVPrior ADR-049. IDs: crear proyectos IVPrior antes de producción — ver docs/ops/go-live/pre-prod-analytics-projects.md. Local/e2e: NEXT_PUBLIC_GTM_ID vacío = GTM off.
Mercado primario del sitio público (piloto): Estados Unidos / LatAm según lanzamiento. Consent Mode v2 + barra Accept/Reject: default denied hasta Accept.
Decisión
- Un solo inyector en código: Google Tag Manager vía
NEXT_PUBLIC_GTM_ID. Clarity, GA4 y Ads se configuran dentro de GTM, no con snippets nativos en Next.js. - Zonas IVPrior:
- M1 (SaaS marketing):
/,/signup— GTM activo cuando el env está seteado. No hay/loginglobal en V1 (login de Organization es/t/{slug}/login; Customer portal no existe aún). - Platform admin (
/platform/...): sin GTM. - Help / Docs apps: sin GTM hasta decisión explícita.
- M1 (SaaS marketing):
- Cookie banner + Consent Mode: Accept/Reject en paths GTM. Default denied hasta Accept. Override
NEXT_PUBLIC_GTM_CONSENT_DEFAULToculta la barra (e2e). - Sin PII en
dataLayer. - Env vacío en local: sin ID → no se carga GTM.
- No mezclar con DOC-021 ni con ADR-028.
Consecuencias
- Un punto de control (GTM) para vendors sin redeploy.
- Operadores deben crear sus proyectos Google/Microsoft Clarity para IVPrior antes del go-live; no reutilizar IVPrior.