What happens in Launch needn’t stay in Launch

ogonna anaekwe
4 min readNov 24, 2020

--

Launch by Adobe is an incredibly powerful tag manager. Amongst other things, it makes implementing analytics a cakewalk. This does not mean you never run into several gotchas when using it; it is all part of the game, and that’s ok. Indeed. There are different resources within Launch that come in handy — Rules, Data Elements, Libraries, and more — for any implementation task. In fact, you literally can not do anything in Launch without using at least one such resource.

Activities in Launch revolve around creating or updating resources — or even deleting them. These activities are called Audit Events. So, anytime anyone creates, say a Data Element in Launch, that counts as an Audit Event, as does updating a Rule or Library.

Seeing as how every implementation task in Launch involves one or more Audit Events made possible by combining several resources, wouldn’t it be nice to have some kind of monitoring in place to see every single Audit Event that occurs in Launch? Is it possible to have a dashboard that provides a quick view of trends for Audit Events together with the resource changes that triggered them? And if so, wouldn’t it be amazing if this dashboard were real-time?

At Telus Digital, we asked all of these questions, the sheer beauty of which led us to answer in the affirmative to all. And we have just built that monitoring system. That’s right! A real-time dashboard showing every single activity that occurs inside our Launch instance. Not a single Audit Event or resource change slips through the cracks of this dashboard.

How is this even possible?

Architecture for real-time monitoring of Audit Events

Mostly because of the existence of Callbacks in the Launch API. Callbacks are quite mesmerizing. Think of a Callback as a simple subscription service. A Callback subscribes to Audit Events, so that whenever an event occurs (by way of creating or updating any resource in Launch), the Callback is notified of this event, collects its data, and sends it someplace. It is essentially a webhook. For a Callback to work, we first need to create it, then specify what Audit Events it should listen for as well as the destination to which it should send data — this should always be a HTTPS URL.

Creating a Callback requires having a valid access token for authentication to the Launch API, and this is where we start. We get the token from Adobe’s Identity Management Service (IMS). With this token on hand, we create a Callback, specifically asking it to listen for changes to Extensions, Data Elements, Rules, Rule Components, Libraries, Builds, Environments, and Hosts. In other words, we subscribe to every single resource change that anyone could possibly make in Launch.

We also add a notification functionality to a storage bucket for Audit Events. Paired with the Callback, we have a robust duo that provides us everything we need to enable real-time data collection and monitoring.

The creation (or update) of any resource in Launch triggers the Callback which then sends the data to the destination we specified. Actually, this destination is a Pub/Sub topic, and inside that topic is a subscriber that uploads the data to the Audit Events bucket. This bucket has a notification system attached to it so that any new data file that gets uploaded to it sends a notification to yet another Pub/Sub topic which itself has a subscriber that handles the ingestion of that data into BigQuery. All this takes 2 seconds — or less.

With the data relevant to the Audit Event now in BigQuery, we apply some transformations to it and this transformed data feeds into our Data Studio dashboard shown below.

Real-time monitoring dashboard for Audit Events

This dashboard provides a real-time view into all activities that occur in Launch, showing us trends in all Audit Events that we would certainly have missed otherwise. And so, unlike Vegas, what happens in Launch does not necessarily stay in Launch. With this, we have an extra tool in our debugging toolbox as we can now see all that goes on in Launch. More, this provides us an essential layer of transparency as it relates with our implementation which will be handy whenever we audit our implementation.

Want to create a similar tool for your team? Feel free to reach out with any questions.

--

--

ogonna anaekwe
ogonna anaekwe

Written by ogonna anaekwe

Software Engineer building stuff with computers (when not running or having Ice Cream|Jollof Rice). ogonna.anaekwe@gmail.com