
Why GA4 Setups Still Go Wrong in 2025
Even in 2025, most GA4 properties are set up incorrectly. Common mistakes:
- Relying on Enhanced Measurement only (spoiler: it misses key events)
- Not enabling debug mode for event validation
- Using Shopify's GA4 integration without checking the data
π‘ Tip: An audit after setup is often more useful than a checklist before. But weβll give you both.
Step 1: Create the GA4 Property (Properly)
- Go to Google Analytics and create a new GA4 property
- Choose the correct timezone and currency β get this wrong and your reports are useless
- Create a Web stream (or App stream, if relevant)
- Enable Enhanced Measurement, but be ready to override it via GTM
- Extend data retention to 14 months (default is 2 months)
Step 2: Enable Debugging and Real-Time Validation
- Install the GA4 DebugView Chrome extension
- Use GTM's Preview mode or add
debug_mode: true
togtag
calls - Test events manually and confirm they appear in DebugView
- Use your browserβs Developer Tools > Network tab to confirm payloads
window.dataLayer.push({
Β event: 'form_submit',
Β form_name: 'Contact Form',
Β debug_mode: true
});
Step 3: Define Your Events and Parameters
GA4 revolves around events. Hereβs how to handle them like a pro:
- Stick to Google's recommended events list when possible
- Add custom parameters to improve segmentation (e.g.,
button_text
,page_section
) - Example use cases:
outbound_click
withdestination_url
video_play
withvideo_title
,video_length
form_submit
withform_name
,form_id
Caution: GA4 has quota limits. Too many unique parameters = sampling and cost issues in BigQuery.
Step 4: Ecommerce Tracking
This is where setups die.
- Use GA4βs item-level ecommerce schema
- Track
view_item
,add_to_cart
,begin_checkout
,purchase
- Include all product-level metadata (item_id, item_name, item_category, price, etc.)
Shopify Users:
Do not rely on the built-in GA4 integration alone. It often:
- Sends duplicate events
- Misses
view_item_list
- Fails to capture item metadata properly
Step 5: Implement Consent Mode (GDPR Compliance)
- Use GTM + Consent Mode v2 for full control
- Fire all tags conditionally based on consent state
- Set default consent to denied:
gtag('consent', 'default', {
Β ad_storage: 'denied',
Β analytics_storage: 'denied'
});
- Then update on acceptance:
gtag('consent', 'update', {
Β ad_storage: 'granted',
Β analytics_storage: 'granted'
});
Need server-side consent handling? We build that too.
Step 6: Link Google Ads & BigQuery
Google Ads
- Enable conversion linking in GA4
- Sync GA4 audiences with Google Ads
- Import GA4 conversions back into Ads
BigQuery
- Go to Admin > BigQuery Links
- Choose your project and dataset
- Data is streamed daily (or hourly for 360 users)
- Use it for:
- Attribution analysis
- Drop-off detection
- LTV segmentation
Step 7: Hidden Settings Most People Miss
- Session timeout (default 30 mins) β adjust based on site behavior
- Internal traffic β filter out your IPs properly
- Referral exclusions β add Stripe, PayPal, etc. to stop broken sessions
- Currency mismatch β confirm your ecommerce data uses the right currency field
β