Odoo Studio: No-Code Customization for Business Users
Odoo Studio is the no-code customization layer built directly into Odoo 19 Enterprise. It empowers business analysts, operations managers, and power users to modify forms, add custom fields, automate workflows, and create reports — all without touching a single line of Python or XML code.
For organizations that need Odoo to match their unique processes exactly, Studio bridges the gap between Odoo's standard functionality and bespoke development. Understanding what Studio can and cannot do is the first step to maximizing your Odoo 19 investment.
Key Takeaways
- Odoo Studio is available exclusively on Odoo 19 Enterprise (not Community)
- Custom fields added via Studio are stored in the database with a
x_prefix- Views modified in Studio generate standard Odoo XML that can be exported
- Automated actions in Studio support triggers, conditions, and multi-step flows
- Reports built in Studio use the same QWeb template engine as core reports
- Approval workflows can require sign-offs before state transitions occur
- All Studio customizations survive standard Odoo version upgrades
- Studio changes can be exported as a module for deployment to other instances
Activating Odoo Studio
Odoo Studio requires an active Odoo 19 Enterprise subscription with the Studio app enabled. To access it:
- Navigate to any app (e.g., Sales, CRM, Inventory)
- Click the Studio icon (pencil icon) in the top-right corner of the screen, or
- Go to Apps → Studio from the main menu
Once Studio is active, a gray editing panel appears on the right side of the screen. The current view enters edit mode, and you can start modifying it immediately.
Studio mode indicators:
- Blue dashed borders around editable elements
- A right-side panel showing field properties
- A top toolbar with tabs: Views, Fields, Automations, Reports, Approval
Deactivating Studio: Click the Close button (X) in the Studio panel. Your changes are saved automatically — Studio does not require an explicit save action for most operations.
Adding and Modifying Fields
Fields are the building blocks of any Odoo form. Studio lets you add new fields, modify existing ones, and rearrange the layout without writing code.
Adding a new field:
- Open Studio on any form view (e.g., Sales Order)
- Drag a field type from the Fields panel on the right into the form
- Give the field a label and configure its properties
- Click Save or close Studio to apply
Available field types in Studio:
| Field Type | Use Case | Storage |
|---|---|---|
| Text | Short text values | VARCHAR |
| Text Area | Long descriptions | TEXT |
| Integer | Whole numbers | INTEGER |
| Decimal | Prices, quantities | NUMERIC |
| Monetary | Currency-aware amounts | NUMERIC + currency |
| Date | Calendar dates | DATE |
| Date & Time | Timestamps | TIMESTAMP |
| Checkbox | Boolean yes/no | BOOLEAN |
| Selection | Dropdown with fixed options | VARCHAR |
| Many2one | Link to another record | INTEGER (foreign key) |
| Many2many | Multiple linked records | Junction table |
| One2many | List of child records | Defined on child model |
| Image | Photo/logo upload | BYTEA |
| File | Document attachment | BYTEA |
| HTML | Rich text editor | TEXT |
Field technical name: Every custom field gets a x_ prefix (e.g., x_customer_tier). This prefix distinguishes Studio-created fields from core Odoo fields and prevents naming conflicts during upgrades.
Modifying existing fields:
Click any existing field in Studio mode to see its properties:
- Label: change the display name without affecting the technical name
- Required: make the field mandatory for record saving
- Readonly: prevent editing in specific states using conditional expressions
- Invisible: hide the field based on conditions (e.g., only show when status is "approved")
- Help text: add a tooltip that appears when users hover over the field
Conditional visibility example:
In the field properties panel, set the Invisible condition to state != 'approved'. This hides the field on all records that are not in the "approved" state, keeping the form clean without removing the field entirely.
Modifying Views
Studio supports four primary view types: Form, List (Tree), Kanban, and Search. Each can be customized independently.
Form view customization:
- Add a group: Drag a "Group" container from the panel and drop it on the form. Groups create two-column layouts.
- Add a notebook tab: Drag a "Notebook" element to create tabbed sections for organizing related fields.
- Reorder fields: Click and drag any field to a new position within the form.
- Add a separator: Drag a "Separator" element to create visual horizontal dividers between field groups.
- Add a button: Drag a "Button" element and configure it to call a server action or open a URL.
List view customization:
In Studio, switch to the List view using the view type selector at the top. Then:
- Check/uncheck fields to show or hide columns
- Set columns as "Optional" (user can toggle them in the column chooser)
- Add conditional row decorations (e.g., red background when overdue)
- Set default sort order
Kanban view customization:
Kanban cards show a subset of record information. In Studio:
- Select which fields appear on the card
- Configure the grouping field (default is
stage_idorstate) - Enable/disable the "Quick Create" panel
- Add color coding based on field values
Search view customization:
Extend the search panel to include:
- New searchable fields
- Predefined filter buttons (e.g., "My Records", "This Month")
- Default filters applied when the view loads
- Group-by options
Creating Automated Actions
Automations in Studio replace many simple workflow customizations that previously required developer involvement. Access them via Studio → Automations.
Trigger types:
| Trigger | When It Fires |
|---|---|
| Record created | After a new record is saved |
| Record updated | When specified fields change |
| Record deleted | Before a record is deleted |
| Stage transition | When the state/stage field changes |
| Time-based | A set time before/after a date field |
| External trigger | Manually called or via API |
Creating a time-based automation:
- Click New in the Automations panel
- Set Trigger: Time-Based
- Set When: 3 days before
date_deadline - Set Filter:
state in ('submitted', 'in_progress')— only trigger for active requests - Add Action: Send Email using a selected email template
- Save and test by setting a deadline 3 days from now
Multi-step actions:
Each automation can execute multiple actions in sequence:
- Send email: Uses existing email templates
- Send SMS: Via configured SMS gateway
- Update record: Set field values on the triggering record or related records
- Create record: Automatically create a linked record (e.g., create a task when a request is submitted)
- Call a method: Execute a Python method defined on the model (requires developer knowledge)
- Add followers: Notify team members by adding them as record followers
Automation conditions:
Add a Domain Filter to restrict which records trigger the automation:
state = 'submitted' AND priority = '3' AND user_id is not set
This triggers only for urgent, unassigned submitted requests — a common escalation scenario.
Building Custom Reports
Studio's report builder generates printable PDF documents using Odoo's QWeb template engine.
Creating a new report:
- Open Studio on the model you want to report on
- Click Reports → New
- Choose a report type: External Layout (with header/footer) or Internal Layout (minimal)
- Drag fields from the panel onto the report canvas
- Add tables, totals, conditional blocks, and formatting
- Preview the PDF using a sample record
- Save and add to the Action menu
Report elements available in Studio:
- Field: Display a field value from the record
- Table: Create a grid showing One2many lines (e.g., order lines)
- Total: Sum a numeric column
- Text block: Static text, labels, section headers
- Image: Display an image field (e.g., company logo, product image)
- Conditional block: Show/hide content based on field conditions
- Sub-template: Include another report template as a section
Adding subtotals to order line tables:
In a table showing invoice lines, add a footer row with sum expressions:
{line.price_subtotal | sum} → Subtotal: $1,250.00
{tax_amount | sum} → Tax: $125.00
{amount_total} → Total: $1,375.00
Approval Workflows
Odoo 19 Studio includes an Approval module that adds multi-level sign-off requirements to any workflow.
Setting up an approval:
- Go to Studio → Approvals
- Click New Approval
- Select the Model (e.g.,
sale.order) - Select the Action that requires approval (e.g., "Confirm Sale Order")
- Define Approvers: specific users, job positions, or dynamic (e.g., manager of the requester)
- Set Approval Mode: Any (one approver sufficient) or All (all must approve)
- Enable Approval Notification to alert approvers by email
How approvals work in practice:
When a user clicks "Confirm" on a Sales Order:
- Instead of immediate confirmation, an approval request is created
- Designated approvers receive an email notification
- Approvers see a pending approval badge on the Sales Order
- Each approver clicks "Approve" or "Refuse" with an optional comment
- Once all required approvals are granted, the action executes automatically
- If refused, the requester is notified and the record returns to its previous state
Approval thresholds:
Configure approvals to trigger only above a certain value:
amount_total > 10000
This requires manager approval only for large orders, avoiding approval fatigue on routine transactions.
Exporting Studio Customizations as a Module
All Studio customizations can be exported as a standard Odoo module for deployment to staging or production instances.
Export process:
- Go to Studio → Export (top-right menu)
- Download the generated
.zipfile - The zip contains a complete Odoo module with:
- Model definitions (Python)
- View definitions (XML)
- Access control lists
- Automation rules
- Report templates
- Install the exported module on the target instance
Why export matters:
- Version control: Store customizations in Git alongside custom code
- Staging → Production: Test changes in staging before applying to production
- Multiple instances: Apply the same customizations to subsidiaries or test databases
- Backup: Customizations survive if the Studio metadata is accidentally removed
Studio Limitations
Studio is powerful but has boundaries. Understanding them prevents frustration:
What Studio cannot do without developer support:
- Complex computed fields requiring Python business logic
- Custom widgets (JavaScript UI components)
- Integrations with external APIs
- Override of core Python methods
- Complex Many2many domain filters involving cross-model joins
- Database-level performance optimizations (indexes, partitioning)
What requires a hybrid approach:
- Start with Studio for the data model and basic views
- Hand off to a developer for complex automations, custom widgets, or performance-critical methods
- Re-import the developer's additions as part of the Studio module
Frequently Asked Questions
Will Studio customizations survive an Odoo version upgrade?
Yes. Odoo officially supports Studio customizations through version upgrades. Fields with x_ prefix and views generated by Studio are upgrade-safe. However, if Odoo adds a core field with the same name in a future version, a conflict resolution step is needed during migration.
Can Studio customizations be applied to both Enterprise and Community editions?
No. Studio is an exclusive Odoo Enterprise feature. The exported module from Studio can be installed on Community if it doesn't depend on Enterprise-only features, but the Studio editor itself requires Enterprise.
Is there a limit to how many custom fields I can add via Studio?
There is no hard limit, but practical limits apply. PostgreSQL tables with hundreds of columns experience performance degradation. A well-designed module uses related models (One2many/Many2many) rather than adding unlimited fields to a single table. If you need more than 30-40 custom fields on a model, consider whether a new model makes more architectural sense.
Can multiple developers work on Studio customizations simultaneously?
Studio is designed for sequential editing. Concurrent Studio sessions on the same view can cause conflicts. Best practice: export Studio customizations to a module, use Git for version control, and use a code-based development workflow for team environments. Reserve Studio for individual power users or single administrators.
How do automations in Studio differ from automated actions in Settings → Technical?
They are the same underlying system (ir.actions.server). Studio provides a visual interface for creating the same objects that developers create manually in Technical → Automated Actions. Studio-created automations appear in the Technical list and vice versa. The difference is purely in the creation experience — Studio is visual, Technical is form-based.
Next Steps
Odoo Studio unlocks significant customization power without developer involvement, but the most impactful implementations combine Studio's accessibility with strategic developer extensions for complex logic.
ECOSIRE's Odoo customization team helps organizations design their Studio strategy — identifying what to build in Studio, what requires custom Python modules, and how to maintain customizations cleanly across upgrades. We also train your team to use Studio effectively.
Contact ECOSIRE for Odoo Studio Training and Customization Support →
Whether you need Studio training for your power users or developer support for complex customizations, our team delivers solutions that fit your organization's technical capabilities and budget.
Written by
ECOSIRE TeamTechnical Writing
The ECOSIRE technical writing team covers Odoo ERP, Shopify eCommerce, AI agents, Power BI analytics, GoHighLevel automation, and enterprise software best practices. Our guides help businesses make informed technology decisions.
ECOSIRE
Transform Your Business with Odoo ERP
Expert Odoo implementation, customization, and support to streamline your operations.
Related Articles
Odoo vs NetSuite Mid-Market Comparison: Complete Buyer's Guide 2026
Odoo vs NetSuite for mid-market in 2026: feature-by-feature scoring, 5-year TCO for 50 users, implementation timelines, industry fit, and two-way migration guidance.
Tally to Odoo Migration 2026: Step-by-Step Guide for Indian SMBs
Tally to Odoo migration playbook for Indian SMBs in 2026: data model mapping, 12-step plan, GST handling, COA translation, parallel run, UAT, and cutover.
AI-Powered Customer Segmentation: From RFM to Predictive Clustering
Learn how AI transforms customer segmentation from static RFM analysis to dynamic predictive clustering. Implementation guide with Python, Odoo, and real ROI data.