This is a follow-up to my December 15th blog, entitled “Design Tips for Avoiding Marketo Performance Problems”. Since then, I’ve thought of some other performance tips, and also found some suggested by Marketo and other sources, so I thought I’d continue the topic in this blog.
These blog posts are the result of an investigation of ways to improve performance in multiple Marketo instances. The blogs are sharing some best-practice design ideas that will help to improve Marketo performance.
Avoid using “contains” in a filter
Marketo filters allow the user to search for values like “State IS California” or “State CONTAINS fornia”. As it happens, it takes less resource for the system to find the whole value, “California” than it does to search through a string to find the sub-string “fornia” within the State value. While it difficult to know exactly how Marketo or any product performs a sub-string process, this is a simple example of how the steps might occur.
A sub-string search using CONTAINS searches the larger string like this:
1. Do characters 1-6 of the string = “fornia”
2. Do characters 2-7 of the string = “fornia”
3. Do characters 3-8 of the string = “fornia”
4. Do characters 4-9 of the string = “fornia” – before it finally gets to…
5. Do characters 5-10 of the string = “fornia” – TRUE
Contains are convenient, but comparatively slower.
If you must use dozens or hundreds of values in a filter, consider multiple campaigns using fewer filters
Sometimes you find that the only way to solve a problem is by having Marketo filter dozens or hundreds of values. For example, you may want to setup a segmentation for Regions (North America, LATAM, EMEA, etc.). It’s easy to setup a filter to check Country value to determine region. For example, if Country IS “United States” or “Canada” then Region is “North America.”
Consider a scenario where you want to identify Partners by their email domains….and you have four thousand partners! This is a double whammy as you are using a CONTAINS clause too! Maybe there is no other way to do this with Marketo, so you create a couple smart campaigns that each have about 2,000 email domains (there is a limit for the filter, so you may not even get that many in the filter).
It may be faster to have 10 smart campaigns with 400 email domains than it is to have 5 campaigns with 800 email domains. Your mileage may very here, so test the heck out of this puppy.
Simplify. Simplify. Simplify.
Did you ever look back on a program or campaigns that you created earlier in your Marketo user trek and wonder, “what was I thinking?” Everything looks different by the light of a new day, so carve out some time to review past work with an eye on simplification.
Ask yourself if you can accomplish the same goal using fewer steps. See if there is a new feature or function that let’s you minimize a flow, or make it perform faster. Have people review your work. Marketo is a big beast, nobody knows every nook and cranny of it!
As I’ve said, Marketo’s flexibility is a blessing for Marketers trying to solve complex problems, but it can also be a curse when poorly designed programs and campaigns become widespread. At the risk of sounding like a marketing nerd, it can be beneficial to invest the time into creating more efficient programs—and even a little fun.