# Analytics tracking is installed

- **Pattern:** `ab-002177` (`pre-launch.monitoring.analytics`)
- **Severity:** medium
- **Lifecycle:** active
- **Last modified:** 2026-04-18
- **Canonical URL:** https://auditbuffet.com/patterns/ab-002177
- **License:** CC-BY-4.0 — attribute to AuditBuffet Pattern Catalog (https://auditbuffet.com/patterns/ab-002177)

## Why it matters

Launching without analytics means the traffic from your Product Hunt post, Reddit thread, or paid campaign arrives invisible — you cannot tell whether anyone clicked, which pages they landed on, or where they dropped out of signup. Conversion funnels, referrer attribution, and bounce-rate signals are unrecoverable retroactively; if you add analytics a week later, that launch week stays a black hole. Product decisions default to vibes instead of data.

## Severity rationale

Medium because the blind spot is durable — missed traffic data cannot be backfilled once the event passes.

## Remediation

On Vercel, install `@vercel/analytics` and render `<Analytics />` in `app/layout.tsx` — zero config, no cookie banner required. For a privacy-friendly alternative use Plausible via `next-plausible`, or PostHog for session recording and funnel analysis. Confirm the production environment variable holds a real tracking ID, not `YOUR_GA_ID` or `phc_placeholder`.

```tsx
// app/layout.tsx
import { Analytics } from '@vercel/analytics/react'
export default function RootLayout({ children }) { return <html><body>{children}<Analytics /></body></html> }
```

## Detection

- **ID:** `analytics`
- **Severity:** `medium`
- **What to look for:** Count all analytics integrations. Enumerate which analytics services are configured (Google Analytics, Plausible, PostHog, Vercel Analytics). Check for analytics library dependencies: `@vercel/analytics`, `@analytics/*`, `next-plausible`, `react-ga4`, `@google-analytics/*`, `mixpanel-browser`, `posthog-js`, `segment`, `@amplitude/analytics-browser`. Check for analytics initialization in layout components or `_app.tsx`. Check for `NEXT_PUBLIC_GA_ID`, `NEXT_PUBLIC_PLAUSIBLE_DOMAIN`, or similar analytics environment variables in `.env.example`. Check for `<Script>` components loading analytics providers.
- **Pass criteria:** An analytics library is initialized and configured in the project. The tracking ID or configuration appears to be a production value (not a placeholder like `YOUR_GA_ID`). At least 1 analytics service must be configured and active in production.
- **Fail criteria:** No analytics library found — no visibility into whether users are arriving, what they're doing, or where they're dropping off.
- **Skip (N/A) when:** Skip for internal tools, APIs, or CLI tools with no user-facing pages where analytics would be irrelevant. Skip for projects where the developer has intentionally decided not to use analytics and has documented this decision (look for a comment or note stating this).

- **Cross-reference:** For error monitoring, see `error-monitoring`.
- **Detail on fail:** `"No analytics library detected — you will have no visibility into user traffic, behavior, or conversion after launch"`
- **Remediation:** Without analytics, you're making product decisions blind. You won't know if your launch drove any traffic, where users are dropping off, or which features they actually use:

  ```tsx
  // app/layout.tsx — analytics integration
  import { Analytics } from '@vercel/analytics/react'
  <Analytics />
  ```

  1. **Vercel Analytics** is the simplest for Vercel-hosted projects: `npm install @vercel/analytics` and add `<Analytics />` to your root layout. Requires the Vercel Analytics addon.
  2. **Plausible** is a privacy-friendly option that doesn't require cookie consent: `npm install next-plausible`.
  3. **PostHog** offers both analytics and product analytics (session recording, funnel analysis) with a generous free tier.
  4. **Google Analytics 4** is free and comprehensive — use `@next/third-parties` for Next.js integration.
  5. Ensure the analytics tracking ID in your production environment variables is a real production ID, not a dev placeholder.

---

Taxons: observability

HTML version: https://auditbuffet.com/patterns/ab-002177
