Phase 2 refactoring of skills >500 lines and medium-sized skills: - paid-ads: 553 → 297 lines - Extract ad-copy-templates.md, audience-targeting.md, platform-setup-checklists.md - analytics-tracking: 541 → 292 lines - Extract ga4-implementation.md, gtm-implementation.md, event-library.md - ab-test-setup: 510 → 264 lines - Extract test-templates.md, sample-size-guide.md - copywriting: 458 → 248 lines - Extract copy-frameworks.md (headline formulas, section types) - page-cro: 336 → 180 lines - Extract experiments.md (experiment ideas by page type) - onboarding-cro: 435 → 218 lines - Extract experiments.md (onboarding experiment ideas) All skills now use progressive disclosure with references/ folders, keeping SKILL.md files focused on core workflow while detailed content is available when needed. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
291 lines
5.7 KiB
Markdown
291 lines
5.7 KiB
Markdown
# GA4 Implementation Reference
|
|
|
|
Detailed implementation guide for Google Analytics 4.
|
|
|
|
## Configuration
|
|
|
|
### Data Streams
|
|
|
|
- One stream per platform (web, iOS, Android)
|
|
- Enable enhanced measurement for automatic tracking
|
|
- Configure data retention (2 months default, 14 months max)
|
|
- Enable Google Signals (for cross-device, if consented)
|
|
|
|
### Enhanced Measurement Events (Automatic)
|
|
|
|
| Event | Description | Configuration |
|
|
|-------|-------------|---------------|
|
|
| page_view | Page loads | Automatic |
|
|
| scroll | 90% scroll depth | Toggle on/off |
|
|
| outbound_click | Click to external domain | Automatic |
|
|
| site_search | Search query used | Configure parameter |
|
|
| video_engagement | YouTube video plays | Toggle on/off |
|
|
| file_download | PDF, docs, etc. | Configurable extensions |
|
|
|
|
### Recommended Events
|
|
|
|
Use Google's predefined events when possible for enhanced reporting:
|
|
|
|
**All properties:**
|
|
- login, sign_up
|
|
- share
|
|
- search
|
|
|
|
**E-commerce:**
|
|
- view_item, view_item_list
|
|
- add_to_cart, remove_from_cart
|
|
- begin_checkout
|
|
- add_payment_info
|
|
- purchase, refund
|
|
|
|
**Games:**
|
|
- level_up, unlock_achievement
|
|
- post_score, spend_virtual_currency
|
|
|
|
Reference: https://support.google.com/analytics/answer/9267735
|
|
|
|
---
|
|
|
|
## Custom Events
|
|
|
|
### gtag.js Implementation
|
|
|
|
```javascript
|
|
// Basic event
|
|
gtag('event', 'signup_completed', {
|
|
'method': 'email',
|
|
'plan': 'free'
|
|
});
|
|
|
|
// Event with value
|
|
gtag('event', 'purchase', {
|
|
'transaction_id': 'T12345',
|
|
'value': 99.99,
|
|
'currency': 'USD',
|
|
'items': [{
|
|
'item_id': 'SKU123',
|
|
'item_name': 'Product Name',
|
|
'price': 99.99
|
|
}]
|
|
});
|
|
|
|
// User properties
|
|
gtag('set', 'user_properties', {
|
|
'user_type': 'premium',
|
|
'plan_name': 'pro'
|
|
});
|
|
|
|
// User ID (for logged-in users)
|
|
gtag('config', 'GA_MEASUREMENT_ID', {
|
|
'user_id': 'USER_ID'
|
|
});
|
|
```
|
|
|
|
### Google Tag Manager (dataLayer)
|
|
|
|
```javascript
|
|
// Custom event
|
|
dataLayer.push({
|
|
'event': 'signup_completed',
|
|
'method': 'email',
|
|
'plan': 'free'
|
|
});
|
|
|
|
// Set user properties
|
|
dataLayer.push({
|
|
'user_id': '12345',
|
|
'user_type': 'premium'
|
|
});
|
|
|
|
// E-commerce purchase
|
|
dataLayer.push({
|
|
'event': 'purchase',
|
|
'ecommerce': {
|
|
'transaction_id': 'T12345',
|
|
'value': 99.99,
|
|
'currency': 'USD',
|
|
'items': [{
|
|
'item_id': 'SKU123',
|
|
'item_name': 'Product Name',
|
|
'price': 99.99,
|
|
'quantity': 1
|
|
}]
|
|
}
|
|
});
|
|
|
|
// Clear ecommerce before sending (best practice)
|
|
dataLayer.push({ ecommerce: null });
|
|
dataLayer.push({
|
|
'event': 'view_item',
|
|
'ecommerce': {
|
|
// ...
|
|
}
|
|
});
|
|
```
|
|
|
|
---
|
|
|
|
## Conversions Setup
|
|
|
|
### Creating Conversions
|
|
|
|
1. **Collect the event** - Ensure event is firing in GA4
|
|
2. **Mark as conversion** - Admin > Events > Mark as conversion
|
|
3. **Set counting method**:
|
|
- Once per session (leads, signups)
|
|
- Every event (purchases)
|
|
4. **Import to Google Ads** - For conversion-optimized bidding
|
|
|
|
### Conversion Values
|
|
|
|
```javascript
|
|
// Event with conversion value
|
|
gtag('event', 'purchase', {
|
|
'value': 99.99,
|
|
'currency': 'USD'
|
|
});
|
|
```
|
|
|
|
Or set default value in GA4 Admin when marking conversion.
|
|
|
|
---
|
|
|
|
## Custom Dimensions and Metrics
|
|
|
|
### When to Use
|
|
|
|
**Custom dimensions:**
|
|
- Properties you want to segment/filter by
|
|
- User attributes (plan type, industry)
|
|
- Content attributes (author, category)
|
|
|
|
**Custom metrics:**
|
|
- Numeric values to aggregate
|
|
- Scores, counts, durations
|
|
|
|
### Setup Steps
|
|
|
|
1. Admin > Data display > Custom definitions
|
|
2. Create dimension or metric
|
|
3. Choose scope:
|
|
- **Event**: Per event (content_type)
|
|
- **User**: Per user (account_type)
|
|
- **Item**: Per product (product_category)
|
|
4. Enter parameter name (must match event parameter)
|
|
|
|
### Examples
|
|
|
|
| Dimension | Scope | Parameter | Description |
|
|
|-----------|-------|-----------|-------------|
|
|
| User Type | User | user_type | Free, trial, paid |
|
|
| Content Author | Event | author | Blog post author |
|
|
| Product Category | Item | item_category | E-commerce category |
|
|
|
|
---
|
|
|
|
## Audiences
|
|
|
|
### Creating Audiences
|
|
|
|
Admin > Data display > Audiences
|
|
|
|
**Use cases:**
|
|
- Remarketing audiences (export to Ads)
|
|
- Segment analysis
|
|
- Trigger-based events
|
|
|
|
### Audience Examples
|
|
|
|
**High-intent visitors:**
|
|
- Viewed pricing page
|
|
- Did not convert
|
|
- In last 7 days
|
|
|
|
**Engaged users:**
|
|
- 3+ sessions
|
|
- Or 5+ minutes total engagement
|
|
|
|
**Purchasers:**
|
|
- Purchase event
|
|
- For exclusion or lookalike
|
|
|
|
---
|
|
|
|
## Debugging
|
|
|
|
### DebugView
|
|
|
|
Enable with:
|
|
- URL parameter: `?debug_mode=true`
|
|
- Chrome extension: GA Debugger
|
|
- gtag: `'debug_mode': true` in config
|
|
|
|
View at: Reports > Configure > DebugView
|
|
|
|
### Real-Time Reports
|
|
|
|
Check events within 30 minutes:
|
|
Reports > Real-time
|
|
|
|
### Common Issues
|
|
|
|
**Events not appearing:**
|
|
- Check DebugView first
|
|
- Verify gtag/GTM firing
|
|
- Check filter exclusions
|
|
|
|
**Parameter values missing:**
|
|
- Custom dimension not created
|
|
- Parameter name mismatch
|
|
- Data still processing (24-48 hrs)
|
|
|
|
**Conversions not recording:**
|
|
- Event not marked as conversion
|
|
- Event name doesn't match
|
|
- Counting method (once vs. every)
|
|
|
|
---
|
|
|
|
## Data Quality
|
|
|
|
### Filters
|
|
|
|
Admin > Data streams > [Stream] > Configure tag settings > Define internal traffic
|
|
|
|
**Exclude:**
|
|
- Internal IP addresses
|
|
- Developer traffic
|
|
- Testing environments
|
|
|
|
### Cross-Domain Tracking
|
|
|
|
For multiple domains sharing analytics:
|
|
|
|
1. Admin > Data streams > [Stream] > Configure tag settings
|
|
2. Configure your domains
|
|
3. List all domains that should share sessions
|
|
|
|
### Session Settings
|
|
|
|
Admin > Data streams > [Stream] > Configure tag settings
|
|
|
|
- Session timeout (default 30 min)
|
|
- Engaged session duration (10 sec default)
|
|
|
|
---
|
|
|
|
## Integration with Google Ads
|
|
|
|
### Linking
|
|
|
|
1. Admin > Product links > Google Ads links
|
|
2. Enable auto-tagging in Google Ads
|
|
3. Import conversions in Google Ads
|
|
|
|
### Audience Export
|
|
|
|
Audiences created in GA4 can be used in Google Ads for:
|
|
- Remarketing campaigns
|
|
- Customer match
|
|
- Similar audiences
|