- August 13, 2019
- November 14, 2017
We’ve all had that moment; when we look into analytics halfway through the month for something we were POSITIVE was tracking correctly and seen something like this:
And then the panic ensues: Did they make a change to the site? Is our tracking not setup properly? Or are leads really down?
Sometimes, it’s a little clearer and we see something like this:
Conversions start dipping, or even fluctuate a bit, then nothing for days. In either case, our responsibility as analysts is to ensure we have accurate data collection across the board to make data-backed decisions.
In this guide, we’ll walk you through troubleshooting your own tracking issue in a, “Choose Your Own Adventure” fashion. We’ll troubleshoot through the following platforms, which I use on a daily basis. Although this guide is specific to Google platforms, the methodology is applicable across other similar platforms.
Begin Your Troubleshooting Tracking Adventure
What tracking issue are you facing?
Google Tag Assistant Troubleshooting
ALWAYS check here first.
First, we’ll start with the tool that should be checked first and foremost—even before taking a deeper dive into your analytics: Google Tag Assistant.
Although it may seem too simple, oftentimes tracking issues are a result of missing or improperly placed tags. Google Analytics and Google Tag Manager snippets come with specific instructions to be placed as high up in the <head> as possible, along with a secondary tag in the <body> for GTM, on every page of the site as possible. These snippets need to be placed high up in the code to prevent the parsing of other code from keeping them from firing. Misplacement can result in a complete loss in data collection or even a seemingly random loss, depending on user-dependent factors.
When checking in Google Tag Assistant for tracking issues, check for the following:
- Are the correct properties being tracked?: Check the UA ID and match it against the UA ID provided in your Google Analytics property.
- Is the tag in place?: Was the correct GTM container or hard-coded GA tag even found? Copy and paste the code as found in the source code and compare it against the code provided in your platform. It’s surprising how many times I’ve seen GTM not being registered from even one incorrectly placed apostrophe.
- Is the placement correct?: Tag Assistant will warn you when the code is found outside of the <head> tag or when there’s nonstandard implementation, which can leave room for lost data.
- Are there errors that could be interfering with proper tracking?: Google Tag Assistant lets you know when there are issues that could cause a loss in tracking. Is the tracking snippet on every page? Do a manual check on the pages where you’ve noticed a an usual dip or set up a crawl to search for the snippet on every page. (Our preferred crawler at Workshop Digital is Screaming Frog.)
Google Tag Assistant will provide warnings for every problem discovered in your tracking implementation, but not all are urgent or even ones that will certainly affect your data collection.
Next to each warning, the following urgency indicators are provided:
- No urgent need to update tracking:
- Green means that no issues were found
- Blue means that a tag was found with minor implementation issues, or that there are suggestions on improving your site tagging
- Urgent! Data may not be tracking correctly:
- Yellow warns you that the implementation may lead to unexpected results
- Red means that a tag was found with critical implementation issues
Pro Tip: Enable Google Tag Assistant recording to get more detailed information laid out visually in a flow and to view exactly what data is being sent to Google Analytics by the hit.
Recordings are ideal for troubleshooting issues with loss of attribution and cross domain tracking. Record a typical user flow and view more details, such as referrer data between hits, page-level details, user browsing, and the order of hits sent to Google Analytics in a specific user path.
What did you find?
- No tags are in place or the implementation is incorrect.
- Update your tracking snippets and start over again!
- The correct tags are in place and they’re firing but there’s an unusual loss in data.
- The correct tags are in place but I’m not confident they’re firing correctly.
Google Analytics Troubleshooting
Identify the cause of the loss in data here when there are abnormalities in metrics.
Issue: complete loss in goal tracking
When checking for a complete loss in goal tracking, check for the following in the goal setup first:
- Change history: Check your annotations in Google Analytics or your changelogs to see if changes have been made to the site that could affect tracking.
- Destination goal: Has the URL for the destination goal changed? Check for new page URLs or redirects through a test form fill.
- Event goal: Do your event conditions still match the setup in GTM? Check to see if the event goal configurations match the event conditions in GTM.
- Event tracking: If the configuration matches the conditions, test an event that should fire in real time.
Issue: irregular loss in goal tracking
These types of tracking issues are challenging because conversions are recorded sometimes but either of the following are happening:
- A crucial part of the setup is missing: Sometimes, especially with larger sites that are new to you, you can miss even one element and miss out on useful data. An example of this is when you’re setting up a button click event for a click on the text that says “Get Your Free Guide,” but missed one that was changed to say, “Download Your Free Guide” instead. Small difference, but you will miss out on clicks for the same conversion if you don’t do a proper sweep before setting up tracking.
As analysts, we are typically not deeply involved in writing code so we must scour the site and test event tracking across multiple devices, browsers, pages, and more to ensure we are collecting all hits for this event and hits for this event only.
When you’re facing the issue of a partial loss in tracking, check for the following in Google Analytics to make sure you’re not excluding a group of users or missing a necessary part of your tracking setup:
- Check in audience reports to see if there’s one area where most of the loss is coming from. Is the loss coming from one device type or one city? Double check the variables used to fire your events in GTM.
- Are total goals stable but are shifting heavily towards referral or direct? This could indicate a loss in attribution or the need to set up cross domain tracking. Check pages on your site for iFrames (if you find one, there is your issue) or a tracking parameter set up by another vendor that’s knocking yours off.
- Has there been a decrease to one or a few pages? Is there a section of the site that these events never occur on? Run a crawl in a crawler and set up a search for the link or any element that’s a part of what is being tracked.
We use an insightful sheet in-house to identify these areas of significant loss called the WTF is Happening to My Organic Traffic? dashboard.
Pro Tip: Test and monitor in the Real Time Report to make sure your events and conversions are firing when they should.
However, keep these Real Time Report caveats in mind before you make any data-backed decisions:
- Mobile hits are batched so you may not IMMEDIATELY see all mobile hits in these reports as they occur.
- Campaign attribution can be dropped in Real Time Reports. In Real Time, all hits are sent by the hit and not stitched together into a session until populated into the rest of GA. Attribution is identified by stitching all of the hits together and looking at the source/medium for the first hit of the session, therefore, attribution can be unreliable in this report.
- Changes to filtered views can lag in reflection. Just updated your filters to exclude your office’s IP address? It might take a little while for your IP to actually filter out in Real Time Reports.
- Temporarily suspended Real Time Reports. Google Analytics temporarily turns off Real Time Reports for some views that haven’t been accessed in the recent past. However, these reports can be reactivated by simply visiting the Real Time Report in the view that has been inactive.
One important caveat that affects all of Google Analytics is the fact of sampled data. Despite all of the checks you do, there are inevitably going to be some hits or sessions that will be missed by Google Analytics. And from the data that is actually sent, Google samples out the data you actually end up viewing in your reports.
There are a few factors that affect how much of your data is sampled:
- Default reports in GA (reports that come as is, under the Audience, Acquisition, Behavior, and Conversion reports) are not sampled.
- Ad-hoc reports (reports that are modified, including applying a secondary dimension, filtering, or adding a segment) are sampled depending on the number of sessions in the given date range you’re pulling in for analysis.
You can read Google’s documentation about data sampling to learn more about the details and caveats of your data in GA.
What did you find?
- The URL has changed on the site or your event conditions in your goal configuration don’t match the setup in GTM.
- Update your tracking to reflect the changes.
- The URL and event conditions are the same but you’re not seeing events fire or data pull into GA.
- The loss is coming from one group of users.
- Total goals are stable but have shifted heavily towards direct or referral attribution.
- Check your site for iFrames and redirects through other domains on your site. You will have to set up cross domain tracking if users are accessing another domain on your site.
- Go through the steps to your conversion or event on the site with Google Tag Assistant recording enabled. See if attribution is being lost and if so, where it’s being overwritten.
Google Tag Manager Troubleshooting
Preview and test in GTM to identify potential issues with the event tracking setup.
Troubleshoot here by checking your tags, triggers, and variables. First, start with your tag:
- Is it sending data to the right source?
- If it’s a custom HTML tag, has the code been tested to work properly?
- Is the source set up with the correct property IDs?
Then, check your triggers and variables:
- Have URLs been changed? Check for redirects and changes in URL structure across the site.
- Have there been changes to the site build and layout? Check for changes in elements that you’ve used to set up the trigger. Some of the most common ones I’ve run into are a new form ID, click text, and CSS selectors.
- Are you seeing events fire sometimes but not other times? Are you getting a lot of (null) data in analytics? Check your trigger type. If you’re depending on an element to load further down the page for your tag, you may want to use DOM Ready as your trigger type over Page View.
Pro Tip: See the order of hits that would be sent to GA in the Summary section on the left side of the preview window. You can click into each hit in preview mode in GTM to view more detailed data by navigating to Variables once viewing details within a hit.
See the Click Element? This is what is registered by GTM, while no Click ID, Click Target, or Click Class is identified. This is a great place to identify the elements you should be using to set up your event variables in GTM.
What did you find?
- URLs have been changed or you’ve noticed other changes to the site.
- Update your triggers and/or variables to match the changes.
- You’re seeing a lot of (null) data or inconsistent tag firing.
- You may want to try another trigger type, such as DOM Ready or Window Loaded, depending on what element you’re attempting to grab. Otherwise, your tag will fire before it can even pull the loaded element on your page.
Unlike a “Choose Your Adventure” story, troubleshooting tracking can have an infinite number of endings. However, hopefully by now, you have resolved your tracking issue or at least have an idea of where the issue is coming from to troubleshoot further. Was there a path or ending that you were hoping to see in this guide? Comment below and let us know what alternate path we should include!