Agent skill
ga4-key-events-config
This skill should be used when the user asks to \"configure key events\", \"set up conversions\", \"mark events as key events\", or mentions \"conversion values\", \"primary vs secondary conversions\", or \"GA4 goal setup\".
Filed under ABM and paid.
From Ad-Superpowers/ad-superpowers-plugin · 120 skills · 5 · pushed 2026-09-10
What it does when it runs
This skill should be used when the user asks to \"configure key events\", \"set up conversions\", \"mark events as key events\", or mentions \"conversion values\", \"primary vs secondary conversions\", or \"GA4 goal setup\". Do NOT use for: event tracking setup (use ga4-event-tracking-setup), Google Ads conversion import details (use ga4-conversion-import), or attribution models (use ga4-attribution-advisor).
Read from the skill and the 0 files bundled beside it. A skill’s own description is written to be selected by an agent, so it describes the job and not the dependencies.
- Keys and connectors you must supply
- None found.
- Hosts it reaches
- No third-party host appears in the skill or its bundled files.
- Tool permissions it declares
- No
allowed-toolsin the frontmatter. It only issues instructions, so there is nothing to bound. - Actions present in the files
- None. Instructions only.
Install it
View source on GitHub ↗git clone --depth 1 --filter=blob:none --sparse https://github.com/Ad-Superpowers/ad-superpowers-plugin.git /tmp/ad-superpowers-plugin git -C /tmp/ad-superpowers-plugin sparse-checkout set "plugin/skills/ga4-key-events-config" mkdir -p ~/.claude/skills/ga4-key-events-config cp -R "/tmp/ad-superpowers-plugin/plugin/skills/ga4-key-events-config/." ~/.claude/skills/ga4-key-events-config/
Picked up without a restart. A project skill of the same name is shadowed by your personal one. For one repository only, swap ~/.claude/skills for .claude/skills. Claude Code docs ↗
Or take the whole library
This repo ships a .claude-plugin manifest, so Claude Code can install all 120 skills at once. Plugin skills are invoked as /<plugin>:<skill>, so they never collide with your own.
/plugin marketplace add Ad-Superpowers/ad-superpowers-plugin /plugin
The folder is the same in every client that implements the format — 46 of them — so if yours is not above, only the destination changes.
The skill
Source on GitHub ↗Reproduced in full from Ad-Superpowers/ad-superpowers-plugin/blob/9b6385d2d2d228e4dac096a1d6bc5715c04fa736/plugin/skills/ga4-key-events-config/SKILL.md, which is licensed MIT (repository). 2,332 words, 29 headings.
GA4 Key Events Configuration
Complete guide for configuring Key Events (formerly "Conversions") in Google Analytics 4 for optimal advertising performance.
Quick Decision Tree
WHICH EVENTS SHOULD BECOME KEY EVENTS?
│
├─► BUSINESS-CRITICAL ACTIONS
│ ├── E-commerce: purchase, begin_checkout
│ ├── Lead Gen: generate_lead, sign_up, contact_form
│ ├── SaaS: trial_start, subscription_start
│ └── Content: newsletter_signup, download
│ └─► MARK AS KEY EVENT ✅
│
├─► ENGAGEMENT EVENTS
│ ├── page_view, scroll, video_start
│ ├── cta_click, outbound_click
│ └── time_on_page
│ └─► NOT as Key Event (unless primary goal)
│
├─► MICRO-CONVERSIONS
│ ├── add_to_cart, view_item
│ ├── pricing_page_view
│ └── chat_open
│ └─► CONSIDER as secondary conversion
│
└─► FOR GOOGLE ADS IMPORT
├─► Primary Conversion: Main KPI (purchase, lead)
├─► Secondary Conversion: Optimization signals
└─► Choose MAX 1-2 primary per campaign type
Key Events vs Events
KEY EVENTS EXPLAINED (2024+ terminology)
==========================================
┌────────────────────────────────────────────────────────────────┐
│ EVENTS KEY EVENTS │
│ ═══════════════════════════ ═══════════════════════════ │
│ All user actions Most important actions │
│ │
│ Automatically tracked: Marked by you: │
│ ├── page_view ├── purchase │
│ ├── scroll ├── generate_lead │
│ ├── click ├── sign_up │
│ ├── file_download └── [your business goals] │
│ └── etc. │
│ │
│ Visible in: Events reports Visible in: Key Events │
│ + Conversion reports │
│ + Can import to Ads │
└────────────────────────────────────────────────────────────────┘
TERMINOLOGY CHANGE:
├── "Conversions" → "Key Events" (GA4 interface, 2024)
├── Still "Conversions" in Google Ads
├── Same functionality, new name
└── Import to Google Ads remains "Conversion Import"
Marking a Key Event
MARKING AN EVENT AS KEY EVENT
==============================
METHOD 1: Via Events Report
────────────────────────────
LOCATION: Reports → Engagement → Events
STEPS:
┌────┬────────────────────────────────────────────────────────────┐
│ 1 │ Go to Events report │
├────┼────────────────────────────────────────────────────────────┤
│ 2 │ Find the event you want to mark │
├────┼────────────────────────────────────────────────────────────┤
│ 3 │ Click the toggle in "Mark as key event" column │
├────┼────────────────────────────────────────────────────────────┤
│ 4 │ Toggle to ON (blue) │
├────┼────────────────────────────────────────────────────────────┤
│ 5 │ Event is now a Key Event │
└────┴────────────────────────────────────────────────────────────┘
METHOD 2: Via Admin → Key Events
─────────────────────────────────
LOCATION: Admin → Data display → Key events
STEPS:
┌────┬────────────────────────────────────────────────────────────┐
│ 1 │ Click "New key event" │
├────┼────────────────────────────────────────────────────────────┤
│ 2 │ Enter the exact event name (case-sensitive!) │
├────┼────────────────────────────────────────────────────────────┤
│ 3 │ Click "Save" │
├────┼────────────────────────────────────────────────────────────┤
│ 4 │ Event becomes a Key Event once data arrives │
└────┴────────────────────────────────────────────────────────────┘
IMPORTANT:
├── Event name must match EXACTLY (case-sensitive)
├── Event must already exist OR becomes active on first trigger
├── Retroactive: only new data from moment of marking
└── Max ~30 key events per property (soft limit)
Conversion Value Setup
CONVERSION VALUE CONFIGURATION
================================
WHY ASSIGN VALUE?
├── Value-based bidding in Google Ads (tROAS)
├── ROI calculations in reports
├── Prioritization of conversion types
└── Better budget allocation advice
METHOD 1: Dynamic Value (recommended for e-commerce)
─────────────────────────────────────────────────────
Send value with the event:
GTM GA4 Event Tag:
├── Event name: purchase
├── Event Parameters:
│ ├── value: {{DLV - transaction_value}}
│ ├── currency: EUR
│ └── transaction_id: {{DLV - order_id}}
Or via gtag.js:
```javascript
gtag('event', 'purchase', {
'transaction_id': 'T12345',
'value': 150.00,
'currency': 'EUR',
'items': [...]
});
METHOD 2: Static Value (for lead gen) ──────────────────────────────────────
LOCATION: Admin → Key events → Click event → "Edit"
CONFIGURATION: ┌────────────────────────────────────────────────────────────────┐ │ Default conversion value: [X] │ │ Currency: EUR │ │ │ │ NOTE: This does NOT override dynamic values │ │ Only used when no value is sent with the event │ └────────────────────────────────────────────────────────────────┘
VALUE CALCULATION FOR LEAD GEN: ──────────────────────────────── Lead Value = Average Deal Size x Close Rate
Example: ├── Average deal: €5,000 ├── Close rate: 10% ├── Lead value: €5,000 x 0.10 = €500
Alternative per lead type: ├── Contact form: €100 ├── Demo request: €300 ├── Phone call: €150 └── Chat lead: €75
## Counting Method
CONVERSION COUNTING CONFIGURATION
LOCATION: Admin → Key events → [event] → Edit
OPTIONS: ┌─────────────────┬───────────────────────────────────────────────┐ │ Once per event │ Every time the event fires = 1 conversion │ │ (default) │ ✅ Use for: purchases, form submits │ │ │ │ │ │ Example: 3x purchase = 3 conversions │ ├─────────────────┼───────────────────────────────────────────────┤ │ Once per │ Max 1 conversion per session │ │ session │ ✅ Use for: signups, lead forms │ │ │ │ │ │ Example: 3x form submit = 1 conversion │ └─────────────────┴───────────────────────────────────────────────┘
RECOMMENDATIONS PER USE CASE: ──────────────────────────────
E-COMMERCE: ├── purchase → Once per event (each order counts) ├── begin_checkout → Once per session (1 intent per session) ├── add_to_cart → Once per event (counts volume) └── view_item → Not as conversion
LEAD GENERATION: ├── generate_lead → Once per session (1 lead per session) ├── phone_click → Once per session (1 intent per session) ├── form_submit → Once per session └── contact_request → Once per session
SAAS: ├── trial_start → Once per session ├── subscription_purchase → Once per event (each subscription) ├── upgrade → Once per event └── feature_activation → Once per session
## Primary vs Secondary Conversions
PRIMARY VS SECONDARY FOR GOOGLE ADS
CONCEPT: ┌────────────────────────────────────────────────────────────────┐ │ PRIMARY CONVERSIONS SECONDARY CONVERSIONS │ │ ═══════════════════════════ ═══════════════════════════ │ │ Used for: Used for: │ │ ├── Smart Bidding optimization ├── Reporting/observation │ │ ├── ROAS/CPA calculation ├── Funnel insights │ │ └── Budget optimization └── Additional signals │ │ │ │ Impact on bidding: YES Impact on bidding: NO │ │ │ │ Example: Example: │ │ └── purchase ├── add_to_cart │ │ └── qualified_lead ├── begin_checkout │ │ └── page_view (pricing) │ └────────────────────────────────────────────────────────────────┘
WHEN TO CHOOSE: ├── Primary is determined at import in Google Ads ├── GA4 only marks as "key event" ├── Google Ads distinguishes primary/secondary └── Choose in: Google Ads → Goals → Conversions → Settings
BEST PRACTICES: ──────────────── ✅ MAX 1-2 PRIMARY conversions per campaign type ✅ Use same primary across related campaigns ✅ Secondary for observation without bidding impact ✅ Keep consistent over time (AI needs history)
AVOID: ├── Too many primary conversions (confuses algorithm) ├── Mix of upper and lower funnel as primary ├── Constantly switching primary └── Overlapping conversions as primary
## Recommended Key Events per Business Type
KEY EVENT CONFIGURATION PER BUSINESS TYPE
E-COMMERCE ────────── ┌──────────────────┬──────────┬──────────┬─────────────────────┐ │ Event │ Priority │ Value │ Counting │ ├──────────────────┼──────────┼──────────┼─────────────────────┤ │ purchase │ Primary │ Dynamic │ Once per event │ ├──────────────────┼──────────┼──────────┼─────────────────────┤ │ begin_checkout │ Secondary│ €5-10 │ Once per session │ ├──────────────────┼──────────┼──────────┼─────────────────────┤ │ add_to_cart │ Secondary│ €2-5 │ Once per session │ ├──────────────────┼──────────┼──────────┼─────────────────────┤ │ add_payment_info │ Secondary│ €3-7 │ Once per session │ └──────────────────┴──────────┴──────────┴─────────────────────┘
LEAD GENERATION (B2B) ───────────────────── ┌──────────────────┬──────────┬──────────┬─────────────────────┐ │ Event │ Priority │ Value │ Counting │ ├──────────────────┼──────────┼──────────┼─────────────────────┤ │ generate_lead │ Primary │ €50-500 │ Once per session │ │ (demo request) │ │ │ │ ├──────────────────┼──────────┼──────────┼─────────────────────┤ │ phone_click │ Secondary│ €30-100 │ Once per session │ ├──────────────────┼──────────┼──────────┼─────────────────────┤ │ contact_submit │ Secondary│ €20-50 │ Once per session │ ├──────────────────┼──────────┼──────────┼─────────────────────┤ │ pricing_view │ Secondary│ €5-10 │ Once per session │ └──────────────────┴──────────┴──────────┴─────────────────────┘
SAAS / SUBSCRIPTION ─────────────────── ┌──────────────────┬──────────┬──────────┬─────────────────────┐ │ Event │ Priority │ Value │ Counting │ ├──────────────────┼──────────┼──────────┼─────────────────────┤ │ trial_start │ Primary │ €25-100 │ Once per session │ ├──────────────────┼──────────┼──────────┼─────────────────────┤ │ subscription_ │ Primary │ Dynamic │ Once per event │ │ purchase │ │ (MRR) │ │ ├──────────────────┼──────────┼──────────┼─────────────────────┤ │ sign_up │ Secondary│ €10-30 │ Once per session │ ├──────────────────┼──────────┼──────────┼─────────────────────┤ │ feature_activate │ Secondary│ €5-15 │ Once per session │ └──────────────────┴──────────┴──────────┴─────────────────────┘
CONTENT / PUBLISHER ─────────────────── ┌──────────────────┬──────────┬──────────┬─────────────────────┐ │ Event │ Priority │ Value │ Counting │ ├──────────────────┼──────────┼──────────┼─────────────────────┤ │ newsletter_ │ Primary │ €5-20 │ Once per session │ │ signup │ │ │ │ ├──────────────────┼──────────┼──────────┼─────────────────────┤ │ premium_article_ │ Secondary│ €2-5 │ Once per session │ │ view │ │ │ │ ├──────────────────┼──────────┼──────────┼─────────────────────┤ │ content_download │ Secondary│ €3-10 │ Once per event │ └──────────────────┴──────────┴──────────┴─────────────────────┘
## Key Event Validation
KEY EVENT TESTING WORKFLOW
STEP 1: Check in DebugView ─────────────────────────── LOCATION: Admin → DebugView
VERIFICATION: ├── Event appears in stream ├── Event is marked with key event indicator ├── Parameters correct (value, currency) └── No duplicate events
STEP 2: Check in Realtime ────────────────────────── LOCATION: Reports → Realtime
VERIFICATION: ├── Key event count increments ├── Conversion card shows event └── Value is registered (if applicable)
STEP 3: Check in Key Events Report ──────────────────────────────────── LOCATION: Reports → Engagement → Key events
NOTE: Data may be delayed 24-48 hours
VERIFICATION: ├── Event appears in list ├── Count is correct ├── Value is correct └── Trend looks normal
STEP 4: Check in Admin → Key Events ───────────────────────────────────── LOCATION: Admin → Data display → Key events
VERIFICATION: ├── Event status: Active ├── Counting method correct ├── Value correctly configured └── No duplicate entries
## MCP Tool: Verify Key Event Performance
Use `ga4_run_report()` to check key event counts and trends:
```python
# Check key event counts over last 30 days
ga4_run_report(
property_id="YOUR_PROPERTY_ID",
start_date="30daysAgo",
end_date="yesterday",
metrics=["keyEvents", "sessionKeyEventRate"],
dimensions=["eventName", "date"]
)
# Note: filter by eventName in your analysis — ga4_run_report returns all events
Google Ads Conversion Import Preparation
PREPARING FOR GOOGLE ADS IMPORT
==================================
CHECKLIST FOR GA4 KEY EVENTS:
┌────┬────────────────────────────────────────────────────────────┐
│ [] │ Key Event correctly marked in GA4 │
├────┼────────────────────────────────────────────────────────────┤
│ [] │ Event has value (dynamic or static) │
├────┼────────────────────────────────────────────────────────────┤
│ [] │ Currency correctly set │
├────┼────────────────────────────────────────────────────────────┤
│ [] │ Counting method correct (once per event/session) │
├────┼────────────────────────────────────────────────────────────┤
│ [] │ Google Ads account linked with GA4 │
├────┼────────────────────────────────────────────────────────────┤
│ [] │ Sufficient conversions for reliable data (50+/month) │
├────┼────────────────────────────────────────────────────────────┤
│ [] │ DebugView test passed │
└────┴────────────────────────────────────────────────────────────┘
IMPORT FLOW (AFTER PREPARATION):
──────────────────────────────────
1. Google Ads → Goals → Conversions
2. + New conversion action
3. Import → Google Analytics 4 properties
4. Select your property
5. Select key event(s) to import
6. Configure as Primary or Secondary
7. Save
IMPORT CONSIDERATIONS:
├── Import sync takes 4-6 hours initially
├── Ongoing sync: every few hours
├── 5-15% discrepancy with native GA4 is normal
├── Attribution window differences exist
└── ALWAYS test before modifying live campaigns
Troubleshooting
KEY EVENT TROUBLESHOOTING
==========================
PROBLEM: Key Event is not counting
────────────────────────────────────
Checklist:
[] Is the event actually firing? (DebugView)
[] Is the event name EXACTLY correct (case-sensitive)?
[] Is the counting method correctly set?
[] Has consent been given? (consent mode)
[] Are you waiting long enough? (24-48 hours processing)
PROBLEM: Value is not being registered
────────────────────────────────────────
Checklist:
[] Is 'value' parameter being sent?
[] Is value a NUMBER, not a string?
[] Is 'currency' parameter being sent?
[] Currency code correct? (EUR, USD, not "euro")
[] Is default value set as fallback?
PROBLEM: Duplicate Key Events
──────────────────────────────
Causes:
├── Event is triggered multiple times
├── GTM tag fires multiple times
├── SPA route changes re-trigger
└── Page refresh triggers again
Solution:
├── Review trigger conditions in GTM
├── Use "Once per session" counting
├── Implement event deduplication
└── Add session-based blocking trigger
PROBLEM: Key Event not appearing in Google Ads
───────────────────────────────────────────────
Checklist:
[] Is Google Ads account linked?
[] Is the link active? (check both sides)
[] Are you waiting long enough? (24-48 hours first sync)
[] Is the correct property selected?
[] Do you have permissions in both accounts?
PROBLEM: Conversion count differs GA4 vs Google Ads
────────────────────────────────────────────────────
Normal: 5-15% difference is acceptable
Causes for larger difference:
├── Different attribution windows
├── Different counting methods
├── Time zone differences
├── Cross-device tracking differences
└── Consent mode differences
Solution:
├── Align attribution windows
├── Document expected difference
├── Use GA4 as source of truth for reporting
└── Use Google Ads numbers for bidding decisions
Key Event Audit Checklist
KEY EVENT CONFIGURATION AUDIT
==============================
[] INVENTORY
├── [] All key events documented
├── [] No unnecessary key events active
├── [] Consistent with business goals
└── [] Aligned with advertising strategy
[] VALUE CONFIGURATION
├── [] Primary conversions have value
├── [] Values are realistic (not €0 or €999999)
├── [] Currency correct
└── [] Dynamic values where possible
[] COUNTING CONFIGURATION
├── [] Counting method fits use case
├── [] No over-counting from duplicates
├── [] Consistent across related events
└── [] Documented
[] GOOGLE ADS ALIGNMENT
├── [] Important key events imported
├── [] Primary/Secondary correctly set
├── [] Attribution settings aligned
└── [] Conversion lag windows appropriate
[] TESTING
├── [] All key events tested in DebugView
├── [] Values correctly registered
├── [] No duplicate counting
└── [] Realtime tracking working
Output: Key Events Configuration Template
# Key Events Configuration Report
## Property Information
- **Property:** [Property Name]
- **Measurement ID:** G-XXXXXXXXXX
- **Configuration date:** [Date]
## Key Events Overview
### Primary Key Events (for bidding)
| Event Name | Value | Counting | Google Ads Status |
|------------|-------|----------|-------------------|
| purchase | Dynamic | Per event | ✅ Imported (Primary) |
| generate_lead | €200 | Per session | ✅ Imported (Primary) |
### Secondary Key Events (for observation)
| Event Name | Value | Counting | Google Ads Status |
|------------|-------|----------|-------------------|
| begin_checkout | €10 | Per session | ✅ Imported (Secondary) |
| add_to_cart | €3 | Per session | Not imported |
| phone_click | €50 | Per session | ✅ Imported (Secondary) |
## Value Calculation
### Lead Value Calculation
Average Deal Size: €[X] Close Rate: [X]% Calculated Lead Value: €[X] Applied Value: €[X]
### E-commerce Value
Method: Dynamic (transaction value) Currency: EUR Fallback Value: €[X] (if no value sent)
## Counting Method Rationale
| Event | Method | Rationale |
|-------|--------|-----------|
| purchase | Per event | Each order is a separate transaction |
| generate_lead | Per session | Prevent duplicate leads |
| begin_checkout | Per session | 1 checkout intent per visit |
## Google Ads Import Status
- **Link Status:** ✅ Active
- **Import Sync:** Every 4-6 hours
- **Last Sync:** [Date/time]
## Validation Status
- [x] DebugView test passed
- [x] Realtime tracking verified
- [x] Value registration confirmed
- [x] No duplicate counting
- [x] Google Ads import verified
## Recommendations
1. [First recommendation]
2. [Second recommendation]
3. [Third recommendation]
## Notes
[Any points of attention or specifics]
Other skills for the same job
Different authors, same problem. Matched on the words in the skill name, across every library in the catalogue except this one.
- events by coreyhaines31 · 50,138
- webinar-content-and-events by manojbajaj95 · 100
- events by markster · 64
- events-ops by shalintripathi · 13
- company-events by Frontal-so · 5
Need help setting it up?
This page tells you what ga4-key-events-config does and what it needs. Cheetah builds the agent setup it runs inside: data, CRM, sequencing and the guardrails.
Book a call →The directory stays free. There is nothing gated behind this.