Understanding Marketo Custom Object Filters: Misconception, Challenge, and Workaround
Marketo custom objects are user-defined data structures (tables, if you will) for storing and managing unique types of information beyond the standard person data. They could either be associated with the other objects (Person/other custom objects) or be on their own. They are highly versatile and can be used to track a wide range of information, like product purchases, event attendance, etc.
In the case of a custom object associated with the Person object, custom object filters enable you to filter people based on the data stored within these custom objects.
The Misconception
The misconception that often catches Marketo users off guard is assuming that all CO filters in a smart list are always met by a single custom object record. In reality, this is not the case. Let's illustrate this with an example:
Imagine you have a smart list with two “Has <custom object name>” filters and additional defined constraint(s) for the same custom object field in both (reference snapshot below).
A certain person record in your database has two custom object records associated with it, R1 and R2. R1 could meet filter #1's constraint (i.e., “Test Date Field” is in future 8 days), and R2 could meet filter #2’s constraint (i.e., “Test Date Field” is in future after 7 days). If this occurs, then the person would qualify for the smart list.
Now here's the twist: R1 alone meets the criteria in the first filter, and R2 alone meets the criteria in the second filter. However, neither R1 nor R2 meets both the filtering conditions (filter #1 and filter #2) in the smart list individually.
The Revelation
The revelation here is that, in Marketo, custom object records are evaluated independently when multiple filters are used in a smart list. This means that R1 and R2 can collectively meet the criteria of the smart list, even though individually they fall short. This realization often dawns on users only after they've encountered unexpected people qualifying for the smart list. Needless to say, this all applies to other object filters in Marketo, i.e., Opportunity, CRM-synced custom object, etc. filters as well.
The Workaround
To ensure that your custom object filters work as intended and avoid the confusion caused by separate evaluations of different records, you can implement a straightforward remedy. The solution is to have the same field twice in your custom object and ensure that both fields always have the same value.
By doing this, you can create a single smart list filter that includes both constraints related to the same custom object. Now, Marketo will evaluate these constraints against the same custom object record, making sure that all the specified conditions are met collectively.
TL;DR: When using custom object filters in Marketo, remember that each custom object record is evaluated independently. Multiple records can collectively meet smart list criteria, even if individual records don't. To avoid surprises, use the same field twice in your custom object and ensure both have the same value. This allows you to create a single filter for consistent results.