Best for
- Use when the user wants an analytics audit, a GA4 report, a tracking plan, conversion setup, GTM cleanup, search-performance data, or asks "how is the site performing?
hyperfx-ai/marketing-skills/skills/analytics-insights/SKILL.md
Drive Google Analytics (GA4), Google Tag Manager, Google Search Console, and BigQuery from chat — tracking plans, GA4 reports, key-event (conversion) setup, custom dimensions and metrics, GTM audits, GSC performance, and GA4 BigQuery export queries. Use when the user wants an analytics audit, a GA4 report, a tracking plan, conversion setup, GTM cleanup, search-performance data, or asks "how is the site performing?" or "are my conversions firing?".
Decision brief
Operator skill for the Google measurement stack — GA4, GTM, Search Console, and BigQuery — driven directly from chat. Build a tracking plan, run reports, mark conversions, audit existing setup, and query the warehouse without leaving the conversation.
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/hyperfx-ai/marketing-skills --skill "skills/analytics-insights"Inspect the Agent Skill "analytics-insights" from https://github.com/hyperfx-ai/marketing-skills/blob/bb080b81e2b633c4d46cd8d38d31f14ad95b478a/skills/analytics-insights/SKILL.md at commit bb080b81e2b633c4d46cd8d38d31f14ad95b478a. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
The skill covers four distinct jobs. Pick first; the workflows are different.
Quick-read option: For instant, no-sampling queries against cached GA4 data, try googleanalyticsqueryinsights first — it's faster than the full API path and avoids the 10M-event sampling threshold. Call it with a query= SQL string; the tool description lists available columns an…
The GA4 API can create properties, data streams, key events, custom metrics, and custom dimensions — but it can't deploy GTM tags into the page. That step is GTM-side (or hard-coded in the site). The skill workflow:
Most "our analytics is wrong" complaints are one of:
For unsampled data, custom attribution, joining GA4 with order-DB / CRM data, or cohort analysis. Requires the GA4 → BigQuery export to be turned on in the GA4 admin (free for standard properties since 2023).
Permission review
The documentation includes network, browsing, or remote request actions.
**Google Search Console** — search-performance data, sitemaps, URL inspection.The documentation includes network, browsing, or remote request actions.
For the full list, the user can browse the [GA4 Data API reference](https://developers.google.com/analytics/devguides/reporting/data/v1/api-schema).Evidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 98/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 77 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Operator skill for the Google measurement stack — GA4, GTM, Search Console, and BigQuery — driven directly from chat. Build a tracking plan, run reports, mark conversions, audit existing setup, and query the warehouse without leaving the conversation.
| Request | Send them to |
|---|---|
| Keyword research, AI-search visibility, full SEO audit | seo-research (HyperSEO toolkit — broader and richer than GSC for keyword work) |
| Google Ads campaign performance | google-ads (campaign-level) — but GA4-side conversion attribution lives here |
| Meta / Facebook ads metrics | meta-ads |
| Email program metrics | email-lifecycle (provider-side) |
GSC and HyperSEO overlap on search-performance data. Rule of thumb: use GSC here for the user's own site's impression / click / position data. Use HyperSEO (in seo-research) for keyword research, competitor data, AI-search visibility.
If google_analytics_run_ga4_report, gtm_tag, google_search_console_get_performance_data, and bigquery_execute_query are all missing from the agent's tool list, stop and tell the user to enable the Hyper MCP and connect at least one of these integrations.
| Group | Tools |
|---|---|
| GA4 — reporting | google_analytics_run_ga4_report, google_analytics_list_accounts, google_analytics_list_properties, google_analytics_get_property |
| GA4 — properties & data streams | google_analytics_create_ga4_property, google_analytics_update_property, google_analytics_delete_property, google_analytics_create_data_stream, google_analytics_list_data_streams, google_analytics_get_data_stream, google_analytics_update_data_stream, google_analytics_delete_data_stream, google_analytics_get_data_retention_settings (read-only — no update variant in MCP), google_analytics_acknowledge_user_data_collection |
| GA4 — key events (conversions) | google_analytics_create_key_event, google_analytics_list_key_events, google_analytics_get_key_event, google_analytics_update_key_event, google_analytics_delete_key_event |
| GA4 — custom metrics / dimensions | google_analytics_create_custom_metric, google_analytics_list_custom_metrics, google_analytics_get_custom_metric, google_analytics_update_custom_metric, google_analytics_archive_custom_metric, google_analytics_create_custom_dimension, google_analytics_list_custom_dimensions, google_analytics_get_custom_dimension, google_analytics_update_custom_dimension, google_analytics_archive_custom_dimension |
GTM (note: prefixed gtm_*, not google_tag_manager_*) | gtm_account, gtm_container, gtm_workspace, gtm_tag, gtm_trigger, gtm_variable, gtm_built_in_variable, gtm_folder, gtm_environment, gtm_version, gtm_version_header, gtm_user_permission, gtm_client, gtm_template, gtm_transformation, gtm_zone, gtm_destination |
| Google Search Console | google_search_console_get_performance_data, google_search_console_list_sites, google_search_console_list_sitemaps, google_search_console_get_sitemap, google_search_console_submit_sitemap, google_search_console_delete_sitemap, google_search_console_submit_url |
| BigQuery | bigquery_execute_query, bigquery_insert_rows |
run_ga4_report, get_property) take property_id="properties/123456789". (b) Create and list tools (create_key_event, list_key_events, create_custom_dimension, list_custom_dimensions, etc.) take parent="properties/123456789". (c) Get/update/delete tools operate on a specific resource and take name= with the full resource path (e.g. "properties/123456789/keyEvents/12345"). All three need the properties/ prefix in some form — passing a bare numeric ID silently fails. When in doubt, check the tool's schema for which arg is marked required.start_date="2026-04-01" and end_date="2026-04-30" returns 30 days, not 29. Same for relative dates: 7daysAgo to today is 8 days, not 7.references/bigquery-ga4-export.md.google_analytics_create_key_event to mark an event as a conversion. Don't get confused by older docs.gtm_workspace → modify → gtm_version (create) → publish.The skill covers four distinct jobs. Pick first; the workflows are different.
| The user wants… | Path | Reference |
|---|---|---|
| A report ("how did we do last month?") | Phase R | — |
| To set up tracking ("we need to measure X") | Phase T | references/ga4-tracking-plan.md |
| To audit existing GTM / GA4 ("why is conversion data wonky?") | Phase A | references/gtm-audit.md |
| Precise / unsampled / cross-source analysis | Phase B | references/bigquery-ga4-export.md |
Quick-read option: For instant, no-sampling queries against cached GA4 data, try google_analytics_query_insights first — it's faster than the full API path and avoids the ~10M-event sampling threshold. Call it with a query= SQL string; the tool description lists available columns and the cached table name. If it returns "No data cached", read the suggestion field for the workspace-specific table name and retry. For cached GSC data, use google_search_console_query_insights with the same pattern. Fall through to Step 4 below for metrics not in the cache.
google_analytics_list_accounts() → google_analytics_list_properties(filter="parent:accounts/<account_id>"). Ask the user to pick if there are multiple. Save the properties/<id> for the rest of the conversation.start_date="30daysAgo", end_date="yesterday" (avoid today — partial-day data is unstable).google_analytics_run_ga4_report(
property_id="properties/123456789",
start_date="30daysAgo",
end_date="yesterday",
metrics=["activeUsers", "sessions", "conversions", "totalRevenue"],
dimensions=["sessionDefaultChannelGroup", "deviceCategory"],
)
The GA4 API uses camelCase names. The most useful:
Metrics: activeUsers, sessions, screenPageViews, bounceRate, engagementRate, averageSessionDuration, conversions, eventCount, totalRevenue, transactions, purchaseRevenue, userEngagementDuration.
Dimensions: country, city, deviceCategory, operatingSystem, browser, sessionDefaultChannelGroup, sessionSource, sessionMedium, sessionCampaignName, pagePath, eventName, date, hour, landingPage.
For the full list, the user can browse the GA4 Data API reference.
The GA4 API can create properties, data streams, key events, custom metrics, and custom dimensions — but it can't deploy GTM tags into the page. That step is GTM-side (or hard-coded in the site). The skill workflow:
references/ga4-tracking-plan.md.google_analytics_create_custom_dimension(
parent="properties/123456789",
parameter_name="plan_tier",
display_name="Plan Tier",
scope="EVENT",
)
google_analytics_create_key_event(
parent="properties/123456789",
event_name="purchase",
counting_method="ONCE_PER_EVENT",
)
gtm_workspace(operation="create", account_id="...", container_id="...", name="purchase-tracking-v3")
gtm_tag(operation="create", workspace_path="...", tag_definition={...})
gtm_trigger(operation="create", workspace_path="...", trigger_definition={...})
gtm_variable(operation="create", workspace_path="...", variable_definition={...})
gtm_version(operation="create", workspace_path="...", version_name="purchase-tracking-v3")
# then publish via the GTM UI or version operation
Most "our analytics is wrong" complaints are one of:
| Symptom | Likely cause | How to confirm |
|---|---|---|
| Conversion event not appearing in GA4 | Event firing in GTM but not reaching GA4 (wrong measurement ID, blocked by consent gate, ad blocker) | google_analytics_run_ga4_report for eventName=purchase over the last 7d → if 0, check GTM |
| Conversion count wildly off | Event firing on every page (not just confirmation), or duplicate tags | Audit GTM tags via gtm_tag(operation="list"), check for multiple tags firing on the same trigger |
| Revenue reported differently in GA4 vs the platform of record | Currency mismatch, refund handling, attribution window | Pull both side-by-side, look for refund / currency rows |
| Suddenly mobile traffic dropped to ~0 | Tag firing only on desktop trigger, or a recent GTM publish broke the mobile container | gtm_version(operation="list") to find recent publishes, diff with previous version |
| GSC clicks ≠ GA4 organic sessions | Always different — different definitions. Don't try to reconcile exactly. | Expected; document and move on |
Detailed audit walkthrough in references/gtm-audit.md.
For unsampled data, custom attribution, joining GA4 with order-DB / CRM data, or cohort analysis. Requires the GA4 → BigQuery export to be turned on in the GA4 admin (free for standard properties since 2023).
bigquery_execute_query(
query="""
SELECT
event_date,
COUNT(DISTINCT user_pseudo_id) AS users,
COUNTIF(event_name = 'purchase') AS purchases,
SUM(IF(event_name = 'purchase', ecommerce.purchase_revenue, 0)) AS revenue
FROM `your-project.analytics_123456789.events_*`
WHERE _TABLE_SUFFIX BETWEEN '20260401' AND '20260430'
GROUP BY event_date
ORDER BY event_date
"""
)
Schema, common queries, and the full attribution-modeling workflow in references/bigquery-ga4-export.md.
samplesReadCount < samplingSpaceSize, say so explicitly. The user needs to know whether to trust the number for finance / board reporting.| Reference | When to read |
|---|---|
references/ga4-tracking-plan.md | Designing what to track — recommended event schema, custom dimensions / metrics, key-event mapping, naming conventions |
references/gtm-audit.md | Auditing an existing GTM container — finding duplicate tags, broken triggers, unused variables, missing consent gates |
references/bigquery-ga4-export.md | Querying the GA4 BigQuery export — schema, common queries (DAU, funnel, attribution, cohort, retention), join patterns |
Frequently asked questions
Operator skill for the Google measurement stack — GA4, GTM, Search Console, and BigQuery — driven directly from chat. Build a tracking plan, run reports, mark conversions, audit existing setup, and query the warehouse without leaving the conversation.
The source record exposes this install command: npx skills add https://github.com/hyperfx-ai/marketing-skills --skill "skills/analytics-insights". Inspect the command and pinned source before running it.
Static rules flagged network in the source; the page lists the matching lines and excerpts.
Alternatives
indranilbanerjee/digital-marketing-pro
Marketing measurement module — builds KPI trees per business model, reporting templates (weekly, monthly, QBR, campaign), anomaly root-cause diagnosis, MMM and incrementality guidance, dark-social tracking, and privacy-first cookieless measurement architecture, including the GA4 AI Assistant channel group for attributing AI-referred traffic. Triggers on "/digital-marketing-pro:analytics-insights", "why did traffic drop", "define our KPIs", "design an executive dashboard", "can we do marketing mi
JasonColapietro/suede-creator-skills
Suede-owned experimentation discipline for hypotheses, sample sizing, test duration, significance, and repeatable experiment programs. Use when comparing variants, deciding whether a result is reliable, or building an experiment backlog and cadence. NOT FOR: analytics instrumentation (use suede-analytics), post-click conversion diagnosis (use suede-site-alchemy), or writing the variant copy itself (use suede-copy).
narrative-io/narrative-skills-marketplace
Translate a fuzzy analytical question into a rigorous investigation plan. Interrogates the ask, grounds the plan in the available data dictionary, applies analytical best practices, and produces a structured brief of query specifications for a downstream query-writing skill. Plans, does not write SQL. Use when: "why did X drop", "is there a relationship between A and B", "who are our highest-value customers", "what's driving the change in Y", "investigate this trend", "design an analysis for", "
K-Dense-AI/scientific-agent-skills
Distributed computing for larger-than-RAM pandas/NumPy workflows. Use when you need to scale existing pandas/NumPy code beyond memory or across clusters. Best for parallel file processing, distributed ML, integration with existing pandas code. For out-of-core analytics on single machine use vaex; for in-memory speed use polars.