Avoiding the ditches of Email Program performance tracking

Level 8 - Champion Level 8 - Champion
Level 8 - Champion

Most of us, to one degree or another, send “email blasts” (or “sends” or “communications”) as a regular tactic in demand marketing.  Email can fit a variety of use cases as a standalone channel, including:

  • Supporting awareness within your customer base of a new product launch
  • A regular newsletter to inform audiences on various stages of the customer journey. 
  • A soft-offer or a hard-offer included in a customer nurturing sequence.
  • An invitation to register for a large event or a key customer webinar. 

These are just a few of the use cases where email, as a channel in-and-of-itself, is used within demand operations.  As a programmatic channel and not just as a “tactic” in Marketo Engage, most of us want to track not only the standard email engagement metrics (delivery, open, clicks) but also the key metric of “success,” or “did this person do what we asked of them in the communication?”  This success criteria may include:

  • Downloading and consuming a key eBook.
  • Watching a demo video that highlights a differentiating product feature. 
  • Register for your user conference 
  • Follow-through to schedule a meeting with a sales representative. 

The program “object” (think about an “object” as a data container) in Marketo is a great tool for tracking the progress of success for any program (including an email send such as what we’re discussing) in the marketing mix.  A program is the representation of a campaign tactic to the marketer, and the program statuses represent a point-in-time from entry into the program to an ultimate success.  A progression for an email send (or a nurture send, if you are using programs in your Engagement Program streams), may look like this (with the following definitions)::


Sent = The email was attempted or delivered

Opened = The recipient opened the email 

Clicked = The recipient engaged with the email by clicking a link

Converted = The recipient engaged in the primary call-to-action

Unsubscribed = The recipient unsubscribed from your database via this email


Many marketers, in the process of tracking these statuses, will create a distinct smart campaign trigger for each program status for an email send.  This is fairly easy to set up and optically the marketer can view whether campaign tracking is turned on for each of the statuses.  In this common practice, each trigger represents an action that can be taken by the recipient for the email. 



In theory, this should be benign.  However, there are issues with this approach which represent two possible ditches that Marketing Operations Managers can fall into. 


Ditch #1 (The “high trigger tax” ditch):, As  an operational marketing system, each trigger campaign that is turned “on” represents a processing “tax” on the system.  Therefore, for this one email send, you are being taxed for four activities for this one send.  This is expensive from a processing standpoint.  If you have multiple email sends going out and multiple emails being deployed in your nurture streams, this proliferation of triggers will eventually (or soon) impact your system performance.


Ditch #2 (the "we forgot to turn off old campaigns" ditch):, the statute of limitations on an individual email is typically about 72 hours, and perhaps to be conservative you want to track email program success for two weeks.  However, trigger campaigns in Marketo will be turned “on” in perpetuity until no one has qualified for them in 6 months. This timeline generally outlasts the usefulness of email program tracking and can present yourself with a large mess to clean up later. 


I’m sure I can hear you thinking:  Well, if this type of action is too taxing, then can I track my email performance at all?  


Don’t fear!  There are efficiencies in the Marketo smart campaign infrastructure that allow you to track these behaviors efficiently.  There are two options available to you.  


First, triggers in Marketo Smart Campaigns are considered as “OR” conditions.  This means that multiple triggers can be applied to a single trigger campaign to reduce the tax on the system for the example above from four triggers to one. 

Second, by considering the priority of specific statuses in an email program when checking the status from a trigger (or recurring batch… more on that later), you can set up a “Change Program Status” flow within this more efficient tracking campaign that allows for the highest value action that the person qualified for to be recorded as the program status.  A sample flow is below.


Let’s follow the logic in this flow.  


Choice 1 (First priority):  If the person unsubscribes from the email, then we want to treat that action as the priority flow. 


Choice 2 (Second priority):  We ultimately care about engagement with the CTA, which is a specific action.  This action is captured in a Smart List (Success Criteria) that looks at that specific activity.  For example, if the call-to-action is to register for an event, the Smart List would be “Member of Program” for the event you want them to register for and the status would be “Event > Registered” (You may also want to include an additional filter to track whether the recipient clicked the CTA that redirected them to the event registration landing page)


Choice 3 (third priority):  If the recipient clicked a link in the email, but didn’t unsubscribe for engage in the success activity, we’d treat them as a “Clicked” status. 


Choice 4 (fourth priority):  If the person opened the email, then we’d treat them as an “Opened” status. 


Default Choice (if no other criteria is met):  Place the least priority triggered status in the default action.  


I have used both multiple triggers and a recurring batch campaign to qualify people for a status update.  I have found, in my experience with using email tracking workflows however, that there is rarely (if ever) a case for immediate triggering of email actions for status updates.  Lead scoring triggers for programs typically look at more advanced programs (such as content, event, or webinar programs) and if you are scoring on email actions (which is becoming less prevalent and valuable) you are typically scoring on actions specifically tracked to emails.  


In addition:  Triggers like this tend to stay turned on far past their usefulness, despite our best efforts.  The benefit is rarely worth the cost.  


This is the reason why I recommend that email tracking move away from triggers and into recurring batch campaigns, which deploy this same logic on a nightly basis (when few critical marketing workflows are active and can be disrupted).  


A batch that would support the Change Program Status workflow above would look like this: 



The “Any” filter criteria will ensure that any of the criteria you need to check for is accounted for in the nightly batch processing, and the 24-hour Date of Activity will ensure that each nightly trigger is reviewing activity that has occurred in a specific 24-hour period.  I typically run the first batch the night after the email is sent, and will run batches for a two-week period. 


By running the campaign tracking under this method, you ensure that you don’t fall into any of the following two ditches that we’ve addressed before.  


First, you don’t pay the trigger tax and by choosing a time-of-day that few marketing operations are running, this method will minimally impact the system performance.  This keeps you out of the performance degradation ditch. 


Second, by choosing the recurring batch method, you can select in Marketo when this tracking campaign is no longer relevant, and thus keep you out of the “I have two many active triggers and I have a mess on my hands” ditch (fortunately, the Marketo API has some efficient ways for getting you out of this ditch if you find yourself here, but it’s best to avoid falling into the ditch altogether).  


This method allows you to live in the happiness of tracking your email channel activities effectively, while keeping your instance clean of pesky triggers that continue to run (and impact your system performance) past their usefulness.

Level 7 - Champion

I like the reference to TAX and how you can unclog and speed up your instance with the Batch instead of Trigger campaigns. 

I tend to run these around midnight GMT so minimum impact globally on Americas, EMEA and APAC regions 

Level 10 - Community Advisor

Really good approach to design processes from the perspective of balancing system performance with the sense of urgency for responding to the activity. Great post!

Level 10


Good stuff here @Chris_Willis1 - always nice to walk into an instance that moves at the speed of marketing and this is a great example of how to keep things flowing right along.

This deserves a Kawala-Tee 😉


Level 8 - Champion

@Dave_Roberts that's really cool.  Are the shirts real or virtual?  

Level 3

Taxation needs to be minimized. Thank you for sharing such a great post !

Level 10

@Chris_Willis1 -- looks like they're actually a real thing you can get on Amazon!


Koality Assurance Koala Quality QA T-Shirt - $15.99