Multi-Layered Lead Source Tracking in Marketo

Hey 👋 Thanks for stopping by!

Marketo is a really powerful MAP, but one of its biggest shortcomings IMO is the Marketo tracking munchkin (cookie). Compared to other MAPs on the market, Marketo’s tracking munchkin might be the weakest. It’s really difficult to see exactly where leads are coming from and furthermore, it doesn’t do a great job of aggregating source/channel data in Marketo. Most folks just end up buying Bizible for more detailed tracking 😒

I wanted to share some ways you can leverage the Marketo tracking munchkin’s data and pair it with some light automation that can give you a better picture of where leads are coming from.

What data are we talking about here?

Below are the fields we use and how they are defined in our current instance regarding lead source 👇

  • Lead Source: This refers to the type of lead (demo request, content, webinar, tradeshow, etc…) Pretty much answers the question of “what kind of lead is this?”. Think of this as the “door” a lead went through to enter your database.
  • First Touch Channel: This refers to the channel where the lead came from via its first conversion, “where did this lead come from?” (Paid Search, Paid Social, Organic/Direct/, Organic Social, etc…). Think of this as how the lead found the “door” they eventually entered into your database.
  • First Touch Channel Drill Down: This gives further context around where the lead came from. Think of this as the particular route the lead took to get to the “door” to enter your database. Ex: if a lead entered your database via Paid Social, first touch channel drill down answers the question of “which social network?”
  • First Touch (FT) & Last Touch (LT) UTM Source/Medium/Campaign: this field gives more context into the specific campaign in which the lead first converted and also their most recent conversion.

What does it all look like?

All these data points (paired with the Acquisition Program) give a really clear picture of how a particular lead entered your database and what kind of lead it is. Here’s an example below

No alt text provided for this image
  1. Acquisition Program-what Marketo program is responsible for generating this lead
  2. Lead Source-what kind of lead this is (Virtual Event)
  3. First Touch Channel-where this lead came from (Paid Social)
  4. First Touch Channel Drill Down-further context around where this lead came from (Facebook)
  5. FT UTM Campaign/Medium/Source-campaign info related to the leads first conversion (Facebook specific campaign info)

Cool, how do I build this?

Glad you asked! SO I’ve got all of our source tracking automation built into our new lead processing flow so all of the above data points are populated for every new lead during processing.

No alt text provided for this image

Step 1: Tracking Lead Source

We track the lead source by embedding a hidden field in all of our global forms in Marketo. That way, it is automatically captured during a lead’s first conversion. Each global form in our instance has a corresponding person source value (our content download global form has a person source of “Content”, demo request global form has a person source of “Demo Request”)….you get the idea. You can see an example below 👇

**Make sure to block all other field updates for your person source field in Marketo that way a lead’s person source isn’t overwritten by new form submissions!**

No alt text provided for this image

Step 2: UTM Parameters

UTM Parameters are super important for this whole setup. You’ve gotta be super diligent about your team using structured & consistent UTMs. We have two sets of fields that store UTM parameters in our instance, First Touch (FT) and Last Touch (LT) values. The LT parameters are embedded into all of our global forms in Marketo as hidden fields and are overwritten each time a lead submits a form. You can see an overview of the setup in the last step but here’s a more detailed screenshot.

No alt text provided for this image

So here we are grabbing the UTM medium value from the landing page URL, if there is no value then it uses the default value of “website”

Then the first part of our Person Source automation copies over the LT UTM parameters (from the form fill) and pastes them into the FT UTM parameters. Then requests the next step in the process to populate the first touch channel.

No alt text provided for this image

Step 3: First Touch Channel

Here we are using cascading logic evaluating smart lists to populate the First Touch Channel. We have 5 different possible values for the First Touch Channel.

  • Paid Search
  • Paid Social
  • Organic Social
  • Offline Sources (integrations)
  • Direct/Organic Traffic
No alt text provided for this image

Each smart list leverages FT UTM parameters from step 2 to sort leads into the correct first touch channel. Meaning, if a lead’s FT UTM parameters have values related to Paid Search (something like “cpc”) then it is sorted into the first option. Whereas if it had values for organic social (something like “linkedin-feed”) then it is sorted into 3 options. The default option is “Direct/Organic Traffic” because their conversion would be using the default UTM parameters outlined in step 2’s screenshot.

Once a lead has been assigned the correct first touch channel value, it requests the next smart campaign to assign a drill-down value.

Step 4: First Touch Channel Drill-Down

To populate the first touch channel drill-down value, we copy over information from either the FT UTM Parameter OR system-managed fields populated via Marketo’s tracking munchkin.

No alt text provided for this image

For either paid search or paid social, we copy over the FT UTM Source which will give us the search/social network associated (Google, LinkedIn, Bing Ads, Facebook, etc…). For organic social & direct/organic traffic, we copy over the lead’s Original Referrer field that is populated (more info on these system managed fields here) via Marketo’s tracking munchkin. This will give us either the search engine (or social network) or page URL for direct traffic that lead originated from prior to landing on our website. For offline sources, we simply populate “integration”.

And BOOM! Now you’ve got a multi-layered person source tracking system that will give you way more context as to the type of lead, where they came from, and more data points you can use to segment reporting or run attribution.

If you made it all the way down here thanks for hanging and nerding out on some Marketo stuff 😅 Hopefully you learned something, thanks for reading! 🤘

About The Author — Brad Couture
Brad Couture

Related free workshops

Button in Google Sheets to trigger a Google Script to send multiple rows to Zapier

Zapier Import Multiple Rows from Google Sheets

Anyone who has worked with Google Sheets in Zapier is likely to have run into the issue of needing to import more than the 20-row maximum imposed when using the Google Sheets app. This post will show you how to overcome this limitation and import multiple rows from Google Sheets into Zapier using some JavaScript and webhooks.

Become a member Launches Career and Community Platform for Marketing Operations Professionals

Community-led platform offers networking opportunities, career development tools, and educational resources for more than 3,000 “MO Pros” IRVINE—, a new platform for marketing operations professionals, launched today. The website aims to serve the 12 million global professionals in the industry—starting with the 2,800 members of the existing MO Pros community:

Become a member
Zapier nested looping horizontal flow diagram

Zapier Nested Looping using Webhooks & Python

Banging your head against the wall because of the 500 iteration limit on the “Looping by Zapier” action? Well make like Freddie Mercury and break free by using webhooks and Python in Zapier to achieve nested looping so that you can do as many iterations as you need!

Become a member