The six-figure fix: How clean data fueled Flux Footwear's growth
SUMMARY As a company that values both data and creativity, Flux Footwear leveraged Littledata’s plug-and-play connections to Google Analytics (UA and GA4) and Facebook Ads to capture complete first-party data across the customer journey. Littledata’s automatic tracking solution not only saved them valuable time, but primed Flux for success with highly-targeted ads and in-depth customer insights as they scaled from launch to major DTC footwear brand. THE CHALLENGE Goal: Send complete Shopify data to Google Analytics (UA and GA4) and Facebook Ads The founders of Flux Footwear launched their Shopify store in July 2021, offering a minimalist shoe that works in harmony with the natural strength of bare feet. By embracing research on the positive effects of barefoot shoes and the value of sustainability, they created designs that feel just as good as they look. But after launching their Shopify store and installing Shopify’s native browser-side pixel, Flux’s team struggled with duplicate data, inaccurate attribution insights, and large data discrepancies between Shopify Analytics and Google Analytics. Unable to get an accurate understanding of their store’s performance, they needed to implement a data layer that tracks the entire customer journey across tools and platforms. The rollout of iOS14 made matters worse, inhibiting their Facebook Ad performance and limiting Flux’s reach to their target market. Their need for first-party data to maintain deep, accurate customer insights grew stronger than before. THE SOLUTION Fixing the data Within minutes of installing Littledata’s server-side tracking, accurate data was flowing seamlessly from Shopify to GA, capturing complete first-party data at every touchpoint and stitching together multiple sessions. In addition to connecting their Universal Analytics property, Flux started sending data in parallel to GA4. By building up historical data in GA4 now, Flux will be able to conduct year-on-year analysis to understand their business’s seasonality in years to come. Flux worked hand-in-hand with Littledata’s team of analytics experts, creating filters and views in GA to better interpret their data and build custom reports in GA4 based on their unique business goals. https://www.youtube.com/embed/plg4YWdJ97o Hear from Flux's co-founder, Benjamin Loschen on how Facebook Conversions API from Littledata improved their Meta Ad Campaigns. Integrating the tools Beyond the initial setup, Littledata made it easy for Flux to integrate their existing tech stack, see crucial insights in Google Analytics, and establish a single source of truth for customer data. [tip]Don't reinvent the wheel. See the top 5 data tracking mistakes made by DTC brands[/tip] With an accurate view of their Facebook Ad performance and marketing attribution, Flux is able to spend more on channels and campaigns that are converting at higher rates, and less on those that are falling short. Utilizing Littledata’s Facebook Ads integration, Flux built lookalike audiences based on their highest-spending customers, leading to a boost in both conversion rate and monthly revenue. There were three parts to this: Making Facebook Ads data match Shopify for actual conversions (real purchases instead of just clicks) Tracking checkout funnel events Getting the right LTV data to build high-value lookalike audiences in Facebook Ads and Instagram Ads All three were accomplished using Littledata's Conversions API connection. Conversion API (or "CAPI" for short) is a powerful way to get complete, accurate data about purchases and repeat buying behavior (shoppers who come back to buy again). Lots of brands don't even know about CAPI at all, but those that do often end up hiring agencies to do expensive manual implementations. Flux Footwear took the smart route and used an automated CAPI connection instead of trying to reinvent the wheel. The results were big and fast! RESULTS Flux Footwear cites Littledata’s seamless technology for helping them launch their brand with an accurate data layer. One of the most significant results, in their experience, is having “a team of people managing the data flow—a total no-brainer.” This helped to free up their most valuable resource—time—and allowed them to focus on their product. Since Flux relies predominantly on Facebook and Instagram ads to reach new customers, Littledata’s Facebook Conversions API integration plays a key role in Flux’s growth strategy. Seamlessly sending Shopify data to Facebook Ads and building powerful lookalike audiences for targeting and retargeting campaigns has fueled their recent growth—scaling their monthly revenue by 500% in under a year. They have also estimated over 30 hours of work were saved if they were to attempt to learn and set up tracking manually. With accurate data and a reinforced tech stack in place, Flux Footwear now has a complete picture of attribution, repeat orders, and conversions from customers and their affiliates.
Tracking web forms in Google Tag Manager V2
Do you know how many people start completing forms on your website, but don't complete them? Do you know which fields cause them difficulties? This is a guide to field-by-field form tracking using GTM. By tracking each element of the form separately, you will see how many people start filling out the form but then decide not to submit it. Once you understand where people drop off you will be able to identify any parts of the form that may need improving. The enquiry form on our website has four elements that I am going to track: the name, email and subject fields, and the button to submit the query. In summary, the set up will work like this: Create a trigger that will act as the firing rule for the tag Create a tag to track clicks on the field Repeat for each field So to set up the tracking of form fields and submits in GTM V2, follow these steps. Enable built in variables Firstly, you will need to enable built in variables. You will need Form ID variable and if similarly to our site you have the same enquiry form placed on several pages, then Page Path variable as well. These variables will allow you to track clicks on the form and on which pages the form was clicked on. The page path variable returns the URL part that comes after your main domain, eg /blog. Create the trigger For your trigger, you will need to find out the field ID you want to track. To find out the ID, if you are using Chrome browser, right-click on the field and select ‘Inspect Element’ It will look something like id=”name” so name here is the unique ID that you need to use with the trigger. If you do not have a unique ID associated with the field you want to track, ask your developers to add it in. This will make the tracking much easier. Now in GTM, go to Triggers tab on the left and click 'New'. You are creating a 'click' trigger, which you want to fire on 'all elements'. Save the trigger. Create the tag Go to Tags tab and click 'New'. Select Google Analytics and tag type 'Universal Analytics'. I send the following event tracking parameters to GA: Category: Enquiry form Action: Click on name Label: {{Page Path}} Now select 'Click' to select the trigger ‘Click on name’ as your firing rule. If there are any pages where you don’t want this tracked, then you will need to create a separate blocking trigger. Here is an example of a trigger for a contact us page that I want to exclude from tracking here. You can create your blocking trigger in a pop up window without leaving the tag. Repeat Follow the steps above to create the trigger and tag for each following field, and amend form ID’s and event field values for each. Test your tags in GTM debug mode and GA real time to make sure the details sent through are what you want. Once tested, publish your container and if you need any further help with any of the above, leave a comment below. Further reading: How to track file downloads in Google Tag Manager V2 Tracking registered users with Google Analytics and GTM V2
How to remove referral spam from Google Analytics
The issue with the referral spam in Google Analytics exploded in May when we saw an average of 620 spam sessions per GA property and just the other week, I saw an account where spam accounted for 95% of the traffic! Spam referrals are greatly skewing your Google Analytics traffic and becoming a headache for a larger number of people. Why are these spam sessions appearing in your Google Analytics traffic? To get you click through to their site and ads (never ever do that, by the way). By targeting thousands of GA accounts like this, you can imagine how much traffic they get from those more curious about their new source of visits. There are two different types of spam referrals you are getting: Ghost referrals send fake traffic to your GA account by “attacking” random GA property IDs. Crawler referrals crawl your website to leave a mark in your traffic. The spam referrals are getting more persistent and clever by targeting other non-referral reports, like www.event-tracking.com appearing in events. How can you tell it's spam? By seeing unusual activity, odd referral sources, substantial changes in your metrics, and lots of (not set) values in various dimensions, eg hostname and language. So how do you remove spam referrals from your Google Analytics traffic? There are two filters you need to set up to remove both ghost and crawler spam referrals. Filters change your traffic permanently so if you don't have an unfiltered view of your data, then create one now. It's a good practice to have an unfiltered view that you don't modify and it allows you to check your filters are working correctly. We are also working on our own spam filter tool to help people get rid of pesky spam referrals with just a few clicks of a button. We have already released a beta version via our Littledata analytics reporting tool and are developing it further to make it more robust and comprehensive. But if you'd rather do it yourself, keep reading. Create a filter to include valid hostnames Since ghost referrals never actually visit the site, the best way to get rid of them is by creating a valid hostname filter. This filter will allow visits from “approved” websites that you consider valid. First, you will need to identify your valid hostnames by going to the report in Audience > Technology > Network > Hostname. Hostnames report shows domains where your GA tracking code was fired and helps to troubleshoot unusual traffic sources. Valid hostnames on the list will be the websites where you inserted the GA tracking code, use additional services, eg transactions, or reliable sites used by people to access your site, eg Google Translate. Your reliable hostnames could look like this: www.yoursite.com yoursite.com blog.yoursite.com translate.googleusercontent.com (user accessing your site via Google Translate) ecommercepartnersite.com webcache.googleusercontent.com (user accessing translated cached version of your site) Any other website that you do not recognise or looks suspicious, you can safely assume to be a hostname you want to exclude. Beware of any domains that appear as “credible sources", eg Google, Amazon and HuffingtonPost. They are used to mask the spammers. If you see (not set) hostname on your list, this could be because you're sending events to GA that don't have pageviews, for example tracking email opens and clicks. If you are sure you are not sending any such events to GA, you can also exclude any (not set) hostnames. Now that you have got your valid hostnames, you need a regular expression for a filter that will include your valid hostnames (and thus, exclude all other fake ones). It'll look like this: yoursite|googleusercontent|ecommercepartnersite In the regex above, the vertical bar | separating each domain means OR. This will match any part of the string, so 'yoursite' will match 'blog.yoursite.com' as well as 'www.yoursite.com'. You can test your regex at http://regexpal.com/ by inserting your expression at the top and all the URLs at the bottom. All matches will be highlighted so you can see straightaway whether you have included all your valid hostnames correctly. Before adding the valid hostname filter in the settings, test it with an advanced segment. The results on the screen should now be only of your valid hostnames and without all the spammers. If all looks good, create a filter by going to Admin > View > Filters > New Filter. This will add a filter for that specific view only. If you want to add the same filter to more than one view, then check the details below. Select 'Include', pick a custom filter and select 'hostname' from the filter field menu. Now enter your regex into filter pattern field and click save. Want to apply a filter to multiple views? Then go to Admin > Account > All Filters > New Filter. The setup is exactly the same as above, except now you will see a section at the bottom titled 'Apply Filter to Views'. Select views you want to apply the filter to and move them to the right hand side box by clicking button 'add' in the middle. You're all set so click save. Add a filter to exclude campaign source Some of the known spam referrals are free-social-buttons, guardlink.org, 4webmasters.org and, most recently, the ironically named howtostopreferralspam.eu. Excluding spam referrals with campaign source filter is one of the most commonly mentioned methods online. This filter will exclude any referrer spam from the moment you add the filter (not from your historical data). The downside is that every time you have a new spam referral appear in your Google Analytics data you will have to add them to the existing filter, or create a new one if you’ve ran out of character space (allows only 255 characters). You can identify your spam referrals by going to referrals report found in Acquisition > All Traffic > Referrals. To save you some time, I have included the regex's we use below so you can copy them. Make sure you double check your referrals report against our list to see if there are any that haven't appeared in our reports yet. If you find a source not listed below, simply add it to the end and let us know in the comments. Similarly to setting up the filter to include valid hostnames only, now you need to add a filter to exclude spam referrals. We use the following regular expressions to filter out spam (yes, that's four filters): guardlink|event-tracking|vitaly rules|pornhub-forum|youporn-forum|theguardlan|hulfingtonpost|buy-cheap-online|Get-Free-Traffic-Now|adviceforum.com|aliexpress.com|ranksonic kabbalah-reg-bracelets|webmaster-tools|free-share-buttons|ilovevitaly|cenoval|bestwebsitesawards|o-o-6-o-o|humanorightswatch|best-seo-offer|4webmasters|forum69.info|webmaster-traffic|torture.ml|amanda-porn|generalporn depositfiles-porn|meendo-free-traffic|googlsucks|o-o-8-o-o|darodar|buttons-for-your-website|resellerclub|blackhatworth|iphone4simulator.com|sashagreyblog|buttons-for-website|best-seo-solution|searchgol|howtostopreferralspam 100dollars-seo|free-social-buttons|success-seo.com|videos-for-your-business.com The reason majority of the websites above do not have org/com/etc is that for these sites I have concluded that there are no other genuine sites with similar site names (or none that I could find) that would send our site traffic. So it is safe to exclude these sites by name only. For example, there are many sites with adviceforum in their name so to avoid excluding any potentially genuine sites that are called adviceforum, I only exclude the one spam referral I saw in my traffic - adviceforum.com. If you notice that you have referral traffic from addons.mozilla.org but don't actually have an addon on Mozilla, then you should add addons.mozilla.org (more commonly known as ilovevitaly) to the list above in this format - addons.mozilla.org Select Campaign Source in the filter field menu and enter your regex into the filter pattern field. Repeat the process until you have got all four (or more) filters created. This will help to clean up your Google Analytics data but you have to keep checking for any new spam referrals to add to the exclude filter. You can use advanced segments to view your historical reports without spam referrals. If you need help with any of the above or have further questions, don't hesitate to let me know in the comments. Further reading: 5 common Google Analytics setup problems How to remove referral spam from historical data
How to track file downloads in Google Tag Manager V2
Setting up tracking of file downloads in GTM V2 is much easier thanks to the new configuration wizard. It is more intuitive and takes you through the set up step-by-step. Let’s have a look at the basic configuration for sending tracking of file downloads from Google Tag Manager to Google Analytics as events. To set up this events tag you need to firstly create a trigger. Create a trigger This trigger will recognise every time someone clicks to download the file you want to track. In the given example I am using a simple regular expression to capture a number of file types I want to track -.(zip|exe|pdf|doc*|xls*|ppt*|mp3)$ Here the * means it will capture any repetitions of the file types it is next to, ie it will include file types doc and docx for Word documents, xls and xlsx for Excel spreadsheets, ppt and pptx for PowerPoint presentations. Save the trigger and create a new tag. Create a new tag Give your tag a meaningful name so you can easily recognise what the tag is for. We have previously created a variable (formerly known as macro) that stores our GA tracking code, which I use in the configuration settings. This way I do not have to re-enter the GA property ID every time I need it. This variable does all the work. Select your track type as 'Event' and insert your tracking parameters. Here I use the following but modify the fields based on what works for your business: Category is Download Action is Click Label is {{element url} Element url in the label field will store the URL of the file that was downloaded. Advanced tracking For advanced tracking, you can create a custom javascript variable with a code that will strip out the title of the downloaded file and store it in your GA. Have a look at Simo's example of returning file name. Set your tag to fire Last step is to add a firing rule, ie select a trigger that will fire your tag. Select the previously created trigger 'Click to Download' and you're all set. Test For extra care, test the tag both in GTM debug mode and GA real time. Publish Now publish the container with your newly created tag. If you need any further help, do leave a comment below. Further reading: Tracking registered users with Google Analytics and GTM V2 Tracking web forms in Google Tag Manager V2
5 myths of Google Analytics Spam
Google Analytics referral spam is a growing problem, and since Littledata has launched a feature to set up spam filters for you with one click, we’d like to correct a few myths circulating. 1. Google has got spam all under control Our research shows the problem exploded in May – and is likely to get worse as the tactics get copied. From January to April this year, there were only a handful of spammers, generally sending one or two hits to each web property, just to get on their reports. In May, this stepped up over one thousand-fold, and over a sample of 700 websites, we counted 430,000 spam referrals – an average of 620 sessions per web property, and enough to skew even a higher traffic website. The number of spammers using this tactic has also multiplied, with sites such as ‘4webmasters.org’ and ‘best-seo-offer.com’ especially prolific. Unfortunately, due to the inherently open nature of Google Analytics, where anyone can start sending tracking events without authentication, this is really hard for Google to fix. 2. Blocking the spam domains from your server will remove them from your reports A few articles have suggested changing your server settings to exclude certain referral sources or IP addresses will help clear us the problem. But this misunderstands how many of these ‘ghost referrals’ work: they are not actual hits on your website, but rather tracking events sent directly to Google’s servers via the Measurement Protocol. In this case, blocking the referrer from your own servers won’t do a thing – since the spammers can just go directly to Google Analytics. It's also dangerous to amend the htaccess file (or equivalent on other servers), as it could prevent a whole lot of genuine visitors seeing your site. 3. Adding a filter will remove all historic spam Filters in Google Analytics are applied at the point that the data is first received, so they only apply to hits received AFTER the filter is added. They are the right solution to preventing future spam, but won’t clean up your historic reports. To do that you also need to set up a custom segment, with the same source exclusions are the filter. You can set up an exclusion segment by clicking 'Add Segment' and then red 'New Segment' button on the reporting pages and setting up a list of filters similar to this screenshot. 4. Adding the spammers to the referral exclusion list will remove them from reports This is especially dangerous, as it will hide the problem, without actually removing the spam from your reports. The referral exclusion list was set up to prevent visitors who went to a different domain as part of a normal journey on your website being counted as a new session when they returned. e.g. If the visitor is directed to PayPal to pay, and then returns to your site for confirmation, then adding 'paypal.com' to the referral exclusion list would be correct. However, if you add a spam domain to that list then the visit will disappear from your referral reports... but still, be included under Direct traffic. 5. Selecting the exclude known bots and spiders in the view setting will fix it Google released a feature in 2014 to exclude known bots and spiders from reports. Unfortunately, this is mainly based on an IP address - and the spammers, in this case, are not using consistent IP addresses, because they don't want to be excluded. So we do recommend opting into the bot exclusion, but you shouldn't rely on it to fix your issue Need more help? Comment below or get in touch!
Setting up a destination goal funnel in Google Analytics
Destination goal funnels in Google Analytics track how well certain actions on your website contribute to the success of your business. By setting up a goal for each crucial activity you will get more focused reports on how visitors are using your website, and at what stage they are dropping out of the conversion funnel. The first time I tried to set up a destination goal was daunting, but after some practice, I am now seeing valuable information on how well visitors are interacting with our clients' websites. If like Teachable you have different subscription packages, then you might want to track how each subscription is converting. For this, set up the purchase confirmation page of each subscription plan as a goal, with a funnel to get additional insight into where people drop off. Step 1: Create a new goal To set up a destination goal go to Google Analytics Admin settings > View > Goals. Click ‘new goal.’ Step 2: Fill in destination goal details Google has some goal templates that provide set-up suggestions. They will only display if you have set your industry category in property settings. Selecting any of the given templates will only populate the name and type of the goal, but not the conversion details, which are more complicated for some. This is not very useful for me so I will ignore this: select ‘custom’ and click ‘next.’ Goal name Give your goal a descriptive name. You will later see it in various reports in Google Analytics so use whatever makes sense for you. Here I am going to use the name of the subscription plan I am tracking - Basic Subscription. Goal slot ID Goal slot ID is set automatically and you might want to change it if you want to categorise your goals. Select ‘Destination’ and click ‘next step.’ Step 3: define your destination goal Destination type You have a choice between 3 different match types. If you have an exact URL that does not change for different customers (without '?=XXX'), then use ‘Equals to’ for an exact match. If the beginning of your converting URL is the same, but there are different numbers or characters at the end of the URL for various customers, then choose ‘Begins with.’ Use ‘Regular expression’ to match a block of text within the URL. For example, if all your subscriber URLs have 'subscriber_id=XXX' somewhere then type 'subscriber_id=' into the text field. You can also use 'regular expression' if you need to match multiple URLs and know how to use special characters to build regex. One of our favourite tools to test regular expressions is Regex Tester. The match type you select here will also apply to the URLs in the funnel, if you choose to create one. Destination page Destination page is the URL where the conversion occurs. For Teachable, and most other websites that sell something online, the destination is usually a ‘thank you' page that is displayed after successful purchase. You might also have a thank you page for contact forms and newsletter signups, which you would track the same way as a payment thank you page. Here you insert the request URI, which is the URL part that comes after the domain address. It would look something like this: /invoice/paid /thank you.html /payment/success Step 4: Should you set a goal value? (optional) You can set a monetary value to your goal if you want to track how much it contributes. e.g. If the goal is visitors completing a contact form, and you know the average lead generates you £100, then you can put the value at 100. If you are an ecommerce site and want to track exact purchases, then set up enhanced ecommerce tracking instead. Step 5: Should you set up a funnel? (optional) If you have several steps leading up to the conversion, you should set up a funnel to see how many people move through each defined step and where they fall out. If you do not set the first step as 'required', Google Analytics will also track people coming into funnel halfway through. i.e. If the first stage of your funnel is the homepage, then it will still include visitors who land straight on your contact page. Verify Now that you have set up your destination goal, click ‘verify the goal’ to check it works. If all is set up correctly, you should see an estimation of the conversion rate your goal would get. If you do not get anything, then check each step carefully. Once all is well, click ‘create goal’ and check it is working after a few days or a week, depending on how much traffic you get. If you set up a funnel, you will see it in Conversions > Goals > Funnel Visualisation. This is what a typical funnel would look like. Because I did not set the first step as 'required' you can see people entering the funnel at various steps. Need more help? Get in touch or comment below!
Will a computer put you out of a job?
I see a two tier economy opening up in England, and it’s not as simple as the haves and have-nots. It’s between those that build machines, and those that will be replaced by them: between those that can code, and those that can’t. We’ve seen the massive social effects that declining heavy manufacturing jobs since 1970s have had on much of the North of England and Scotland, and I believe we’re at the start of a similar long-term decimation of service industry jobs – not due to outsourcing to China, but due to automation by computers. Lots of my professional friends in London would feel they’re beyond the reach of this automation: their job involves being smart and creative, not doing production-line tasks. But it is these jobs, which currently involve staring at numbers on a screen, which are most at risk from computer substitution. If your job involves processing a load of data into a more presentable format (analysts, accountants, consultants and some types of traders) then a computer will eventually - within the next 20 years - be able to do your job better than you. In fact, within 20 years computers will be much better than humans at almost every kind of data processing, as the relentless extension of Moore’s law means pound-for-pound computer processing will be 1 million times cheaper than it is now. As Marc Andreessen put it, ‘Software is eating the world’, and we’re only just beginning to work through the implications. This worries me. With the greater and greater levels of automation of the working world, what happens to employment? Last year we saw an incredible event in the sale of WhatsApp to Facebook: massive wealth creation ($17bn) accompanied by almost no job creation (33 employees at the time of sale). If a tiny number of highly skilled people can create a service with 300m paying customers, why do companies need to hire lots of people? In the utopian view of future work we give up all boring admin tasks to the machines, and focus on face-to-face interaction and making strategic decisions based on selected knowledge fed to us by our personal digital agents (like Google search on steroids). Lots more thinking space leads us to be more productive, and more leisure time makes us happier. But 30 years ago they thought computers would evolve into very capable personal assistants, when in fact office workers are chained to the screen for longer hours by the tyranny of email and real-time information flow. Look at Apple’s forecast from 1987 of what computing might look like in 2006: the professor is freed from the tedium of typing or travelling to the library. Yet they didn’t consider whether the professor himself might be needed in a world where students could get their lectures as pre-recorded videos. So the cynical view is that more volume of data will require more humans to interpret, and the technology will always need fixing. As companies become more automated there will be more and more jobs shifting into analysis and IT support; analogous to how, as postal mail has been replaced by email, jobs in the company post room have shifted into IT support. The problem is that there really are a limited number of humans that can set up and maintain the computers. I’d love to see society grappling with that limitation (see grass-roots initiative like CoderDojo) but there are some big barriers to retraining adults to code: limited maths skills, limited tolerance for the boredom of wading through code, and limited opportunities for people to test their skills (i.e. companies don’t trust this most critical of job roles to new apprentices). So those that have commercial experience in programming can command escalating day rates for their skills – and this is most apparent in London and San Francisco, while pay in other skilled areas is not even keeping up with core inflation. That leads us to the dystopian view: that the generation starting their working lives now (those 10 years younger than me) will see their prospects hugely diverge, based on which side of the ‘replace’ or ‘be replaced’ divide they are. If companies akin to Google and Facebook become the mainstay of the global economy, then they’ll be a tiny number of silicon sultans whose every whim is catered for – and a vast mass of technology consumers with little viable contribution to the workplace. Let’s hope our politicians start grasping the implications before they too are replaced by ‘democracy producing’ software!
How to audit your Web Analytics Ecommerce tracking
Most companies will see a discrepancy between the transaction volumes recorded via web analytics and those recorded via internal sales or financial database. This article focuses on how to find and reduce that discrepancy, to give greater credibility to your web analytics data. Following on from our article on common Google Analytics setup problems, we are often asked why Google Analytics ecommerce tracking is not a 100% match with other records, and what is an acceptable level of difference. Inspired by a talk from Richard Pickett at Ensighten, here is a checklist to run through to reduce the sources of mismatch. The focus here is Google Analytics Ecommerce tracking, but it could apply to other systems. In summary, you wouldn’t ever expect there to be a 1:1 match, due to the different paths the two events take over the internet. The general consensus is that anything less than 4% of difference in transaction volumes is good, but could sometimes persist up to 10%. Factors that affect this target rate include how many users have got ad blockers or disable Google Analytics (popular in Germany, for example), what proportion are on mobile devices (which suffer from more network interruptions) and how the purchase thank you / confirmation page is built. So on to the list. 1. Are other Javascript errors on the page blocking the ecommerce event in certain situations? The most common reason for the tracking script not executing in the browser is that another bug on your page has blocked it (see GDS research). The bug may only be affecting certain older browsers (like Internet Explorer 7), and have missed your own QA process, so the best approach is to use Google Tag Manager to listen for any Javascript error events on the confirmation page and send these to Google Analytics as custom events. That way your users do the testing for you, and you can drill into exactly which browsers and versions the bugs are affecting. 2. Is the tracking code as far up the page as it could be? If the user drops their internet connection before the whole page loads then the ecommerce event data won’t get a chance to fire. The best approach is to load the script at the bottom of the <head> element or top of the <body>. The Google Analytics script itself won't block the page load, and arguably in this one purchase confirmation page, the tracking is more important than the user experience. 3. Is the tracking code firing before all the page data has loaded? The inverse of the previous problem: you may need to delay firing the tracking code until the data is ready. This is particularly an issue if your ecommerce transaction data is ‘scraped’ from the HTML elements via Google Tag Manager. If the page elements in question have not loaded before the ecommerce tracking script runs, then the product names, SKUs and prices will be empty – or returning an error. 4. Is the problem only your ecommerce tracking script or just page tracking is general? It could be that the way you are sending the transaction data (e.g. product name, price, quantity) is the problem, or that the page tracking overall is failing in some cases. You can pinpoint where the problem lies by comparing the pageviews of the confirmation page, with the number of ecommerce events tracked. Caveat: on many sites, there’s another route to seeing the purchase confirmation page, which doesn’t involve purchasing (for example as a receipt of a historic purchase). In that case, you may need to capture a unique purchase event, which only fires when a new purchase is confirmed – but without any information on the transaction or products. 5. Are events from your test site excluded? Most companies will have a development, staging or user acceptance testing server to where the website is tested, and test users can purchase. Are you blocking the tracking from these test sites? Some possible ways to block the test site(s) would be: Set up sub-domain specific blocking rules in Google Tag Manager (or better) Divert the tracking from your test subdomains to a test Google Analytics account, using a lookup macro/variable Set up filters in the Google Analytics view to exclude 6. Is your tag set with a high priority? Tag manager only. If you use Google Tag Manager and have multiple tags firing on the tracking page it’s possible that other tags are blocking your ecommerce data tag from firing. Under ‘Advanced settings’ in the tag editor, you can set a higher priority number for tag firing; I assume the ecommerce data to Google Analytics is always the first priority. 7. Are any strings in the product name properly escaped? A common problem is apostrophes: if your product name contains a quote mark character, then it will break the following Javascript. See Pete’s bunnies – the strings in yellow are valid, and everything after the stray apostrophe will be misinterpreted. The solution is to run a script across any text field to either strip out the quotation marks or replace any quotes with their HTML equivalent (eg "). 8. Are your quantities all integers? One of our clients was selling time slots, and so had the ‘quantity’ of the ecommerce tracking data equivalent to a number of hours. Timeslots sold in half-hours (e.g. 1.5 hours) were not tracking… because Google Analytics only recognises a quantity which is a whole number, so sending ‘1.05’ will not be recognised as 1. 9. Are any possible ‘undefined’ values handled? It may be that the data on your products is incomplete, and some products that people buy do not have a name, price or SKU. The safest approach is to have some fall-back values in your Javascript tracking code to look for undefined or non-text variables and post a default value to Google Analytics. E.g. If ‘product name’ is undefined then post ‘No product name’, or for price, the default should be ‘0.00’. These will then clearly show up in your Ecommerce Product performance reports and the data can be cleaned up. 10. Are users reloading the page and firing duplicate tracking events? Check whether this is a problem for your site by using our duplicate transactions custom report to see multiple events with the same transaction ID. A solution is to set a ‘has tracked’ cookie after the ecommerce tracking has been sent the first time, and then check whether the cookie is set before sending again. 11. Are users going back to the page and firing the tracking at a later date? The sessions column in the transactionID report in step 9 should give you an idea of whether the problem is repeat page loads in one session, or users revisiting the page in another session. If you see duplicate transaction IDs appearing in other sessions there are a couple of possibilities to investigate: Could users be seeing the page again by clicking on a link to an email, or from a list of historic orders? Are there any back-end admin pages that might link to the confirmation page as a receipt? In both cases, the solution is to have a different URL for the receipt that the one where the ecommerce tracking is fired. If there are any other troubleshooting steps you have found helpful, please let us know in the comments or get in touch!
5 common Google Analytics setup problems
Can you rely on the data you are seeing in Google Analytics? If you use it daily in your business you should really give some time to auditing how the data is captured, and what glitches could be lurking unseen. The notifications feature in Google Analytics now alerts you to some common setup problems, but there are more simple ones you could check today. Here are 5 aspects of your Google Analytics account to check now. Are you running the latest Universal Analytics tracking code? Is your overall bounce rate below 10%? Are you getting referrals from your own website? Are you getting ‘referrals’ from your payment gateway? Have you got the correct website default URL set in GA? Are you getting full referring URL in reports? 1. Are you running the latest Universal Analytics tracking code? You may have clicked upgrade in the Google Analytics admin console, but have your developers successfully transferred over to the new tracker code? Use our handy tool to test for universal analytics (make sure you copy your URL as it appears in the browser bar). 2. Is your overall bounce rate below 10%? The 'bounce rate' is defined as sessions of only one page. It’s highly unlikely to be in single digits unless you have a very unique source of engaged traffic. However, it is possible that the tracking code is firing twice on a single page. This double counting would mean Google Analytics sees every single page view as two pages – i.e. not a bounce This is more common on template-driven sites like Wordpress or Joomla, where you may have one tracking script loaded by a plugin – and another pasted onto the main template page. You can check if you have multiple pageviews firing by using the Google Tag Assistant plugin for Chrome. 3. Are you getting referrals from your own website? A self-referral is traffic coming from your own domain – so if you are www.acme.com, then a self-referrals would be appearing as ‘acme.com’. Have a look at the (recently moved) referrals list and see if that is happening for you. This is usually caused by having pages on your website which are missing the GA tracking code, or have it misconfigured. You can see exactly which pages are causing the problem by clicking on your domain name in the list and seeing the referring path. If you are on universal analytics (please use our tool to check) you can exclude these referrals in one step with the Referral Exclusion list. For a fuller explanation, see the self-referral guide provided by Google. 4. Are you getting ‘referrals’ from your payment gateway? Similar to point 3: if you have a 3rd party payment service where customers enter their payment details, after they redirect to your site – if you are on Universal analytics – they will show up as a new visit… but originating from ‘paypal.com’ or ‘worldpay.com’. You need to add any payment gateway or similar 3rd party services to that referral exclusion list. Just add the domain name - so PayPal would be 'paypal.com' 5. Have you got the correct website default URL set in GA? When Google Analytics was first set up for your website you may have set a different domain name than what you now use. Or maybe you have switched to run your site on https:// rather than http://. So you need to change the default URL as set up in the admin page. For this go to Admin > Property > Property Settings. Once that is setup correctly, the ‘All Pages’ report becomes a lot more useful – because you can click through to view the actual page using the open link icon. Advanced: Are you getting full referring URL in reports? If you run your website across different subdomains (e.g. blog.littledata.co.uk and www.littledata.co.uk) then it can be difficult to tell which subdomain the page was on. The solution to this is to add the hostname to the URL using a custom filter. See the guide on how to view full page URLs in reports. What other setup issues are you experiencing? Let us know in the comments or by tweeting @LittledataUK.
Subscribe to Littledata news
Insights from the experts in ecommerce analytics
Try the top-rated Google Analytics app for Shopify stores
Get a 30-day free trial of Littledata for Google Analytics or Segment