Odoo Automation Rules in Odoo 19 and 20: Triggers, Actions, Examples
Odoo automation rules in Odoo 19 and 20: every trigger and action, worked examples, why rules fail to fire, what changed in 20 and when to use code instead.
This guide shows the exact trigger and action names in Odoo 19 and 20, worked rules you can rebuild, and why rules silently skip records. When rules are not enough, our Odoo customization services build the code version.
It is for Odoo admins and operations leads who want fewer manual follow-ups. If you are still deciding what to automate first, start with our guide to enterprise workflow automation.
What are Odoo automation rules, and how do they differ from server actions?
An Odoo automation rule is a trigger plus conditions that runs one or more server actions automatically, while a server action on its own only runs when someone clicks it or code calls it. Older guides call automation rules "Odoo automated actions"; the idea is the same.
Every action inside a rule is an Odoo server action; the rule adds the "when" and "for which records".
| Tool | What starts it | Best for | Needs code? |
|---|---|---|---|
| Automation rule | A record event, a date or a webhook | Follow-ups tied to a record change | No, unless you pick Execute Code |
| Server action | A button, the Action menu or another rule | Reusable one-click jobs | No for most types |
| Scheduled action | A timer, for example every 4 hours | Batch jobs and polling | Usually yes |
| Studio approval rule | A button click on a form | Sign-off before a step | No |
| Custom module | Python overrides in the ORM | Complex logic, high volume, tests | Yes |
Approvals are a separate tool, covered in our guide to Odoo sales order approval.
Where do you find automation rules in Odoo 19 and 20?
Automation rules live in the Automation Rules module, which is not installed by default; once installed, you open them from Studio or from Settings, Technical, Automation Rules in developer mode. The module itself is part of Odoo Community under the LGPL-3 license.
On the Odoo forum, an admin reported automation rules missing in Odoo 19; the module simply was not installed yet. In Community, remove the "Apps" filter to find it.
Odoo Studio is listed on the Custom plan on the Odoo pricing page. In the same forum thread, one Odoo Online user on 19.3 said installing the module on Standard prompted a switch to Custom.
Treat that as one user report and check it in your own database before you plan around it.
Which triggers does an Odoo automation rule offer?
Odoo 19 and 20 group triggers into five categories, and the list you see depends on the fields of the model you pick. The exact labels below come from the Odoo 19 and 20 source code and the official documentation.
| Category | Trigger labels in Odoo 19 and 20 | Typical use |
|---|---|---|
| Values Updated | Stage is set to, User is set, Tag is added, State is set to, Priority is set to, On archived, On unarchived | React to a business status change |
| Email Events | On incoming message, On outgoing message | Reopen a ticket when a customer replies |
| Timing Conditions | Based on date field, After creation, After last update | Reminders, escalations, clean-up |
| Custom | On create, On create and edit, On deletion, On UI change | Defaults, numbering, guard rails |
| External | On webhook | Let another system update Odoo |
The picker hides triggers your model cannot support. Our page on the automation trigger selection widget explains that filtering, and why the deprecated "On update" trigger only shows on rules already using it.
Email Events only work on models with a chatter; Odoo raises an error otherwise.
Which actions can an Odoo automation rule run?

A rule can run any mix of record updates, messages, activities, webhooks, Python code and, in Odoo 20, AI instructions, in the order you set. Order matters: a message sent after an update shows the new values, and one sent before shows the old ones.
| Action | Odoo 19 | Odoo 20 |
|---|---|---|
| Update Record | Update, Update with AI, Sequence, Compute | Same four options |
| Messages | Send Email as Email, Message or Note | Send Message and Log Note split |
| Create Activity | One activity type, specific or dynamic user | Activity type or full activity plan |
| Execute Code | Python with env, record and records | Same Python variables available |
| Webhooks | Send Webhook Notification, On webhook trigger | Same POST of selected fields |
| AI | Update with AI on one field | New AI action and AI Agents |
Both versions also offer Create Record, Duplicate Record, Add or Remove Followers, Send SMS, Send WhatsApp and Multi Actions. The 20.0 page of the Odoo automation rules documentation adds a Request Signature section.
Update with AI, the AI action and AI Agents run on Odoo AI credits in Odoo 20. Budget for them before you switch them on; our Odoo 20 AI features and IAP credits breakdown shows the monthly cost.
How do you create an Odoo automation rule step by step?
Build each rule on a duplicate database first, name it clearly, set the narrowest trigger and conditions you can, then add actions and test with real records. The steps below work in both Odoo 19 and 20.
- Activate developer mode so you can see the model, the Before Update Domain and the Apply on domain.
- Open Studio, click Automations, then New, or go to Settings, Technical, Automation Rules.
- Name the rule after its outcome, for example "Overdue invoice: call after 7 days".
- Pick the Trigger. For On create and edit, always fill the When updating field.
- Add conditions: Before Update Domain for the state before the change, Apply on for the state after it.
- Click Add an action in the Actions To Do tab, choose the Type and save.
- Write the purpose in the Notes tab.
- Test with three records: one that should fire, one that should not, and one edge case.
Six worked Odoo automation rule examples
These six rules cover the requests we see most often, and each one uses only documented triggers and actions. Rebuild them on a copy of your database, adjust field names to your setup, and test before going live.
| Goal | Model | Trigger | Conditions | Actions |
|---|---|---|---|---|
| Chase overdue invoices | Journal Entry | Based on date field: Due Date, 7 days After | Customer invoice, posted, not paid | Create Activity: Call, Dynamic User salesperson |
| Revive stale quotes | Sales Order | After last update, 14 days | State is Quotation Sent | Create Activity for salesperson, Log Note |
| Number new customers | Contact | On create | Is a Company is set | Update Record with a Sequence on Reference |
| Escalate urgent tasks | Task | Priority is set to | Priority is the highest level | Compute an Escalated on date, Add Followers |
| Reopen on reply | Helpdesk Ticket | On incoming message | Stage is Solved | Update Record: stage to In Progress |
| Tell another system | Manufacturing Order | State is set to Confirmed | Webhook flag not yet sent | Send Webhook Notification, then Update Record flag |
The first two use Timing Conditions, so they need one extra step. After saving, open the "Automation Rules: check and execute" scheduled action and click Run manually, or the rule may fire on old records.
The webhook example sends only the fields you select as a POST request, and the flag stops repeat sends.
Sometimes no rule is needed: service products already create tasks from sales orders, one per line. One task listing every line needs Execute Code.
Why is my Odoo automation rule not firing?
Most "broken" rules are working as designed: the trigger never saw the change, the condition was checked at the wrong moment, or the timer has not run yet. Check these causes in order.
- Before Update Domain on create: Odoo does not check the Before Update Domain when a record is created, so rules that depend on it skip new records.
- Timing rules waiting: the check-and-execute scheduled action runs every 4 hours by default; Odoo speeds it up, for example to every 18 minutes, when a rule has a delay under 40 hours.
- Retroactive firing: a timing rule only acts when its execution time falls between the scheduler's last run and the current run, so run it manually once after setup.
- On UI change limits: it only works with Execute Code and only for manual edits on the form, never for changes made by another rule.
- Background records: an MRP order created and confirmed in one step by a make-to-order flow did not fire a rule watching for confirmation in one forum report on MTO orders.
- Loop guard: within one run, Odoo marks records a rule has processed so the same rule does not re-run on them, which stops loops but also surprises chained rules.
- Mail triggers: internal notes and system notifications do not fire On incoming message or On outgoing message.
For background records, the forum's most reliable fix was a scheduled action that polls for records in the right state.
When should you use code instead of an Odoo automation rule?
Use a plain automation rule for single-record follow-ups, and move to Execute Code, a scheduled action or a custom module when you need loops, cross-record logic, volume or tests. The table is the checklist we use with clients.
| Situation | Use | Why |
|---|---|---|
| Set a field, send a message, add an activity | Automation rule, no code | Fast to build, easy for admins to read |
| Build text from order lines or totals | Execute Code action | Field mapping cannot loop over lines |
| Records created by procurement or imports | Scheduled action that polls | Rules may miss one-step create and confirm |
| Thousands of records an hour | Custom module | Rule overhead adds up on every write |
| Logic that must survive upgrades unchanged | Custom module with tests | Database rules are harder to review and test |
| Two-way sync with another app | Webhook or integration layer | Retries and errors need a proper home |
Execute Code is still Python in your database. Odoo's documentation states that maintenance of custom code is not included in the Standard or Custom plans and incurs extra fees, so write it down and review it at every upgrade.
See where Studio stops in Odoo Studio vs custom development, and webhook patterns in our n8n Odoo integration guide.
What changed for automation rules in Odoo 20?
Odoo 20 keeps the same five trigger groups and adds AI options, activity plans and clearer messaging actions. Comparing the 19.0 and 20.0 docs, these are the changes that affect rule design.
- Send Message and Log Note: Odoo 19's Send Email action, with Email, Message or Note, becomes two actions in the 20.0 docs.
- AI action and AI Agents: a rule can now take written instructions, with optional tools that call server actions, instead of a fixed action list.
- Activity plans: Create Activity can launch a full plan, and can assign to a Specific Role as well as a user.
- Explanation tab: each action can carry its own note, which helps future admins.
Existing single-activity rules keep working. Our Odoo 20 Studio release notes list the activity plan change with where to find it.
A fixed rule does the same thing every time; an AI instruction may not. Keep AI for drafting and classifying, and money, stock and approvals on fixed actions. Our guide to automating Odoo workflows with AI covers where AI belongs.
Odoo automation rules by industry
The best first rules differ by industry, but they all target a costly manual follow-up that happens dozens of times a week. These are common starting points; the trigger names are the Odoo 19 and 20 labels.
| Industry | Pain or cost driver | Odoo approach | How iVentureTeam helps |
|---|---|---|---|
| Manufacturing | Confirmed orders not passed to the shop floor | State is set to, then Create Activity or webhook | Add scheduled actions for MTO orders |
| Distribution | Late supplier deliveries spotted too late | Based on date field on scheduled date | Map vendor follow-up roles |
| Professional services | Unbilled time at month end | After last update on tasks | Build billing reminders |
| SaaS and support | Solved tickets reopened by email | On incoming message on tickets | Design stage and SLA rules |
| Retail and eCommerce | Abandoned quotes from the webshop | After creation on quotations | Pair rules with email templates |
How iVentureTeam helps with Odoo automation rules

We help teams pick the right rules, build them safely and replace them with code when a rule is the wrong tool. We have delivered 150+ ERP projects across 35+ countries with 40+ Odoo specialists over 13+ years.
- Rule audit: list every active rule, its trigger, conditions and owner, and switch off duplicates.
- Rule design: build and test new rules on a duplicate database before they touch live data.
- Code when needed: our Odoo development company team writes Execute Code actions, scheduled actions and modules with tests.
- Upgrade checks: review rules and code before an Odoo 20 upgrade so nothing fires twice.
- Quick scoping: price a set of automations with the Odoo project estimate tool.
Odoo automation rules case study: Mechanical Products IL
A US precision components maker needed product data to update itself, and the answer was scheduled actions and custom code, not more rules. The project ran on Odoo 17 and took 6 weeks.
Mechanical Products IL ran its whole product lifecycle on manual Excel imports. Sales and cost prices did not update on import, and purchase orders created from sales orders did not pick up the latest vendor price.
We built a custom product-lifecycle module that creates, updates and archives products from the uploaded sheet. Scheduled actions keep cost prices in sync, and we overrode core purchase methods so orders always use the current vendor price.
The result was 3 product workflows automated and 90% less manual import effort. Read the Mechanical Products Odoo product data automation case study.
The bottom line on Odoo automation rules
Automation rules are the right first tool for routine follow-ups in Odoo 19 and 20, as long as you know when they fire and when to hand the job to code. Start small and test each rule.
Pick three manual follow-ups, build each as a narrow rule on a copy of your database, and check them a week later. Move anything with loops, volume or background records to code.
Ready to put your Odoo follow-ups on rules that actually fire?

Get your automation rules designed, tested and documented by people who also write the code behind them. Talk to us about your Odoo automation rules, call +91-90235-15208, or email business@iventureteam.com.
Frequently Asked Questions
What is the difference between automation rules and automated actions in Odoo?
+
They are the same feature. Older Odoo versions and many guides call them automated actions; Odoo 19 and 20 call them automation rules. Each rule runs one or more server actions when its trigger fires.
Are Odoo automation rules available in Community edition?
+
Yes. The Automation Rules module (base_automation) is part of Odoo Community under LGPL-3. It is not installed by default, so remove the Apps filter in the Apps menu to find and install it.
Do I need Odoo Studio to create automation rules?
+
No. With developer mode on, you can create rules from Settings, Technical, Automation Rules. Studio gives a friendlier editor and is part of the Custom plan, so check your plan before relying on it.
Why does my time-based automation rule not run?
+
Timing rules run through the "Automation Rules: check and execute" scheduled action, every 4 hours by default. The execution time must fall between its last run and the current run, so run it manually once after setup.
What is the difference between a server action and an automation rule?
+
A server action is the job itself, such as updating a record or sending a message. An automation rule decides when that job runs, based on a trigger and conditions. Server actions can also run from a button.
Can an Odoo automation rule send a webhook?
+
Yes. The Send Webhook Notification action sends a POST request with the fields you select to an external URL. The On webhook trigger works the other way, letting another system update Odoo records.
How do I stop an automation rule from running twice?
+
Fill the When updating field for On create and edit rules, and add a Before Update Domain so the rule only fires on a real change. A flag field that the rule sets after acting also prevents repeats.
When should I use Python code instead of an automation rule?
+
Use code when you need to loop over lines, combine several records, handle high volume, catch records created in the background, or write tests. Odoo bills maintenance of custom code separately from the plan.
What is new for automation rules in Odoo 20?
+
Odoo 20 splits messages into Send Message and Log Note, adds an AI action and AI Agents, and lets Create Activity launch a full activity plan. The five trigger groups stay the same.
Free Odoo implementation plan
Planning your Odoo implementation?
A senior consultant reviews your processes and sends a phased roadmap, what to set up first and a fixed-price range.
Free, with no obligation. A senior consultant replies within 12 business hours.
Free Odoo tools
All tools- Odoo Health CheckVersion, modules, findings and upgrade cost
- Odoo App SelectorWhich apps you need, by industry
- Odoo Project EstimateIndicative cost and timeline in minutes
- Odoo Implementation Cost CalculatorImplementation cost and timeline, in minutes
- Odoo Migration Cost CalculatorVersion jump or legacy ERP, priced in minutes
Continue reading
Odoo QWeb Report Guide: Build Custom PDF Reports in Odoo 19 and 20
Build an Odoo QWeb report in Odoo 19 and 20: report action, template, paperformat, currency formatting, invoice inheritance and fixes for broken PDFs.
Odoo Sales Order Approval: Thresholds, Studio Rules and Audit Trail
Odoo sales order approval for Odoo 19 and 20: Studio approval rules on Confirm, amount thresholds, purchase approval, custom modules and audit trail.
Odoo Year End Closing Checklist: Lock Dates, Accruals, Depreciation
Odoo year end closing checklist for Odoo 19 and 20: pre-close checks, accruals, depreciation, lock dates, current year earnings and the new fiscal year.
