This post sets out to demystify the enigma of Marketo anonymous leads and how they interact with your attribution smart campaigns. Once we have gone through the quirks of tracking attribution for Marketo anonymous leads I will show you how to modify your smart campaigns so that these leads will always get their first and last touch attribution fields set correctly.
While this post focuses exclusively on attribution, if you want to learn more about Marketo anonymous leads in general then see the Anonymous Lead Promotion to Known Lead – Munchkin V2 Behavior forum post that outlines how an anonymous lead becomes known, how they interact with trigger campaigns, and what flow actions they are eligible for.
Marketo Attribution Program Setup
Before beginning with this post, I first recommend taking a look at the Marketo UTM Tracking & Automation post where I walk through how to set up attribution programs and smart campaigns to track visits and conversions from ad campaigns where UTM parameters are being used. The same setup outlined in this previous post can also be used for tracking organic search, social, and referral visits and conversions with only changes to the “01 Visit” campaign being needed.
Tracking Organic Page Visits
Since organic search, social, and referral visitors to your site are not tagged with UTM parameters the “Visits Web Page” smart campaign trigger needs to be modified to use the “Referrer” constraint to filter for the organic search (e.g. google), organic social (e.g. reddit), or organic referral (e.g. g2) platform that led the person to your site.
The “Querystring” constraint is then used to exclude any visits that contain UTM parameters from campaigns that we are tracking with other smart campaigns in Marketo. This is to stop these organic smart campaigns from stealing attribution from these other UTM tagged campaigns, which are typically paid campaigns who we want to be prioritized in getting attribution.
Marketo Anonymous Leads Attribution Issues
While Marketo anonymous leads can qualify for campaigns with “Visit Web Page” triggers while anonymous, they will not appear as members of these smart campaigns and go through the flow actions until they become known i.e. they fill out a form on your site or get un-anonymized another way (see the Anonymous Lead Promotion to Known Lead – Munchkin V2 Behavior forum post for more information).
Additionally, when a lead becomes known they will pass through the flows of all smart campaigns that they qualified for when they were anonymous BUT here’s the rub:
- The
Change Program Status
step will not work. - They are not guaranteed to pass through the smart campaign flows in the same order that they actually qualified for the campaigns. For example, if they do Action 1 to qualify for Campaign 1 at 1 o’clock and then do Action 2 to qualify for Campaign 2 at 2 o’clock, we are not guaranteed that the person will go throw the flow of campaign 1 before the flow of campaign 2 once they become known. As shown in the video below, this can be troublesome because attribution can be stolen away from your paid attribution campaigns and the person’s “Latest Touch” field may not be accurate.
Setting Program Status Of Former Marketo Anonymous Leads
The 03
Anonymous
smart campaign (from the “Marketo Attribution Program Overview” image above) is scheduled to run periodically and take anyone who is a member of the 01 Visits
campaign and add them to the program in the Visited
status if they are not already a member of the program i.e. they have not passed through the 02 Converted
or 02 Contacted
smart campaigns.
You might be wondering how they can be known without having passed through the 02 Converted
or 02 Contacted
smart campaigns of the attribution program and already being made a member. Well, this can happen when Marketo anonymous leads become known from a campaign in a different program e.g. another attribution program, a webinar program, an email program etc, and while they will be a member of this other program they will not be a member of this current attribution program until the 03 Anonymous
smart campaign runs.
Since the 02 Converted
and 02 Contacted
campaign triggers are based on a person filling out a form, being created i.e. unanonymized, or an existing known lead’s data value changing, the lead is already known when passing through the flow of these campaigns so the Change Program Status
step works (see the “Marketo Conversion Tracking Campaigns” section of the Marketo UTM Tracking & Automation post).
Setting the Priority Order of Attribution Campaigns
As shown in the example in the video, the former Marketo anonymous lead passes through the flows of all the campaigns they qualified for while anonymous but the order that they pass through these campaigns is not the same as the order that they actually triggered the campaigns. This caused the organic Google attribution program to steal attribution from a paid search Google attribution program.
In order to stop the stealing of attribution from paid campaigns, delays are introduced in the flows of the organic search, social, and referral campaigns so that these campaigns are de-prioritized in Marketo’s queue of smart campaigns, thereby ensuring that the paid attribution campaigns will always run first (see the Marketo Campaign Priority Override for more detail on how Marketo prioritizes campaigns in the queue).
N.B. While what I show in the video above was intended to delay the organic social, referral, and search campaigns by different amounts, it turns out that people who qualify for smart campaigns while anonymous will not go through wait steps in these campaigns when they become known (see the Anonymous Lead Promotion to Known Lead – Munchkin V2 Behavior forum post).
However, the mere presence of these wait steps in the organic campaigns means that they will be deprioritized in Marketo’s campaign queue compared to the paid campaigns resulting in the paid campaigns always being processed first and getting the first opportunity to claim attribution on a person.
However, beyond this, all organic campaigns will be deprioritized to the same extent so there is no way to prioritize organic social and referral above the hungry organic search campaigns like Google. If you want to be able to set up a priority order for attribution campaigns to run (e.g. Paid then Social then Referral then Search) then you will need to use executable campaigns and a centralized model, which is explained in the A Centralized Marketo Attribution Model post.
Stop High-Frequency Updates to “Latest Touch”
As shown in the video above, when former Marketo anonymous leads pass through all the campaigns they qualified for while anonymous at the same time when they become known, this causes their “Latest Touch” field to update multiple times in quick succession.
According to the prioritization logic we have above, paid attribution campaigns will run first before any of the other organic attribution campaigns. While this means the former Marketo anonymous leads will have their first touch attribution fields prioritized to be set to paid values, their “Latest Touch” field could be overridden by any organic attribution flows that may run afterward.
To prevent this from happening 3 smart lists are created to track recent changes in a person’s “Latest Touch” field and any recent web page visits they’ve had with UTM parameters in the querystring. Then the flow of all the organic attribution campaigns will only update the “Latest Touch” field if people are NOT members of the smart list for that organic channel.
- Organic social campaigns will check that people have not visited any web pages with paid UTM parameters in the querystring in the past 30 minutes and have not had their “Latest Touch” field updated to a paid value in the past 5 minutes (
UTM Activity Recently Paid
smart list) - Organic referral campaigns will check that people have not visited any web pages with paid or social UTM parameters in the querystring in the past 30 minutes and have not had their “Latest Touch” field updated to a paid or organic social value in the past 5 minutes (
UTM Activity Recently Paid + Social
smart list) - Organic search campaigns will check that people have not visited any web pages with paid, social, or referral UTM parameters in the querystring in the past 30 minutes and have not had their “Latest Touch” field updated to a paid, social, or referral value in the past 5 minutes (
UTM Activity Recently Paid+Social+Referral
smart list)
The choice of 30 minutes as the constraint for the “Visited Web Page” filter was arbitrary but we thought that any web page visits within the same 30 minute period should all be classified as the same session and only lead to 1 change in the “Latest Touch” field.
Similarly, the choice of 5 minutes for the “Data Value Changed” constraint is also arbitrary but we thought that 5 minutes was long enough for former Marketo anonymous leads to pass through all the backlogged attribution campaigns. Since we used a 2 minute delay for organic search attribution campaigns we had to at least wait this long and 5 minutes seemed like a good marker to choose as a result.
Marketo Anonymous Leads Cleanup?
After reading this post and finding out that organic campaigns might have been stealing attribution from your paid campaigns all along you might have some serious backdating to do to fix the first touch attribution fields on former Marketo anonymous leads.
While this might sound like a nightmare, the Marketo API was made for doing bulk updates and might be able to help make this cleanup easier. So take a look at the Marketo API Quick-Start Guide post to learn how to make your first Marketo API requests and then see how it can be applied to modify leads and programs in bulk in the examples below:
- Marketo Program Cloning Via API
- Marketo Merge Leads in Bulk using the API
- Bulk Updating Marketo Period Costs
Alternatively you might want to check out how to set up a centralized attribution model in Marketo using executable campaigns so that you can set up a priority order for attribution campaigns to run.
As always if you are enjoying this content and want to receive emails when I launch new posts then click the big, pink, shiny subscribe button at the top of the page 🙂