I would need more information in order to help you? Did the leads fill out a Marketo form? Did your import the list?
Do you auto fill your lead source from a url paramater? Or set lead source using a default/cookie value?
Yes, I set up a landing page with a form, so the leads came from filling out that form. I'm not sure about whether or not the lead source was auto filled from a url parameter or if it was set to use a default/cookie value. How can I determine this? Thanks!
You actually build this logic into the forms. It is up to you to decide how you want to do it. This is done with hidden fields in the form builder. Play around with the fields and let me know if you have questions.
Lead Source is unfortunately left entirely up to us to populate. There aren't any attribution rules to automatically bucket people out of the box, the way it works in Google Analytics for example.
The good news is that you can clean, consistent lead source tracking set up using Marketo, but it takes a bit of work and time.
A whole implementation can be complex but here's a few general points to consider in addition to the tips Jeffrey mentioned. This is a broad overview but I thought it could be helpful in addressing the root of your question.
1) Define your Lead Sources: to have useful reports, you need to first consider all your acquisition activities and how you want to categorize them. This requires a bit of thinking. For example, do you want "Google Adwords" to be a lead source or just "Search Engine Marketing"?
2) Tag Your Links: Whenever you control the link, you should be adding parameters to the URL to identify where your users are coming from. E.g., www.campaignlink.com?leadsource=Search+Engine+Marketing. The best way to ensure lead source is captured accurately is to explicitly declare it.
3) Capture the URL Parameters when a Lead Becomes Known:This is the part Jeffrey is describing -- you need to add hidden fields to your forms that will look for the parameters on your leads and map those values to specific fields in Marketo/Salesforce. Read more on working with hidden fields.
I recommend capturing the URL parameters into a cookie when a lead first visits your site and then grabbing the stored parameters from the cookie upon registration. This ensures the data isn't lost even if a lead travels around or leaves then returns. You'll need a developer to help with that.
Alternately, you can set a default value for a hidden field on a particular form or declare this value on a list you are importing. So with your webinar example, you could set this value on a hidden field on your form so the leads are recognized as coming from a webinar when they register.
4) Create Smart Campaigns to Bucket Non-Campaign Visitors: People who visit from non-campaign sources (direct, organic search, organic social traffic etc.) won't have URL parameters on their links and so won't have a defined lead source.
You can set up campaigns with logic like, any leads with no lead source and who have a referring url containing Facebook, Twitter, LinkedIn etc., Lead Source = Organic Social (or whatever you choose). Same thing for search engines.
Anyone else gets bucketed as direct.
Thanks Justin - this is very helpful. I'm still a bit confused on how to ensure these lead sources are retained over the life of a lead record. If each lead record contains a "lead source" field, and the lead interacts with our content/campaigns more than once, this field will be updated with the most recent lead source, overwriting any prior lead sources. What is the best approach to retain this information over time?
For us we have in addition to the standard "Lead Source" field another field called "Last Lead Source".
Lead source is written once and then locked whereas Last Lead Source is updated every time. So this way we capture both the first and last touch.
For our purposes we differentiate between Acquisition Programs (programs that bring someone to our site) and Engagement Programs (content that they engage with once they're there). Note, that is in-house terminology so not to be confused with using the Customer Engagement Engine :)
Example: someone clicks on a Google Adwords ad then downloads an e-book. Our Lead Source would be Search Engine Marketing and then the lead would be a member of both a Google Adwords acquisition program (essentially just a program for tracking purposes) and the e-book program.
If they then found us again through organic search and signed up for a webinar, their Last Lead Source field would be updated to Organic Search and they would then join the webinar program as well.
It isn't perfect but we've found this set up gives us a good deal of flexibility in our reporting, so whether we want to see the effectiveness of all SEM or just a particular PPC program or a piece of content, we can slice and dice it.
I haven't yet wrapped my head around how to report in aggregate on complex multi-touch conversion paths within Marketo as you can in Google Analytics (RCA has not been an adequate solution to this problem, for us) but if anyone has I'd love to get a peak :)
You provided some good insight on another issue we've been facing - and your solution is consistent with what our Marketo consultant recommended to us last week. And that's the issue of having to create a separate Marketo program (including the assets and smart campaigns) for every channel we wish to track within a single Marketing campaign. When you have multiple activities/content within a campaign and multiple country workspaces for which to replicate this, you can imagine how overwhelming this can become.
But all that's really needed is the main program (complete with assets and smart campaigns) and then simple tracking programs to capture membership/success for each channel. My question is, does Marketo automatically add the lead to program membership of BOTH programs just by including the additional "Change Program Status" flow for the additional channel program?
Yes -- if I understand you correctly -- you'll just need a "Change Program Status" flow step for each program you want to add the lead to. Once a lead has a program status they become a member of that program.
For us the campaigns with these flow steps live inside the programs they belong to and are triggered by a lead coming in with the required lead source or filling out the specific form or whatever trigger controls access to that program.
Perfect - thanks for clarifying Justin! From a program organization/structure perspective, how do you organize all of the additional channel programs? Do you keep everything within reach of the main program or do you place the programs in their respective folders within your instance? For example, here's how we structure our programs:
I'm setting up a quick test now. But I'm unsure where to place the the smart campaigns for each channel. Do you place everything within the master program, or does each channel program include it's own smart campaign using an example smart list like the one below ("CID" is Channel ID)? And if the latter, I'm assuming the master program doesn't also get a "change program status" flow step, otherwise this would result in multiple attribution, correct?1 of 1 people found this helpful
And then how do you change membership status for additional progression steps? For example, our "Social Media" channel includes three statuses:
- Visited landing page
- Filled out form
- Downloaded content
But unfortunately, this didn't work. According to Marketo support, the lead didn't achieve membership quickly enough (in real-time) and therefore this smart list failed. Same issue exists in the "downloaded content" progression step.
Hey Dan,1 of 1 people found this helpful
In terms of organizing the tree:
There's definitely more than one way to skin this cat, but here's how we do it.
First off, for pure channel reporting, every Lead Source has it's own First Touch Attribution (FTA) program that is solely intended to track success of those channels at a high level:
FTA membership is based on a Segmentation. The Segmentation uses the Lead Source field and other rules for organic/direct leads so we bucket everyone as accurately as we can. There is a central campaign (in FTA Administration) that assigns leads to an FTA program based on segment, then each of the FTA programs above has a smart list that changes program status for leads who are its members.
To report on specific campaigns within those channels, as well as our various content and nurturing assets, we have Acquisition and Engagement Programs, of which there can be many.
Some of these programs are purely for tracking purposes (track membership/success only) while others are programs that "do stuff" and have assets, create tasks, send emails, etc.
For acquisition programs, membership is determined by a combo of different things but usually is keyed off a field we have called "Lead Source Notes" which populates from a querystring parameter and contains campaign-specific data.
Here's an example of the smart campaign that determines membership of one of our Direct Mail programs (this smart campaign lives within the DM program).
For success tracking, we have standardized program statuses for all channels which are tied to field called "Onboarding Stage". This field is controlled by a single Onboarding Nurturing program and tracks a lead from when they create a free account in our app until making their first purchase.
As that data value changes, all the other programs of which that lead is a member "listen" for it and then update the lead's program status in that program accordingly.
This ensures the lead's status stays up to date in all programs and makes maintainence easier.
Now there may be better ways to achieve your goals, but this gets the job done for us. It was a pain to set up so I would expect a bit of sweat before you arrive at attribution nirvana :)
Does this help at all with what you're trying to do?
Regarding your Trigger above:
I'm not sure your trigger above is going to work since when a lead visits the page they are likely to be anonymous. So if someone comes to a page with the querystring "CID=social" then fills out a form, the trigger won't function retroactively.
I would suggest you capture the querystring to a field then use the data value change to trigger program membership upon registration.
Thanks for this, Justin. It's always valuable to see how others have their instances and campaign flows setup in Marketo. I'll have to further digest all of this and see how we can use some of this info to better optimize our processes.