If your GA4 reports show a large block of traffic as "Unassigned" or "(not set)", or your Google Ads conversion count doesn't match your CRM, the cause is almost always one of six specific setup faults — not a mystery. The most consequential ones are a consent banner implemented in the wrong order, a Google tag firing on the wrong trigger type, and the same lead being counted twice because it's tracked in both Google Ads and GA4. Each is checkable in under an hour, and each changes which marketing you'd cut.
I build and instrument dealership websites, so I've had to get this wiring right on live sites rather than in theory. This article is the list of things that break, in the order they're worth checking.
Fault 1: your channel report says "Unassigned"
This is the most common and the most misread. In GA4, session source / medium reports (not set) for any session where the automatically collected session_start event is missing. And when session source / medium is (not set), Google's documentation is explicit about the downstream effect: that traffic appears as Unassigned in the default channel group, because no channel rule matches the event data.
The usual cause is mundane. If you use Google Tag Manager, your Google tag's trigger has to be the Initialization – All Pages trigger type, not a standard All Pages trigger. Get that wrong and you lose session starts. Google's fix is four clicks: in Tag Manager, open your Google tag, go to Triggering, add Initialization – All pages, remove the previous trigger, save.
A related one: the landing page dimension reports (not set) when a session has no page_view event at all.
Worth knowing so you don't chase ghosts — Google also documents a benign case where sessions carrying an srsltid parameter without a Google referrer show as not set, which happens normally when people share modified URLs. Those sessions aren't classified as organic and there's nothing to fix.
Fault 2: your consent banner is silently destroying sessions
This is the fault I'd check first on any dealer site with a cookie banner, because it produces a symptom that gets misdiagnosed as a traffic collapse.
Google's consent mode documentation lists two implementation errors that lead directly to (not set) in Analytics. The first is using the default command to set all consent values — including the values that should be set after the user interacts with the banner. The consequence is precise: the user_engagement event isn't sent, and the initial event carrying session_start is lost. Updating consent after a user clicks requires the update command, not another default call. The second is sending additional events with denied consent after a user initially granted it; those get treated as a separate session with no session_start.
Two more documented traps. Google warns that when a page loads with consent denied and then reloads with consent granted, tags may lose key data points from the original page and subsequent reports may be incomplete — so the update call has to happen on the page where consent is given, not after a redirect. And if the update command fires as the page unloads, the browser may cancel the network request before it completes.
And the sentence from Google's own guide that I'd put on a poster: "If your consent code is called out of order, consent defaults won't work." The required order is load the Google tag with the default call, load the consent solution, then call update after the user chooses.
One more piece of the puzzle if you serve ads in Europe. Consent mode was updated in November 2023 and now carries two additional parameters beyond ad_storage and analytics_storage: ad_user_data, which sets consent for sending advertising-related user data to Google, and ad_personalization, for personalised advertising. Google frames this as strengthening enforcement of its EU user consent policy. Several consent-platform vendors state that Google has required advertisers serving ads in the EEA to integrate Consent Mode v2 since March 2024 — that's their characterisation rather than a line I found in Google's own docs, so confirm your position with whoever handles your compliance.
The correct sequence in code looks like this. Everything defaults to denied before any tag loads, with a short wait so the consent banner has time to restore a returning visitor's saved choice:
gtag('consent', 'default', {
analytics_storage: 'denied',
ad_storage: 'denied',
ad_user_data: 'denied',
ad_personalization: 'denied',
wait_for_update: 500
});
Then, on the same page where the visitor clicks Accept, the button calls update, never a second default:
acceptButton.addEventListener('click', () => {
gtag('consent', 'update', {
analytics_storage: 'granted',
ad_storage: 'granted',
ad_user_data: 'granted',
ad_personalization: 'granted'
});
});
To confirm it works, open Google Tag Assistant, accept the banner, and check that session_start appears in the trace and survives the consent grant instead of disappearing.
Fault 3: the same lead counted twice
If Google Ads reports more conversions than your CRM has leads, start here. Google's documentation on creating conversions from Analytics events describes the mechanism plainly: if you import a key event into Google Ads as a conversion and set the counting method to "One", Google Ads reports one conversion; set to "Every", it may report more.
The structural version of this problem is tracking the same action twice — once with a native Google Ads conversion tag and once as a GA4 key event imported into Ads, with both marked primary. The measurement consultancy Adswerve recommends native Google Ads conversion tags as the primary tracking method and importing GA4 key events as secondary conversion actions, specifically so you can compare attribution differences without double-counting. They also make a point that's very relevant to dealers: for lead actions, consider setting the count to one per user, because one shopper will often submit several forms on the same visit — an enquiry on two vehicles and a finance pre-qual is three submissions and one customer.
Fault 4: you don't know which attribution model you're reading
Three attribution models are available in GA4's Attribution reports: data-driven, paid and organic last click, and Google paid channels last click. The first click, linear, time decay and position-based models were removed in November 2023.
Two details that change how you read your own reports. First, all of these models exclude direct visits from receiving credit unless the entire path to the key event was direct — so "Direct" in your report is not what you probably think it is. Second, "paid and organic last click" and "last non-direct click" are two names for the same model.
Adswerve notes that GA4's default reports which don't use key events still use last non-direct attribution, while the reporting attribution model setting affects key event reports and explorations using event-scoped traffic dimensions. That's why two GA4 reports can disagree about the same leads. They also list Google's default lookback windows as 30 days for click-through key events, 90 days for other key events, and 3 days for engaged-view.
For a dealer this matters more than it does for most businesses, because a car purchase has a long consideration window and a lot of touchpoints. A model that hands 100% of the credit to the last click will systematically undervalue whatever introduced the buyer to you.
Fault 5: (not set) in your Ads reports
Google lists four causes for (not set) appearing in Advertising reports, and all four are configuration rather than anything deep: the Google Ads account and the Analytics property aren't linked; auto-tagging isn't enabled; traffic is arriving from a Google Ads account that isn't linked to your Analytics account, which can't be mapped to a click; or destination URLs are manually tagged with incomplete or incorrect UTM parameters. That last one applies to any source — social, a blog, a marketplace — not just Ads.
For dealer groups this is worth a specific look, because it's common for a store, a group marketing team and an agency to each be running ads, and an unlinked account produces exactly this symptom.
Fault 6: GA4 was never going to answer your real question
There's a category error underneath most of these complaints. GA4 measures what happens on the website. It does not know what happened in your showroom.
One measurement blog aimed at dealers puts the limits usefully: GA4 is good at traffic volume and sources, engagement, correctly configured conversion tracking, audience building for remarketing; it's weak at cross-device identity stitching, offline conversion attribution out of the box, and it defaults to a last-click view that misrepresents most real journeys. That's a vendor-adjacent source rather than Google documentation, but it matches the documented behaviour above.
The practical consequence: "leads" is the wrong terminal metric for a dealership. The useful one is leads that became appointments, and appointments that became deliveries, which requires getting a click identifier into your CRM alongside the lead so the two systems can be reconciled later. Google's own tooling supports the general pattern through offline conversion import and enhanced conversions for leads; Adswerve's note about passing a gclid in a hidden field on form submission is the concrete version of it.
A clean dealer setup is small. Track a short list of events that map to real buying steps: generate_lead for vehicle enquiries, plus custom events for finance pre-qualification submissions, test drive or appointment bookings, and click-to-call. Mark only those as key events. In Google Ads, use a native conversion tag as the primary conversion action and import the GA4 key event as a secondary one, with the counting method set to one per user for lead actions so a shopper who submits three forms counts once. Finally, add a hidden field to every form that carries the gclid into your CRM, so each lead can be matched to the ad click that produced it.
The payoff shows up when you compare reports. The typical pattern is that Google Ads shows more conversions than your CRM has leads, and paid search looks like your best source. Once duplicates are removed and leads are followed through to appointments and deliveries, the picture changes and different marketing earns the credit. That's the reason to fix the wiring before you make any budget decisions from these reports.
What this means for your dealership
Do four checks this week. Open GA4 and look at how much of your traffic sits in Unassigned — if it's a meaningful share, you have fault 1 or fault 2. Compare last month's Google Ads conversion count to the actual lead count in your CRM; a large gap upward points at fault 3. Look at which attribution model your report is using before you draw any conclusion from it. And confirm that every Google Ads account advertising your store is linked to your Analytics property.
Then ask your website vendor one question: on our site, is the consent update command called on the same page where the visitor clicks Accept? If nobody can answer, that's your answer.
Where I'd tell you not to hire me
If your problem is that nobody at the store looks at the data, better instrumentation will not help you. A correctly configured GA4 that nobody opens is worth the same as a broken one. Fix the weekly review habit first — one person, one short list of metrics, once a week — and then worry about the tagging.
And if you're running a large multi-rooftop group with a serious measurement stack, you want a dedicated analytics partner, not a web developer. I can make the site emit clean, correct events. I'm not the right person to build your attribution model.
Sources
- Google Analytics Help, What the value (not set) means in your reports — Ads dimension causes, session source/medium and
session_start, Unassigned channel behaviour, landing page,srsltid, consent mode errors. - Google Tag Platform, Set up consent mode on websites (last updated 30 July 2026) —
defaultvsupdate, code ordering,wait_for_update, Consent Mode v2 parameters, transition-page and page-unload issues, URL passthrough, regional defaults. - Google Analytics Help, Get started with attribution — the three available models, November 2023 deprecations, direct-visit exclusion, last non-direct equivalence.
- Google Ads Help, Create conversions from Google Analytics events — counting method "One" vs "Every".
- Adswerve, Google Ads & GA4 conversions: best practices — native tags primary / GA4 secondary, per-user counting for leads, lookback window defaults, which reports use which model,
gclidin a hidden field. - VCTRS, What Google Analytics Actually Means for Your Dealership — GA4's strengths and limits, misattribution and consent examples. Cited as a practitioner blog, not primary documentation.
Send me your GA4 property and I'll tell you which of the six you have. No pitch attached.