Back in October 2022, Marketo introduced the Program Member Custom Fields sync, and PMCFs can now be synced directly to Salesforce Campaign Member fields. Since then, I’ve been curious if it’s a viable alternative to capturing UTMs on Salesforce campaign members. Here are the pros and cons of that approach.
>> Related: Salesforce Package for Stamping UTM Parameters on Campaign Members <<
In this post:
Video walkthrough
If you’re an auditory learner, here’s a video of me walking through the entire post:
What are Marketo Program Member Custom Fields?
Marketo Program Member Custom Fields (PMCFs) can store program-specific data for each member. They can be used in Marketo forms, Smart List filters and triggers, and Smart Campaign Flow steps. And the data is viewable in the Marketo program’s Members tab.
The potential is pretty interesting. You can use these to replace temp/burner/flex fields where you need to collect certain info for a specific program, but you don’t necessarily need it on the contact record itself. This could be dietary preferences or T-shirt size. Or UTMs. 🤔
The caveats of Marketo PMCFs
But! Before you get creative, there are two big caveats:
1. You have to use the Marketo Program and Salesforce Campaign Sync
If you want to sync PMCFs, you have to use the Marketo Program and Salesforce Campaign Sync, which not everybody loves.
My hot take is it can be fine for some orgs, but it’s a dealbreaker if you prefer to “Add to SFDC Campaign” logically in a Marketo Flow Step.
2. Marketo PMCFs can only be used with local assets
If you’re using global Marketo forms (which I recommend), you’d have to either:
- Switch to using local forms within a program. That’s a no from me dawg. 🙅♂️ If you’re already using local forms, this won’t be an issue.
OR - Use person fields to capture UTMs in your global forms, and then use Flow steps within your Smart Campaign(s) to transfer the values over to your PMCFs.
Experimenting with stamping UTMs via PMCF
That said, it’s nice to see where UTMs are coming from, directly in each program. I decided to do some experiments, and I set up:
- a local form and accompanying Smart Campaign to process
- a global form, a local landing page, and a corresponding Smart Campaign for processing
- and a Salesforce Campaign, which I connected to the Marketo Program
A. Local form
Here’s the local form:
Because the form is local to the Program, it can capture UTMs directly in hidden the Program Member Custom Fields:
Click to enlarge
B. Global-form-on-a-local-page
For the global form, I used these flow steps to actually push the data from the hidden person fields to the Program Member Custom Fields:
In both cases, lo-and-behold, here they are synced to Salesforce 🙌:
Interestingly, in both cases, if you later update those PMCFs in Marketo…
…the values are also updated in Salesforce:
C. Re-testing with an Add to SFDC Campaign Flow Step:
Then I disconnected the Program<>Campaign sync, and submitted again on the local form. But this time I used a Flow step to add to the Salesforce Campaign:
Because I’m using a Flow step to add to the Salesforce Campaign – rather than the Program<>Campaign sync – those do not get pushed over to Salesforce in the Campaign Member fields:
TL;DR
To me, using local forms (column 2) is an absolutely non-starter. #globalformsforlife
You can make column 3 work (the Program Member Custom Fields and global forms work), but:
- you still need those person fields
- you still need to use the Program<>Campaign sync
- it adds more Flow steps to every program
- and if a contact fills out multiple forms in rapid succession, it’s still subject to race conditions where UTMs could get overwritten before being synced to the appropriate Campaign Member
Ultimately, I still prefer capturing UTMs via person fields and Flows on the Salesforce side (column 1). You can fully control if/when parameters are stamped on the campaign member in Salesforce. 👌
More of the UTM series
- How (and Why) We Use a Master UTM Template
- How to Capture URL Parameters in Marketo with Cookies
- Salesforce Package: Stamp UTM Parameters on Campaign Members