We recently worked with a client that lists events on their own website and sends people over to Eventbrite to book tickets.

They wanted to track users and collect transaction data so they could calculate the effectiveness of their marketing activity. We were only too happy to help.

We've worked with lots of different ticketing systems over the years, and usually find that third-party hosted systems can be restrictive when it comes to analytics. However, in the case of Eventbrite we were pleasantly surprised.

That said, we found very little documentation covering what we needed to do, so here we are - sharing what we learned.

Background

You may already know that Eventbrite allows you to put a Google Analytics tracking tag on their pages so you can collect some data. 

That's better than nothing but, as you may have discovered, Google Analytics doesn't automatically recognise that the user on your website is the same as the person on Eventbrite. When users go to Eventbrite's domain, Google Analytics gives them new Client IDs and starts a new session. This means that:

  • Those users are double-counted
  • Instead of any revenue being attributed to your marketing channels, it's all attributed to your website

 

What’s the use in that? There's no point tracking revenue if you don’t know what's generating it. Without that information you won't know which of your online marketing channels are actually working and driving revenue.

With that in mind, we need to cover two things:

  1. Keeping track of users when they move from your website to Eventbrite (called cross-domain tracking), and
  2. Setting up Google Analytics to collect data about ticket purchases on Eventbrite

Let's get into it…

Prerequisites

Before you can get this to work, you're going to need to make sure you have two things in place.

Google Tag Manager

In the old days, we used to put the Google Analytics tracking tag directly on our websites. We don't do that anymore. These days we use Google Tag Manager as a middleman.

As well as helping us to manage all of our tracking tags, Google Tag Manager also gives us the ability to do clever things like we're about to show.

THE latest Google ANALYTICS TRACKING CODE

If you're not using the latest version of Google Analytics, called Universal Analytics then this isn't going to work for you. In fact, if you're using an out-of-date tracking tag then you should update it anyway.

To check this, have a look at your Google Analytics tracking code. As you'll need to be using Google Tag Manager for this, it's as simple as using the Universal Analytics tag template.

If, for some reason, you're using a custom HTML tag in Google Tag Manager, then hopefully you'll see 'analytics.js' in the code. If you see 'ga.js' or 'urchin.js' then you'll need to upgrade. Google has documented that process.

1. Cross domain tracking from your website to Eventbrite

Understanding the client ID

Here comes the technical part. Basically, you need a way of telling Google Analytics that the user on your website is the same user when they move over to Eventbrite to purchase their ticket. You’d think it would automatically do this right? Nope. Here's what happens.

To identify users, Google Analytics gives everyone a 'client ID' - a random string of numbers and letters - and puts that in their browser's cookies.

When the user leaves your website and goes to the eventbrite.com domain, Google Analytics assigns them a new client ID.

The aim of this solution is to prevent Google Analytics from doing this. We want to tell Google Analytics that, instead of generating a new client ID when someone goes to Eventbrite's website, it can keep using the same one as before.

Eventbrite _eboga parameter

Handily, Eventbrite has a solution for this. It recognises a special ‘cross-domain’ parameter - a bit of text that goes on the end of a link.

If you were to add this bit of text to the end of all your Eventbrite links, followed by the user's client ID, then instead of generating a new client ID when the user shows up, Google Analytics will continue using that one instead.

Here's an example of what the link to Eventrbite would look like with the cross-domain parameter added:

https://www.eventbrite.com/e/123123321?_eboga=45698745.159456986

Let’s break that down:

  • https://www.eventbrite.com/e/123123321 is the link to your event on Eventbrite
  • ?_eboga is the supported Eventbrite cross domain parameter
  • 45698745.159456986 is an example client ID. This will be different for every user.

Appending the client ID to your Eventbrite links

So how do you pick up someone’s client ID and append it to your links?  This is where you may need a developers help. Google’s Developer Docs explain further how to obtain the client ID.

Or if you have Google Tag Manager installed you can follow these steps:

1. Create a variable in Google Tag Manager that picks up the client ID.

2. Call it ‘custom js - get client id for tracker’

3. When creating your variable choose 'Custom JavaScript'

4. Paste in the following code:-

function() {
 try {
 var trackers = ga.getAll();
 var i, len;
 for (i = 0, len = trackers.length; i < len; i += 1) {
 if (trackers[i].get('trackingId') === {{ga tracking id}}) {
 return trackers[i].get('clientId');
 }
 }
 } catch(e) {}
 return 'false';
}

We use a constant variable named {{ga tracking id}} to reference our Google Analytics property ID.  Remember to use your own {{ga tracking id}} variable within the code

5. Next, create a custom html tag and call it ‘custom html - add client id to eventbrite link’

6. Paste in the following code

<script type="text/javascript">
 // Set the domain/URL to your website.
// var myDomain = "www.example.com";
// Or set domain to detect to Eventbrite
var myDomain = "eventbrite.co.uk";
// Grab all links (anchor tags)
var links = document.getElementsByTagName('a');
// Loop through all links
Array.prototype.forEach.call(links, function (link) {
// If we find a link that does not go to my domain
//if ( link.href.indexOf(myDomain) > 0 ) {
// Or
// if we find 1 or more links that go to Eventbrite specifically
if ( link.href.indexOf(myDomain) >= 1 ) {
// Take the href and append the required ?_eboga parameters
// ?_eboga prepend appears to work if only single parameter
// tested using & as some URLs already have page/ticket type parameters being passed
// then adding clientId recorded as a variable in Tag Manager
link.href += '?_eboga=' +{{custom js - get client id for tracker}};
}
});
</script>

With thanks to pjeedai on Stack Exchange.

7. Next, you need to add a trigger to fire the tag on.

8. Create a ‘custom event’ trigger and call it ‘gtm load’

9. In event name call it ‘gtm.load’

10. Fire the the trigger on ‘All Custom Events’

11. Lastly, you need to test and then publish your Google Tag Manager container.

Well done! Now you should have cross-domain tracking set up for users going from your website over to Eventbrite.

Part 2 - Setting up Google Analytics to track revenue on Eventbrite

You’ve got through the difficult part, now this is the relatively easy bit. You now need to tell Eventbrite and Google Analytics to start tracking revenue. Follow these steps:

1. Make sure you aren’t tracking your events in Eventbrite using the ‘Classical Google Analytics tool’. The boxes in the screenshot below should be empty.

2. Go to your 'Manage Events' page on Eventbrite:

Blog-Eventbrite-GA-managePage.png

3. Go to 'Tracking Pixels (under Analyse) on your Manage page

 

4. Select 'Google Universal Analytics'

5. Click the button next to 'All Events' and add the Tracking ID for your Google Analytics property.

6. Make sure your Google Analytics settings allow E-commerce data

All done. Simple as that.

For your reference here is the Eventbrite Ecommerce naming conventions glossary to help you understand which Eventbrite fields will appear in you Google Analytics Ecommerce reports.

Things to note

  • When we were setting this up we came across a few other things that might save you time when doing the same. 
  • This solution doesn't work where the user starts on Eventbrite and then goes to your website. It's just not possible for us to pick up and maintain the Client ID in the same way.
  • This solution isn't designed to work with Eventbrite's embedded iframes.
  • Eventbrite lets you redirect users to the URL of your choice after purchase. However, if you do this then you'll miss out on transaction data being sent to Google Analytics. The solution above only works if your users remain on Eventbrite after purchasing a ticket.
  • Finally, please don't expect this solution to work 100% of the time. Depending on the user, their browser settings, and who-knows-what-else, things might break occasionally.

I hope this has been useful.

If this all sounds great but you'd rather we helped you out, then get in touch and we’d be happy to lend a hand.

You can also follow @onefurther on Twitter to keep up to date with our latest blog posts and more.