A Complete Guide to Marketing ROI Tracking

Author: Jose Cayasso

Jose Cayasso

Jose Cayasso

13 min. read

Updated October 25, 2023

If there is one thing that has allowed us at Slidebean to grow fast and efficiently, is our obsessive tracking of marketing budget returns.

Back in 2015 when we only had about $2,000-$3,000 worth of marketing budget to spend each month, getting the most out of our buck was fundamental—not only for growth, but for survival.

But keeping track of where a customer came from is very hard, especially when you start diversifying your marketing channels to campaigns that don’t have a direct conversion.

Let’s take a Google Adwords ad, for example; you can track and confirm the source of a conversion using:

  • The conversion tracking pixel from Adwords.
  • A conversion event in Google Analytics.
  • The UTM parameters on the URL (we’ll get into each one of them in a minute).

However, when you sponsor a podcast or a Youtube video, for example, customers might end up searching for your name in Google rather than clicking the sponsored link, which means you’d probably have no idea how they made it to your website in the first place.

This is where the science of smart tracking comes in; for any online product or service, there are dozens of tools you can use to track customer sources accurately; we’ll get into each one of them in this article.

The basics: Google Analytics

Google Analytics is a very powerful (and free) tool. If it were easier to use it would probably kill a bunch of other analytics tools in the market, but Google hasn’t been great at simplifying it.

Still, it’s incredibly simple to integrate and start tracking; all you need to do is add a short script to the top of your website.

From there, Google will start tracking everything that happens in your site: pages visited, funnels, user journey, time on a page, and so on. You can go back any time to look at historical data and answer new questions that might come up about your user activity. However, mining this data is complicated.

The easiest way to approach Google Analytics is to define conversion goals early on. A conversion goal is a trigger that occurs when a user completes a desired action on the website.

These goals might be:

  1. Visiting an individual page or series of pages (like a checkout or successful signup page),
  2. Spending a certain amount of time on the website, or
  3. Completing a trigger event that you are sending from your app.

Once you have goals defined, you can easily filter your data to know which channels are driving these conversions. On this sample, you can see that we can easily tell which channels drive more signups, and compare conversion rates.

You can do the same for more advanced goals, like starting a subscription or completing a purchase. It’s important to define these goals early on, because the goals function doesn’t allow you to look at historical data, so they will only start recording conversions once you have set them up.

Google limits conversion goals to 20 per account, so feel free to use them all up at the very beginning and then discard and replace the once you aren’t using.

At Slidebean, we regularly track the following goals:

  • Signups
  • Conversion to any plan
  • Conversion to our Individual Plan
  • Conversion to our Teams Plan
  • Single presentation purchase

As you can see, all our goals are related to marketing ROI. You may also define goals to monitor the user interface of your product or service (like watching a tutorial video or completing a form). However, other tools like Kissmetrics (covered later in this article) let you take a lot more action on those types of funnels; for example, segmenting each step of the funnel based on a specific audience, or time of day.

Brought to you by

Create a professional business plan

Using AI and step-by-step instructions

Create Your Plan

Secure funding

Validate ideas

Build a strategy

UTM (Urchin Tracking Module) Parameters

You can further “educate” your Google Analytics metrics by using UTM parameters on your links.

A parameter is like a suffix on a URL. When you paste a link on, say, a Quora answer or a Facebook post, Google Analytics can track the domain and the address where that visitor came from, but that data is rarely very useful on a mid-to-large scale website.

UTM parameters are also the only way to get deep campaign insights in Google Analytics from marketing efforts that are not running inside Google’s environment (Google Adwords-Analytics).

With the Google URL Builder, you can send additional information to Analytics to track traffic sources better. For example, if you have a brand awareness campaign built around answering customer’s questions in Quora, Reddit, or Twitter, you can group all that traffic together using a utm_campaign parameter.

This is how a tagged URL for a Facebook ads campaign would look:

This is how we’ve tagged the URLs on this article:


Let’s look at each variable:

Source: usually the domain (not the full address) where the link will be posted. If you are advertising on Facebook, this should be facebook.com.

Medium: this is mostly used for paid ads campaigns (CPC, Cost per Click; or CPM, Cost per Impression), but you may also define it as email, post, or content. Google Analytics will automatically consider any CPM/CPC visitor as “paid traffic.”

Campaign: you’ll want to define a campaign nomenclature and get everyone on the marketing team to follow that standard, like US-Startups or WW-ContentMarketing, so that you can group all the conversion together using a single ID.

Campaign term and content (optional): you should only add these parameters if you are doing in-depth analysis or if your campaign has a lot of fronts. You can use “term” to filter the keywords that you are targeting, or in the case of a Facebook ads campaign, the audiences that you targeted. Campaign content, on the other side, lets you add a different name or ID to each particular version of your ad. Again, these ought to be used if you are looking for very detailed tracking.

Tracking conversions directly in your ad platform

Switching back and forth between your ads platform and your Google Analytics results can be very cumbersome.

Inside Google’s environment, you can integrate your Google Analytics to Adwords account, and cross-match your goal conversions to your campaigns, ad groups and even specific ads and keywords.

Knowing which particular keyword drove a conversion can be extremely useful to filter out bad keywords, or to optimize for these keywords in your SEO plans (this is how we did it).

But this Analytics-Adwords direct integration doesn’t occur naturally on other platforms, so unless you have an advanced UTM tags system, it’s going to be very hard to know which specific ads are being successful.

This is why many platforms have started creating their tracking pixels. Some are very easy to integrate (and some are not) but most follow the same system as Facebook.

With Facebook, you need to add a general tracking pixel to the head section of your pages. That pixel automatically tracks page views (PageView), so you can, for example, define conversions based on specific pages visited.

However, the best way to track goals is to use Facebook’s Conversion Events. Facebook has a default set of events like “Lead” or “CompleteRegistration” that you can trigger when a user clicks a particular button or completes a concrete step. These are much more accurate than URL tracking and are necessary if you have a single-page application like ours.

On Facebook’s ad platform, you can build campaigns using these conversions as objectives, so that their ads are automatically optimized for the copy and images that are driving the most conversions, instead of the most clicks). Furthermore, you can use these conversions for retargeting (but that’s a whole other story).

With Conversion Events enabled and well setup, you can compare campaign ROI directly on Facebook, which will save you a lot of time and effort. Twitter and LinkedIn have similar conversion tracking, though their pixels are not as good.

It’s also important to remember that each pixel or code you install on a page has an impact on performance and loading time. Use them all wisely and test consistently.

Going pro: Tracking conversions in Kissmetrics

Kissmetrics is a fantastic and powerful tool to track activity inside of your app, and it’s done wonders for us regarding tracking our marketing ROI.

If you install Kissmetrics in both your app and your landing pages, their pixel will automatically assign an anonymous ID to every single visitor that lands on your website, even if they haven’t registered yet. Any data points associated with that identifier are stored on the Kissmetrics database and linked to an email address as soon as that user provides that information.

Let’s look at an example:

  1. User A visits your website, thanks to a piece of content that you promoted through a Facebook ad.
  2. They read the content and leave.
  3. One month later, they read another piece of content from your blog that they found browsing the internet.
  4. Three months later, that user returns to create an account on your platform. They search Google for your company name, and come across a Google ad that you have set up, and click it to get through your website.

Even though it was the Google Ad on step four that ultimately drove that customer to sign up, the real credit (in our book) goes to the campaign that brought them there in the first place.

For Google Analytics, the credit/attribution for that sign up will probably end up being the Adwords campaign for branded searches that the customer clicked on step four; because Google Analytics assigns the sign up to the last campaign that brought the user to the website.

In Kissmetrics, on the other hand, you can look at that customer’s activity log, and you will see that a unique ID for that user was created in step one, and that the first source campaign for that customer is a Facebook ad (this is transferred to Kissmetrics using UTM tags).

Here’s an example of a customer’s journey in Kissmetrics:

Each visit is tracked with activity and campaign sources:

All subsequent visits are also tracked, as well as the visit that drove him to sign up, as well as the campaign that brought him to the website the last time.

One key difference between Google Analytics and Kissmetrics is personally identifiable data: as soon as your customer adds an email address, that email is connected to the anonymous ID created on the first visit, which lets you look at a particular user’s activity log.

You hardly ever need to look at user-specific data, but having that data available is fundamental to truly understand your metrics at scale. Kissmetrics has some tools to format massive amounts of data, but they also give you the ability to generate tailored spreadsheet reports to run your own charts and formulas in Excel.

Last resort: Promo codes and checkout surveys

Now, some campaigns simply cannot be tracked by traditional means. If you put a billboard on the subway, for example, you can try driving people to yoursite.com/subway, but a lot of individuals will just search your brand in Google and convert from there.

This is where checkout surveys and campaign-specific promo codes come in. You can use a checkout survey to track and to validate further the results you are getting from your other marketing channel tracking methods.

We implemented this checkout survey that we built in Typekit, and it has done wonders for us. We copied that two-question system from Squarespace, and it has been great to track our new marketing efforts, like podcasts.


For a SaaS company, there’s a magic LTV > 3x CAC number: the “lifetime value” (or LTV) of a customer (total revenue expected from each paid user) should be more than three times higher than the cost of acquisition (or CAC) of that customer.

For SaaS businesses, this is calculated quite easily using the monthly churn percentage (LTV = ARPU-Average Revenue per User/Average Monthly Churn Rate).

Tracking lifetime value on other types of businesses is harder. On an ecommerce platform, for example, you can use margins, average transaction size, and percentage of repeat customers to calculate an LTV.

We recently implemented a product that works as a single purchase rather than a subscription plan, so we’ve looked at customer data to understand how many of our users make repeat purchases, and how many of them subscribe a plan after that. We accounted all of that to estimate that ‘single purchase LTV,’ which is now at 1.4x the value of the original transaction; but this will obviously vary from business to business.

Bringing it all together

Now you have various data points confirming the customer source, but how to summarize them in a way where you can study your ROI?

We use a combination of spreadsheets to connect the following data points:

  • Customer ID: emails from the database.
  • Customer plan and estimated LTV: based on their plan or purchases sourced from SaaS metrics platforms like ChartMogul or Baremetrics.
  • Customer’s sources: all the data points collected from the UTM tags and the checkout surveys. This consists of one to six columns that we source from Kissmetrics.
  • Customer’s revenue to-date: pulled from Stripe, our credit card payments processor.

This requires some intermediate Excel/spreadsheets skills; there are some fantastic Excel resources online (that’s how I learned), so the best way to approach this is by leveraging Google searches. It’s important that you understand what you are doing rather than just following a step-by-step tutorial.

For example, you can search Google for “average values in a database column based on specified conditions,” which will bring a bunch of tutorials on using the AVERAGEIF function. The formulas that you’ll end up using the most are INDEX/MATCH, COUNTIFS, and SUMIFS.

These are the spreadsheets that we end up using the most:

Weekly/monthly summary: a general spreadsheet and charts to understand week over week and month over month performance.

Monthly recurring revenue per campaign: using INDEX/MATCH, you can generate a graph of how much MRR each campaign brought for a given weekly or monthly cohort.

LTV per campaign: using INDEX/MATCH as well as your estimated LTV data, you can calculate the estimated LTV brought by each campaign. Your spend per campaign should certainly be lower than this number, ideally 1/3 or less.

Revenue collected to date, per campaign: using Stripe data, you can calculate actual charges made to each user and determine if the spend for a particular campaign is on track to being recovered. If you are a SaaS company, this is especially useful to monitor the impact of yearly prepaid subscriptions.

Metrics are everything and they will become more and more complex as your business grows. Developing a system early on will allow you to grow your understanding of the data as it becomes more advanced. I spend one morning every week dedicated to metrics analysis, understanding how they changed on a weekly basis and what variables and teams might have caused the impact.

Metrics driven-decisions are as objective as a business gets. They have allowed us to mitigate the risk of decisions that otherwise we would have had to make on a gut feeling.

Brought to you by

Create a professional business plan

Using AI and step-by-step instructions

Create Your Plan

Secure funding

Validate ideas

Build a strategy

Content Author: Jose Cayasso

TEDx Speaker. CEO of @Slidebean, one of #500Strong.