For years, setting up a marketing automation campaign in Odoo meant filling in two fields on the campaign form: a target model and a filter. You picked “Contacts,” wrote a domain filter, and hoped the segmentation was precise enough to avoid blasting the wrong audience. It worked, but it was blunt. The targeting logic sat right next to the campaign name and responsible user, buried among fields that had nothing to do with audience selection.
That changes in version 20. Odoo has pulled audience configuration out of the campaign form entirely and moved it into a dedicated trigger system — a structured pop-up that forces you to think about not just who enters a campaign, but when andhow often.
The Trigger Concept
Instead of configuring audiences on the campaign form, you now define a trigger. The trigger is a self-contained configuration object that answers three questions: what records should enter the campaign, what event starts them down the workflow, and should they be allowed in more than once.
The interface is split into two tabs. The Enrollmenttab handles the core selection: target model, trigger type, and extra filters. The Optionstab controls enrollment behavior — whether a record can enter the campaign once, every time the trigger fires, or only after a cooldown period. This is a meaningful improvement over the old approach, where enrollment rules were either implicit or required workaround filters.
Why Trigger Types Matter
The old system was essentially a batch operation. You defined a filter, and the campaign periodically swept the database for matching records. The trigger system introduces event-based enrollment. A campaign can now fire when a record is created, when a specific field changes, when a tag is applied, or on a scheduled interval. Each trigger type carries different behavioral expectations.
A “Record Created” trigger enrolls new contacts the moment they appear in the system — no polling delay. A “Field Updated” trigger catches existing records that cross a threshold, like a lead score hitting a target value. These are fundamentally different enrollment patterns, and cramming them into a single filter field never represented the distinction properly.
What This Changes for Campaign Managers
The practical effect is that campaign setup now has a clear separation of concerns. The campaign form handles metadata: name, responsible user, workflow design. The trigger handles audience logic: who gets in, when, and under what conditions. This makes it harder to accidentally launch a campaign with a stale filter or without enrollment guardrails.
It also opens the door to multi-trigger campaigns. While the current implementation focuses on single triggers, the architectural separation means a campaign could theoretically accept records from multiple entry points — a product purchase here, a form submission there — each with its own enrollment rules. Whether Odoo ships that in a future release remains to be seen, but the foundation is in place.
The Broader Pattern
This fits a pattern visible across Odoo’s recent releases: moving configuration out of monolithic forms and into purpose-built interfaces. Inventory did it with route configuration. PLM did it with engineering change orders. Now Marketing Automation follows the same playbook. Each time, the result is the same — a form that was trying to do too many things gets split into focused components that each do one thing well.
For teams running marketing automation at any real scale, the trigger system is the kind of structural improvement that pays dividends every time a new campaign is built. It doesn’t add flashy features. It makes the existing workflow harder to get wrong.