Executable Campaigns - Overriding Token Context

One of the biggest gains to productivity you can employ with Executable Campaigns is the ability to pass the token context of the parent campaign to child campaigns.  This allows you to template your campaigns to use contextual data from the parent and then put it into practice within reusable executable campaigns.  It also allows you to set up My Token values as defaults, and then override them by setting them in the calling campaign.  Let’s take a look at an example: Evaluating activity scores


Evaluate Activity Score


Most Marketo subscriptions use activity or behavioral scoring to some extent, and executable campaigns make it easier than ever to create an effective activity scoring model.  By using the same My Token keys in the parent and child campaigns we can craft an activity scoring campaign that can be used by any triggered activity in a single workspace.  This is what a basic templated scoring flow looks like.  The interesting moment is configured to stamp that activity log with the parent campaign name and ID for debugging purposes, and should be omitted for performance reasons in production.



Note how the Change Score step has a Change value of {{My.Activity Score}}.  This is defined as +0 in the Evaluate Activity Score program, so if executed with overriding the token context, or if the value is not defined in a calling campaign, then that will be the value used:



Calling the Campaign


Suppose you want to score when someone fills out a particular form, but you also want to apply a score when they are created by filling out that same form.  In this case you would need two campaigns, each with their own parent program.  Our New Lead campaign needs to listen to the “Person is Created” activity, needs to execute the Evaluate Activity Score campaign, and needs {{My.Activity Score}} to be defined:







Configured this way, our New Lead campaign will call the child campaign with the parent campaign’s context and increment the score by +15 and then move on to the rest of the flow.

For our campaign that’s listening for a form fill, but not creation, we only need to configure the trigger and My Tokens differently:





When a lead qualifies for a run through our Evaluate Activity Score campaign, we see that the Person Score is correctly incremented by +15 when it goes through our campaign:



Working with this pattern


This pattern can be applied and modified to work with many different scoring and lead lifecycles.  There are a few things to keep in mind, though:

  • If you are nesting executable campaigns, I.e., using the Execute Campaign step within an executable campaign, you need to set Use Parent Token Context to true through each layer where you need to use token context in the child campaign. 
    • Using folder-based My Token inheritance can help ensure a value is set in all of your relevant folders.  For example, if all of your scoring listener programs and campaigns live in a single folder tree, you can set a {{My.Activity Score}} at the top level folder, which can then be overridden at the local program level.
  • My Tokens that you want to override in an executable campaign should be set in both the child and the calling campaign, as well as any campaigns between the initial caller and the ultimate child.
  • As designed, each campaign that wants to call the Evaluate Activity Score campaign, needs to be in its own program (or Campaign Folder) in order to have its own specific {{My.Activity Score}} token.  More than one score per program needs either multiple “Change Score” steps in your evaluator campaign, each with a distinct score token, e.g. {{My.New Lead Score}} = +15 vs. {{My.Form Fill Score}} = +5 vs {{My.Unsubscribe Score}} = -10, or a distinct campaign for each score-activity pair that you want to score distinctly
  • Pair this with the suggested categorization model for Executable Campaigns for best results.