As a marketer, you have been asked multiple times in your carrier so far, how can we enable multi-channel lead source tracking and how can we be able to analyze the effectiveness of a particular channel?
There could have been several reasons why you were not able to achieve multi source tracking, it could be the systems limitation, lack of technical skill, lack of knowledge, lack of technology stack and many more.
Well, if you have Marketo and SFDC, there is a way you can track multi-channel lead source. The technique that we’re going to discuss here, will not only allow you to track the multi-touch source on lead but also on opportunity level. For me it’s like a full proof solution. This is a bit long post as the setup is quite complex, so I would suggest to be patient and read through the complete post. I can bet, you will not regret it.
Without wasting time, let’s dive into the same.
Objective:
Objective is to be able to track the source of each and every touch point of the lead life cycle. It will allow you to analyze which channel/source/campaign is working for you and which is not. If you are able to do it, it will be a life saver as based on this analysis you will be able to optimize the marketing spend and resource resulting in maximizing the ROI and a great user experience. We will be tracking following for each touch point:
- Channel
- Medium
- Campaign
Pre-requisite:
- This solution is for those who are using Marketo and SFDC. I have not used MS Dynamics so not sure how it can be possible there.
- You already have a strong first touch source tracking implemented using UTM parameters or other means. You can search Marketo community to learn how to set it up.
- Admin rights in Marketo and SFDC
Proposed solution:
The proposed solution is to have some customization within Marketo and SFDC and unlock the absolute necessary feature. You will have to create a few fields in SFDC and Marketo on the lead/contact and Campaign member. You will also have to create program builder or workflow rules within SFDC. So, make sure you have appropriate rights in SFDC and Marketo for the same.
Field Requirement:
Before we dive into creating new fields, let’s just review a few definitions here:
- Lead Source: Lead Source is the medium through which you are generating leads. Usually mediums are; Website, Search Engine, Social Media, Paid Ads, Event etc.
- Lead Source Details: Lead Source details is your source meaning if you are using Social Media as medium, LSD can be either Facebook, Insta, LinkedIn etc.
- Other Lead Source: Other Lead Source is your campaign name. The value of this will be the name of the program you are creating in Marketo.
TIP: Use the same campaign name throughout the different systems meaning if you are creating campaign in FB, program in Marketo and camping in SFDC, all of these should have the same name. This will allow you to easily merry the data from different systems if you wanted to see a holistic view of your campaign performance.
SFDC/Marketo Field Requirement
- SFDC Lead/Contact (Make sure to have the conversion mapping for these fields)
- FT – Lead Source
- FT – Lead Source Details
- FT – Other Lead Source
- LT – Lead Source
- LT – Lead Source Details
- LT – Other Lead Source
(FT – First Touch, LT – Last Touch
- Campaign Member: (You must be wondering why to create these custom fields on Campaign member object. Believe me, you will need it. Just follow along and you will see.)
- Lead Source
- Lead Source Detail
How will it work?

Step 1: Defining Source/Channel
First of all, you have to define a list for your channels like Website, Social Media, Search engine etc. Once you are done with that then map your source fields with utm parameter. Following is what I would suggest:
- Lead Source à utm_medium (e.g. Website, Social Media, Search engine)
- Lead Source Details à utm_source (web-direct, web-indirect, FB, Linkedin, Google etc.)
- Other Lead Source à utm_Campaign (the name of the campaign/program name of Marketo)
Step 2: Capture Data on Marketo form
Use hidden fields on the form and capture the utm parameters in respective fields. As I mentioned earlier, we will be capturing “First Touch” and “Last Touch” with this technique. So, on the form add the “Last Touch” fields as hidden fields and map those with UTM_Parameters. How you will be capturing the “First Touch”, I’ll explain that in the next step.
Step 3: Capturing the First Touch and Last Touch in Marketo
- Block the field update of the “First Touch” fields from all sources except the “Flow Action”.
- Upon form submission, Marketo will capture all these tracking data in last touch fields.
- Create a central smart campaign to copy the “Last Touch” tracking data in to the “First Touch” tracking fields, if the first tracking fields are empty. (Obviously for new leads, First Touch and Last Touch will be same.)
- Sync the lead to SFDC and then add to appropriate SFDC campaign from smart campaign directly. You should not be syncing the program with SFDC campaign directly, you will face some data issue otherwise.
- Now, in Marketo as well as in SFDC, you have “First Touch” and “Last Touch”
You must be saying, I promised to give you multi-touch not just FT and LT? No worries, just follow the next steps and you will get multi-touch source.
Step 4: Capturing Multi-Touch:
Remember, in the field requirement, I asked to have 2 custom fields on Campaign member object. You must be wondering on the usage of the same. Well, you will be capturing the multi-touch source through those fields itself.
Now, if you have created these 2 custom fields and also have completed the process until step #3, you are ready to move to multi-touch.
In layman terms, you have to have a logic in SFDC to copy the last touch source data on campaign member object.
As I mentioned earlier, you have to have one campaign per marketing initiative to make this work. Let’s take an example and see how this will actually work.
John is interested in your product and was interacting with your different campaigns overtime. Below are some different touch points with the respective source.

In the above example, as you can see the First Touch is “Google” and it remains same throughout the above journey while the last touch keep changing with the different campaign interaction. So, on the lead, the First Touch is “Google” but the last Touch is “Email”
But since the source is different for different campaigns and for each campaign we will have campaign member, we can copy the last touch point of the lead on campaign member. So, the data on campaign member will look like below:

With this, on lead level you will see First Touch i.e. “Google” and last Touch i.e. “Email” but on campaign member you will have source of all of the touch points.
To copy the data from Lead’s last touch source fields to campaign member fields, I would suggest to use “Process builder” in SFDC.
Once you are done with these 4 steps, you can create campaign member reports in SFDC to understand which source is most popular, which type of campaigns are working for you and if you have proper campaign to opportunity influence setting, you can even see the impact of a particular source to opportunity as well. Hope this will help but feel free to reach out to me in case you have any
Great Post…
Just a thought, will it work when we are using the program level sync?? Example if any record became the part of 2 programs like download PDF and watched on-demand webinar then the source fields values on campaign members in SFDC will be different or same??(in case I am using program level sync with SFDC campaign). As per my understanding this will work campaign level SFDC sync not program level sync.
LikeLike
You Can correct. This will not work 100% accurately when you are using program level sync. I have highlighted this in the above blog post as well. You have to use the campaign level sync. If your volume is too high for leads to be synced CRM, you might eat up your daily API quota in CRM. So be careful bit 🙂
LikeLike
Great post! Very helpful, could you elaborate on why “You should not be syncing the program with SFDC campaign directly, you will face some data issue otherwise.”
I’ve been syncing Marketo programs and Salesforce campaigns historically and I’m trying to wrap my head around the possible data issues with this method and what negative impacts (specifically regarding the implementation your recommendations for FT/LT) syncing programs with campaigns will have?
Thanks!
LikeLike
Program to SFDC campaign sync is managed by periodic sync which happens in 5 min interval cycle. Suppose a lead interacts with two CTA on your website back to back, in that scenario, the Last touch fields will have the details of the last CTA and both campaign members will get the same data which might not be accurate.
On the other hand, the campaign level sync bypasses the periodic sync and sync data immediately in SFDC. With that, in almost 99.9% of cases, it will sync LT data in SFDC in real-time and you will have accurate LT details captured against SFDC Campaign member. But at some time, there is a downside to this approach.
Periodic sync uses a batch approach and will sync multiple records in a single API call while campaign level sync uses a separate API call for each lead/campaign member sync. If your lead volume is too high and you have limited APIs in SFDC, you have to be careful with this approach. It might not be the best fit solution for you.
LikeLike