You spent money on ads. Your analytics shows the traffic arriving from google.com, filed under organic search, and your paid campaigns look like they delivered almost nothing.
Nothing is broken. The tool is doing exactly what it was told, and what it was told is not enough.
Why the referrer cannot tell them apart
When somebody clicks a paid result on a search engine, the browser sends a referrer identifying the search engine. When somebody clicks an organic result on the same page, the browser sends a referrer identifying the same search engine.
They are the same signal. There is no field that says "this one was an ad".
Analytics tools classify traffic by matching the referring domain against a list of known search engines, and both clicks match. So both become organic search, and your paid spend disappears into a channel you did not pay for.
The same applies everywhere. A paid social placement and an organic post from the same platform produce the same referrer. A display ad produces the referrer of whatever site the banner was on.
What the ad platforms do about it
Every major platform appends a click identifier to the destination URL: gclid for Google Ads, msclkid for Microsoft, fbclid for Meta, ttclid for TikTok, li_fat_id for LinkedIn.
Google Analytics recognises gclid because both are Google products, and it uses it to reclassify the visit as paid and to join it to the campaign data. That integration is genuinely one of GA4's advantages, and it is why this problem is often invisible to people who have only ever used GA4 with Google Ads.
It is also why the problem appears the moment you add a second ad platform or a second analytics tool. A tool that does not know what msclkid means sees a referrer from bing.com and an unfamiliar query parameter, and files the visit under organic.
What it does to your numbers
The damage is worse than an under-count, because the error moves in two directions at once.
Paid is understated, so your cost per acquisition looks worse than it is, possibly much worse. A campaign that is actually profitable can look like it is losing money.
Organic is overstated by exactly the same visits, so your SEO work looks better than it is. Somebody presents a chart showing organic growth that is actually the ad budget.
Then the two errors interact. The obvious response to "paid is not working and organic is growing" is to cut the ad spend. Organic then falls, because a meaningful share of it was the ads, and nobody can explain why. This sequence is common enough to be worth recognising before you are in the middle of it.
Attribution models make it worse rather than better. A last-click model assigns the conversion to whatever the final touch was, and if the paid touch was misfiled, the credit goes to the wrong channel with full confidence.
The fix
Tag every ad destination URL with UTM parameters. Not instead of the click id -- as well as it. The click id enables the platform integration; the UTM tags work in every tool regardless of integration.
Use utm_source for the platform, utm_medium for the type of traffic (cpc, display, paid_social), and utm_campaign for the campaign. The value of utm_medium is what most tools use to decide the visit was paid, so it is the one that actually fixes the misclassification.
Turn on auto-tagging where the platform offers it, but do not rely on it alone. Auto-tagging adds the click id, which only helps tools that recognise that particular id.
Be consistent about case and spelling. Google, google and google.com as utm_source values produce three sources in your report. Most tools do not normalise them, and the ones that lowercase still will not merge google with google.com.
Check that your redirects preserve query parameters. A consent gateway, a link shortener, a geo-redirect or an apex-to-www redirect can drop everything after the ?. If it does, your tagging is being discarded between the click and the page, and nothing will report an error.
That last one is worth ten minutes: take one live ad URL, paste it into a browser, and look at the address bar after the page settles. If the parameters are gone, that is your bug and no amount of retagging will fix it.
The privacy angle nobody mentions
A click id is not just a channel marker. It is a unique per-click identifier, and storing it in your analytics against a page URL means your page-view records carry an identifier the ad platform can use to single out one person's session.
The channel information -- that this was a paid click from Microsoft -- is what you need for reporting. The unique value is not. A tool can record the platform and discard the id, which keeps the attribution and removes the identifier from your stored URLs. Most do not, and nobody asks.
Where Skomi sits
Skomi recognises the click identifiers from Google Ads, Microsoft Ads, Meta, TikTok, X and LinkedIn, and uses them to mark a visit as paid -- so an untagged paid click is not filed as organic just because the referrer happened to be a search engine.
The raw click id is then stripped from the stored URL rather than kept. Skomi records which platform the click came from -- the part that answers a reporting question -- and discards the value that would identify the individual click.
The classification order is worth stating because it is the whole logic: email first, then the click identifier, then utm_medium, then the referrer. The click id outranks utm_medium deliberately. A medium is typed by whoever built the campaign and is missing from most paid traffic; a gclid is appended by Google's own ad system and cannot be there for any other reason.
The Analytics page covers the sources report, and direct traffic is not a traffic source covers the other half of the attribution gap.
The two terms underneath this are ad platform, which is what the fix records, and click id, the parameter that identifies the click and is stripped from the stored URL rather than kept.