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



Obviously, only smart lists, assets and views located in the program would see the data for that program.

It really enables to create sophisticated event invite scenarios that are not possible right now with Marketo.

Would also be great to be able to use these fields as program member tokens in flow steps, such as interesting moments.


These fields should also be made accessible through the REST API.


One of usage of these program level fields could be to store the acquisition and/or conversion channel for each lead in the program.

This would reduce the need for sophisticated approaches such as the one described by Jessica Cross​ here: Bucket programs for tracking content across channels


Not applicable

Solid idea, would put to rest a lot of the problems with source and offer tracking when using vanilla Marketo and Salesforce.

It is also important that the program member fields can be used in forms. the program attachment in this case would be based on the program containing the landing page hosting the form.

If a form from the design studio is used as an embedded form or if a form is used in landing page hosted in the design studio, the information captured in program member fields in the form would be lost, as I do not see how we could define where to store them in this case.


The Marketo event mobile app should also be abel to leverage these fields to display them or to allow update.


see also, in the same field:


To be combined with , especially the point regarding the parent campaigns.

In RCE, these fields should be made available as reporting dimensions.