RudderStack Intern Experience: Improving Digital Campaign Management
I’m a senior studying Data Science and Entrepreneurship at the University of Michigan, and I recently wrapped up an internship with RudderStack. One of my primary charges was to optimize the system we use for digital marketing campaign management. It was a great opportunity for me to get some hands-on experience working with a cross-functional team to explore a problem and build a solution to address it. In this post, I’ll consider the big picture, articulate the challenges we faced, and detail how we built a solution to solve the problem.
The big picture: You can’t optimize marketing without data
Digital marketing is a core component of generating revenue for most modern businesses. Regardless of how amazing your product is, you can’t sell it unless you can effectively put it in front of prospective customers to influence their buying decision. There’s no shortage of methodologies here, and it’s up to marketing teams to determine the best approach. But with so many potential directions to take, where should they even start?
The goal may seem straightforward: get the right message in front of the right people at the right time. Then sit back and watch the deals come in. But if you’ve ever been a part of the team responsible for making this happen efficiently and effectively, you know the process is loaded with complexity. There are various strategies to consider and endless channels to test. Even after testing, there’s much work to do to determine which methods were the most successful. How do you assess individual campaign performance? How about segmented campaign performance? It all comes down to data, but that presents a whole problem in itself. How are you supposed to properly track, store, and utilize campaign data in order to make these assessments and optimize our efforts?
These were the problems I got to dig into during my internship, and here’s how we decided to tackle them here at RudderStack.
It starts with proper management
To start off, we needed a good way to track all of our campaigns in a centralized location. We decided that the best way to do this was through a dynamic spreadsheet. Since we use our campaigns to create UTM tags, we divided our spreadsheet into two tabs.
On the first tab, we keep track of our actual campaigns. This includes the campaign name and start date, along with the purpose, media type, bid strategy, placement, and geotargeting information. Additionally, we track the campaign's status through a predicted end date field. When this end date passes, we get an automated notification in Slack that the campaign has “expired”. This way we can either turn off the campaign or extend its run time.
On the second tab, the campaigns can be pulled in and used to create UTM tags. These tags are attached to the end of landing page URLs and are essential for tracking our campaign performance metrics. In order to properly generate these tags and assess campaign effectiveness downstream, it’s vital for the proper UTM attributes to be accurately selected. Some of these attributes are UTM source, medium, content, and referrer. But perhaps our most important attribute is the RudderStack Ad ID (RAID).
To simplify what it is, the RAID is a unique campaign identifier that can be used to extract all of the campaign and UTM information associated with a specific URL. This is essential to tracking campaign performance, as it is directly associated with a specific campaign and URL.
Because there’s a lot of room for human error when selecting UTM attributes, we decided to build a UI on top of our spreadsheet to add this information dynamically. This way, we can ensure that all of the associated attributes are valid and properly placed. We even incorporated a Slack API that announces when a new campaign or UTM URL was generated.
It ends with proper tracking
With a solid system in place to manage our campaigns, we needed to find the best way to extract and store our campaign performance data. With campaign attributes already structured within our spreadsheet, performing analysis once we have performance data gets much easier.
To extract performance data, we use RudderStack. Every time a page is visited on our website, this information is sent through RudderStack in real time to our Snowflake data warehouse. Once the data is in our warehouse, we can check if the user’s URL matches any of our UTM links. If there’s a match between RAIDs, we can conclude that a certain user came from one of our Marketing campaigns.
Because we built a strong management structure in our spreadsheet, we also know the specific campaign and UTM attributes associated with that user. Best of all, using RudderStack, this matching occurs automatically. We are then able to send all of our paired data to another table.
So we have all our paired data, but how do we extract value out of it? The answer: RudderStack’s Reverse ETL product! In less than 5 minutes, we can send all of our paired data to several downstream applications–Mixpanel for customer analytics, Customerio for messaging, and Attribution App for multi-touch attribution analysis. With over 25 compatible analytics applications, the possibilities are endless.
Closing thoughts
There’s no easy way to measure campaign performance. And the entire process only gets more complicated as companies scale their marketing efforts. But with a foundation of proper management and tracking capabilities, it’s possible to use your data to assess and optimize marketing efforts.
At RudderStack, we used RudderStack to simplify the entire process. The ability to track performance data, match it to our specific campaigns/UTMs, and send this paired data to our analytics and activation tools, made it easy to get the maximum value from our data.
My experience here at RudderStack was phenomenal. I got the opportunity to explore my interests, work with many teams, and ultimately impact our company's success. I now have a better grasp of the important role data plays in the marketing process and the unique data challenges involved. I hope that my learnings can have an impact on others. Thanks for reading!