🔴 The Critical 15 Checklist
I’ve ranked these by financial impact. Start from #1 and work your way down.
TIER 1: Fix These First (Your Wallet is Bleeding) 💸
1. Data Retention Set to 14 Months
The Problem: GA4’s default data retention is only 2 months. After that, your user-level and event-level data is DELETED. Forever.
You can’t:
Build audiences from old data
Create retroactive cohorts
Analyze historical user behavior
Run explorations on data older than 2 months
The Fix:
1. Go to Admin → Data Settings → Data Retention
2. Change from "2 months" to "14 months"
3. Click SaveTime: 30 seconds Impact: Massive - this affects ALL future analysis
⚠️ Warning: You can’t recover data that’s already been deleted. Fix this NOW.
2. Conversions Are Actually Marked as “Key Events”
The Problem: You might be tracking purchase/lead events, but if they’re not marked as “key events” (formerly conversions), they:
Won’t import to Google Ads
Won’t trigger Smart Bidding optimization
Won’t appear in conversion reports
The Fix:
1. Admin → Events
2. Find your conversion event (purchase, generate_lead, sign_up)
3. Toggle "Mark as key event" to ON
4. Repeat for all conversion eventsPro Tip: You can have up to 30 key events per property. Use them wisely.
Events to mark as key events:
purchase(e-commerce)generate_lead(form submissions)sign_up(account creation)begin_checkout(high intent)Custom conversion events specific to your business
3. Internal Traffic Filter is ACTIVE
The Problem: Your team’s browsing, testing, and QA work is being counted as real traffic. This inflates:
Session counts
Pageview numbers
Conversion rates (when you test checkouts)
Engagement metrics
The Fix:
1. Admin → Data Streams → [Your Stream] → Configure tag settings
2. Show more → Define internal traffic
3. Click "Create" and add your IP addresses:
- traffic_type: internal
- IP address: matches regex: YOUR_IP_HERE
4. Go to Admin → Data Settings → Data Filters
5. Find "Internal Traffic" filter
6. Change from "Testing" to "Active"How to Find Your IP:
Google “what is my IP”
Add office IPs, home IPs, VPN IPs
Time: 5 minutes Impact: Immediately improves data quality
4. Google Ads Account Linked + Conversions Importing
The Problem: If GA4 isn’t linked to Google Ads:
Your conversions don’t import
Smart Bidding has no conversion data
You can’t use GA4 audiences in campaigns
Attribution is completely broken
The Fix:
1. Admin → Product Links → Google Ads Links → Link
2. Choose your Google Ads account
3. Enable "Personalized advertising" if you want audiences
4. After linking, go to Google Ads:
- Tools → Conversions → Import
- Select GA4 property
- Import your key events as conversionsCritical: Make sure you import as “Conversions” not “All conversions” for Smart Bidding.
5. Auto-Tagging Enabled in Google Ads
The Problem: Without auto-tagging:
Google Ads clicks won’t be properly attributed
You’ll lose conversion data
Smart Bidding optimization fails
The Fix:
Google Ads:
1. Settings → Account Settings
2. Auto-tagging: Turn ON
3. Check "Tag the URL that people click through from my ad"Also set in GA4:
gtag('config', 'G-XXXXXXXXXX', {
'allow_google_signals': true, 'allow_ad_personalization_signals': true});TIER 2: Fix These This Week (Optimization Killers) 📉
6. Purchase Event Has Unique Transaction IDs
The Problem: Duplicate transaction IDs = duplicate revenue counting. Your revenue reports will be WILDLY inflated.
The Fix:
// BAD: Same transaction ID'transaction_id': 'ORDER_12345'// GOOD: Unique transaction ID'transaction_id': 'ORDER_' + Date.now() + '_' + Math.random()
// BETTER: Use your actual order ID from database'transaction_id': orderData.id // e.g., "ORD_2025_12345"How to check:
1. Reports → Monetization → Ecommerce purchases
2. Look at transaction_id column
3. If you see duplicates, you have a problem7. Revenue Numbers Match Payment Processor
The Problem: If GA4 revenue doesn’t match Stripe/PayPal/etc:
Your attribution is wrong
You’re making decisions on bad data
You can’t trust your ROAS
The Fix: Do a monthly reconciliation:
Step 1: Export GA4 Revenue
- Reports → Monetization → Ecommerce purchases
- Date range: Last month
- Total revenue = $______
Step 2: Check Payment Processor
- Stripe/PayPal dashboard
- Same date range
- Total revenue = $______
Step 3: Compare
- If within 2-5% difference: OK (expected variance)
- If >5% difference: You have a tracking problemCommon causes of mismatch:
Refunds not tracked
Test transactions included
Currency conversion issues
Time zone differences
8. UTM Parameters Standardized Across All Campaigns
The Problem: Inconsistent UTM parameters = broken attribution. You’ll see:
“google / cpc” vs “Google / CPC” (treated as different sources)
“email” vs “email_campaign” vs “Email Marketing”
Impossible to aggregate campaign performance
The Fix: Create a UTM naming convention document:
Source (utm_source):
✅ facebook, google, linkedin, twitter
❌ Facebook, FACEBOOK, fb
Medium (utm_medium):
✅ cpc, email, social, organic
❌ paid, paid-search, PPC
Campaign (utm_campaign):
✅ q4_promo_2025
❌ Q4 Promo 2025!
Rules:
- Always lowercase
- Use underscores, not spaces
- No special characters
- Be consistentTool: Use a UTM builder to enforce standards
Create a Google Sheet with formulas
Use a URL builder tool
Train your team
9. Enhanced Measurement Configured (Not Just “On”)
The Problem: Enhanced measurement is enabled by default, but you need to REVIEW what it’s tracking. You might be:
Tracking irrelevant video embeds
Capturing unwanted file downloads
Missing custom site search
The Fix:
1. Admin → Data Streams → [Your Stream] → Enhanced measurement
2. Click the gear icon ⚙️
3. Review each option:
Page views: ✅ Keep ON
Scrolls: ✅ Keep ON (90% depth)
Outbound clicks: ✅ Keep ON
Site search: ⚠️ Configure search query parameter
Video engagement: ⚠️ ON only if you embed videos
File downloads: ⚠️ Review file extensions
Site Search Configuration: If you have internal search (e.g., yoursite.com/search?q=marketing):
Query parameter:
q(or whatever yours is)This enables automatic search tracking
10. No PII (Personal Identifiable Information) in Events
The Problem: Sending PII to GA4 violates:
Google’s Terms of Service
GDPR (up to €20M fines)
CCPA
Your user’s trust
Never Send to GA4:
❌ Email addresses
❌ Phone numbers
❌ Full names
❌ Social security numbers
❌ Credit card info
❌ Passwords (seriously, I’ve seen this)
The Fix: Audit your custom events:
// BAD: Sending emailgtag('event', 'form_submit', {
'user_email': '[email protected]' // ❌ NEVER DO THIS});// GOOD: Hash or use IDgtag('event', 'form_submit', {
'user_id': 'user_abc123', // ✅ Hashed or anonymized ID 'form_type': 'contact'});
TIER 3: Fix These Before Month-End (Missing Money) 💰
11. Conversion Values Assigned to All Key Events
The Problem: Without conversion values:
You can’t calculate ROAS
You can’t optimize for value
All conversions look equal (they’re not)
The Fix: Calculate your lead values:
Formula:
Lead Value = (Annual Revenue ÷ Total Customers) × Conversion Rate
Example:
- Annual Revenue: $500,000
- Total Customers: 200
- Conversion Rate: 5%
- Lead Value = ($500,000 ÷ 200) × 0.05 = $125 per lead
Then assign to events:
gtag('event', 'generate_lead', {
'currency': 'USD', 'value': 125, // ✅ Estimated lead value 'lead_type': 'demo_request'});gtag('event', 'sign_up', {
'currency': 'USD', 'value': 50, // ✅ Trial signup value 'signup_type': 'free_trial'});
12. Form Submissions Tracked as “generate_lead”
The Problem: Contact forms are KEY conversions, but many sites:
Don’t track them at all
Track them as generic “form_submit” (not a standard event)
Don’t assign value
The Fix:
// On form submissiondocument.getElementById('contactForm').addEventListener('submit', function(e) {
gtag('event', 'generate_lead', {
'currency': 'USD', 'value': 100, // Your lead value 'form_id': 'contact_form', 'form_type': 'contact', 'form_location': 'homepage' });});
Mark as key event:
Admin → Events → Find “generate_lead”
Toggle “Mark as key event”
13. Checkout Funnel Exists (E-commerce)
The Problem: Without a checkout funnel, you can’t:
See where users drop off
Identify bottlenecks
Optimize conversion rate
Calculate abandonment rate
The Fix: Create a funnel exploration:
1. Explore → Create new exploration
2. Choose "Funnel exploration"
3. Add steps:
- Step 1: view_item (Product page)
- Step 2: add_to_cart (Add to cart)
- Step 3: begin_checkout (Start checkout)
- Step 4: purchase (Complete purchase)
4. Save and review weekly
What to look for:
Biggest drop-off point (usually Step 2→3)
Cart abandonment rate
Device differences (mobile vs desktop)
14. Test Transactions Filtered Out
The Problem: Your test orders are counted as real revenue. You’re inflating:
Revenue numbers
Conversion rates
Order counts
The Fix:
Option 1: Use a test transaction ID pattern
// Test ordersif (isTestOrder) {
gtag('event', 'purchase', {
'transaction_id': 'TEST_' + Date.now(), // Starts with TEST_ // ... rest of data });}
Then create a filter in GA4:
Admin → Data Settings → Data Filters → Create filter
Parameter: transaction_id
Match type: begins_with
Value: TEST_
Action: Exclude
Option 2: Separate test environment Use a different GA4 property for staging/dev.
15. Currency Set Correctly
The Problem: If your GA4 property currency doesn’t match your actual currency:
Revenue reports will be wrong
Google Ads ROAS will be wrong
You’ll make bad optimization decisions
The Fix:
1. Admin → Property Settings
2. Currency: Select your currency (USD, EUR, INR, etc.)
3. ⚠️ NOTE: You can change this, but historical data won't be recalculated
Also, ALWAYS specify currency in events:
gtag('event', 'purchase', {
'currency': 'USD', // ✅ Always specify 'value': 99.99});
✅ Your Week 1 Action Plan
Today (30 minutes):
[ ] Set data retention to 14 months
[ ] Mark your conversions as key events
[ ] Enable internal traffic filter
This Week (2 hours):
[ ] Link Google Ads account
[ ] Enable auto-tagging
[ ] Check for duplicate transaction IDs
[ ] Reconcile GA4 revenue with payment processor
Before Month-End:
[ ] Create UTM naming convention document
[ ] Review enhanced measurement settings
[ ] Audit events for PII
[ ] Assign values to all conversions
[ ] Set up form tracking
[ ] Build checkout funnel (e-commerce)
[ ] Filter out test transactions
[ ] Verify currency settings
📥 Download This Week’s Mini-Checklist
I’ve created a downloadable checklist with just these 15 critical items.
Import it into:
Google Sheets
Excel
Notion
Your project management tool
🚀 What’s Coming Next Week
Week 2: E-commerce Tracking Masterclass
If you sell products online, next week’s edition is ESSENTIAL. I’ll cover:
The complete e-commerce event flow (view_item → purchase)
How to fix revenue attribution
Cart abandonment tracking
Product performance analysis
Why your revenue numbers are probably wrong
About This Series:
This is Week 1 of a 4-week GA4 Audit Series:
✅ Week 1: GA4 Audit Essentials (You are here)
Week 2: E-commerce Tracking Masterclass
Week 3: Privacy-First Analytics
Week 4: Advanced GA4 Features
Resources Mentioned:

