Have extended Marketo Program member fields and use them to full power (with or without SFDC campaign member field sync)

Have extended Marketo Program member fields and use them to full power (with or without SFDC campaign member field sync)

One of the question I get the most often when training Marketo customers is how can create fields that are attached to leads only in the context of a program. An example of this is sending invites for an event and ask for preferences in a field on the form, such as which track they will want to follow, what timeframe they would want to come, etc...

For a few quarters now, SFDC has offered the possibility to add custom campaign member fields. This idea would be to enable programs in Marketo to support similar custom member fields, but also some standard campaign member fields that are not currently mapped, such as the member status date.

Creation of the program member fields

  • The program member fields would be created automatically from the synchronization of salesforce campaign member standard and custom fields, as for any other field we sync. As with other SFDC fields, the "self healing" schema capability would be required.
  • It should also be possible to create such fields directly in the Marketo admin section, either when one does not use SFDC as a CRM or when Marketo admins would want to benefit from the capability without going through the burden of modifying SFDC schema. It is important to note than, as with lead fields, both Marketo only and CRM sync'ed fields should co-exist
  • Some program member fields would also exist by default in Marketo to host information such as Program Member Status and date, success and acquire by information. These fields would be synchronized by corresponding ones in SFDC if the program is syncrhonized.
  • This means that Sync'ed member fields and unsync'ed member fields would be able to co-exist in the instance, as for lead fields.
  • Obviously the program member fields meta model would be the same for all the programs in the instance, and all the workspaces
  • Some campaign member fields in SFDC would also be created as part of the MLM package, such as "acquired by" checkbox field and "acquisition date". The Acquired by would also be used in a rollup field in the campaign. [EDIT] as the MLM package does not exist any more, it should be possible to create these fields in SFDC, with a specific syntax, and they would automatically be recognized and mapped by Marketo (as it's now done for the lead score for instance).

Population of the fields

  • The program member fields values could be used in forms and filled out from there. The values entered in the form would be stored in the program containing the landing page hosting the form, provided that the LP is hosted in a program. The program member fields would be eligible to the hidden field feature in form so that they could be populated from referrer, URL or cookie values.
  • In case a form is embedded in a non Marketo LP, if the form belongs to a program, the values would also be stored in the program.
  • In case of neither the form nor the LP belong to a program, a hidden standard field or a form parameter could be provided (or added to the form code for an embedded form) that could host the name (or any other ID) of the program supposed to contain the data
  • It should be possible to update the value of the program member fields with simple "Change Data Value" flow steps, in smart campaigns, only if these smart campaigns are located in the context of the program.
  • It should be possible to populate the program member fields through import of members in a program or import into a list located in the program. In case of import into a list not located in a program (a Lead Database list), the import would prompt the name of the program to import these values in ("None" would be a possible answer, in which case the imported program member field values would be lost ).
  • These fields values would also sync with SFDC, so the fields value could also be populated from SFDC. Sometimes, these fields might be formulas in SFDC, in which case they would be read-only in Marketo.

Materialization and usage of the program member fields

  • The field values would obviously be available only within a program context, somewhat similarly to program "my." tokens, but with the difference that each lead being a member of the program could have different values.
  • These fields would be available as "program." tokens (to differentiate them from the "my." tokens) and usable in all assets within the program. These program tokens would even be available for webhook payloads.
  • These fields would sync with SFDC campaign member fields, in a 2-way sync, if the fields are mapped with SFDC fields.
  • These fields would also be available to filter leads through constraints for the "member of program" filter and the "Program Status is changed" trigger
  • The program member fields would also be eligible to the "data value changes" trigger and the "data value changed" filter. Alternatively, a separate set of filter & trigger could be created. The program into which the filter applies would be set through a constraint (which value could be set to "is any")
  • The Marketo event mobile app should also be able to leverage these fields to display them or to allow update.
  • The program member fields should also be accessible in read and write modes through the API. A new "campaign member" API will obviously be needed for this.
  • When added to a view in a smart list or a list, these program member fields would display a value only if the smart list belongs to a program


  • These program level fields would be used as additional filters in the program performance reports.
  • It should also be possible to add the program member custom fields to generate custom columns in the program performance report. In this case, each possible value of the chosen field would create a column and the rows would provide counts.
  • They could also appear as filter, breakdown or grouping field in the program analyzer.
  • It should be possible to add these fields to the revenue Explorer, as additional dimensions. Especially key to all program oriented report types

Example of use cases

  • Storing program membership source tracking, in a much simpler way, without to have to create a complex structure of multiple programs by source. That would make the creation of an offer-channel attribution model so much simpler!
  • Storing visitor food preferences for an event
  • Soring registration date/time to and event or subscription date time on an opt-in and being able to report on it easily
  • Capturing visit hours choices on a tradeshow booth
  • Store a membership date that would be different from the date/time the program member record has been technically created
  • Last but not least, create a very significant differentiation against Marketo competition, with regards to the way SFDC campaigns are integrated and supported (and hopefully one day for MS Dynamics as well).
  • Store the date at which a form fill out was performed for each lead


Level 10

Edited to reflect the removal of the MLM package.

Not applicable

If I could write to custom Campaign Member fields in SFDC via Program Member fields and create flow steps/actions I would cry tears of joy.

Level 10

So would I

It would in fact dramatically increase the power of Marketo, with or without SFDC integration. Attribution modelling would be so much easier for instance.


Level 3

I'm already crying in anticipation!

Level 10

Any word on this coming Marketo?

Level 1

Regarding Member status of a program, why not use channel status which updates the record as it reaches each status including the SFDC campaign. Maybe I misunderstanding the use case.

Level 10 - Community Moderator

Program member fields create multidimensional "lenses" you can use to view leads in the context of a program/campaign.

Status is just one field per lead per program/campaign.

Not applicable

Just the power of filling certain custom fields on a campaign member would be great. As we have a lot of recurring business with always the same contacts it is so hard to really push it correctly into SFDC which is required to inform the correct account managers.

Level 2

Right now I use Process Builder to append UTM values to the campaign member object from hidden form fields (populated on the lead/contact). Being able to do this natively from Marketo opens up so many opportunities. One example is that right now I have separate programs/campaigns for individual content/channel combinations. Being about to populate data on the campaign member would allow me to have one campaign for one asset and then append the source by the various channels (email, search, website, etc.) which would really simplify the reporting. Ah how I dream of the day...

Level 4

Hi Jason,  I'm interested to learn how you use Process Builder and hidden form fields to populate UTM values to Campaign Member object.  Could you elaborate a little bit more or point me to relevant posts?  Thanks!