GA4 Audit
A one-time audit of a Google Analytics 4 property — configuration and data quality.
GA4 collects data the moment the tag fires, but most properties quietly leak trust:
unmarked key events, PII in parameters, no Ads link, (not set) traffic. This skill
finds those before they corrupt a quarter of reporting.
Requires: Cogny Agent subscription ($9/mo) — Sign up
Prerequisites Check
If mcp__cogny__google_analytics_4__tool_get_property is not available:
This skill requires Cogny's Google Analytics 4 MCP server.
1. Sign up at https://cogny.com/agent
2. Connect your GA4 property
3. Add Cogny to your .mcp.json (see the repo README)
4. Restart Claude Code
Stop here if the tools are missing.
Usage
/ga4-audit — full property audit
/ga4-audit config — property + stream + link settings only
/ga4-audit events — events, key events, custom dimensions only
/ga4-audit data-quality — (not set), PII, anomaly checks only
Steps
1. Property discovery
tool_list_account_summaries
tool_get_property (property_id)
Record: time zone, currency, industry category, data retention setting, and property type. Flag data retention left at the 2-month default — it should be 14 months so year-over-year exploration works.
2. Data streams
tool_list_data_streams (property_id)
Flag:
- Multiple web streams for one site (splits data, double-counts users)
- Enhanced measurement off, or measuring events the team doesn't actually want
- Missing iOS/Android streams for a business that has apps
3. Key events (conversions)
tool_list_conversion_events (property_id)
Flag:
- No key events configured — Ads bidding and GA4 reporting both lose their anchor
- Key events marked on noisy automatic events (
page_view,scroll) — inflates the conversion count and misleads everyone - Obvious business goals not marked as key events (e.g.
generate_lead,purchase,sign_up) - More than ~10–15 key events — when everything is a conversion, nothing is
4. Custom dimensions & metrics
tool_list_custom_dimensions (property_id)
tool_list_custom_metrics (property_id)
tool_get_metadata (property_id)
Flag:
- Event parameters collected by the tag but never registered as custom dimensions
(the data is invisible in reports) — compare
get_metadataagainst what the streams send - Approaching the 50 event-scoped / 25 user-scoped dimension limits
- High-cardinality registered dimensions (timestamps, IDs) — they cause
(other)rows
5. Traffic & data-quality report
tool_run_report (property_id, last 30 days,
dimensions: sessionDefaultChannelGroup, sessionSource, sessionMedium,
metrics: sessions, conversions, totalUsers)
Flag:
- A large
Unassignedor(not set)share — broken UTMs or tagging gaps (point the user to/utm-builder) - A
Directshare above ~40% — usually lost referrer data or missing tags - Self-referrals (your own domain as a source) — needs an unwanted-referral filter
- Internal traffic visible in reports — no internal-traffic filter applied
6. PII & policy check
Scan event and parameter names from get_metadata for anything that could carry
personal data — email, phone, user_email, full names, raw addresses in
parameters or in the page path / query string.
🔴 PII in GA4 violates Google's policy and risks the property being deleted. Flag it as critical and name the exact parameter.
7. Integrations
Flag:
- No Google Ads link — conversions can't flow to Ads for bidding (check with the user; the link isn't always API-visible)
- No BigQuery export — recommend it for any property that wants raw-data analysis
(
/ga4-bigquery-schemacovers the schema) - Search Console not linked
8. Score and report
GA4 Audit — [Property Name]
GA4 Health Score: X/100
Score breakdown:
Configuration ...... X/20 (streams, retention, time zone)
Key events ......... X/25 (the reporting + bidding anchor)
Custom dimensions .. X/15
Data quality ....... X/25 ((not set), Direct, self-referrals)
Compliance ......... X/15 (PII, internal traffic)
🔴 Critical — PII collected, no key events, retention at 2 months
🟡 Important — unregistered dimensions, high (not set), no Ads link
🟢 Optimization — BigQuery export, enhanced measurement tuning
Top 3 Actions:
1. [Highest impact]
2. ...
3. ...
9. Record findings
{
"title": "Email address captured in GA4 'page_location' — policy violation",
"body": "The checkout-success URL includes ?email=… and GA4 stores it in page_location and page_path. Google policy prohibits PII in Analytics and can delete the property. Strip the parameter at the tag, or redact it before the event fires.",
"action_type": "data_quality",
"expected_outcome": "PII removed from collection; property compliant",
"estimated_impact_usd": 0,
"priority": "critical"
}
Action types: tracking_configuration, conversion_setup, data_quality,
custom_dimension, integration, compliance.
Critical rules
- PII is always critical. Flag it loudly and name the parameter.
- Key events are the anchor — for GA4 reporting and for Ads bidding. Weight them.
- Quote real numbers: retention months,
(not set)%, dimension counts. - Read-only. Never change property settings — surface and recommend.