Balkar Singh

Some ways to speed up processing

Blog Post created by Balkar Singh on Nov 13, 2019

A typical lead scoring model usually means either of the following two approaches

 

  • A list/combination of triggered campaigns
  • A sequence of demographic/firmographic campaigns, and a group of behavior scoring campaigns

Scoring, as one of the prominent tactics of modern marketing, keeps evolving, forever. So does the database size. When leads start to accumulate, the pressure on these sequence campaigns increase. We don’t need to wait long enough to start seeing campaign queues and delays.

 

 

Multiple triggers, redundant processing, and more evolving factors, compliment the challenge. Certain steps can help address the limitations of this climate, and we try to list a few below -

 

Split campaign-sequence dimension-wise

Instead of requesting all campaigns one after another, design the campaign sequence to only react to people, who it requires to react for.


 

Use Fields (instead of smart lists (and nested smart lists(and very nested smart lists)))

 

 

A combination of multiple filters is not incorrect, however when we use too many filters (e.g. 9 filters in the snapshot above) - with addition of heavy nested smart lists and a fairly complicated criteria, the processing takes time.

If we can tag a field with a value, whenever the criteria data points change to make the records qualified, we can reference one field, instead of complicated combinations of filters.

 

Centralize triggers

 

A single trigger (say, person is created) may be used in multiple campaigns. We often see that it’s used to trigger scoring in one program, update lifecycle stages in other, and trigger governance in another. This is also one of the reasons of processing issues. The same trigger used multiple times, maybe causing some redundancy.

It's better to centralize these into one entry-campaign.

Simplify smart campaign settings

 

A lot of behavior scoring campaigns are usually set to run every time. Even "visits webpage" runs every time in many instances today. We could also have this run once every hour, and set a minimum limit for the activity. A thumb rule some of us use is to avoid "run every time" as much as possible.

 

Consider Segmentation

 

If there's a criteria you need to apply to a significant count of records in database and would be used very frequently, do not use a smart list for the same. Consider segmentations - these are faster for processing versus smart lists with the same filters. E.g. Marketing Eligible Segmentation, or say, to accommodate privacy compliance, e.g. GDPR, CASL etc

 

A smart list with the following rule-set is slower to process, versus the same rule-set within a segmentation.

 

 

Measurement mechanism ideas

 

  • Append a field with date-time when processing of a program starts, and another when it ends
  • A while later, an export of records which have gone through the model, would have these two stamps, and we can calculate the average time taken, per XXX records.
  • Post implementing the changes, we can compare the time duration of processing for the same # of records.

 

The following report let’s you monitor for how your smart campaigns are performing

Campaign Activity Report - Marketo Docs - Product Documentation 

 

If there are any good approaches you have tried which helped in processing speed, please share! Also, do refer Load Balancing in Marketo and Marketing Automation - Marketing Rockstar Guides  if you have've yet.

Outcomes