Blog

  • MeasureCamp Faro 2019 – Awesome first edition!

    MeasureCamp Faro

    Hi folks, I just got back from the first ever edition of MeasureCamp Faro, in Portugal. As you may know, I’m a regular on the MeasureCamp unconference circuit.

    What is an unconference you ask? It’s essentially a knowledge exchange environment with no pre-arranged schedule. Participants show up and can decide to present on analytics-related topics.

    In short, MeasureCamp does away with the format and conventions of usual conferences and allows you to acquire more hands-on experience than anywhere else 😎

    Of course, I’m partial to Portugal, having learned Portuguese during my language studies so it was a great occasion to practice!

    We had a smaller than usual audience compared to other editions but participants were super motivated 🤩
    Among the participants were quite a few contacts I’ve made in the industry over the years and it all feels very much like a family gathering.

    I took the opportunity to run two presentations, updated for 2019 from their original versions; one on best practices on how to get a digital analytics project off the ground quickly; one on Tag Management and its limitations.

    The networking portion of MeasureCamp Faro was of course tremendously enhanced by the “vacation” setting in Algarve, the southernmost region of Portugal, also known as Portuguese Riviera (links below).

    See you next year?

    The answer is a resounding YES as far as I’m concerned! 🙂

    Thanks again to the organizers, to the sponsors and to the University of Algarve!

    Social media

    Twitter:

    Instagram:

    https://www.instagram.com/p/BzTUwsBnjgM/?utm_source=ig_web_button_share_sheet

    Download my MeasureCamp Faro presentations

    The presentations are available in PDF format:

  • Integrate Google Analytics tracking with Mailchimp

    Google Analytics Mailchimp integration

    So you use Mailchimp and designed the ideal e-mail campaign? You felt great about the copy and the visuals and pressed SEND. Great! After your e-mail is sent, Mailchimp provides you with reports and who received the email, who opened it and who clicked it. It also has a section about those pesky unsubscribers. But now you’re thinking:

    “That’s great but what if I could track the performance of my e-mail campaigns based on what my subscribers do once they reach my site?”

    – every e-mail marketer ever

    In this post, I will show you how to integrate Google Analytics tracking with Mailchimp and how to track e-mail performance, with the help of Google Tag Manager.

    Ready? Let’s get started!

    (more…)
  • Consolidate traffic data from multiple sites/apps in Google Analytics

    [2025 update] In a new post, I describe how server-side tag management can help achieve a similar result to customTask.

    [2024 update] Google Analytics 4 does not have a feature similar to the customTask instruction. As a result, unless you’re using the 360 version of GA4, you will need to send your tracking code multiple times, which is made easy with Google Tag Manager. A larger update to this post will follow.

    If you own multiple websites, you’ve often wondered how to consolidate traffic data from all your Web properties (or apps) into a single view – besides Excel, that is!

    Here is a quick guide on how to get this setup on all your sites, whether you use a tag management system or in-page tagging.

    Read more
  • Are Google Analytics campaign parameters really confusing?

    The year is 2019 and Google Analytics has been around for 13 years, give or take. Longer if you including its ancestor, Urchin. One would think that after all this time, digital marketers would know how to use Google Analytics campaign parameters to accurately track marketing initiatives.

    The reality is far from ideal and nearly every client I audit has campaign tracking issues. Is it due to the agency handling campaigns? Is it a technical issue? A configuration issue? Politics? Actual bugs?

    What I can tell you is that using Google Analytics campaign parameters is not rocket science and in this post I’ll show you techniques to efficiently measure your campaigns.

    Reviewing the basics: UTM parameters

    The basic mechanism by which Google Analytics campaign tracking works is by using specific parameters (key/value pairs) in the URL of your campaign’s landing page. These are called UTM parameters and are named UTM after Google Analytics’ ancestor, Urchin; UTM stands for Urchin Tracking Module.

    Fun fact

    UTM is also a global positioning method.

    In order to properly track campaigns, you need to use three (3) or more Google Analytics campaign parameters in each URLs. Let’s review the parameters available to you:

    ParameterRequiredUsageExample
    utm_sourceyesWhich site/company sent trafficutm_source=facebook
    utm_mediumrecommendedWhich marketing method was used to access the siteutm_medium=email
    utm_campaignrecommendedWhich marketing initiative was promotedutm_campaign=2019%20Customer%20loyalty
    utm_contentoptionalWhich visual element was clickedutm_content=newsletter_hero
    utm_termoptionalWhich keyword was used for paid searchutm_term=running%20shoes

    In the example column in the table above, you will notice encoded characters, for instance, %20 instead of spaces. If you are going to use special characters, make sure you encode these values first. When in doubt, use an encoder first.

    As mentioned in the table above, you only need one parameter (in theory) but that is far from enough to run decent marketing campaign tracking. My recommendation (and Google’s) is to use at least three parameters:

    • utm_source
    • utm_medium
    • utm_campaign

    This means a URL using Google Analytics campaign parameters could look something like this:

    https://mysite.com/promo.html?utm_source=mailchimp&utm_medium=email&utm_campaign=Spring%20Newsletter&utm_content=headerlink

    Now arguably the values you insert into utm_source, utm_medium, utm_campaign et al are fair game. As long as you stay away from reserved values as set by Google. Because Google Analytics uses source and medium to pre-build Channel Groupings, you want to stay away from certain keys in utm_medium, such as:

    • cpc
    • cpm
    • direct
    • display
    • email
    • organic
    • referral

    There are more but stay away from the ones above.

    Not sure how to handle these URLs? You have 3 solutions:

    Got the hang of writing URLs with Google Analytics campaign parameters? Good, let’s move on to seeing how why they can be a bad idea.

    “Those UTMs don’t look so good in my URLs”

    I have seen my fair share of clients claiming that newsletter recipients don’t click links “with lots of dodgy characters in them”. A fair point. So what can we do about it? We can minimize the amount of Google Analytics campaign parameters in the URL by using one of two methods:

    • Using a URL shortener
    • Using the Campaign ID

    Let’s explore both methods.

    Using a URL shortener

    URL shorteners are great because they generate (surprise) a short link after you feed them long, confusing, scary URLs.

    Google’s URL shortener is being phased out but there are many URL shorteners out there so go pick one.

    When picking a URL shortener, make sure they are going to retain your link long enough for your links to be tracked because they tend to expire.

    Using the Campaign ID

    The campaign ID is a little-known gem in Google Analytics inherited from the Urchin days, back when you could use lookup table and file imports. It is brilliant in theory and very actionable in practice.

    Using the campaign ID relies on the Data Import feature linked to your Google Analytics property. Go to your admin panel in GA and locate Data Import at the bottom of the Property settings column:

    Then you will see a list of your data imports for the property. You can have up to 5 imports per property on a free Google Analytics account, more with Google Marketing Platform (360); In my case I already have a few imports set up so you can see my Campaigns and redirects import.

    Create a new import and select Campaign data as import type. Once you’ve done that, name the export and the select the views in which data will be affected by the import. Hit save and in the next step select the campaign dimensions you will be replacing based on the ID column. I selected Source, Medium and Campaign.

    Next, you need to manage the data structure by getting a schema (template for the CSV you will be generating.

    Below is a sample of my import:

    ga:campaignCodega:sourcega:mediumga:campaign
    twownedtwittersocialOwned
    gpownedgooglesocialOwned
    fbownedfacebooksocialOwned
    tcengooglesocialTop Contributor EN
    tcfrgooglesocialTop Contributor FR
    isownedinstagramsocialOwned

    Whenever i use a URL with utm_id=tcen in links in posts on the Advertiser Community, as soon as the Google Analytics hit for that URL is processed, Google will populate the values “google”, social” and “Top Contributor EN” in source, medium and campaign respectively. Note that I don’t need to encode 😉

    Pretty neat, huh?

    Extra credit: renaming your campaign variables

    OK so let’s say you hit a wall with someone who doesn’t want to use utm_ variables “because Google can be hacked” or something. Actually this is somethgin that can happen when you migrate from another analytics stack over to Google Analytics and you have to capture old campaign tracking parameters. Actually, what I described with Campaign ID has been a native feature of Adobe Analytics, Webtrends and others.

    Anyway, assuming you want to use sid instead of source, mid for medium id and cid for campaign id, you can change your Google Analytics tracking code to look for alternative parameters.

    In Google Tag Manager, this is easily achieved by frist creating a variable to capture URL query element sid then assinging that variable to “Fields to set” in a page view tag or – better – in a Google Analytics Settings variables.

    Now what?

    Once you have your campaign URL, paste it in your links and wait for people to click.

    via GIPHY

    The good news is now you should be getting cleaner campaign data!

    If agencies and marketing teams cannot manage tracking URLs in 2019, there is something very sad about the state of training in our marketing schools and internships.

    As mentioned in my Superweek talk in 2018, this should be basic marketing hygiene.

    What about you? Are you struggling with campaign tracking? How are you managing Google Analytics campaign parameters? Let me know in the comments!

  • Content groups in Google Analytics

    If there is an unsung hero in Google Analytics, it is definitely something called content groups (or content grouping). Never heard of it? It is hiding in plain sight, in your Google Analytics view settings, and can be set up in a couple of clicks. Once content groupings are set up, you will always want to use them 🙂

    Ready? Get some coffee, snacks, and let’s go build some content groups.

    (more…)
  • Filtering language codes in Google Analytics

    Ever looked at a language report in Google Analytics and getting confused because of all the seemingly duplicate values? This post shows you how to rationalize everything – or try to anyway 🙂

    (more…)
  • Creating page-count-based triggers in Google Tag Manager

    Nothing is more annoying than visiting a website and getting spammed by pop-ups, right? I’m pretty sure your users resent that too so if you’re a digital marketer, you are not always in control of how some partner tags get fired. What if you could set up engagement-based triggers to add another layer of control? What if you could control tags based on page count?

    In today’s post we’ll be looking at how to set this up with Google Tag Manager by using a simple rule to store and increment the number of page views in a cookie. Then we’ll build a trigger that fires tags after a set number of pages have been viewed.

    Ready? Let’s go 🙂

    (more…)
  • Debugging Google Tag Manager remotely

    So your website is equipped with Google Tag Manager (good).
    But your webmaster/IT contact is AWOL/bankrupt/defunct (bad).
    On top of that, let’s assume that you’re trying to debug something complex such as an e-commerce transaction but you have no way to place test orders to perform basic debugging.
    Long story short: debugging Google Tag Manager can prove tricky! But fear not, here is one reliable method you can use!

    (more…)
  • Google Tag Manager prepares support for other major tags

    February 2019 EDIT: Google announced at Superweek Hungary the imminent release of tag templates, allowing for more tag flexibility!

    If you use Google Tag Manager on a daily basis like I do (or hourly in my case), you probably love the fact that you can tie in tags for the entire Google ecosystem, especially now that Google released native support for YouTube tracking.

    (more…)
  • Google Universal Analytics Cheat Sheet – Measurement Protocol Parameters

    Google Universal Analytics Cheat SheetHere is a Google Universal Analytics Cheat Sheet to help you make sure you use the right parameters to track data on your websites and mobiles apps!

    Working on Hub’Scan means I need to master every single aspect of Google Universal Analytics data collection. This means I get to maintain an accurate, updated list of parameters for the 500+ tags in the Hub’Scan library.
    Don’t get me wrong, there are Google Universal Analytics cheat sheets out there but they are not complete and the official Google reference does not provide a list of all parameters.

     

    (more…)