Ad – 728×90
🎨 Odoo Studio

Automations in Odoo Studio – Visual Workflow Builder

Studio Automations let you react to events in Odoo — record creation, field updates, time elapsed — and automatically perform actions like sending emails, updating fields, or creating linked records. All of this is built through a visual form interface without writing Python. Under the hood, Studio creates ir.base.automation records, the same engine used by Odoo's core automated actions.

⏱️ 22 min 🎯 Beginner 📅 Updated 2026

What are Studio Automations?

An automation is a rule that says: "When [trigger] happens on [model], and [condition] is true, perform [action]."

Studio Automations are stored as ir.base.automation records (also known as "Automated Actions"). You can also manage them outside Studio via Settings → Technical → Automation → Automated Actions.

Common use cases for Studio Automations:

  • Send a confirmation email when a sale order is confirmed.
  • Automatically assign a salesperson based on the customer's country.
  • Set a due date 7 days after a task is created.
  • Create a follow-up activity when an invoice becomes overdue.
  • Add a follower when a record's state changes to "In Progress".

Creating an Automation

To create an automation from Studio:

  1. Open Studio on the app whose model you want to automate (e.g., open a Sale Order and click Studio).
  2. In the left panel, click the Automations tab (gear/lightning icon).
  3. Click New to open the automation editor.
  4. Give the automation a descriptive name (e.g., "Send email on order confirmation").
  5. Set the Trigger, Condition (optional), and Actions.
  6. Toggle the automation to Active and save.

Trigger Types

The trigger defines when the automation fires:

TriggerFires when…Typical use
Record CreatedA new record is saved for the first timeSet default values, send welcome notification
Record UpdatedA specific field changes on an existing recordReact to state change, update related field
Record Created or UpdatedOn both create and writeSync fields, log changes
Record DeletedA record is deleted (unlinked)Archive related records, notify admin
Based on a Timed ConditionA date on the record is reached (e.g., date_deadline)Send reminders, auto-close expired records
External (Webhook)An HTTP POST triggers the automationIntegrate with external systems

For the Record Updated trigger, you must specify which field(s) to watch. The automation only fires when one of the watched fields changes — not on every save.

Ad – 336×280

Defining Conditions (Filters)

Conditions limit when the automation fires even if the trigger is met. Click the Add a condition button to open a domain builder.

The domain builder provides a visual filter editor — the same interface used in list view filters. You select a field, an operator, and a value. Multiple conditions can be combined with AND or OR logic.

Example condition: only fire when state = 'sale' (sale order is confirmed) and amount_total > 1000.

Domain (generated by Studio)
[('state', '=', 'sale'), ('amount_total', '>', 1000)]

Actions You Can Automate

Each automation can perform one or more actions when triggered:

Action typeWhat it does
Update a RecordSet a field to a specific value on the triggering record
Create a RecordCreate a new record in any model with pre-filled values
Send an EmailSend an email using a chosen email template
Send a SMSSend an SMS using an SMS template (requires SMS credit)
Add FollowersSubscribe users to the record's chatter thread
Create an ActivitySchedule an activity (call, meeting, to-do) on the record
Execute Server ActionRun a more complex server action (Python code) — advanced use

Worked example: auto-send email when sale order is confirmed

  1. Open a Sale Order → click Studio.
  2. Go to the Automations tab → New.
  3. Name: "Notify manager when order confirmed".
  4. Trigger: Record Updated. Watched field: Status (state).
  5. Condition: state = 'sale'.
  6. Action: Send an Email. Choose the email template "Sales Order: Confirmation" (or create a new template).
  7. Toggle Active and save.

Now every time a sale order is confirmed (state changes to 'sale'), the chosen email template is sent automatically.

Testing Your Automation

To test without waiting for the trigger to happen naturally:

  1. Open a record that matches your automation's model and conditions.
  2. In developer mode, the record's Action menu (cog icon) includes a Run Automations option.
  3. Click it to manually fire all applicable automations on that record.
  4. Check the chatter or email log to confirm the action ran.

For time-based automations, you can adjust the record's date field to be in the past and then manually trigger the scheduler from Settings → Technical → Automation → Scheduled Actions — run the "Base Automation: Timed Conditions" action.

⚠️
Automation loops

Be careful with "Record Updated" automations that themselves update a field being watched — this can create infinite loops. Odoo has loop detection for direct circular triggers, but complex chains can still cause unexpected behavior. Always test in a non-production environment first.

📋 Key Points

  • Studio Automations = ir.base.automation records built without code using a visual form.
  • Trigger types: Record Created, Updated, Deleted, time-based, or webhook.
  • Conditions use the same domain builder as list view filters — combine field/operator/value checks.
  • Actions include: update field, create record, send email, send SMS, add follower, create activity.
  • Test automations using the "Run Automations" option in the record's Action menu (developer mode).
  • Watch for automation loops when the action updates a watched field — test on staging first.

FAQ

Can Studio automations run Python code? +

Yes, through the "Execute Server Action" action type. Server actions can include Python code. However, writing that Python code still requires developer access via Settings → Technical → Server Actions. The Studio visual builder doesn't provide a Python editor — it just links to an existing server action. For truly code-free automations, stick to the built-in action types.

How do time-based automations work exactly? +

You specify a date field on the record (e.g., date_deadline) and a delay (e.g., -1 day = 1 day before, +3 days = 3 days after). Odoo's scheduler runs every hour and checks all time-based automations. Records where the calculated date has passed since the last check will have the automation fired on them.

Can I have multiple actions in one automation? +

Yes. In Odoo 19, Studio Automations support adding multiple actions in a single automation rule. Click "Add an action" after configuring the first one. All actions run in sequence when the automation fires.

Will automations fire when records are imported via CSV? +

Yes. CSV imports create records via the ORM, so "Record Created" automations will fire for each imported record. This can cause issues (e.g., sending hundreds of emails during a bulk import). To prevent this, temporarily disable the automation before a large import, or add a condition that excludes freshly imported records.