agentsclimarketplace

Ga4 analyst

Skill MrBridgeHQ/ga4-analyst-claude/skills/ga4-analyst

Use when retrieving or analyzing Google Analytics 4 (GA4) data - pulling reports via the GA4 Data API, querying the BigQuery events export, choosing dimensions/metrics, building funnels/cohorts/attribution/segment analyses, interpreting sessions/engagement/key-events/channels, or diagnosing GA4 numbers that look wrong. Triggers on "GA4", "Google Analytics 4", "analyticsdata.googleapis.com", "runReport", "GA4 BigQuery export", "events_YYYYMMDD", "engagement rate", "key events", "channel grouping", "(not set)". Claude Code skill.From its SKILL.md

Install
npx -y skills add MrBridgeHQ/ga4-analyst-claude --skill ga4-analyst

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

8.5 KB, ~2.0k tokens by cl100k_base, as published. Nobody here has run it

GA4 Analyst

Retrieve Google Analytics 4 data and turn it into a defensible analysis. GA4 is an event-based model (no UA sessions/pageviews semantics), reached two ways: the GA4 Data API (aggregated reports, channel groups, attribution - fast, no SQL) and the BigQuery export (raw event rows - unsampled, unlimited cardinality, custom sessionization, joins). This skill covers the data model, both retrieval paths, the full dimension/metric catalog, and an analysis playbook.

Target LLM: Claude (Claude Code / claude.ai).

When to use

  • Pull a GA4 report (top pages, channels, conversions, revenue, retention…) for a property
  • Write a GA4 Data API request or a BigQuery SQL query against the events export
  • Decide which dimensions/metrics answer a question, and whether they're compatible
  • Analyze acquisition / engagement / monetization / retention / funnels / attribution / segments
  • Explain or sanity-check GA4 numbers (sampling, thresholding, (not set), users-inflation, GA4-vs-UA gaps)

Not for: instrumenting/collecting events on a site (tagging/gtag/GTM/Measurement Protocol is the collection side - see references/data-model.md for the model, but implementation is out of scope); non-GA analytics.

Prerequisites (read first if not yet set up)

Retrieval needs credentials. Before any query, confirm the property ID and access - see references/auth-setup.md (numeric properties/<ID>, Data API enabled, a service account granted Viewer/Analyst on the GA4 property, GOOGLE_APPLICATION_CREDENTIALS set; BigQuery export linked + roles/bigquery.dataViewer+jobUser for the SQL path). Never hardcode or commit credentials.

Choose the retrieval path

digraph ga4_path {
  "Need raw events, custom sessions, joins, unsampled, or >1 high-cardinality dim?" [shape=diamond];
  "BigQuery export (SQL)" [shape=box];
  "Standard aggregates, channels, attribution, quick?" [shape=diamond];
  "GA4 Data API (runReport)" [shape=box];
  "Need raw events, custom sessions, joins, unsampled, or >1 high-cardinality dim?" -> "BigQuery export (SQL)" [label="yes"];
  "Need raw events, custom sessions, joins, unsampled, or >1 high-cardinality dim?" -> "Standard aggregates, channels, attribution, quick?" [label="no"];
  "Standard aggregates, channels, attribution, quick?" -> "GA4 Data API (runReport)" [label="yes"];
}

Data API = the default for most reporting (channel groups & attribution models are computed for you; subject to quotas, sampling on huge explorations, and data thresholds). BigQuery = when you need raw fidelity, custom logic, or joins (you sessionize and compute channels yourself). Full trade-off table in references/bigquery-export.md §1.

Workflow

  1. Clarify the business question, the metric of interest, the date range, and the scope (user / session / event / item).
  2. Pick the path (above) and confirm auth.
  3. Choose dimensions & metrics from references/dimensions-metrics.md; verify they combine (scope-mixing pitfalls; checkCompatibility).
  4. Build & run the query - Data API via scripts/ga4_report.py, BigQuery via scripts/bq_ga4_query.py (or hand-built per references/data-api.md / bigquery-export.md).
  5. Validate the result: sampling/thresholding flags, (not set)/(other), freshness (24–48h), consent gaps, GA4-vs-UA expectations (references/data-model.md).
  6. Analyze: compute KPIs, compare vs baseline/period/segment, find drivers (references/analysis-playbook.md).
  7. Report insight-first: headline → numbers with context → driver → recommendation → caveats.

Load on demand

TriggerLoad
GA4 concepts, scopes, identity, sessions/engagement, channels, attribution, GA4-vs-UA, data-quality caveatsreferences/data-model.md
Building a Data API request (methods, request body, filter syntax, quotas, realtime/pivot/funnel/cohort)references/data-api.md
Exact dimension/metric API names + custom defs + compatibilityreferences/dimensions-metrics.md
Raw event retrieval, schema, UNNEST patterns, SQL recipes, cost controlreferences/bigquery-export.md
How to analyze (report families, KPI formulas, funnels, attribution, segments, anomalies, pitfalls, report template)references/analysis-playbook.md
Setting up credentials / property ID / API & BigQuery accessreferences/auth-setup.md

Run the tools

# GA4 Data API - top landing pages by sessions, last 28 days, with engagement rate (CSV)
python3 scripts/ga4_report.py --property 123456789 \
  --dimensions landingPage --metrics sessions,engagementRate \
  --start 28daysAgo --end yesterday --order-by sessions:desc --limit 25

# BigQuery export - dry-run a query first to see bytes scanned, then run
python3 scripts/bq_ga4_query.py --query-file my_query.sql --dry-run
python3 scripts/bq_ga4_query.py --query-file my_query.sql --format csv --out result.csv

Both authenticate via Application Default Credentials and call only Google's official APIs with your own credentials. Install: pip install google-analytics-data google-cloud-bigquery. See scripts/README.md.

Quick reference

  • Scopes: prefix tells you the scope - firstUser* (acquisition), session* (session-scoped), unprefixed/event-level. Don't mix item-scoped dimensions with session metrics.
  • High-value metrics: activeUsers, sessions, engagedSessions, engagementRate, averageSessionDuration, screenPageViews, eventCount, keyEvents (= renamed "conversions"), totalRevenue, purchaseRevenue, ecommercePurchases, averageRevenuePerUser.
  • High-value dimensions: date, sessionDefaultChannelGroup, sessionSourceMedium, firstUserDefaultChannelGroup, landingPage, pagePath, eventName, country, deviceCategory, newVsReturning.
  • Custom: customEvent:<name>, customUser:<name>, customItem:<name> - discover available ones via getMetadata.
  • KPIs you compute yourself: bounce rate = 1 − engagementRate; AOV = revenue / transactions; ARPU = revenue / activeUsers. For conversion rate, prefer the returned metric sessionKeyEventRate (or per-event sessionKeyEventRate:<event>) = converting sessions / total sessions - not raw keyEvents / sessions (which counts events, not deduplicated sessions).
  • BigQuery has no channel-group field: defaultChannelGroup doesn't exist in the raw export - reconstruct Google's rules (references/data-model.md §6) or use the Data API for channels/attribution.

Common pitfalls (full table in analysis-playbook.md)

  • Prefer sessions over users for trends (users inflate across identity spaces).
  • engagementRate / bounceRate are session-scoped - pair with landingPage, not arbitrary page dims.
  • Sampling (large explorations) and thresholding (demographics/signals) silently alter results - check response metadata.
  • (not set) = missing dimension value; (other) = high-cardinality overflow row.
  • Don't compare GA4 to Universal Analytics 1:1 - sessions, bounce, and "pageviews" are redefined.
  • Data is not final for 24–48h; BigQuery events_intraday_* is incomplete.
  • Consent-rejecting users are largely invisible (modeled, not raw).

Reference files

  • references/data-model.md - event model, scopes, identity, sessions/engagement, key events, channels, attribution, GA4-vs-UA, data quality.
  • references/data-api.md - Data API v1 query construction (methods, request body, filters, pagination, quotas, auth).
  • references/dimensions-metrics.md - the dimension & metric catalog (API names, custom defs, realtime, compatibility).
  • references/bigquery-export.md - BigQuery export schema, UNNEST patterns, 12 SQL recipes, cost control.
  • references/analysis-playbook.md - analysis workflow, report families, KPI formulas, funnels/attribution/segments, pitfalls, report template.
  • references/auth-setup.md - property ID, service-account/OAuth auth, BigQuery linking, secrets hygiene, prerequisites checklist.
  • scripts/ - ga4_report.py (Data API), bq_ga4_query.py (BigQuery), requirements.txt, README.md.

What ships with it: 10 files

217.9 KB alongside SKILL.md, 2 of them executable

scripts/

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.