In this article
It is an uncomfortable feeling to present numbers from GA4 whilst suspecting deep down that they are inaccurate. When tracking goes wrong, it is usually down to a handful of recurring culprits: duplicate installations, consent banners that block too much or too little, lost traffic sources, and events that fall outside the channel rules.
This is part 2. Part 1 covered how to set up useful tracking in GTM.
What is a tracking error in GTM and GA4?
A tracking error happens when what gets recorded does not match what actually took place. A form is submitted once, but counted twice. A purchase arrives via Google, but shows up with no source. The error is rarely visible within the report itself. You only notice it when the numbers contradict your inbox, your checkout, or basic common sense.
When I troubleshoot, I always compare GA4 against a secondary source: the number of form submissions in your inbox, orders in your ecommerce backend, or calls in your phone log. The discrepancy tells you where to start looking.
Why are events counted twice in GA4?
The most common culprit is GA4 being installed twice, both directly in the site code and via GTM. When this happens, every single pageview and event fires twice. Search your source code for your measurement ID, the one beginning with G-. If it appears in more than one place, you have likely found your problem.
The second cause is having two triggers for the same action. If both the button click and the thank-you page are configured as form conversions, you will record two conversions per submission. Pick one, ideally the one confirming that the submission actually succeeded.
How can consent create errors?
A consent banner can fail in both directions. It can block all tracking entirely, even after a visitor accepts, because the tags are not mapped to the consent signal. Or it can fire tags before the user has answered, which both skews your data and risks breaching privacy regulations.
Test this using a fresh incognito browser window. Open GTM's Preview mode, reject consent, and verify that analytics tags do not store cookies. Repeat the test and accept consent. The events should now fire properly, exactly once each.
What is "Unassigned" in GA4?
GA4 categorises traffic into channels such as "Organic Search", "Paid Search", and "Email" based on strict rules around source and medium. "Unassigned" means GA4 received data that fails to match any of these predefined rules.
The most common causes I see:
- Custom UTM values, such as
utm_medium=newsletterinstead ofemail. Stick to the mediums GA4 recognises natively. - Events without a session, such as events sent via server-side measurement or after a session has expired.
- Consent restrictions limiting information, preventing the traffic source from being stitched to the event.
Create a simple UTM template for your entire team to use. That often resolves more issues than tweaking settings inside GTM.

Why do purchases lose their source?
Many online shops send customers to an external payment provider on a separate domain. Without cross-domain measurement, the session often breaks. When the customer returns to your thank-you page, GA4 treats it as a brand-new visit coming from the payment gateway, attributing the purchase to the wrong source or leaving it blank.
Add the payment provider's domain to GA4's cross-domain measurement list, or configure it as an unwanted referral if cross-domain tracking is not supported. Additionally, ensure the purchase event sends the same client ID, especially when dispatching transactions from the server.
Troubleshoot your tracking
- Search for the measurement ID in the code; it should only load via GTM.
- Ensure every conversion has one trigger, not two.
- Test consent by accepting and rejecting in an incognito window.
- Confirm UTM links use mediums recognised by GA4.
- Configure cross-domain measurement for external payment gateways.
- Reconcile GA4 figures against your inbox, orders, or phone logs.
What I often see go wrong with GTM and GA4 tracking
- The error is fixed in the report, not at the source. Filters in GA4 hide the problem, but the underlying data is still wrong.
- No one tests after changes to the site. A new theme or checkout can break tracking without anyone noticing.
- "Unassigned" is accepted as normal. A small share is common, a large share almost always means a specific error.
- The payment provider is not excluded as a referrer. Then the purchase gets "payment" as its source instead of the ad that actually drove the sale.
In short: My advice on GTM and GA4 tracking errors
Bad data is worse than no data, because you make decisions on it with a clear conscience. I recommend a fixed check after every major change to the site, not only when the numbers look odd.
Set aside one hour a month to test a purchase and a form in DebugView. It is the cheapest insurance you can buy for your marketing budget.




