Hi Marketo Community,
We’re looking to optimize a custom object-triggered campaign setup in Marketo and need help solving a specific challenge:
We have 7 categories, and for each there are:
1 field for “All” subscription (e.g., All_News)
1 field for Sectors (e.g., News_Sectors)
1 field for Locations (e.g., News_Locations)
Users can subscribe to:
All News from a category (All_News = News)
Specific Sectors (News_Sectors)
Specific Locations (News_Locations)
Each category has a corresponding custom object (CO) like News_CO.
When content is updated in AEM, we push that data into a custom object that includes:
Page Title
Page URL
Category
Associated sectors and locations
We have 483 trigger campaigns, one per category-sector or category-location combination.
✅ If a user subscribes to multiple matching sectors/locations, they should receive only one email — not duplicates from each campaign.
✅ If All_News = News, they should always receive the email regardless of sector/location.
✅ If the same custom object update matches more than one campaign, the person should receive the email just once, even if all campaigns are triggered simultaneously.
✅ Emails should not be sent with blank content.
Marketo does not support comparing custom object fields directly with lead database fields in Smart List filters or Flow steps.
Using Velocity for suppression hides content but doesn’t stop email delivery.
Using Last_News_Content_Name to suppress duplicates fails if two campaigns trigger at the same time.
Has anyone implemented a similar scenario involving CO-to-lead field matching?
What’s the most efficient way to suppress duplicate sends when a single CO update matches multiple subscriptions?
Any best practices for handling multi-value fields comparison and All vs. Specific match logic?
Hmm. Looks you started off with an architecture that wasn’t a great fit and things got worse from there.
483 trigger campaigns with pre-computed permutations is already out of hand, and trying to navigate your way out of the consequences of that decision without reversing that decision is doomed to fail, I’m afraid.
Schema-wise, it’s not clear why you have different Custom Objects defined for this. Why is there not just one Subscription Custom Object where the type — like “News” — is a field on each?
Anyway, it’s impossible to trigger campaigns in parallel but then try to run only the first of them (which would imply the calls are serialized). It’s counter to the concept of trigger campaigns, really.
What we do to centralize updates to a set of Custom Objects is send a Custom Activity containing the latest updates, as a JSON string. We trigger on the CA, not the CO. Then parse the CA’s primary attribute using Velocity, allowing us to send “Welcome to Subscription A, Subscription C, and Subscription E” in one email.
P.S. This is not actually true —
Using Velocity for suppression hides content but doesn’t stop email delivery.
— but using Velocity to abort sends is something best avoided, although we do have that approach in prod in a couple of instances.