# 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