
Broken GA4 tracking almost always comes down to a handful of causes: events that fire twice or not at all, custom dimensions that don’t match the parameters being sent, payment providers and subdomains showing up as referrals, consent settings that block tags, and e-commerce values that never match the shop. You fix it by auditing what is actually collected, correcting the tag setup (usually in Google Tag Manager), and checking the corrected numbers against your backend before trusting them again.
This guide is our playbook for that work: how to diagnose the common faults, a 30-day sprint to rebuild a property, and the steps that turn GA4 from a traffic counter into data that ties back to revenue.
Why is my GA4 data wrong?
GA4 rarely shows an error. It shows numbers that look plausible and are wrong. These are the faults we find most often in audits:
| Symptom | Likely cause | Fix |
|---|---|---|
| “(not set)” in reports | Parameter not sent, or custom dimension name doesn’t match it | Align the parameter name, register the custom dimension with the right scope |
| Conversions doubled | GA4 installed twice (hard-coded gtag plus GTM), or an event fired on every page load | Remove the duplicate tag; fire key events on the confirmed action only |
| Payment provider or own subdomain as a top referrer | Missing cross-domain setup or unwanted-referral list | Configure your domains and list unwanted referrals in the data stream’s tag settings |
| Revenue doesn’t match the shop | purchase fires before transaction_id and value are in the data layer, or fires again on reload |
Fire on the confirmed order with a unique transaction ID |
| Traffic drops in the EU only | Consent Mode misconfigured, tags blocked before consent | Fix the consent defaults and update order in GTM |
| Year-over-year explorations are empty | Event data retention left at the 2-month default | Set retention to 14 months (it is not retroactive) |
| Your team shows up as traffic | No internal traffic filter | Define internal traffic and activate the data filter |
Universal Analytics was switched off in 2023 (2024 for 360 properties), so GA4 is the only Google Analytics left. Many of these faults come from properties that were migrated in a hurry and never checked.
How do you fix “(not set)” in GA4?
Find out which dimension shows “(not set)” and why, because the cause differs:
- Custom dimensions: the event parameter is missing on some events, or the name registered in Admin > Custom definitions doesn’t match what the tag sends. Parameter names are case-sensitive.
- Landing page: sessions that started without a
page_view, often because of consent or a tag firing order problem. - Source / medium: sessions where GA4 could not attribute the traffic, common with broken cross-domain journeys and server-sent events that lack a session ID.
Fix it at the source (the tag or the data layer), not in the report. GA4 does not backfill corrected data, so fixes apply from the day they go live.
How do you rebuild a GA4 setup in a 30-day sprint?
We run most GA4 rebuilds as a short sprint with a written plan at the start, so that marketing, product and developers agree on what is tracked before anything is built.

- Days 1–7, audit and goals. Open GA4, GTM and the ad accounts, compare the numbers with the backend, and write down where they break. Agree on the handful of actions that matter to the business.
- Days 8–15, property configuration. Data streams, enhanced measurement, data retention, internal traffic, unwanted referrals and cross-domain settings.
- Days 16–23, tags and consent. Rebuild the GA4 tags in GTM, implement Consent Mode v2, and remove duplicates.
- Days 24–30, business events and QA. Key events, e-commerce or lead events, then testing in GTM preview and GA4 DebugView against real transactions.
Which events should GA4 track?
GA4 collects four kinds of events, and only the last two need planning:
- Automatically collected:
first_visit,session_start,page_viewand similar. - Enhanced measurement: scrolls, outbound clicks, site search, file downloads and embedded YouTube video engagement, switched on per data stream.
- Recommended events: Google’s predefined names such as
sign_up,generate_leadandpurchase. Use them where they fit, because some reports and integrations expect them. - Custom events: anything specific to your business, such as a trial activation or a pricing calculator.
Mark as key events (what GA4 used to call conversions) only the actions that create value. A newsletter signup counted as a conversion is one of the most common reasons an ad account optimizes for the wrong thing. Content-heavy sites can also add an author or content-group parameter to see which writers and topics bring engaged readers; we cover that in our GEO content audit with GA4.
What does Consent Mode v2 change?
Consent Mode passes each visitor’s consent choice to Google tags, so tags adjust their behavior instead of being blocked outright. Version 2 added two signals that Google requires for ad personalization and remarketing measurement of EU/EEA users.
| Consent Mode v1 | Consent Mode v2 | |
|---|---|---|
| Signals | ad_storage, analytics_storage |
Adds ad_user_data and ad_personalization |
| Ads impact | Controls cookies for ads | Without the new signals, EU/EEA audiences and personalized ads are limited |
| Setup | Consent banner updates tags | Same, through a consent platform that supports v2 |
Most consent problems we see are order-of-operations problems: tags fire before the consent default is set, or the purchase event fires before the consent update arrives. Test both the accept and the decline path.
When do you need server-side tagging and BigQuery?
When browser-only tracking stops being reliable enough for the decisions you make with it. Ad blockers and browser privacy features drop a share of client-side hits, and in our experience that share is higher among technical B2B audiences.

- Server-side tagging sends one first-party stream from the browser to a tagging server you control, which then forwards it to GA4, Meta’s Conversions API and Google’s enhanced conversions. Our server-side GTM guide covers the setup and costs.
- The BigQuery export sends raw, event-level GA4 data to your own warehouse. The export is available on standard properties; BigQuery itself is billed by Google. It removes the retention limit on explorations and lets you join GA4 with CRM and billing data. See building a first-party data clean room with GA4 and BigQuery.
How do you tie GA4 to revenue?
By connecting it to what happens after the form fill. GA4 sees the lead; your CRM sees whether it closed. Sending closed-won deals back as offline conversions, through the Measurement Protocol or directly to the ad platforms, lets both reports and bidding learn from revenue instead of form fills. We walk through it in offline conversions via the GA4 Measurement Protocol.
For analytics engagements, our standard is a warehouse model that reconciles to finance within ±1.8%, so that marketing and finance argue about strategy rather than about whose number is right.
TMT Finance shows why the order matters. $4,200 of ad spend had produced two conversions. We started with product analytics and UX forensics, fixed the onboarding flow, and only then relaunched Google Ads with smart bidding fed by the new conversion data. Cost per lead fell from $2,140 to $48.74, and the setup now tracks 90+ data points across GTM and GA4, with Looker Studio dashboards per team.
Are GA4’s predictive metrics worth using?
Sometimes. GA4 offers purchase probability (will a user active in the last 28 days purchase in the next 7) and churn probability (will a user active in the last 7 days not return in the next 7). Both need a minimum volume of purchasers and churned users before GA4 will train the model, which most B2B sites never reach. If yours qualifies, predictive audiences can be shared with Google Ads. If not, simple rule-based audiences (visited pricing twice, no demo request) usually do the same job.
Is GA4 enough, or do you also need Mixpanel or PostHog?
GA4 is strong for acquisition and marketing attribution. Product analytics tools are stronger once people log in.
| GA4 | Mixpanel | PostHog | |
|---|---|---|---|
| Best at | Acquisition, campaigns, Google Ads and Search Console integration | Product usage, cohorts, retention | Product analytics plus session replay and feature flags |
| Raw data export | BigQuery export on standard properties | Data pipelines on paid plans | Self-hostable, open source |
| Event model | Recommended plus custom events | Fully custom | Fully custom, autocapture |
Most SaaS clients need GA4 for the marketing site and a product analytics tool for the app, connected by a shared user ID. Our comparisons of GA4 vs Mixpanel and GA4 vs PostHog go into detail, and GA4 for SaaS lists the metrics to track.
When should you bring in a GA4 consultant?
When the numbers are costing you decisions. The usual signs:
- Marketing spends hours reconciling GA4 with the CRM every month.
- You can’t see return on ad spend per channel with any confidence.
- Nobody on the team owns the tag setup, or it was built by someone who left.
- Leadership asks questions the reports can’t answer.
- The setup has been patched so often that nobody knows what fires where.
Our GA4 consulting starts with a free audit of exactly these points, and we quote on scope after it.
FAQ
How do I know if my GA4 tracking is broken?
Compare GA4 with a system of record. If GA4 purchases or leads differ from the shop or CRM by more than consent and ad blockers explain, or if a payment provider is a top referrer, something is broken. Check DebugView while you complete a real conversion yourself.
Can GA4 fix historical data after I correct the setup?
No. GA4 processes data as it arrives and does not reprocess it after a fix. Annotate the date of the change so later comparisons account for it.
Do I need Google Tag Manager for GA4?
Not strictly, but we recommend it. GTM keeps GA4 and every other platform’s tags in one place, with preview testing and version history, which makes faults much easier to find.
How long does a GA4 audit take?
It depends on how many data streams, domains and integrations are involved. The audit is the first week of the 30-day sprint above; a single property with one domain is often quicker.
If you’d like us to look at your setup, get in touch.


