GA4 Implementation Checklist (2026): 58 Checks
A complete, step-by-step checklist for implementing Google Analytics 4 correctly from day one. Ensure accurate tracking, proper configuration, and reliable reporting.
What This Resource Is
A step-by-step checklist of 58 checks in seven phases for implementing Google Analytics 4 (GA4) correctly from the ground up. Whether you're migrating from Universal Analytics, setting up analytics for a new website, or fixing an existing GA4 implementation, this checklist ensures you configure everything properly the first time.
This is not a high-level overview—it's a detailed, actionable implementation guide organized into logical phases, with specific verification steps for each checkpoint. Follow this checklist and you'll have a production-ready GA4 setup with accurate tracking, proper event configuration, and reliable reporting.
Who Should Use It
Perfect for:
- Marketing Analysts - Implementing GA4 for the first time
- Web Developers - Adding analytics tracking to websites
- Marketing Managers - Overseeing GA4 migration or setup
- Agency Teams - Standardizing GA4 implementations across clients
- Solo Marketers - Setting up analytics without technical support
- Data Engineers - Ensuring proper data collection architecture
Use this checklist if you're:
- Setting up GA4 for the first time
- Migrating from Universal Analytics (UA)
- Fixing a broken or poorly configured GA4 property
- Taking over analytics for a new company or client
- Launching a new website or app
- Ensuring your GA4 setup follows best practices
Don't use this if:
- You need a high-level GA4 overview only (read a guide first)
- You're just exploring GA4 features (not ready to implement)
- Someone else handles all technical implementation (share this with them)
How to Use It
Before You Begin: Prerequisites
You'll need:
- Google Account with appropriate permissions
- Website access - Ability to add code to your site (direct or via developer)
- Google Tag Manager - Strongly recommended (or ability to edit site code directly)
- Conversion goals defined - Know what actions you want to track
- Time allocation - 4-8 hours for basic setup, more for complex sites
Gather this information:
- Current analytics tracking (if migrating from UA)
- List of key conversion events
- E-commerce tracking requirements (if applicable)
- Cross-domain tracking needs
- User roles and access requirements
Implementation Approach
Phase-based implementation: This checklist is organized into 7 phases you'll complete in order:
- Phase 1: Property Setup - Create and configure your GA4 property
- Phase 2: Data Collection - Install tracking code and verify data flow
- Phase 3: Event Configuration - Set up custom events and conversions
- Phase 4: Enhanced Measurement - Configure automatic tracking features
- Phase 5: E-commerce Tracking (if applicable) - Implement transaction tracking
- Phase 6: Integration & Audiences - Connect platforms and build segments
- Phase 7: Reporting & Validation - Create reports and verify accuracy
For each checkpoint:
- Complete the action described
- Verify it's working using the provided test method
- Check off when confirmed working
- Note any issues or customizations in comments
Time estimates:
- Basic website (no e-commerce): 4-6 hours
- E-commerce site: 8-12 hours
- Complex site (multiple domains, app+web): 16+ hours
Testing as You Go
Critical: Don't skip verification steps!
After each phase, verify your implementation:
- Use GA4 DebugView for real-time testing
- Check Real-Time reports for immediate validation
- Review standard reports after 24-48 hours
- Document what you tested and results
Common Implementation Paths
Path 1: New Website, No Prior Analytics
- Follow all phases in order
- No migration concerns
- Clean slate implementation
Path 2: Migrating from Universal Analytics
- Keep UA running during GA4 setup (parallel tracking)
- Map UA goals to GA4 events
- Compare data for validation period
- Don't delete UA until confident in GA4
Path 3: Fixing Existing GA4 Setup
- Audit current state first (use our Marketing Data Audit Checklist)
- Identify gaps with this checklist
- Fix issues without disrupting working elements
- Test thoroughly before considering "done"
The Complete GA4 Implementation Checklist
Phase 1: Property Setup & Configuration (12 Checkpoints)
1.1 Create GA4 Property
Action: Create a new GA4 property in your Google Analytics account
- Log into Google Analytics admin
- Click "Create Property"
- Enter property name (e.g., "Company Name - Website")
- Select timezone and currency
- Click "Next" and configure business details
Verify: Property appears in your account list
Notes:
- One property per website/app (or combined web+app property)
- Choose timezone carefully (can't easily change later)
- Currency should match your business reporting currency
1.2 Create Data Stream
Action: Create a web data stream for your website
- In property setup, click "Web" for data stream type
- Enter website URL (e.g., https://www.yoursite.com)
- Enter stream name (e.g., "Main Website" or "Production")
- Click "Create stream"
Verify: Data stream created, Measurement ID displayed (G-XXXXXXXXXX)
Notes:
- One stream per website or app
- For multiple domains, create one stream and configure cross-domain tracking later
- Save your Measurement ID - you'll need it for tracking code
1.3 Configure Data Stream Settings
Action: Review and configure enhanced measurement settings
- In your data stream, review "Enhanced measurement" toggle
- Initially leave enabled (we'll configure details in Phase 4)
- Note other settings (iOS app, Android app not applicable for web)
Verify: Enhanced measurement toggle is ON
Notes:
- Enhanced measurement auto-tracks scrolls, outbound clicks, site search, video, file downloads
- We'll fine-tune these settings later
- Don't disable unless you have a specific reason
1.4 Set Up Google Signals
Action: Enable Google Signals for cross-device tracking
- Go to Admin > Property > Data Settings > Data Collection
- Enable "Google signals data collection"
- Review and accept terms
Verify: Google Signals shows as "Active"
Notes:
- Enables remarketing and cross-device reporting
- Requires compliance with privacy policies
- Users can opt out via Google Ads Settings
1.5 Configure Data Retention
Action: Set event data retention period
- Go to Admin > Property > Data Settings > Data Retention
- Set to "14 months" (maximum for standard GA4)
- Set "Reset user data on new activity" to ON
Verify: Retention set to 14 months
Notes:
- Default is 2 months (too short for most businesses!)
- This affects explorations and user-level reports
- Aggregated reports (standard) not affected
- BigQuery export preserves all data if needed
1.6 Add Users and Set Permissions
Action: Grant access to team members
- Go to Admin > Property > Property Access Management
- Click "+" to add users
- Enter email addresses and select role:
- Administrator: Full control (use sparingly)
- Editor: Create/edit but can't manage users
- Analyst: Build reports, audiences, but can't edit configuration
- Viewer: Read-only access
Verify: All users receive access email and can log in
Notes:
- Grant minimum necessary permissions
- Use Google Groups for team access management
- Review access quarterly and remove former employees
- Consider separate properties for dev/staging/production
1.7 Link Google Ads Account (if applicable)
Action: Connect your Google Ads account to GA4
- Go to Admin > Property > Google Ads Links
- Click "Link" and select your Google Ads account
- Enable auto-tagging
- Enable personalized advertising
- Click "Submit"
Verify: Link shows as "Active" in both GA4 and Google Ads
Notes:
- Must have admin access to both accounts
- Enables GA4 audiences in Google Ads
- Imports Google Ads cost data to GA4
- Required for enhanced conversions and better attribution
1.8 Link Search Console (if applicable)
Action: Connect Google Search Console to GA4
- Go to Admin > Property > Search Console Links
- Click "Link" and choose your Search Console property
- Select your web data stream
- Click "Submit"
Verify: Link shows as "Active"
Notes:
- Enables organic search query reporting in GA4
- Must have owner/admin access to Search Console
- Links at property level, not stream level
1.9 Configure Internal Traffic Filter
Action: Create filter to exclude your own office traffic
- Go to Admin > Property > Data Streams > [your stream]
- Click "Configure tag settings" > "Show more" > "Define internal traffic"
- Click "Create" and name it (e.g., "Office IP")
- Select "IP address equals" or "IP address begins with"
- Enter your office IP address(es)
- Save
Then activate the filter:
- Go to Admin > Property > Data Settings > Data Filters
- Toggle the "Internal Traffic" filter to "Active"
Verify: Visit your site from office, check DebugView shows traffic tagged as "internal"
Notes:
- Get your IP address from whatismyipaddress.com
- Add all office locations, VPN IPs
- For dynamic IPs, use "begins with" for IP range
- Can create "Test" state instead of filtering entirely
1.10 Set Up Developer/Test Filter (optional but recommended)
Action: Create filter to separate development traffic
- Go to Admin > Property > Data Streams > [your stream]
- Click "Configure tag settings" > "Show more" > "Define internal traffic"
- Create new rule for development environments
- Match on hostname (e.g., "hostname contains staging" or "hostname contains localhost")
- Save as "Development Traffic"
Verify: Visit staging site, check DebugView shows traffic tagged appropriately
Notes:
- Keeps test data separate from production
- Essential for accurate reporting
- Can create separate GA4 property for dev/staging instead
1.11 Configure Bot Filtering
Action: Enable bot filtering (should be default)
- Go to Admin > Property > Data Settings > Data Collection
- Verify "Exclude all hits from known bots and spiders" is checked
Verify: Setting is enabled
Notes:
- Usually enabled by default
- Filters out most bot traffic automatically
- For stubborn bots, may need custom filters later
1.12 Set Up BigQuery Export (optional, recommended for enterprises)
Action: Enable BigQuery export for raw data access
- Go to Admin > Property > BigQuery Links
- Click "Link" and select or create BigQuery project
- Choose daily or streaming export
- Configure dataset location (should match your region)
- Click "Submit"
Verify: Link shows as "Active", data begins flowing within 24 hours
Notes:
- Requires Google Cloud Platform account
- Free for first 10GB/month, then paid
- Enables custom analysis beyond GA4 interface
- Bypasses data sampling
- Preserves data beyond retention limits
- Recommended for high-traffic sites or advanced analytics needs
Phase 2: Data Collection Setup (8 Checkpoints)
2.1 Install Google Tag Manager (Recommended Method)
Action: Add GTM container to your website
- Create GTM account and container at tagmanager.google.com
- Copy container code snippet
- Add container code to every page:
- Part 1: In <head> section
- Part 2: Immediately after opening <body> tag
- Publish container
Verify:
- Visit your site, right-click > Inspect, search for "googletagmanager.com"
- Use Google Tag Assistant Chrome extension
Notes:
- GTM is strongly recommended over hardcoding GA4
- Easier to maintain and update
- Enables tag management without developer dependencies
- If not using GTM, skip to 2.2 for direct implementation
2.2 Create GA4 Configuration Tag in GTM
Action: Set up GA4 tag in Google Tag Manager
- In GTM, click Tags > New
- Name it "GA4 - Configuration Tag"
- Tag Configuration > Google Analytics: GA4 Configuration
- Enter your Measurement ID (G-XXXXXXXXXX)
- Triggering: Select "All Pages" trigger
- Save
Verify:
- Use GTM Preview mode
- Visit your site, verify tag fires on every page
- Check GA4 DebugView shows page_view events
Notes:
- This is your base configuration tag
- All other GA4 tags will reference this
- Only need one configuration tag per property
2.3 Publish GTM Container
Action: Publish your GTM container to production
- Click "Submit" in GTM
- Enter version name (e.g., "GA4 Initial Setup")
- Add description of changes
- Click "Publish"
Verify:
- Visit your live site (not preview mode)
- Check GA4 Real-Time reports show active user (you)
- Verify page_view events appearing
Notes:
- Always use descriptive version names
- GTM maintains version history (can rollback if needed)
- Test in preview before publishing!
2.4 Verify Data Collection
Action: Confirm data is flowing to GA4
- Visit your website
- Open GA4 > Reports > Real-time
- Verify you see:
- Active users count (at least 1 - you)
- Event count increasing
- Page views showing your navigation
- Correct page paths
Verify: Real-time report shows activity within 10 seconds
Notes:
- If no data after 5 minutes, check:
- GTM container published (not just saved)
- GTM code on page (view source)
- Measurement ID correct in GTM tag
- Ad blockers disabled for testing
- Standard reports take 24-48 hours to populate
2.5 Test with GA4 DebugView
Action: Enable debug mode and test events
- Install Google Analytics Debugger Chrome extension OR
- Add
?debug_mode=trueto your URL parameter - Navigate your site performing key actions
- Open GA4 > Configure > DebugView
- Watch events fire in real-time
Verify:
- Page views appear as you navigate
- Events show correct parameters
- No errors in event stream
- User properties populated
Notes:
- DebugView is your best friend during implementation
- Shows real-time event data with full details
- Debug mode doesn't affect actual reporting
- Disable debug mode when done testing (remove extension or URL parameter)
2.6 Configure Cross-Domain Tracking (if applicable)
Action: Set up cross-domain tracking for multiple domains
- In GA4 Admin > Property > Data Streams > [stream] > Configure tag settings
- Scroll to "Configure your domains"
- Add all domains that should share user sessions:
- www.yoursite.com
- shop.yoursite.com
- checkout.yoursite.com
- Any third-party domains (payment processors, etc.)
- Save
In GTM (if using):
- Edit your GA4 Configuration tag
- Fields to Set > Add Row
- Field Name:
linker - Value:
{"domains":["domain1.com","domain2.com"]} - Save and publish
Verify:
- Navigate from one domain to another
- Check GA4 Real-Time > Traffic acquisition
- Verify source shows previous page, not referral
- User ID persists across domains
Notes:
- Only needed if you have multiple domains
- Prevents self-referrals
- Test by navigating between all domain combinations
- Common use case: main site to shopping cart on different domain
2.7 Set Up Subdomain Tracking (if applicable)
Action: Configure tracking for subdomains
- Ensure cookie domain is set correctly in GTM
- Edit GA4 Configuration tag
- Fields to Set > Add Row
- Field Name:
cookie_domain - Value:
auto(usually best) or.yourdomain.com(for explicit subdomain tracking) - Save and publish
Verify:
- Visit www.yoursite.com, then blog.yoursite.com
- User session continues (same Client ID)
- No self-referrals in reports
Notes:
- Usually handled automatically with
autosetting - Explicit domain setting needed for complex setups
- Test all subdomain combinations
2.8 Configure Referral Exclusions
Action: Exclude your own domains and payment processors from referral traffic
- Go to Admin > Property > Data Streams > [stream] > Configure tag settings
- Scroll to "More tagging settings" > "List unwanted referrals"
- Add domains to exclude:
- Your own domains (if not using cross-domain tracking)
- Payment processors (paypal.com, stripe.com)
- Login providers (google.com for OAuth)
- Any third-party that interrupts user flow
Verify:
- Complete transaction that goes to PayPal and back
- Check GA4 Traffic Acquisition report
- Verify PayPal not listed as referral source
Notes:
- Prevents payment processors from being credited as traffic sources
- Essential for accurate attribution
- Don't overuse - only exclude truly unwanted referrals
Phase 3: Event Configuration (10 Checkpoints)
3.1 Review Automatically Collected Events
Action: Understand which events are automatically tracked
- Review GA4 documentation on automatic events:
page_view- Automatically collectedsession_start- Automatically collectedfirst_visit- Automatically collecteduser_engagement- Automatically collected
- Open Reports > Real-time > Event count
- Verify these events appear
Verify: Automatic events showing in Real-time reports
Notes:
- These events require no configuration
- Foundation for all GA4 reporting
- Can't disable (nor should you want to)
3.2 Plan Custom Events
Action: Document all custom events you need to track
- Create event naming plan spreadsheet
- List each event with:
- Event name (e.g.,
generate_lead,sign_up,download_asset) - Trigger condition (when it fires)
- Parameters (what additional data to capture)
- Conversion status (is this a conversion?)
- Owner (who's responsible for maintenance)
- Event name (e.g.,
Verify: Documented plan approved by stakeholders
Notes:
- Use GA4 recommended event names when possible (see GA4 documentation)
- Follow naming convention: lowercase with underscores
- Keep event names under 40 characters
- Avoid spaces and special characters
- Plan before implementing to avoid inconsistency
Recommended events to consider:
generate_lead- Form submissionssign_up- Newsletter, account creationlogin- User authenticationsearch- Site search usageview_item- Product views (e-commerce)add_to_cart- Cart additionsbegin_checkout- Checkout startpurchase- Transactions- Custom events specific to your business
3.3 Create Form Submission Event
Action: Track form submissions as events
- In GTM, create new trigger:
- Type: Form Submission
- Name: "Form Submission - All Forms" (or specific forms)
- Triggering: All Forms (or Page URL contains /contact)
- Check "Wait for Tags" and "Enable validation"
- Create new tag:
- Type: GA4 Event
- Name: "GA4 - Form Submit"
- Configuration Tag: Select your GA4 config tag
- Event Name:
generate_leadorform_submit - Event Parameters (optional):
- form_id: {{Form ID}}
- form_name: {{Form Classes}} or custom variable
- Triggering: Form Submission trigger created above
- Save and publish
Verify:
- Use Preview mode, submit form
- Check DebugView shows
generate_leadevent with parameters - Verify Real-Time shows event
Notes:
- Test with all forms on your site
- AJAX forms may need custom JavaScript tracking
- Multi-step forms - track each step or just final submission
- Never capture form field values (PII risk)
3.4 Create Button Click Events
Action: Track important button clicks
- In GTM, create trigger:
- Type: Click - All Elements
- Name: "Click - CTA Button"
- Fire on: Some Clicks
- Condition: Click Text contains "Get Started" (or appropriate selector)
- Create tag:
- Type: GA4 Event
- Name: "GA4 - CTA Click"
- Event Name:
click_ctaorbutton_click - Parameters:
- button_text: {{Click Text}}
- button_location: {{Page Path}}
- Triggering: CTA Button trigger
- Save and publish
Verify:
- Preview mode, click buttons
- DebugView shows events
- Parameters capture correct info
Notes:
- Be selective - don't track every click
- Focus on conversion-oriented clicks
- Use Click Classes, Click ID, or Click Text to target specific buttons
- May need custom data-attributes for precise targeting
3.5 Create Outbound Link Click Event
Action: Track clicks to external websites
- Usually auto-tracked if Enhanced Measurement enabled (see Phase 4)
- If custom tracking needed:
- GTM trigger: Click - All Elements
- Fire on: Click URL does NOT contain yoursite.com
- Tag: GA4 Event
- Event name:
click(standard) oroutbound_click - Parameters:
link_url: {{Click URL}}
Verify:
- Click link to external site
- DebugView shows event with correct URL
Notes:
- Check if Enhanced Measurement already tracking this (prevents duplicate)
- Useful for affiliate links, resource links, partner links
- Can segment by destination domain
3.6 Create File Download Event
Action: Track downloads of PDFs, docs, etc.
- Usually auto-tracked if Enhanced Measurement enabled
- If custom tracking needed:
- GTM trigger: Click - All Elements
- Fire on: Click URL matches RegEx
\.(pdf|doc|docx|xls|xlsx|zip)$ - Tag: GA4 Event
- Event name:
file_download(standard) - Parameters:
file_name: {{Click URL}}
Verify:
- Click download link
- DebugView shows
file_downloadevent
Notes:
- Adjust file extensions regex for your needs
- Check Enhanced Measurement first
- Useful for tracking whitepaper downloads, resource downloads
3.7 Create Video Engagement Event (if applicable)
Action: Track YouTube video engagement
- Usually auto-tracked if Enhanced Measurement enabled (YouTube only)
- For custom video players:
- Requires JavaScript to track play, pause, completion
- Push to dataLayer on video events
- GTM trigger on dataLayer event
- GA4 event tag:
video_start,video_progress,video_complete
Verify:
- Play video to 25%, 50%, 75%, 100%
- DebugView shows progress events
Notes:
- Enhanced Measurement handles YouTube automatically
- Vimeo, Wistia need custom implementation
- Track video title and percent watched
3.8 Mark Events as Conversions
Action: Designate important events as conversions
- Go to Admin > Property > Events
- Wait for your events to appear (may take 24 hours after first event fire)
- Toggle "Mark as conversion" for:
generate_lead(form submissions)purchase(e-commerce)sign_up(newsletter/account)- Any other conversion events
- Save
Verify: Events show "Conversion" toggle as ON
Notes:
- Only mark true conversions (business value events)
- Limit to <30 conversions per property (best practice)
- Can retroactively mark as conversion (applies to historical data)
- These appear in Conversions reports and Google Ads
3.9 Create Custom Event Parameters (if needed)
Action: Add custom parameters to capture additional context
- In GTM, when creating event tags:
- Add Event Parameters
- Parameter name: custom_parameter_name
- Value: {{Variable}} or static value
- Common parameters:
value- Monetary value (for conversions)currency- Currency code (USD, EUR)user_type- Customer segmentcontent_category- Page/content category
Verify:
- DebugView shows events with custom parameters
- Parameters captured correctly
Notes:
- Limit to 25 parameters per event
- Use lowercase with underscores
- Parameters under 40 characters
- Register custom parameters in GA4 if you want to use in reporting (Admin > Custom Definitions)
3.10 Register Custom Dimensions (if using custom parameters)
Action: Register custom parameters as dimensions for reporting
- Go to Admin > Property > Custom Definitions > Create Custom Dimension
- For each custom parameter you want in reports:
- Dimension name: User-friendly name (e.g., "Content Category")
- Scope: Event (usually) or User
- Parameter: Select your custom parameter name
- Click Save
- Repeat for each custom parameter
Verify: Custom dimensions appear in dimension list
Notes:
- Free GA4 allows 50 event-scoped and 25 user-scoped custom dimensions
- Must register to use in reports and explorations
- Can't retroactively create (only applies to future data)
- Name clearly for report users
Phase 4: Enhanced Measurement Configuration (7 Checkpoints)
4.1 Review Enhanced Measurement Settings
Action: Audit what Enhanced Measurement is tracking
- Go to Admin > Property > Data Streams > [your stream]
- Click "Enhanced measurement" gear icon
- Review each option:
- Page views (always on, can't disable)
- Scrolls (90% scroll depth)
- Outbound clicks
- Site search
- Video engagement (YouTube)
- File downloads
Verify: Settings match your tracking needs
Notes:
- Enhanced Measurement is automatic event tracking
- Enabled by default - convenient but check what you need
- Can disable individual options if they create noise
- Some enhanced events may duplicate custom tracking (check!)
4.2 Configure Site Search Tracking
Action: Set up automatic site search tracking
- In Enhanced Measurement settings
- Click gear icon next to "Site search"
- Add search query parameters (e.g.,
q,search,query,s) - Check "show advanced settings" if needed
- Save
Verify:
- Perform site search
- DebugView shows
view_search_resultsevent - Event parameter
search_termcaptures query
Notes:
- Check your site's URL when searching (e.g., /search?q=analytics)
- The "q" is your query parameter
- Can add multiple parameters (different search forms)
- Disable if you have custom search tracking
4.3 Configure Scroll Tracking
Action: Decide if you want 90% scroll tracking
- In Enhanced Measurement settings
- Toggle scroll tracking on or off
- Default: fires
scrollevent when user reaches 90% of page
Verify:
- Scroll to bottom of long page
- DebugView shows
scrollevent
Notes:
- Useful for measuring content engagement
- Can be noisy for short pages
- Consider disabling if you want custom scroll depth tracking (e.g., 25%, 50%, 75%)
4.4 Configure File Download Tracking
Action: Set up automatic file download tracking
- In Enhanced Measurement settings
- Click gear icon next to "File downloads"
- Review file extensions tracked (default: pdf, xlsx, docx, txt, rtf, csv, exe, key, pps, ppt, 7z, pkg, rar, gz, zip, avi, mov, mp4, mpeg, wmv, midi, mp3, wav, wma)
- Add additional extensions if needed
- Save
Verify:
- Click download link
- DebugView shows
file_downloadevent file_extensionandfile_nameparameters populated
Notes:
- Covers most common file types by default
- Add industry-specific files (e.g., .dwg for CAD, .psd for design)
- Disable if you have custom download tracking
4.5 Configure Outbound Click Tracking
Action: Set up automatic outbound link tracking
- In Enhanced Measurement settings
- Toggle "Outbound clicks" on
- Automatically tracks clicks to external domains
Verify:
- Click link to external site
- DebugView shows
clickevent link_domainandlink_urlparameters populatedoutboundparameter = true
Notes:
- Automatically excludes links to your own domain
- Cross-domain configured sites won't show as outbound
- Useful for tracking partner links, resources, social links
4.6 Configure Video Engagement Tracking
Action: Set up automatic YouTube video tracking
- In Enhanced Measurement settings
- Toggle "Video engagement" on
- Automatically tracks YouTube embedded videos
Events tracked:
video_start- Video play beginsvideo_progress- Reaches 10%, 25%, 50%, 75% watchedvideo_complete- Video finishes
Verify:
- Play YouTube video on your site
- DebugView shows video events
- Parameters include
video_title,video_url,video_percent
Notes:
- Only works for YouTube embeds (not Vimeo, Wistia, self-hosted)
- Must be embedded via iframe
- For other video platforms, need custom tracking
4.7 Disable Unwanted Enhanced Measurement Events
Action: Turn off enhanced measurement events you don't need
- Review each toggle in Enhanced Measurement
- Disable any that:
- You're tracking with custom events (to avoid duplicates)
- Create too much noise/data
- Don't provide value for your use case
Verify: Only desired events appear in DebugView during testing
Notes:
- Can always re-enable later
- Disabling reduces event count (matters for free GA4 limits)
- Document what you disabled and why
Phase 5: E-commerce Tracking (7 Checkpoints - Skip if not applicable)
5.1 Plan E-commerce Implementation
Action: Document e-commerce tracking requirements
- Determine which events to track:
view_item- Product detail viewsadd_to_cart- Items added to cartremove_from_cart- Items removedview_cart- Cart page viewsbegin_checkout- Checkout initiatedadd_payment_info- Payment method addedadd_shipping_info- Shipping info addedpurchase- Transaction completedrefund- Transaction refunded (if applicable)
- Map to your e-commerce platform
- Define required parameters (product ID, name, price, quantity, etc.)
Verify: E-commerce tracking plan documented and approved
Notes:
- Use GA4 recommended e-commerce events (for compatibility)
- Coordinate with development team
- May require e-commerce platform plugin or custom code
5.2 Implement Product View Tracking
Action: Track when users view product detail pages
- Create dataLayer push on product page load:
dataLayer.push({
event: 'view_item',
ecommerce: {
items: [{
item_id: 'SKU_12345',
item_name: 'Product Name',
item_brand: 'Brand Name',
item_category: 'Category',
price: 29.99,
currency: 'USD'
}]
}
});
- In GTM:
- Trigger: Custom Event
view_item - Tag: GA4 Event
view_item - Pass ecommerce object
- Trigger: Custom Event
- Publish
Verify:
- View product page
- DebugView shows
view_itemwith items array - All parameters populated correctly
Notes:
- Requires developer to add dataLayer push
- Test with multiple products
- Verify prices, IDs match actual products
5.3 Implement Add to Cart Tracking
Action: Track when users add products to cart
- Add dataLayer push on "Add to Cart" button click:
dataLayer.push({
event: 'add_to_cart',
ecommerce: {
items: [{
item_id: 'SKU_12345',
item_name: 'Product Name',
price: 29.99,
quantity: 1
}]
}
});
- GTM tag for
add_to_cartevent - Publish
Verify:
- Add product to cart
- DebugView shows
add_to_cartevent - Quantity and price correct
Notes:
- Track both initial add and quantity increases
- Handle AJAX cart additions
- Test across different product types
5.4 Implement Checkout Begin Tracking
Action: Track when users start checkout process
- Add dataLayer push on checkout page load or button click:
dataLayer.push({
event: 'begin_checkout',
ecommerce: {
items: [
// Array of all items in cart
]
}
});
- GTM tag for
begin_checkout - Publish
Verify:
- Start checkout
- DebugView shows
begin_checkoutwith full cart contents
Notes:
- Fire once per checkout session (not on every step)
- Include all cart items
- Capture cart value
5.5 Implement Purchase Tracking (Critical!)
Action: Track completed transactions
- Add dataLayer push on order confirmation page:
dataLayer.push({
event: 'purchase',
ecommerce: {
transaction_id: 'ORD-123456',
value: 79.99,
tax: 6.40,
shipping: 5.00,
currency: 'USD',
items: [
{
item_id: 'SKU_12345',
item_name: 'Product Name',
price: 29.99,
quantity: 2
}
]
}
});
- GTM tag for
purchaseevent - Mark as conversion in GA4
- Publish
Verify:
- Complete test transaction
- DebugView shows
purchaseevent - Revenue, transaction ID, items all correct
- Event appears in Conversions report (next day)
Critical checks:
- Transaction ID is unique (prevents duplicate counting)
- Revenue matches order total exactly
- Currency is correct
- Tax and shipping included if needed
- Items array includes all products
Notes:
- Most important e-commerce event!
- Test extensively before going live
- Verify revenue matches your actual sales
- Never fire multiple times per order (use unique transaction ID)
5.6 Link E-commerce Platform (if applicable)
Action: Connect Shopify, WooCommerce, or other platform
- For Shopify: Install GA4 app from Shopify App Store
- For WooCommerce: Use plugin (e.g., GA4 for WooCommerce)
- For custom platform: Implement manual tracking (above)
- Configure app settings with Measurement ID
- Test all e-commerce events
Verify:
- All e-commerce events fire correctly
- Revenue data matches platform
- Product data populates properly
Notes:
- Apps/plugins simplify implementation
- May still need customization for full tracking
- Verify app is actively maintained and compatible
5.7 Validate E-commerce Revenue
Action: Confirm revenue in GA4 matches actual sales
- Run test transactions (multiple)
- Wait 24-48 hours for reports to populate
- Compare:
- GA4 Monetization > E-commerce Purchases report
- Your e-commerce platform revenue report
- Same date range
- Investigate any discrepancies >5%
Verify: GA4 revenue within 5% of actual revenue
Common discrepancies:
- Refunds not tracked
- Test orders included
- Timezone differences
- Tax/shipping calculation differences
- Duplicate transaction IDs (same order counted twice)
Notes:
- This is your validation that e-commerce tracking works
- Essential before relying on GA4 for business decisions
- Re-check monthly as ongoing validation
Phase 6: Integration & Audiences (6 Checkpoints)
6.1 Verify Google Ads Conversion Import
Action: Import GA4 conversions to Google Ads
- In Google Ads, go to Tools > Measurement > Conversions
- Click "+" New Conversion Action
- Select "Import" > "Google Analytics 4 properties" > "Web"
- Select your GA4 property
- Choose conversions to import (select your key conversion events)
- Import and save
Verify:
- Conversions appear in Google Ads
- Status shows "Recording conversions"
- Check conversion count matches GA4
Notes:
- Required to use GA4 conversions for bidding
- Can import multiple conversion types
- Data appears in Google Ads within 24 hours
- Re-import if you add new conversion events
6.2 Set Up Facebook Conversions API (if applicable)
Action: Integrate GA4 with Meta for server-side conversion tracking
- Use a CAPI integration tool or custom server endpoint
- Send GA4 conversion events to Meta
- Verify in Meta Events Manager
Verify:
- Events show in Meta Events Manager
- Both pixel (browser) and CAPI (server) events visible
- Match rate is acceptable
Notes:
- Helps recover conversions lost to iOS 14+ privacy changes
- Requires technical implementation or tool like Zapier, Segment
- Beyond basic GA4 setup but valuable for Facebook advertisers
6.3 Create Basic Audiences
Action: Build foundational audiences for remarketing
- Go to Admin > Property > Audiences
- Click "New Audience"
- Create these starter audiences:
- All Users - Preconfigured, just verify it exists
- Purchasers - Users who triggered
purchaseevent - Cart Abandoners - Added to cart but didn't purchase
- Engaged Users - Session duration > 60 seconds or multiple pages
- Configure membership duration (30, 60, 90 days)
- Save each audience
Verify:
- Audiences appear in list
- Status shows "Eligible" (may take 24-48 hours to start populating)
- Shared to linked Google Ads account
Notes:
- Audiences require 24-48 hours to build
- Must meet minimum size for advertising (typically 100 users)
- Create more specific audiences as needed for campaigns
6.4 Set Up User ID Tracking (if applicable)
Action: Implement User ID for cross-device tracking
- Requires login system with unique user IDs
- Add User ID to dataLayer when user logs in:
gtag('set', 'user_id', 'USER_12345');
- Or in GTM:
- Variable: Data Layer Variable
user_id - In GA4 Config tag, Fields to Set:
user_id= {{user_id}}
- Variable: Data Layer Variable
- Publish
Verify:
- Log in to site
- DebugView shows
user_idparameter on events - Different devices/sessions show as same user
Notes:
- Only for logged-in users
- Don't use PII (email) - use hashed or system ID
- Enables cross-device reporting
- Required for accurate returning user metrics
6.5 Set Up Custom User Properties (optional)
Action: Define user-level properties for segmentation
- Common user properties:
- Customer status (lead, customer, VIP)
- Account type (free, paid, enterprise)
- First order date
- Lifetime value tier
- In GTM, add to GA4 Config tag:
- User Properties: Add property name and value
- Or via gtag:
gtag('set', 'user_properties', {
account_type: 'premium'
});
Verify:
- DebugView shows user properties on events
- Can segment reports by user property
Notes:
- User properties persist across sessions
- Use for permanent or long-lasting user attributes
- Register in GA4 Admin > Custom Definitions > Custom User Property
6.6 Create Key Path Exploration
Action: Build exploration to analyze user journeys
- Go to Explore
- Select "Path Exploration" template
- Configure:
- Starting point: Landing page or first event
- Steps: Show next 3-5 steps
- Segment: All users or specific audience
- Save exploration as "User Journey Analysis"
Verify: Exploration shows logical user paths through your site
Notes:
- Use to understand how users navigate
- Identify drop-off points
- Inform UX improvements
- Save for ongoing analysis
Phase 7: Reporting & Validation (8 Checkpoints)
7.1 Review Standard Reports
Action: Familiarize yourself with GA4 report structure
- Open Reports section
- Navigate through:
- Realtime - Current activity
- Acquisition - How users find you
- Engagement - What users do
- Monetization - Revenue and e-commerce
- Retention - Returning users
- Demographics - User age, gender, location
- Tech - Device, browser, OS
- Verify data appears in each section (may take 24-48 hours)
Verify: All report sections have data after 48 hours
Notes:
- Different from Universal Analytics report structure
- Some reports require minimum data threshold
- Demographics require Google Signals enabled
7.2 Customize Reports Overview
Action: Add important reports to overview page
- Go to Reports > Overview
- Click "Customize report" (pencil icon)
- Add cards for:
- Conversions by source
- Key events
- E-commerce revenue (if applicable)
- Engaged sessions
- Drag to arrange
- Save
Verify: Overview page shows your key metrics at a glance
Notes:
- Customize for your business needs
- Overview is first page stakeholders see
- Update as priorities change
7.3 Create Key Event Report
Action: Build report focused on your conversion events
- Go to Explore
- Select "Free Form" template
- Dimensions: Event name, Source/Medium
- Metrics: Event count, Conversions
- Filters: Event name exactly matches your conversion events
- Save as "Conversion Events Summary"
Verify: Report shows all key conversion events with attribution
Notes:
- Quick view of all conversions
- Compare performance by source
- Share with stakeholders
7.4 Set Up Analytics Annotation
Action: Add annotations for major site changes
- Currently GA4 doesn't have annotation feature (!)
- Workaround: Maintain external changelog
- Create spreadsheet or doc with:
- Date
- Change description
- Expected impact
- Reference when reviewing reports
Verify: Changelog created and accessible to team
Notes:
- Helps explain unusual data patterns
- Document campaigns, site changes, tracking updates
- Critical for historical analysis
7.5 Configure Conversion Attribution Settings
Action: Review and set attribution model
- Go to Admin > Property > Attribution Settings
- Review:
- Reporting attribution model: Default is data-driven (or last click if not enough data)
- Lookback window: Default 90 days for conversions, 30 for ad clicks
- Adjust if needed for your business
- Click Save
Verify: Settings match your sales cycle and attribution philosophy
Notes:
- Data-driven attribution requires sufficient conversion volume
- Shorter sales cycle = shorter lookback window
- Can compare models in Advertising > Attribution
7.6 Validate Data Accuracy
Action: Comprehensive data validation check
- Compare GA4 to other sources:
- Users/Sessions: Ballpark check vs. previous analytics (if migrating)
- Conversions: Match to CRM leads, e-commerce orders
- Revenue: Match to actual sales (within 5%)
- Traffic sources: Cross-reference ad platform metrics
- Document any discrepancies >10%
- Investigate and resolve
Verify: GA4 data aligns with other business systems within acceptable variance
Common acceptable variances:
- Sessions: GA4 counts differently than UA (okay if directionally similar)
- Conversions: 5-10% difference from ad platforms (attribution windows differ)
- Revenue: <5% difference from e-commerce platform
Red flags:
- 50%+ discrepancies (indicates tracking issue)
- Missing conversion types
- Zero revenue when sales occurred
- All traffic showing as direct (UTM tracking broken)
7.7 Create Monthly Report Template
Action: Build standardized monthly report
- Use Data Studio/Looker Studio or manual template
- Include:
- Executive summary (KPIs)
- Traffic overview (users, sessions, sources)
- Conversion performance
- Revenue (if applicable)
- Month-over-month comparison
- Key insights and recommendations
- Save as template
- Schedule monthly generation
Verify: Report template pulls GA4 data correctly
Notes:
- Automate if possible (Looker Studio)
- Share with stakeholders monthly
- Adjust template based on feedback
7.8 Document Your GA4 Setup
Action: Create comprehensive documentation
- Document in wiki, Google Docs, or similar:
- Property details: Measurement ID, data stream info
- Events catalog: All events, descriptions, when they fire, parameters
- Conversions: What's marked as conversion and why
- Custom dimensions/metrics: Name, scope, purpose
- GTM setup: Container ID, tags, triggers (or export container)
- Integrations: Connected platforms, audiences
- Access: Who has access and roles
- Change log: Major changes to implementation
- Make accessible to team
Verify: New team member can understand your setup from documentation
Notes:
- Documentation often skipped but critical
- Prevents "tribal knowledge" problem
- Essential for troubleshooting
- Update when making changes
Post-Implementation Checklist
Week 1: Monitor Closely
- Check DebugView daily
- Review Real-Time reports multiple times per day
- Test all conversion events manually
- Watch for errors or anomalies
Week 2-4: Validation Period
- Compare data week-over-week for consistency
- Cross-reference conversions with CRM/sales
- Verify revenue accuracy (e-commerce)
- Run test transactions and verify tracking
- Gather feedback from report users
Month 2-3: Optimization
- Refine events based on data value
- Remove noisy/unused events
- Add missing conversion events
- Build additional audiences
- Create custom explorations for specific questions
Ongoing: Maintenance
- Monthly data quality check
- Quarterly full audit (use our Marketing Data Audit Checklist)
- Document changes
- Review and update custom reports
- Train new team members
Troubleshooting Common Issues
No Data Showing in Reports
Check:
- GTM container published (not just saved)?
- GA4 tag firing on all pages (use Tag Assistant)?
- Measurement ID correct in GTM?
- Wait 24-48 hours for standard reports (use Real-Time for immediate validation)
- Ad blocker disabled for testing?
Fix:
- Republish GTM container
- Verify Measurement ID
- Check GTM preview mode
Events Not Firing
Check:
- Event visible in DebugView?
- Trigger conditions correct in GTM?
- Page/form actually triggering the event?
- JavaScript errors on page preventing dataLayer push?
Fix:
- Use GTM Preview mode to debug
- Check browser console for errors
- Verify trigger conditions
- Test in different browsers
Conversions Not Marked/Showing
Check:
- Event marked as conversion in Admin > Events?
- Event has fired at least once in past 24 hours?
- Correct event name (case-sensitive)?
Fix:
- Wait 24 hours after first event fire, then mark as conversion
- Verify event name exactly matches
Revenue Data Wrong
Check:
- Currency correct in purchase event?
- Decimal point in right place? (29.99 not 2999)
- Revenue field matches total order value?
- Transaction ID unique per order?
Fix:
- Review e-commerce implementation
- Check dataLayer values
- Test with small known transaction amount
Duplicate Events/Page Views
Check:
- Multiple GA4 tags firing (direct code + GTM)?
- Single-page app (SPA) pushing page views manually + automatic?
- GTM trigger firing multiple times?
Fix:
- Remove duplicate tracking code
- Disable automatic page_view for SPAs
- Adjust GTM trigger conditions
Cross-Domain Tracking Not Working
Check:
- All domains listed in cross-domain settings?
- Linker parameter present in URL (check
?_gl=)? - Same GA4 property ID on all domains?
Fix:
- Add missing domains
- Verify GTM linker configuration
- Test cross-domain navigation in DebugView
Data Sampling in Reports
Check:
- Large date range or complex exploration?
- High-traffic site exceeding thresholds?
Fix:
- Reduce date range
- Simplify query
- Use BigQuery export for unsampled data
- Upgrade to GA4 360 (enterprise paid version)
Frequently Asked Questions
How do I check GA4 is tracking correctly?
Open GA4 DebugView with Tag Assistant or the GTM preview connected, then click through your site: each page view, form submission and purchase should appear as an event with the right parameters. Confirm in Realtime that sessions arrive from the expected source. After 24 to 48 hours, compare GA4 totals with your backend, such as orders or sign-ups, and look for duplicate page views or events.
How long does GA4 implementation take?
Time estimates:
- Basic website: 4-6 hours (phases 1-4, 6-7)
- With e-commerce: 8-12 hours (add phase 5)
- Complex site: 16-24 hours (multiple domains, custom tracking)
Factors that increase time:
- Custom event tracking requirements
- E-commerce implementation
- Integration with CRM/marketing automation
- Legacy UA data migration considerations
- Custom reporting needs
Recommendation: Block dedicated time rather than spreading over weeks.
Should I keep Universal Analytics running while setting up GA4?
Yes! Run both in parallel during migration.
Benefits:
- Compare data to validate GA4 accuracy
- Maintain historical continuity
- Fall back to UA if GA4 issues arise
- Learn GA4 reporting without pressure
Timeline:
- Minimum: 1 month parallel tracking
- Recommended: 3 months
- Universal Analytics stopped processing data July 1, 2023 (standard) or July 1, 2024 (360)
Note: If you're reading this after UA sunset, you can't run parallel, but use historical UA data for validation.
Do I need Google Tag Manager or can I add GA4 code directly?
GTM is strongly recommended but not required.
Use GTM if:
- You want to add/edit tracking without developer dependency
- You plan to add other marketing tags (Facebook Pixel, etc.)
- You need custom event tracking
- You want easier long-term maintenance
Direct implementation is okay if:
- Very simple site with minimal tracking needs
- You have developer resources for all changes
- You're only using basic page view tracking
Verdict: 95% of implementations should use GTM.
How do I migrate historical data from Universal Analytics?
Short answer: You don't.
GA4 and UA are different platforms - no direct migration path for historical data.
Options:
- Export UA data to BigQuery or CSV before access is lost
- Keep UA property access (read-only) for historical reference
- Use Supermetrics or similar to extract UA data to data warehouse
- Accept fresh start - Many businesses do this
Recommendation: Export critical historical data before UA access ends, then start fresh with GA4.
What's the difference between events and conversions in GA4?
Events: Any tracked user interaction (page view, click, form submit, etc.) Conversions: Events you've marked as having business value
Key points:
- All conversions are events, but not all events are conversions
- Mark events as conversions in Admin > Events
- Conversions appear in conversion reports and Google Ads
- Limit to important events (not every click)
Example:
page_view= event (not conversion)purchase= event marked as conversionform_submit= event marked as conversion
How many custom events can I create?
GA4 limits (free version):
- 500 distinct event names per property
- 500 total custom dimensions (event + user scoped)
- 50 custom metrics
Best practices:
- Don't approach limits - 20-50 custom events is typical
- Use event parameters instead of creating many similar events
- Example: One
button_clickevent withbutton_nameparameter (not separate events per button)
Can I track across mobile app and website?
Yes, using App + Web property.
Setup:
- Create GA4 property
- Add web data stream (for website)
- Add iOS data stream (for iOS app)
- Add Android data stream (for Android app)
- Implement Firebase SDK in apps
- Use same event names across platforms
Benefits:
- Unified user view across devices
- Cross-platform audiences
- Complete customer journey
Note: Requires mobile development resources for app implementation.
How do I handle staging/development environments?
Option 1: Separate GA4 Properties (Recommended)
- Create "Company - Production" property for live site
- Create "Company - Staging" property for dev/staging
- Use different Measurement IDs
- Keep test data completely separate
Option 2: Single Property with Filters
- Use one property
- Configure internal traffic filter for dev traffic
- Filter by hostname (staging.yoursite.com vs. www.yoursite.com)
- Risk: Harder to fully separate data
Verdict: Separate properties is cleaner and recommended.
What reports are different from Universal Analytics?
Major differences:
- No Bounce Rate (replaced with Engagement Rate)
- No Views (property level only, use filters/segments instead)
- Events are fundamental (not hits/sessions/pageviews hierarchy)
- Explorations replace Custom Reports
- Machine learning insights (anomaly detection, churn prediction)
- Different attribution (data-driven by default)
Recommendation: Don't try to recreate UA reports exactly. Learn GA4's structure and embrace the differences.
How do I create goals in GA4?
GA4 doesn't have "goals" - it has "conversions."
To create a conversion:
- Create/implement an event for the goal action
- Wait 24 hours for event to appear in Admin > Events
- Toggle "Mark as conversion" on the event
- Event now appears in conversions reports
Migrating UA goals:
- Map each UA goal to a GA4 event
- Implement the event
- Mark as conversion
- No automatic migration
Can I exclude internal traffic after data is collected?
No - exclusion happens at collection time, not retroactively.
Best practices:
- Set up internal traffic filter BEFORE going live
- Use "Test" data filter state initially (tags but doesn't exclude)
- Verify internal traffic is tagged correctly
- Switch filter to "Active" to actually exclude
- Can't remove already-collected internal traffic from reports
Lesson: Set up filters early!
Next Steps After Implementation
Immediate (First Week)
- Monitor Real-Time and DebugView daily
- Test all conversion events manually
- Verify data appearing in standard reports
- Share access with key stakeholders
Short-Term (First Month)
- Create custom explorations for key questions
- Build audiences for remarketing
- Set up automated reporting (Looker Studio)
- Train team on GA4 interface
Medium-Term (First Quarter)
- Validate data accuracy against other systems
- Optimize event tracking (remove noise, add gaps)
- Analyze user journeys and optimize UX
- Iterate on reports based on stakeholder feedback
Long-Term (Ongoing)
- Quarterly data quality audits
- Expand custom tracking as needs evolve
- Leverage machine learning insights
- Advanced analysis (cohorts, predictive metrics)
- BigQuery integration for advanced analytics
Printable checklist: all 58 checks
Print this page or copy the list into your tracker. Each item links back to its full instructions above.
Phase 1: Property Setup & Configuration (12 Checkpoints)
- 1.1 Create GA4 Property
- 1.2 Create Data Stream
- 1.3 Configure Data Stream Settings
- 1.4 Set Up Google Signals
- 1.5 Configure Data Retention
- 1.6 Add Users and Set Permissions
- 1.7 Link Google Ads Account (if applicable)
- 1.8 Link Search Console (if applicable)
- 1.9 Configure Internal Traffic Filter
- 1.10 Set Up Developer/Test Filter (optional but recommended)
- 1.11 Configure Bot Filtering
- 1.12 Set Up BigQuery Export (optional, recommended for enterprises)
Phase 2: Data Collection Setup (8 Checkpoints)
- 2.1 Install Google Tag Manager (Recommended Method)
- 2.2 Create GA4 Configuration Tag in GTM
- 2.3 Publish GTM Container
- 2.4 Verify Data Collection
- 2.5 Test with GA4 DebugView
- 2.6 Configure Cross-Domain Tracking (if applicable)
- 2.7 Set Up Subdomain Tracking (if applicable)
- 2.8 Configure Referral Exclusions
Phase 3: Event Configuration (10 Checkpoints)
- 3.1 Review Automatically Collected Events
- 3.2 Plan Custom Events
- 3.3 Create Form Submission Event
- 3.4 Create Button Click Events
- 3.5 Create Outbound Link Click Event
- 3.6 Create File Download Event
- 3.7 Create Video Engagement Event (if applicable)
- 3.8 Mark Events as Conversions
- 3.9 Create Custom Event Parameters (if needed)
- 3.10 Register Custom Dimensions (if using custom parameters)
Phase 4: Enhanced Measurement Configuration (7 Checkpoints)
- 4.1 Review Enhanced Measurement Settings
- 4.2 Configure Site Search Tracking
- 4.3 Configure Scroll Tracking
- 4.4 Configure File Download Tracking
- 4.5 Configure Outbound Click Tracking
- 4.6 Configure Video Engagement Tracking
- 4.7 Disable Unwanted Enhanced Measurement Events
Phase 5: E-commerce Tracking (7 Checkpoints - Skip if not applicable)
- 5.1 Plan E-commerce Implementation
- 5.2 Implement Product View Tracking
- 5.3 Implement Add to Cart Tracking
- 5.4 Implement Checkout Begin Tracking
- 5.5 Implement Purchase Tracking (Critical!)
- 5.6 Link E-commerce Platform (if applicable)
- 5.7 Validate E-commerce Revenue
Phase 6: Integration & Audiences (6 Checkpoints)
- 6.1 Verify Google Ads Conversion Import
- 6.2 Set Up Facebook Conversions API (if applicable)
- 6.3 Create Basic Audiences
- 6.4 Set Up User ID Tracking (if applicable)
- 6.5 Set Up Custom User Properties (optional)
- 6.6 Create Key Path Exploration
Phase 7: Reporting & Validation (8 Checkpoints)
- 7.1 Review Standard Reports
- 7.2 Customize Reports Overview
- 7.3 Create Key Event Report
- 7.4 Set Up Analytics Annotation
- 7.5 Configure Conversion Attribution Settings
- 7.6 Validate Data Accuracy
- 7.7 Create Monthly Report Template
- 7.8 Document Your GA4 Setup
Run this checklist with your AI
You can hand most of the read-only checks to an AI connected to your GA4 and Google Tag Manager accounts. With Cogny, connect GA4 and GTM, then ask Claude, ChatGPT, Cursor, Codex or the Cogny app: "Go through the GA4 implementation checklist for this property. Check the data streams, key events, custom dimensions, Google Ads links and the GTM tags that send GA4 events, and list what is missing."
- Connect. In Claude Code:
claude mcp add --transport http cogny https://app.cogny.com/mcp, authorise in the browser, then connect GA4 and Google Tag Manager in Cogny. - Audit. Your AI reads the property (data streams, key events, custom dimensions and metrics, audiences, Google Ads links) and the GTM container (tags, triggers, variables).
- Fix one thing. Approve one change, such as marking an event as a key event or adding a missing GTM tag. Your AI client asks before each write, and Cogny logs it.
- Verify. Check the change in GA4 DebugView or Realtime, as in checkpoint 2.5.
Some checks still need a person in the GA4 or GTM interface, such as data retention, Google Signals and publishing a GTM version you have reviewed.
Related: GA4 event tracking configuration · Connect Claude Code to GA4 · Google Tag Manager integration