Google Analytics 4 (GA4) is Google's current analytics platform, built on an event-based data model that tracks user interactions across websites, iOS apps, and Android apps within a single property. Unlike the now-retired Universal Analytics — which was permanently shut down on July 1, 2024 — GA4 treats every interaction as an event with attached parameters, giving you far richer and more flexible data about how people actually use your product.
This guide works through all the main GA4 setup questions — property creation, tag installation, event tracking, consent, BigQuery exports — with field notes from 150+ live implementations mixed in throughout. The aim isn't to give you a checklist. It's to explain the reasoning behind each step so you can adapt it to your actual setup rather than following instructions you don't understand.
📋 About This Guide & How It Was Written
Everything here comes from working implementations, not vendor docs repackaged as tutorials. Each step, warning, and callout is drawn from actual GA4 work on live sites — e-commerce stores, SaaS platforms, media publishers, B2B lead-gen sites, and apps — between 2021 and 2026. Statistics come from cited third-party sources and Google's own documentation; sources are listed inline and at the bottom of the article. The guide gets updated when Google makes meaningful changes to GA4 — the last review was March 2026.
1. GA4 vs Universal Analytics: key differences explained
Most GA4 mistakes trace back to people who set it up before they understood what changed. Spend a few minutes here — it'll save hours of troubleshooting down the line.
🔴 Universal Analytics (Retired July 2024)
- Session-based data model
- Pageview as the primary interaction unit
- Goals (max 20 per property)
- Bounce rate as engagement metric
- Limited cross-device tracking
- Third-party cookie dependent
- BigQuery only in paid 360 tier
- No built-in modelling for consent gaps
🟢 Google Analytics 4 (Current)
- Event-based data model — everything is an event
- Any interaction can be tracked as a named event
- Key Events (unlimited, any event)
- Engagement rate replaces bounce rate
- Native cross-device and cross-platform tracking
- Consent Mode v2 with behavioural modelling
- BigQuery free for all properties
- ML-powered modelling fills consent gaps
2. How do you create a GA4 property?
A GA4 property is the container that holds all your tracking data. Each one gets its own Measurement ID and can include multiple data streams — web, iOS, and Android — under one roof.
- Go to analytics.google.com and sign in with your Google account.
- Click Admin (the gear icon) in the bottom-left corner.
- Under the Account column, select an existing account or click Create Account to start fresh.
- Under the Property column, click Create Property.
- Enter a property name, select your reporting time zone and currency, then click Next. Note: choose the time zone where the majority of your business decisions are made — not necessarily your server's time zone. Mismatched time zones cause day-boundary attribution issues in reports.
- Describe your business category and size, then select your primary business objective.
- Click Create and accept the Terms of Service.
- Select the platform for your first data stream: Web, iOS, or Android.
[Brand] — [Platform] — [Environment], e.g. "Acme Corp — Website — Production". This naming convention becomes critical when you have multiple properties (staging, production, apps) in the same account and prevents accidental data mixing — a mistake I see in roughly 30% of multi-property GA4 accounts I audit. Correcting a mixed-data property after the fact requires deleting and recreating the property, losing all historical data in the process. — Rohit SharmaOnce the property is created, you'll be assigned a Measurement ID in the format G-XXXXXXXXXX. This is what connects your site or app to GA4. Keep it somewhere accessible — you'll need it for every tracking step that follows.
3. How do you install GA4 directly on a website?
If you're not using Google Tag Manager, the direct install is straightforward: paste the Google tag snippet into the <head> of every page. It's the right approach for simpler sites that don't need complex event tracking.
- In GA4, go to Admin > Data Streams and select your web stream.
- Under Google tag, click View tag instructions.
- Copy the entire tag snippet provided.
- Paste it as high as possible in the
<head>section of every HTML page — ideally as the first script in the head, before any other tracking or marketing scripts. - Verify installation by opening your site, waiting 60–90 seconds, then checking the Realtime report in GA4 for your own active session.
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXXXX"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-XXXXXXXXXX');
</script>Replace G-XXXXXXXXXX with your actual Measurement ID. For CMS platforms, Site Kit by Google (WordPress) or MonsterInsights can handle installation without touching code directly.
gtag/js?id=G- strings and remove them first. Choose one installation method and use it exclusively.4. How do you set up GA4 with Google Tag Manager?
GTM is the better choice for most sites. It keeps all your tracking in one place, means non-developers can make changes without touching site code, and gives you Preview mode for debugging — which alone is worth using it for.
- In Google Tag Manager, open your container and go to Tags > New.
- Click Tag Configuration and choose Google Tag from the tag type list.
- Enter your GA4 Measurement ID (
G-XXXXXXXXXX) in the Tag ID field. - Under Triggering, select Initialization — All Pages. Using the Initialization trigger (not the standard All Pages trigger) ensures the GA4 tag fires before any other tags — which is essential for accurate session attribution and for event tags that depend on the GA4 config being established first.
- Name the tag clearly (e.g. "GA4 — Google Tag — Production") and click Save.
- Click Preview to enter Debug Mode. Open your website in the preview window and confirm the Google Tag fires on page load in the GTM debug panel.
- Return to GTM, click Submit, add a descriptive version name (e.g. "v1.0 — Initial GA4 deployment"), and click Publish.
5. How do you enable Enhanced Measurement in GA4?
Enhanced Measurement automatically tracks common user interactions — scrolls, outbound clicks, file downloads, video plays — without any custom code. In Universal Analytics, all of this required manual GTM setup. It's one of the more practical improvements in GA4.
| Event Name | What It Tracks | Default Status | Watch Out For |
|---|---|---|---|
page_view | Every page load or browser history change (SPA-aware) | On | Can double-fire on SPAs with custom push-state routing |
scroll | First time a user reaches 90% of page depth in a session | On | Only fires once per page per session — not a continuous depth tracker |
click | Outbound link clicks leaving your domain | On | Does not track internal clicks; use custom events for that |
view_search_results | Site search queries using your internal search | On | Requires your search URL to contain a query parameter GA4 can detect |
video_start / video_progress / video_complete | Embedded YouTube video interactions | On | Only works for YouTube embeds with JS API enabled |
file_download | Clicks on downloadable files (PDF, DOCX, ZIP, etc.) | On | Tracks link clicks to downloadable URLs — does not confirm actual download completion |
form_start / form_submit | Form interactions where forms are accessible to the tag | On | Unreliable on custom or shadow-DOM forms; use GTM Form Submission trigger instead |
To review or toggle Enhanced Measurement events, go to Admin > Data Streams, select your web stream, and click the settings gear icon next to the Enhanced measurement toggle.
6. How do you track custom events in GA4?
In GA4, any user interaction can be tracked as a custom event. There are three ways to do this, and picking the right one for your setup keeps implementations simple and maintainable.
Method 1: Create events inside GA4 (no-code)
GA4 allows you to create new events based on existing ones directly in the interface. Go to Admin > Events > Create Event. You can define a new event name and set conditions based on existing event parameters — for example, creating a blog_scroll_complete event that fires when event_name equals scroll AND page_location contains /blog/. This is ideal for simple derivations from Enhanced Measurement events without involving a developer.
Method 2: Send events via gtag.js (direct install)
If GA4 is installed directly without GTM, call gtag('event', ...) at the point where the interaction occurs in your JavaScript:
gtag('event', 'newsletter_signup', {
'method': 'footer_form',
'user_type': 'new_visitor',
'page_location': window.location.href
});Event names must follow GA4's naming rules: snake_case, no spaces, no special characters except underscores. Names beginning with an underscore are reserved by Google and will be silently dropped.
Method 3: Use Google Tag Manager triggers (recommended for complex setups)
In GTM, create a Google Analytics: GA4 Event tag, add your event name and parameters, then set the trigger to match the interaction — a button click, form submission, element visibility, a timer. This is the most flexible and maintainable approach for anything beyond basic interactions, and the right choice when you need to pull dynamic values from the data layer.
7. How do you set up key events (conversions) in GA4?
Key events are how you tell GA4 what actually matters to your business — a purchase, a sign-up, a demo request, a form submission. They show up prominently across reports and sync to Google Ads for smart bidding. UA had Goals, capped at 20 per property. GA4 has no hard limit — but that's not an invitation to mark everything. The more you designate, the less any individual one means.
- Go to Admin > Events. You will see all events GA4 has recorded in the last 28 days.
- Find the event you want to designate as a key event (e.g.
form_submit,purchase,demo_request). - Toggle the Mark as key event switch to the right of that event name.
- Alternatively, click New key event to manually enter the name of a custom event you intend to implement but have not yet fired.
8. How do you filter internal traffic in GA4?
Office visits, dev testing, QA runs — if you're not filtering these out, they're sitting in your data. They inflate user counts, skew engagement metrics, and if someone on your team submits a test form, that's a fake conversion in your reports.
- Go to Admin > Data Streams, select your web stream, and scroll to More tagging settings.
- Click Define internal traffic, then click Create.
- Enter a rule name (e.g. "Head Office IP"), set the match type to IP address equals, and enter your office's public IP address. Add multiple conditions for multiple office locations or IP ranges.
- Save the rule, then navigate to Admin > Data Filters and create a new filter of type Internal Traffic.
- Critically: set the filter state to Testing first, not Active. Testing mode flags internal traffic with a dimension but does not exclude it, allowing you to verify the filter is catching the right sessions before permanently excluding any data.
- After 5–7 days of testing, confirm only internal sessions are being flagged, then switch the filter state to Active.
IP-based filtering does not work for remote workers or users on mobile data. For individuals, the Google Analytics Opt-Out browser extension prevents the GA4 tag from firing entirely for that browser session — the cleanest solution for team members whose IPs change frequently.
9. How do you set up custom dimensions and metrics in GA4?
GA4 picks up standard parameters automatically — page_title, session_source, event_count. But any custom parameters you send with your own events don't appear in reports until you register them as custom dimensions or metrics. This trips up a lot of implementations: you fire the event, the parameter shows up in DebugView, but it's nowhere in reports. Register it first.
- Go to Admin > Custom Definitions, then click Create Custom Dimension.
- Enter a human-readable Dimension Name (e.g. "Article Category", "User Plan Type").
- Select the Scope: Event for parameters that vary per interaction, or User for properties that describe a user's persistent attributes (e.g. subscription tier, account age).
- In the Event parameter field, type the exact parameter name as used in your event code — this is case-sensitive (e.g.
article_category, notArticle_Category). - Click Save. The dimension will begin populating from this point forward — it does not backfill historical data.
10. How do you create audiences in GA4?
Audiences in GA4 do two things: they let you compare user segments in Explore reports, and they power remarketing in Google Ads. GA4's audience builder is considerably more capable than UA's — you can use sequential conditions, time-bounded behaviours, and predictive ML-based audiences when you have enough conversion volume.
- Go to Admin > Audiences and click New Audience.
- Choose a starting point: use a Suggested audience template, build from scratch, or use a predictive audience (requires sufficient conversion data).
- Define your audience conditions using the dimension and metric builder. Combine conditions using AND/OR logic. Add sequences to target users who performed actions in a specific order within a specified time window.
- Set the Membership duration — how long a user remains in the audience after last meeting the criteria (up to 540 days, compared to 180 days in UA).
- Name the audience descriptively and click Save. New audiences only populate from the creation date forward.
11. How do you use Explore reports in GA4?
The Explore section is where GA4 gets genuinely useful for analysis. Standard reports tell you what happened. Explore lets you ask why. It has several templates — Free Form, Funnel Exploration, Path Exploration, Segment Overlap, User Lifetime, Cohort — each built for a different type of question.
Creating a Free Form Explore report
- Click Explore in the left navigation, then select Free Form.
- In the Variables panel, click + next to Dimensions and Metrics to add the data points you want to analyse.
- Drag dimensions to the Rows or Columns fields in the Settings panel, and drag metrics to Values.
- Apply segments from the Variables panel to compare different user groups side-by-side. You can apply up to 4 segments simultaneously for comparison.
- Use the Filters field to restrict the report to specific events, pages, or user types.
- Switch the chart type (table, bar chart, scatter plot, line, geo map) to suit the data you are examining.
Explore reports are private by default — only you can see them. If a report needs to be available to the whole team on an ongoing basis, publish it to a shared space or rebuild it as a custom report in the standard Reports section.
12. How do you create and save custom reports in GA4?
Custom reports in the standard Reports section are different from Explore reports — they're visible to everyone on the property, persist in the left nav, and don't require people to hunt for a shared Explore workspace.
- Navigate to Reports > Library (visible at the bottom of the Reports navigation — you need Editor or Administrator role to access this).
- Click Create new report and choose between a Detail Report (table + chart view) or a Funnel Report.
- Add the dimensions, metrics, and filters you need using the report builder on the right panel.
- Click Save, give the report a descriptive name, and optionally add it to an existing collection in the Reports navigation.
- To create a new collection (a logical grouping of related reports, similar to UA's custom dashboards), go to Reports > Library and click Create new collection. Add your custom reports and publish the collection to make it visible in the left navigation for all users.
13. How do you link GA4 to Google Ads?
Linking GA4 to Google Ads makes the data flow both ways. GA4 key events show up in Ads as conversion actions for smart bidding, and Google Ads campaign data — cost, clicks, impressions, ROAS — appears in GA4's Acquisition reports. Without the link, you're running both platforms without any shared context.
- Go to Admin > Google Ads Links and click Link.
- Select the Google Ads accounts you want to link. You must have admin access to both the GA4 property and the Google Ads account.
- Review configuration options — particularly Auto-tagging. Enable it. Auto-tagging appends a
gclidparameter to ad URLs that allows GA4 to attribute sessions to the exact ad, campaign, and keyword that drove them. Without auto-tagging, you see only "google / cpc" traffic with no campaign granularity. - Click Submit. The link activates within 24–48 hours.
- In Google Ads, go to Tools > Conversions. Your GA4 key events will now be importable as Google Ads conversion actions for campaign measurement and smart bidding.
14. How do you link GA4 to Google Search Console?
The Search Console integration adds a dedicated collection to GA4 Reports that combines organic search data — impressions, clicks, CTR, average position — with GA4's behavioural data. It's one of the most useful integrations available: instead of jumping between tools to understand both ranking and post-click behaviour, you can see them together.
- Go to Admin > Search Console Links and click Link.
- Click Choose accounts, select the Search Console property that matches your GA4 web stream URL, and click Confirm.
- Select the GA4 web data stream to associate with this property, then click Next and Submit.
- Navigate to Reports > Library to find the Search Console collection and publish it to your navigation.
15. How do you link GA4 to BigQuery?
The BigQuery integration exports all your raw, unsampled GA4 event data to Google Cloud. It's the only way to go beyond GA4's 14-month retention limit, run SQL queries across your full history, and build reliable custom dashboards in Looker Studio, Tableau, or Power BI.
- Create a Google Cloud project with BigQuery enabled and billing activated. (Without billing, BigQuery is in sandbox mode and GA4 cannot export to it.)
- In GA4, go to Admin > BigQuery Links and click Link.
- Select your Google Cloud project. Your GA4 account email must have
roles/bigquery.dataEditorandroles/bigquery.jobUserIAM roles on the project. - Choose a data location — select the region closest to your primary user base for query performance and data residency compliance.
- Configure export frequency: Daily (free, exports the previous day's full event data once per day around 09:00 UTC) or Streaming (small additional cost, near-real-time data appended continuously).
- Click Submit. The first daily export runs the following morning.
AI.GENERATE SQL function. This means you can now run generative AI queries directly against your GA4 event tables — for example, summarising user behaviour patterns by cohort or generating natural-language explanations of conversion funnel drop-off. If your team is building on BigQuery, this integration is worth exploring. See: BigQuery AI.GENERATE documentation16. How do you set up cross-domain tracking in GA4?
Cross-domain tracking is needed when you own more than one domain and users move between them — from your main site to a separate checkout domain, for example, or to a third-party booking platform. Without it, GA4 counts a new user and session the moment someone crosses that domain boundary, making your funnel reports look like a cliff edge at a point where nobody actually dropped off.
- Go to Admin > Data Streams, select your web stream, and click Configure tag settings.
- Under Settings, click Configure your domains.
- Click Add condition and enter each domain you want to include (e.g.
yourbrand.com,checkout.yourbrand.com). Use the "contains" match type rather than "equals" to catch all subdomains. - Click Save. GA4 automatically appends a
_gllinker parameter to links between these domains, passing identity across the boundary.
You must have the GA4 tracking code installed on all domains in the cross-domain list. Verify the setup by navigating between the two domains in your browser and confirming in the Realtime report that both page views appear under the same user session without a session reset.
17. How do you configure data retention settings in GA4?
The data retention setting controls how long GA4 stores event-level user data before deleting it. The default is 2 months — which isn't long enough for any meaningful trend analysis or year-over-year comparisons in Explore. Change this on day one.
- Go to Admin > Data Settings > Data Retention.
- Under Event data retention, change the dropdown from 2 months to 14 months — the maximum available on the free tier.
- Enable Reset user data on new activity. This restarts the retention clock whenever a user is active, meaning engaged returning users' data is never deleted while they continue using your product.
- Click Save.
18. How do you enable Google Signals in GA4?
Google Signals taps into data from users who are signed into their Google accounts and opted into personalised ads. Turning it on lets GA4 report on cross-device journeys and show demographic breakdowns based on Google's ad profiles.
- Go to Admin > Data Settings > Data Collection.
- Under Google Signals data collection, click Get Started.
- Read the data collection disclosure and click Continue, then Activate.
19. How do you configure Consent Mode v2 in GA4?
Consent Mode v2 is how GA4 adapts data collection based on what users actually consent to. It's been mandatory for Google Ads advertisers targeting EEA users since March 2024 — sites that don't have it properly configured lost Remarketing and Smart Bidding for EEA traffic from that point.
CM2 requires four consent parameters to all be configured:
| Parameter | Controls | Required for EEA? | New in CM2? |
|---|---|---|---|
analytics_storage | GA4 analytics cookies and user measurement | Yes | No (existed in CM1) |
ad_storage | Google Ads conversion and remarketing cookies | Yes | No (existed in CM1) |
ad_user_data | Sending user data to Google for advertising purposes | Yes | Yes — new in CM2 |
ad_personalization | Personalised advertising and audience remarketing | Yes | Yes — new in CM2 |
You'll need a Google-certified CMP (Consent Management Platform) — Cookiebot, OneTrust, Usercentrics, and similar — to handle this properly. The CMP needs to set the default consent state (typically denied for EEA users) before the GA4 tag fires, then update it to granted once the user consents. When consent is denied, GA4 uses behavioural modelling to estimate non-consenting user activity — keeping your conversion reports statistically useful without collecting individual user data.
20. How do you debug and test your GA4 implementation?
Don't assume your tracking is working just because no errors appeared during setup. GA4 gives you a couple of solid tools for checking, and there's a third-party extension worth knowing about too.
DebugView (primary debugging tool)
DebugView (under Admin > DebugView) streams events in real time from any device currently in debug mode. It's the best tool for deep event validation — you can see every parameter and its value as interactions happen. To activate debug mode:
- Chrome extension (recommended): Install the Google Analytics Debugger Chrome extension and enable it. All events fired in that browser session appear in DebugView in real time, including every parameter and their values.
- GTM Preview mode: Entering GTM Preview Mode automatically activates GA4 debug mode for the preview browser window. Events from that session appear in DebugView.
- URL parameter: Appending
?_ga4_debug=1to any page URL activates debug mode for that page load.
Realtime Report (quick validation)
The Reports > Realtime report shows all activity from the last 30 minutes. It's the fastest sanity check after a deployment — your site in one tab, GA4 Realtime in another, events appearing as you navigate. Click any event row to see its parameters. Not as detailed as DebugView, but more than enough to confirm a tag is firing.
GA4 Debugger browser extension (professional-grade)
The GA4 Debugger by Adswerve gives you a detailed view of every event and parameter at the network layer — including events that DebugView sometimes delays or batches. For complex implementations where multiple events fire simultaneously, it's the most reliable debugging tool available.
21. How do you set up GA4 e-commerce tracking?
GA4 e-commerce tracking is built around a set of recommended events defined by Google. Unlike UA Enhanced Ecommerce, where you could get away with a loose implementation, GA4's schema is strict — get the parameter names wrong and whole sections of the Monetisation reports just stay empty with no obvious indication why.
| Event | When to Fire | Required Parameters |
|---|---|---|
view_item_list | Category page, search results, or product carousel loads | item_list_name, items[] |
view_item | Product detail page load | currency, value, items[] |
add_to_cart | User adds a product to their cart | currency, value, items[] |
begin_checkout | User initiates the checkout process | currency, value, items[] |
add_payment_info | User enters payment details | currency, value, payment_type, items[] |
purchase | Transaction successfully completed | transaction_id, value, currency, tax, shipping, items[] |
refund | Full or partial refund issued | transaction_id, value, currency, optionally items[] |
Each event needs to include an items array containing objects with standardised parameters: item_id, item_name, item_category, price, and quantity. The item_id and item_name are required — the rest are strongly recommended.
items[] array, or a transaction_id that changed on page refresh, which causes duplicate purchase events and inflated reported revenue.22. Common GA4 mistakes and how to avoid them
Mistake #1: Dual installation (site snippet + GTM). Installing GA4 directly on the site AND via Google Tag Manager doubles every event, session, and conversion count. Pick one method and stick to it. If you're moving to GTM, search your site's source for any existing gtag/js?id=G- strings and remove them before publishing the GTM tag.
Mistake #2: Leaving data retention at 2 months. The default retention period means all event-level data in Explore reports gets deleted after 60 days. Change it to 14 months in Admin > Data Settings > Data Retention on day one — you can't recover data that's already been deleted.
Mistake #3: Marking micro-interactions as key events. Scroll depth, outbound clicks, video plays — these are not conversions. When every interaction is marked as a key event, the reports become noise and your smart bidding signals in Google Ads degrade. Keep key events reserved for actions that directly indicate business value.
Mistake #4: Skipping the BigQuery integration. Without it, event-level data is gone after 14 months, SQL queries across your full history aren't possible, and any BI dashboard work is significantly harder. The daily export is free to set up and costs most sites under $5/month in storage. There's no good reason to skip it.
Mistake #5: Wrong Consent Mode v2 default states. Setting granted as the default for all users — including EEA visitors — is a GDPR violation. EEA defaults must be denied. Always verify your consent default by simulating a first-time EEA visitor visit using a VPN before launch. This is a legal issue, not just a configuration preference.
Mistake #6: Never cross-referencing GA4 against another source of truth. GA4 can look like it's working perfectly while quietly under- or over-counting. Cross-reference conversion data against your CRM, payment processor, or server logs at least once a month. A 5–10% discrepancy is normal. Above 15%, something needs investigating. Universal Analytics was built around sessions and pageviews — the session was the core unit of measurement. GA4 flips this: everything is an event with attached parameters, whether it's a pageview, a button click, a scroll, or a purchase. On top of that, GA4 has native cross-device tracking, built-in machine learning for predictive metrics and modelled consent data, Consent Mode v2, and free BigQuery access. Universal Analytics shut down for good on July 1, 2024. One practical thing to know: GA4 typically reports 20–30% fewer sessions than UA for the same period — stricter session definitions and better bot filtering. That's a data quality improvement, not a traffic drop. Go to Admin > Data Streams, select your web stream, and click "View tag instructions" under the Google tag section. Copy the gtag.js snippet and paste it as high as possible in the <head> of every page, replacing G-XXXXXXXXXX with your actual Measurement ID. Verify it's working by checking the Realtime report in GA4 — your own session should appear within a minute or two of loading the page. One heads-up: if you later switch to Google Tag Manager, remove the direct snippet first. Running both at once is one of the most common GA4 data quality problems, and it doubles all your event counts. Key events are GA4's version of Goals from Universal Analytics — except there's no cap of 20 per property, and any event can be marked as one. You do it from Admin > Events by toggling "Mark as key event" next to the event name. They show up across standard reports, can be imported into Google Ads as conversion actions, and feed GA4's predictive audience models. The Standard GA4 reports — Acquisition, Engagement, Monetisation — are unsampled. Sampling can happen in Explore reports when you're querying large datasets over long date ranges; GA4 tells you when it's occurring. You can reduce it by shortening the date range, adding filters, or splitting the analysis into smaller chunks. If you need guaranteed unsampled analysis at any scale, export your raw event data to BigQuery and query it there — that's the standard approach for teams doing serious analytics work. GA4 gives you the tools to support GDPR compliance — Consent Mode v2, data deletion requests, IP anonymisation (on by default and not configurable), adjustable data retention, and the option to disable personalised advertising. But compliance is your responsibility as the site owner, not Google's. You need a valid cookie consent mechanism from a Google-certified CMP, your Privacy Policy needs to accurately describe what you're collecting, and Consent Mode v2 defaults must be set to "denied" for EEA users. Setting "granted" as the default is a GDPR violation even if you're showing a consent banner. Also worth knowing: GA4 has faced regulatory scrutiny in several EU countries — Austria, France, Italy, Denmark — over US data transfers. If you operate in those markets, talk to your legal team. The default is 2 months. You can extend it to 14 months — the maximum on the free tier — in Admin > Data Settings > Data Retention. This only affects event-level data in Explore reports; standard Reports keep aggregated data indefinitely regardless of this setting. For raw event-level data with no expiry, use the BigQuery integration — daily exports create tables in your Google Cloud project that GA4 never automatically deletes. Change retention to 14 months when you first create a property. You can't get back data that's already been deleted. The most reliable approach is a thank-you page redirect: after the form submits, send users to a dedicated confirmation URL (like /thank-you/) and track that page_view as a key event using Admin > Events > Create Event. Zero false positives, works regardless of how the form is built. If you can't use a redirect, set up a GTM Form Submission trigger to fire a custom GA4 event on completion. Don't rely on Enhanced Measurement's built-in form_submit event for anything you're using as a conversion — it breaks on roughly 40% of custom JavaScript form implementations and should only be treated as supplementary data, not a primary conversion signal. Yes — GA4 was designed for this. A single property can include web and mobile app data streams side by side, so you can see cross-platform user journeys in one place. For iOS, integrate the Firebase SDK for iOS. For Android, use the Firebase SDK for Android. Both stream into the same GA4 property alongside your web data, which lets you track things like users who browse on mobile web and then convert in-app, or follow the journey from a Google Ads click through to an in-app purchase. Goals from Universal Analytics became Key Events in GA4. Any event can be designated as a key event from Admin > Events, and unlike UA's hard cap of 20 Goals per property, there's no limit in GA4. Key events also apply retroactively to all historical data in standard reports — not just from the date you created them, which was a frequent frustration with UA Goals. When your GA4 property is linked to Google Ads, key events automatically become available as conversion actions without the separate import step that UA required. Go to Reports > Realtime in the left nav. It shows everything from the last 30 minutes — active user count, locations on a map, top active pages, top traffic sources, a minute-by-minute event chart. Click any event row to see its parameters. It's also the quickest way to check a new installation: load your site in one tab, watch GA4 Realtime in another, and your session should appear within 60–90 seconds. If nothing shows up after two minutes, the most common culprit is the snippet being placed in the <body> instead of the <head>.Frequently Asked Questions
purchase event is automatically treated as a key event when e-commerce tracking is set up properly. Keep key events focused on things that directly indicate business value — purchases, leads, sign-ups, demo requests. Marking micro-interactions like scrolls or video plays as key events dilutes your conversion data and can actively harm smart bidding performance.
📚 Sources & References
- W3Techs, "Web Technology Surveys: Google Analytics". w3techs.com
- Measurelab, "State of GA4 Report 2025". measurelab.co.uk
- MeasureSchool, "GA4 vs Universal Analytics Session Discrepancy Analysis", 2024. measureschool.com
- BuiltWith Technology Report: GA4 Deployment Methods, January 2026. builtwith.com
- Google Analytics Help: Predictive audiences eligibility criteria. support.google.com
- Google Analytics Help: Custom dimensions & metrics limits. support.google.com
- Simo Ahava, "Internal Traffic Impact on GA4 Data Quality", 2025. simoahava.com
- Google Ads Help: Connect Google Analytics to Google Ads. support.google.com
- Google Analytics Help: About BigQuery Export. support.google.com
- Usercentrics, Consent Mode v2 Knowledge Hub, 2025. usercentrics.com
- Measurelab, "GA4 E-commerce Implementation Audit Findings", 2025. measurelab.co.uk
- Google Analytics 4 Official Developer Documentation — E-commerce Events Reference. developers.google.com
- Google Analytics Help: GA4 Setup Guide. support.google.com
- Google Cloud: BigQuery AI.GENERATE documentation. cloud.google.com
- IndexCraft Internal Audits: GA4 implementation findings across 150+ client sites, 2021–2026. (Aggregated anonymised data; available on request.)