Using Google Analytics Events and Custom Reports to Help Track Off-Site Conversions

One of the biggest challenges in using web analytics in higher education is the fact that so many of our conversions happen off-site. When a visitor comes to our website and wants to request information or fill out an application or donate or buy a t-shirt from the bookstore, more often than not those things happen off-site.

By using a combination of Google Analytics events and custom reports, tracking the off-site conversion is a little easier. Does this give us a direct link from the visitor on the website to the actual conversion (if the conversion is off-site)? No. But it’s the next best thing – and it’s certainly better than guessing – or only paying attention to campaign click-throughs.

Manually Tracking Outbound or Download links as Events

Events are not new to Google Analytics, but they are definitely underutilized. By using an onClick on the exit link (or download to a form, etc.) you can easily track those exit links as events and then tie them back to campaigns.

When you track an event, you specify the event category, action, label, and value. A more detailed description can be found in the GA event tracking guide. In post we’ll only be talking about using events for tracking outbound (exit) links or downloads.

If you want to track an outbound link as an event, here’s how to do it:

Manual onClick event to show outbound links as events in Google Analytics.

Once that is in place, go into Google Analytics reports. To view events go to content >> event tracking.

Here is how it looks in the reports. “Outbound” is the category. “Click” is the action. In the below image, if you click on “click,” you then go to the event label screen shown in the second image below.

Event category and action names

“Application Link” is the event label in this example.

In this example the event label is called application link.

This report then shows you the number of times the outbound link was clicked. Be sure to use the same naming convention with your category, action, and labels. Otherwise you’ll end up with outbound, Outbound, and exit (when they all mean the same thing). Think campaign URL parameter names (email, e-mail, and E-mail) – keep it consistent. By the way, I chose “outbound” for the category and “click” for the action above because that is what is used by default in the gaAddons script (introduced below).

So there you go. Simple, right? Now you’re tracking your outbound links as events. Well, hold on to your hats, here’s where it gets good.

Automate Tracking Outbound or Download links as Events

Stéphane Hamel, web analytics consultant, wrote a great script called gaAddons. This script automatically tracks outbound, download, and mailto links as events (and more). It’s so important for higher education, in my opinion, for a few reasons:

  1. So many of our conversions happen off-site.
  2. Creating onClick’s manually is sometimes difficult to do for many reasons (content creators might not know how to do it, they might simply forget to do it when new content is created, or, maybe they just don’t have the time to go back into current content and create manual onClick’s on existing outbound or download links).
  3. Even if you can track events manually, if you’re not careful with naming conventions, names can be separated (ie, specifying outbound and Outbound differently, etc.)

This script overcomes all 3 challenges.

Using the script is easy. There are step-by-step instructions for using gaAddons on the documentation page of the gaAddons website. Make a quick change to your Google Analytics tracking code, download the javascript file to your server and reference it, then reference jQuery and you’re done. No need to go back and manually put those onClick events on existing links. No need to remember to do it on newly created content.

If you’re still using the old version of the Google Analytics tracking code, there is an older version of the gaAddons script that can be used with the old version of the GA tracking code. Hopefully everyone has upgraded to the newer version of Google Analytics tracking code, however. There are so many advantages of upgrading to async. Also, in the gaAddons version 2.0 (to use with the new version of Google Analytics tracking code) there are so  many more options available. Of course you can track outbound, download, and mailto links as events, but you can do so much more with it.

Create Custom Reports to Make it Easier to tie to Campaigns

So, now that your outbound or download links are being tracked as events, you need to be able to easily see how your campaigns are doing driving people to those “events.”

This is where we’ll take advantage of custom reporting.

The way events are currently reported in Google Analytics is clunky. It’s great that they are there, but beyond just seeing those events, it’s hard to determine if campaigns are driving people to those events.

So we create a custom report to more easily show this data. To set up a custom report, in the left nav in Google Analytics, click on custom reporting >> manage custom reports. Then click on “create new custom report.”

Here’s how to set up this specific report. I call it “events by campaign.” You can call it anything you’d like.

Metrics and dimensions used to create custom report.

You can also use the shared custom report by clicking here.

This custom report allows you to see all at once if campaigns led to any events. Here is the first page of the custom report:

Events by campaign list.

So all your campaigns that led to an event are listed. (not set) means no campaigns led to those events.

Then, if you click on “campaign #1,” you drill down to see which specific events were credited to campaign #1.

List of events that campaign 1 drove.

Now you can both see your important outbound (exit) links as “events” and then easily tie those events to campaigns.

So there you have it. Not perfect (we’d all love to see how many off-site conversions our campaigns drove), but it’s better than guessing – or just looking at click-throughs.

What do you think? I’d love to get your feedback about tracking important outbound and download links.

10 Responses to “Using Google Analytics Events and Custom Reports to Help Track Off-Site Conversions”

  1. Interesting take on this.

    We face the same issues and all because of the 3 challenges you mention above.

    In order to track outbound links, we’ve gone a different route that uses some jQuery to listen for clicks and then looks for specific URLs.

    Details here:

    We use pageviews instead of events. One thing I don’t like about events is that they can throw off your bounce rate. If someone views one page on your site but triggers an event on that page, it does not count as a bounce.

    Using pageviews allows us to use filters and profiles to separate the data how we want and keep our bounce rate intact.

  2. Tim –

    The jQuery option is fantastic! I’m definitely going to add this to my list of options to handle outbound “success” links. : ) Thanks so much for sharing that.

    My thoughts on virtual pageviews vs. events:
    There are advantages/disadvantages to both, as you know. There is a great explanation of them on the gaAddons website.

    I agree with what Stéphane is talking about in his pageview vs. event discussion on his website. When someone triggers an event from their entry page I don’t want that counted as a bounce because they did what I wanted them to do – trigger a success event. So, even though *technically* it’s a bounce from the standard definition of how analytics tools track bounces, from a business perspective I don’t want them counted as bounces. Those are important micro-conversions to me and conversions shouldn’t be counted as bounces.

    On a related note, as long as we’re talking about bounces, another great feature of the gaAddons script, is that it allows you to manipulate bounce based on time. For example, on a blog or informational site which lends itself to people landing on one page, reading only that page, getting their information, and leaving the site (which would result in a technical “bounce”). From a business perspective, though, I wouldn’t want to count this as a bounce if that page has all the information they need. By using the _trackRealBounce call you can tell it to *not* track a bounce if the user stays on the same page for X number of seconds.

  3. Going to explore the gaAddons in more depth in the next few weeks. Looks very interesting. Thanks for the tip.

  4. [...] Using Google Analytics Events and Custom Reports to Help Track Off-Site Conversions [...]

  5. emma says:

    Hey, great tutorial – the ‘end result’ ie screenshot of the table looks great, but I am struggling to get my head around one aspect (sorry, my own fault, not vagueness of tutorial!)

    Id be grateful if you could clarify how the campaign is attributed to the event.

    Say for instance you have a download event, that’s always being tracked and present on a page. This month you are running campaign X which has driven a person to the page where the download link is. The link that the person clicked to get to the landing page with the download link has the campaign in the url (using utm_campaign as part of the query string after the url) but the tagged download link does not contain info about the specific campaign, it’s just tagged as a Download event, because it’s always on the site and that campaign is not the only contributor to this specific Download event; someone else may also just browse the site naturally and choose to download via the link on this page.

    Is the campaign still recognised as the contributor of this event/attributed to this event, in the above case?

    (Think i may be overcomplicating it for myself and the answer may be that only download links containing some reference to the campaign would be attributed to the campaign, and my hypothetical situ above would not associate the referral via the campaign to the download page, to the actual download event.)

  6. Hello Emma,

    Thank you for the comment. I must first say that this post was written for the old version of Google Analytics, although you can do the same thing with the new version.

    I hope I understand your scenario correctly. You can see downloads attributed to each campaign using the custom report in the post. In the screenshot, if you were to click “campaign 1″ it will show you all the events (off-site links or downloads) that someone who came in via “campaign #1″ triggered. It is true that campaign #1 is not the only contributor to the download (let’s say we’re talking about “important PDF link” in this case). However, in this custom report, it does mean that underneath “campaign #1″ (when you click that), those events are events that are all attributed to “campaign #1″. You can then compare that to all traffic downloading “important PDF link” by going to Content >> Events in the standard reports and find “important PDF link” there. That will show you all instances of downloading that PDF.

    I hope that answers your question.

    Thanks again.

  7. emma says:

    @Shelby – thank you for your detailed reply, this does clear it up a little however I feel I probably worded my question a bit vaguely..

    What I meant to ask really was, for example

    Scenario 1: Person hits Page Z where the download link is, directly via Campaign Y, and downloads = the download (or event) is attributed to Campaign Y – i’m pretty sure this is correct

    Scenario 2: Person hits Page X via Campaign Y, browses a couple of other pages, then hits Page Z where the download link is and downloads = the download (or event) is still attributed to Campaign Y – correct or incorrect?

    Thanks :)

  8. Hi Emma,

    Your’re absolutely correct. No matter where the user goes on the website, if they come from a campaign and click the download link sometime during their visit, that download link will show up in the custom report as attributed to that campaign.

    Google Analytics stores the campaign information within a cookie so it knows (even if this is the 2nd or 3rd visit to the website) the campaign information and gives credit to the campaign for the event.

    Keep in mind, by default, Google Analytics stores the “last” campaign that the user came in on. So, if someone clicks on campaign A, browses your site and leaves. Then comes in on campaign B and browses your site, then clicks a download link or another “goal” – campaign B will be credited. You can change this, however, using some custom code.


  9. If you are using jQuery, you can set the Ajax trigger to always call the GA code:

    $(document).ready(function() {

    $(document).ajaxSend(function(event, xhr, settings){
    if (typeof _gaq !== “undefined” && _gaq !== null) {
    _gaq.push(['_trackPageview', settings.url]);


  10. charlene says:


    Thank you for this great article.

    Does this gaAddons script work for mobile server side tracking ?