
Real-User Monitoring That Survives Ad Blockers
Field Core Web Vitals data you own: the web-vitals library, a first-party endpoint blockers do not block, what to store, and p75 by page group.
Writing
9 write-ups from production, newest first. Each one is a problem hit on a real project and how it was diagnosed and fixed.

Field Core Web Vitals data you own: the web-vitals library, a first-party endpoint blockers do not block, what to store, and p75 by page group.

Orders exist, revenue reports say zero. How WooCommerce Analytics builds its numbers from lookup tables, why the sync stops, and how to re-import safely.
How to set up analytics so every enquiry, call and booking click is counted and attributed to the page and source that produced it.

GA4 enhanced measurement scroll events stop firing after the first route in Next.js App Router. Here is why the listener detaches and the exact fix.
GA4 reporting double the scroll events for every page view? Here is why enhanced measurement duplicates with App Router and the precise setting that fixes it.

Moved GA4 to server-side GTM and conversions dropped to zero? Why the client_id is being dropped, and the header forwarding fix that brings them back.

GA4 Consent Mode v2 missing conversions data in your reports? Fix the default deny order, ads_data_redaction, and the URL passthrough setup with code.

GA4 page views not firing on client-side navigation in Next.js App Router? Track route changes with usePathname, useSearchParams, and a manual gtag event.

GA4 is firing two page_view events per navigation in the Next.js App Router. Here is the root cause and the exact fix with a working listener.