Analytics rarely breaks loudly. There is no error message when a form stops sending its key event, or when a payment provider starts stealing credit for your sales. Reports keep filling with numbers — they are just the wrong numbers, and decisions get made on them.
Below are ten signs that your setup needs attention. For each one: what you will notice, the usual cause, how to check, and how to fix it. The examples use Google Analytics 4 (GA4) and Google Tag Manager (GTM), but the same problems appear in every analytics tool.
A note before you start: Google regularly reorganizes the GA4 interface. Menu locations below were accurate when this article was written; if a setting has moved, search for its name in the GA4 Admin search box.
1. Key-event counts don't match your real leads or orders
What you notice: GA4 reports 40 form submissions last month, but your inbox or CRM received 25 — or 60.
Usual causes: the key event fires on the wrong trigger (a click on the submit button, or a view of the contact page, instead of a successful submission); it fires twice; it is missing on one of several forms; or a newer form was never tagged at all.
How to check: pick a recent four-week period and compare the key-event count with the real number of leads or orders. Then submit a test form while watching GA4's DebugView (under Admin → Data display) or Google's Tag Assistant to see exactly which events fire.
How to fix: trigger the key event only after confirmed success — for example from the form's "thank you" state or a data-layer event your site sends when the server accepts the submission. Expect a small, stable gap (consent choices and ad blockers mean analytics never sees everything); a large or changing gap means tracking is wrong.
2. A large, unexplained share of "Direct" or "Unassigned" traffic
What you notice: Direct traffic is your biggest channel, or "Unassigned" appears in channel reports with meaningful volume.
Usual causes: Direct is GA4's label for visits where it has no source information — untagged links in emails, PDFs, messaging apps and some mobile apps all end up here, as do visits through redirects that strip the referrer. Unassigned means GA4 did receive source information but it doesn't match any rule in the default channel group — typically UTM parameters with non-standard values, such as utm_medium=newsletter_oct instead of email.
How to check: in the Traffic acquisition report, switch the primary dimension to Session source / medium and look at what sits under Unassigned. For Direct, check which landing pages receive it: direct traffic landing on deep campaign pages is a strong hint of untagged links.
How to fix: adopt one UTM convention (see sign 7) and use standard medium values that GA4 recognizes, such as email, cpc, social and referral. Tag every link you control in emails, social posts and ads. Some direct traffic is genuine and expected — the goal is a share you can explain.
3. Sudden drops or spikes that coincide with site releases
What you notice: traffic or key events change sharply on the same day as a deployment, a redesign, a CMS update or a new cookie banner.
Usual causes: the tracking snippet or GTM container was removed from some templates; a form's markup changed so a trigger no longer matches; a single-page application started (or stopped) sending page views on route changes; a consent banner update changed when tags load.
How to check: add the release date as an annotation in your own notes or dashboard, and compare the day before and after. Check the affected pages in Tag Assistant. A real change in visitor behavior is rarely this abrupt.
How to fix: add tracking checks to your release checklist — load the main templates, submit a test form, complete a test purchase if applicable, and confirm events in DebugView before and after each deployment.
4. Self-referrals from your own domain or payment provider
What you notice: your own domain, a subdomain, or a payment provider such as a card-processing or PayPal domain appears as a top referral source — and gets credit for sales.
Usual causes: users move between domains or subdomains that don't share the same measurement setup (for example, www and shop), so the session restarts with the previous site as the referrer. Payment pages that redirect back to your confirmation page do the same.
How to check: in Traffic acquisition, filter Session source for your own domain names and the domains of your payment or booking providers.
How to fix: make sure every domain you own uses the same GA4 property and is listed in the web stream's cross-domain configuration. Add payment and booking providers to the unwanted referrals list. Both settings sit in the web data stream's Configure tag settings (Admin → Data collection and modification → Data streams).
5. Duplicate events
What you notice: page views per session look unusually high, purchase revenue in analytics is higher than in your shop, or a single test submission shows two key events.
Usual causes: the GA4 tag is installed twice (hard-coded in the theme and in GTM, or via a plugin and GTM); enhanced measurement sends page views on browser history changes while the site also sends them manually; the purchase event fires every time a visitor reloads the confirmation page.
How to check: open your site with Tag Assistant connected and count how many times each event fires for one action. Search your page source for more than one Google tag ID.
How to fix: keep one installation method — usually GTM. Decide whether page views on history changes come from enhanced measurement or from your own code, not both. Send a unique transaction_id with every purchase so GA4 can deduplicate repeated purchase events.
6. Internal and test traffic included in reports
What you notice: traffic spikes on days your team is updating the site; key events appear from test submissions; staging-site visits show up in production reports.
Usual causes: no internal-traffic filter, or a filter that was created but left in its "Testing" state; the staging site uses the production tracking ID.
How to check: look at the Admin → Data collection and modification → Data filters page and confirm the internal-traffic filter's state is Active. Check whether your staging or development hostnames appear in reports (add Hostname as a dimension).
How to fix: define internal traffic by IP address in the web stream's tag settings, then activate the filter. Office IPs alone don't cover remote staff, so many teams also exclude traffic using a cookie or a GTM variable set for team members. Never load the production container on staging environments — use a separate property or GTM environment.
7. Inconsistent UTM naming across campaigns
What you notice: the same campaign appears under several names (Spring_Sale, spring-sale, springsale), or sources appear as Facebook, facebook and fb. Comparing campaigns requires manual spreadsheet work.
Usual causes: no shared naming convention; UTM values are case-sensitive in reports; several people or agencies build links independently.
How to check: in Traffic acquisition, view Session campaign and Session source / medium for the last few months and look for near-duplicates.
How to fix: write a one-page convention — lowercase only, hyphens instead of spaces, a fixed list of allowed sources and mediums — and use a shared link builder or spreadsheet so nobody types parameters by hand. Historical data won't merge retroactively, so start now.
8. Nobody can say what each event means
What you notice: the events list contains dozens of entries such as click_button_2, form_v2_test and new_lead_final. Different reports disagree about what a "lead" is. When someone leaves, the knowledge leaves with them.
Usual causes: events were added one by one over years, by different people, without a written plan.
How to check: open the Events list (Admin → Data display → Events) and try to explain each event in one sentence. If you can't, neither can anyone else.
How to fix: write a measurement specification: for each event, its name, trigger, parameters, owner and the decision it supports. Retire events that serve no decision. Our explainer What Is Website Analytics and Why Does Your Business Need It? describes what a specification should contain.
9. Personal data in URLs or event parameters
What you notice: email addresses, names or phone numbers appear in page-path reports (for example /thank-you?email=jane@example.com) or in event parameter values.
Usual causes: forms that submit with the GET method put field values into the URL; developers pass identifying details in query strings; custom events copy form fields into parameters.
How to check: in the Pages and screens report, search page paths for @, email=, name= or phone=. Review the parameters your custom events send.
How to fix: submit forms with POST, remove personal fields from URLs and events at the source, and redact them in GTM as a safety net. Sending personally identifiable information to GA4 is prohibited by Google's terms, and it creates privacy risk for you and your visitors. If historical data is affected, GA4 offers a data-deletion request feature for removing it.
10. Consent choices and tag behavior don't match
What you notice: analytics cookies are set before the visitor answers the banner, or traffic and key events barely changed after a consent banner was introduced — or collapsed far more than expected.
Usual causes: tags fire on page load regardless of consent; Google Consent Mode defaults are missing or set after tags load; the banner records a choice but never tells GTM about it.
How to check: in a private browser window, open your site and — before clicking anything on the banner — inspect cookies in the browser's developer tools. Then decline, reload and check again. Tag Assistant shows the consent state each tag sees.
How to fix: set Consent Mode defaults (for example, analytics_storage denied where consent is required) before any tag loads, and update them when the visitor chooses. Make sure every tag in GTM respects the consent state. Rules vary by country, so confirm the requirements for your markets with legal advice.
What to do next
If you recognized one or two of these signs, fix them in order of impact: problems with key events (signs 1, 5 and 9) distort the numbers you make decisions on, so they come first. Channel problems (2, 4 and 7) come next, then hygiene (3, 6, 8 and 10).
If you recognized several, it is usually faster to audit the setup as a whole than to patch issues one at a time — many of them share a root cause, such as having no measurement specification. Our Analytics & Measurement service starts with exactly that kind of audit and ends with a setup your team can trust and maintain.
Once the data is fixed, How to Analyze Website Traffic and Find Growth Opportunities walks through using it.