GA4 Telemetry
First: Read the file ~/.claude/skills/seo-references/core.md before proceeding. Apply the methodology and voice defined there to all output.
Also read: ~/.claude/skills/seo-references/data-pull-patterns.md for MCP tool parameter reference. Dated GEO notes: seo-references/gap-2026-08-31.md and seo-references/measurement-2026-09-02.md.
Step 1: Parse Domain
Extract the domain from the user's argument. Resolve it against the MCP Routing Map in core.md. The GA4 property ID is required for this skill — if the domain has no GA4 property, warn and stop.
Also identify the vertical type from the portfolio roster (legal, medical, home service, real estate, e-commerce, etc.) — this determines which conversion events to recommend.
Step 2: Pull Live Data
GA4 (PRIMARY for this skill):
- Call
mcp__google-analytics__run_reportwith the resolved propertyId, dimensions=[eventName], metrics=[eventCount], dateRanges=[{startDate: "28daysAgo", endDate: "today"}]. This reveals which events are currently firing. - Call
mcp__google-analytics__get_property_detailswith the propertyId. This shows property configuration. - If the property has the default AI Assistant channel, pull sessions for the last 28 days. If not, say so and add enablement to Recommended Actions.
Cross-reference: Check the user's CLAUDE.md for the "GA4 CONVERSION GAPS" table. This table tracks which domains have conversion events wired vs. not. Note the current status for this domain.
Step 3: Generate Conversion Architecture
Section 1 — Current State Assessment: List all events currently firing with their counts. Highlight:
- Which events are just default GA4 (page_view, scroll, click) — these are vanity
- Which events are custom/conversion events — these are money events
- What's MISSING based on the vertical
Section 2 — Custom Event Architecture: Based on the vertical, recommend these high-value events:
For legal domains:
generate_lead— contact form submission (primary conversion)click_to_call— phone number clickconsultation_request— case evaluation formform_start— user began filling out form (micro-conversion)
For medical domains:
generate_lead— appointment booking or contact form (primary)click_to_call— phone number clickinsurance_check— insurance verification formappointment_booking— online scheduling
For home service domains:
generate_lead— quote request (primary)click_to_call— phone number clickschedule_service— online bookingquote_request— estimate form submission
For real estate domains:
generate_lead— property inquiry (primary)seller_form_submit— seller lead formclick_to_call— phone number clickproperty_view— individual listing viewed (micro-conversion)
For e-commerce domains:
purchase— completed purchase (primary)add_to_cart— cart additionbegin_checkout— checkout startedgenerate_lead— waitlist/signup (if pre-launch)
Section 3 — Implementation Code: For each recommended event, provide a ready-to-paste gtag snippet:
// [Event Name] — [trigger description]
gtag('event', 'generate_lead', {
event_category: '[vertical]',
event_label: '[specific trigger]',
source: '[page or form identifier]'
});
Note: These are advisory code snippets. The user applies them manually to their codebase. This skill does not modify project files.
Section 4 — Conversion Goals:
- Primary conversion event (mark as Key Event in GA4 Admin)
- Secondary conversion events
- Micro-conversions worth tracking
Section 5 — UTM Parameter Template:
Template for tracking which SEO landing pages drive conversions:
?utm_source=organic&utm_medium=seo&utm_campaign=[domain]&utm_content=[page-slug]
Core principle: track money events, not vanity metrics.
Section 6 — AI Assistant channel (GEO measurement)
Shipped as a GA4 default channel around May–June 2026. Enable it. Pull it. Do not confuse it with /geo citation scores.
What it usually catches: ChatGPT, Gemini, Copilot, Claude, Grok, DeepSeek referrals that arrive with an identifiable source.
What it usually misses or misfiles:
- Perplexity often stays under Referral
- Google AI Overviews / AI Mode sit inside Organic Search
- Referrer-less answers (user copied a URL, typed it, or the client stripped the referrer)
Add a complementary source/medium regex view so Perplexity and odd hosts are not invisible. Example pattern families (edit to what this property actually receives; do not paste untested):
- chatgpt.com, chat.openai.com
- perplexity.ai
- claude.ai
- gemini.google.com
- copilot.microsoft.com
- grok.com, x.ai
- deepseek.com
Measurement boundary
GA4 is the human click-through plane, not the crawler plane. Google Analytics automatically excludes known bots and spiders; that exclusion cannot be disabled, and the excluded volume is not exposed for inspection.
| Observation | Evidence plane |
|---|---|
| A human clicks an AI answer and the page tag loads | GA4 AI Assistant, Referral, or Organic Search |
| A traditional search crawler fetches the site | Origin logs or /geo-crawl Mode B |
| An AI retrieval or training agent fetches the site | Verified origin logs or ReadableByAI rba_* events |
| A user-triggered AI fetch or agent visits | Origin logs / ReadableByAI; GA4 only if a later real browser session loads the tag |
Do not relabel Direct traffic as "dark AI." Do not put crawler user agents into the referral regex. Do not infer crawler demand from silence in GA4.
Report five numbers for the last 28 days, side by side:
- AI Assistant channel sessions
- Regex referral sessions not in that channel
- Organic Search sessions landing on the same URLs
- Money events on those landing pages
- Verified retrieval / user-fetch hits from the separate log or ReadableByAI plane
If modeled data changes the reading, record whether the report uses Blended or Observed identity. Do not change the property setting without operator approval.
Explore, User Explorer, and anomaly insights are human-session diagnostics. They do not prove a citation or a crawler fetch. A session is not a citation: /geo owns the repeated prompt matrix, /geo-crawl owns reachability, and Mode B / ReadableByAI own verified crawler evidence.
Step 4: Output
Follow the Output Protocol from core.md:
- Print the full GA4 playbook to terminal
- Extract structured summary
- Save to Graphiti with name
GA4 Telemetry — [domain]