Building Custom Odoo Apps Without Code: A Practical Guide to Odoo Studio
How Hong Kong SMEs use Odoo Studio to build custom apps with drag-and-drop — covering models, fields, views, automation, access rights, reports, and when to choose custom development instead.

Every business runs on workflows that no off-the-shelf software was written to handle. At APAA, this is the gap Hong Kong SMEs hit most often: the standard module covers ninety percent of what they need, and the last ten percent — the part that is unique to their business — is precisely what software cannot do. The traditional answer, custom development, is expensive, slow, and needs ongoing maintenance. For a lean SME, that is a hard cost to justify.
Odoo Studio sits in the middle ground. It hands app development to the business users themselves through a visual drag-and-drop interface. You can build custom data models, design forms, set up automation rules, and generate reports — all without writing a single line of code. This guide covers what you need to know, from creating a basic app through to automation, access rights, and reporting.
What Is Odoo Studio
Odoo Studio is a visual development environment built into the Odoo platform, aimed squarely at non-technical users who need to tailor their ERP without hiring a developer.
With Studio, you can:
- create entirely new applications from scratch
- add, remove, or modify fields on any Odoo module
- design form, list, kanban, calendar, and graph views
- configure automation rules and scheduled actions
- build custom print reports and documents
To open it, click the Studio icon — the gear and pencil — in the top-right corner of any Odoo screen. Note one prerequisite up front: Studio is an Odoo Enterprise feature; the Community edition does not include it.
Odoo Studio vs Custom Development
The honest question is not "Studio or code?" but "which one for this particular job?" This comparison frames the decision:
| Criteria | Odoo Studio | Custom Development |
|---|---|---|
| Technical skills required | No | Yes |
| Build time | Hours to days | Weeks to months |
| Maintenance cost | Low (self-service) | High (developer needed) |
| Flexibility | Moderate (built-in components) | Full (unlimited) |
| Upgrade compatibility | High (officially supported) | Requires testing |
| Best for | Field customisation, simple workflows | Complex logic, API integrations |
For the bulk of day-to-day SME requirements, Studio is enough. Custom development only becomes necessary when you hit complex business logic or third-party API integrations.
The Six Core Capabilities
Studio is organised around six capabilities that together cover the whole lifecycle of building an app.
1. App Builder
Create a brand-new Odoo application from scratch. The system generates a data model, menu items, and basic views for you — you only define the app name and the type of object it manages.
2. Field Editor
Add, remove, or modify fields on any form or list view. It supports over 15 field types, including text, number, date, selection, and relational fields.
3. View Designer
Customise form layouts, list columns, kanban card content, calendar views, and chart analytics — with every change previewing in real time.
4. Automation Engine
Set condition-based rules such as "notify the manager when an order exceeds HK$50,000." It supports trigger conditions, scheduled actions, and server actions.
5. Access Control
Control read, write, create, and delete permissions by user group, so sensitive data is only reachable by the people who should have it.
6. Report Builder
Design print reports through drag-and-drop — invoices, quotations, delivery slips, and custom documents, all carrying your company branding.
Building a Custom App From Scratch
The fastest way to understand Studio is to build something. We will walk through a "Customer Complaints" app from start to finish.
Step 1: Create a New App
- Click the Studio icon in the top-right corner
- Select "New App"
- Enter the app name: "Customer Complaints"
- Choose an app icon and colour
- Define the managed object name: "Complaint"
- Select the suggested features: picture, responsible person, stages
The system generates a basic data model, menu, and views automatically.
Step 2: Add Custom Fields
In the form view, drag new fields in from the left panel:
- Complaint Type (Selection): Product Quality, Delivery Delay, Service Attitude, Billing Error
- Customer (Many2one): linked to the Contacts model
- Complaint Date (Date): when the complaint was received
- Priority (Priority): Low, Medium, High, Urgent
- Resolution Notes (HTML): detailed text documenting how it was resolved
Step 3: Configure Stages
Set up the complaint-handling pipeline in the kanban view:
- New
- Under Investigation
- In Progress
- Awaiting Customer Reply
- Resolved
- Closed
Give each stage a colour tag so the team can read complaint status at a glance.
Step 4: Set Up Automation
Layer on automation rules to take the manual work out of the process:
- when a new complaint is created, auto-assign it to the on-duty service agent
- if a complaint sits in "Under Investigation" for more than 3 days, send a reminder
- when a complaint is marked "Resolved," auto-send a satisfaction survey email
After these four steps, you have a working customer complaint management system — built without a developer.
Field Types Explained
Choosing the right field type is the difference between clean, usable data and a mess you fight with later.
Basic Fields
| Field Type | Purpose | Example |
|---|---|---|
| Char | Short text input | Customer name, phone number |
| Text | Long text input | Notes, descriptions |
| HTML | Formatted text | Email content, detailed explanations |
| Integer | Whole numbers | Quantity, floor number |
| Float | Decimal numbers | Weight, area |
| Monetary | Currency amounts | Quotation, cost |
| Date | Date selection | Due date, start date |
| Boolean | Yes/No toggle | Confirmed, paid |
Selection Fields
- Selection: a dropdown for fixed options like status or type
- Priority: a star rating for importance or urgency
- Tags: multi-select labels for classification
Relational Fields
- Many2one: links to a single record in another model (for example, "Responsible" links to Employee)
- One2many: displays a list of related records (for example, the order lines on a sales order)
- Many2many: a bidirectional multi-link (for example, products and tags)
One gotcha with relational fields: the target model has to exist already. If you want to link to data in a custom app, build that app first, then set up the relation.
Designing Views: Form, List, and Kanban
Studio supports several view types, each suited to a different job.
Form View
Form views are for viewing and editing one record at a time. Design points worth getting right:
- Tab pages: group related fields into tabs (such as "Basic Info," "Financial," "Notes")
- Column layout: use drag-and-drop to arrange fields across two columns
- Status bar: show the record's current processing status across the top
- Smart buttons: add shortcut buttons that jump to related records
List View
List views are for browsing many records at once. Design points:
- show only the 5-8 most important fields
- enable sorting and grouping
- set a default sort field and direction
- add optional columns users can switch on themselves
Kanban View
Kanban views are for pipeline-style workflow. Design points:
- put 3-4 key fields on each card
- enable colour coding for quick visual identification
- give stages meaningful names
- allow drag-and-drop between stages
Other Views
- Calendar view: records laid out by date, for scheduling and appointments
- Graph view: bar, pie, and line charts for analysis
- Pivot table: multi-dimensional cross-analysis for revenue and inventory reports
Automation Rules
Automation is one of Studio's most powerful features, and the one that pays back the fastest by cutting repetitive manual tasks.
Trigger Types
| Trigger | Description | Example |
|---|---|---|
| On Creation | Fires when a record is created | New order auto-notifies the warehouse |
| On Update | Fires when specific fields change | Status changed to "Confirmed" sends an email |
| On Deletion | Fires when a record is deleted | Logs the deletion to an audit trail |
| Based on Condition | Fires when field values match criteria | Overdue by 7 days triggers a reminder |
| Scheduled | Runs on a schedule | Daily 9 AM to-do list generation |
Available Actions
A rule can carry out any of these:
- Update record: auto-set field values (assign a responsible person, change a status)
- Create record: auto-create related records in other models
- Send email: send notification emails from predefined templates
- Add activity: create a to-do item for the responsible person
- Execute code: advanced users can run Python code
Practical Example: Auto Follow-Up
A follow-up rule, end to end:
- Trigger: a quotation created 3 days ago, status still "Sent"
- Action: auto-send a follow-up email to the customer
- Additional action: create a "Call to follow up" activity for the salesperson
This single rule ensures every quotation gets a timely nudge, without anyone having to track it by hand.
Access Rights Management
Once an app exists, you need to control who can touch which data. Studio handles this at the group level.
Permission Types
| Permission | Description |
|---|---|
| Read | View records |
| Write | Edit records |
| Create | Add new records |
| Delete | Remove records |
Configuration Steps
- Open the target app in Studio
- Click the "Access Rights" menu
- Select a user group (such as "Sales / User" or "Sales / Manager")
- Tick the appropriate read, write, create, and delete permissions for each group
Common Configurations
- Service agents: can read and create complaint records, but not delete
- Service managers: full permissions, including delete and export
- Sales department: can only read complaints tied to their own customers
Set up properly, access control protects your data without getting in the way of daily work.
Report Builder
Studio's report builder lets you customise printed documents without ever touching QWeb template code.
Document Types You Can Customise
- invoices and receipts
- quotations and contracts
- delivery notes and packing slips
- custom business reports
Report Design Elements
- Company logo and brand colours: keep your documents consistently branded
- Header and footer: company info, page numbers, dates
- Dynamic data fields: auto-populated from the record's values
- Conditional display: show or hide sections depending on the data
- Tables: line items with subtotals and grand totals
Design Tips
- keep layouts clean — go easy on decorative elements
- put the important information (amounts, dates, reference numbers) where the eye lands first
- include payment terms and contact details in the footer
- preview with varying data volumes so the layout still holds when content overflows
Email Gateway: Create Records on the Go
Studio supports an email gateway that lets people create records simply by sending an email — a real win for teams who spend their days out of the office.
Setup Steps
- Enable the "Chatter" widget on the form view
- Configure an email alias in Studio settings (such as complaints@yourcompany.com)
- Send an email to that address, and the system creates a new record automatically
How It Works
- the email subject becomes the record name
- the email body becomes a note on the record
- attachments are uploaded to the record automatically
- follow-up replies are threaded under the same record
For a field team, this means submitting data without ever logging in — a meaningful lift in how much gets captured and how quickly.
Practical Tips for Hong Kong SMEs
Drawn from real implementation experience, here is how to get the most out of Studio.
Start Small
Resist the urge to build a complex app on day one. Pick a simple process — quotation tracking, sample management — build a basic version in Studio, let the team use it, then expand from there.
Lean on Existing Modules
Before building a new app from scratch, check whether Odoo already has a module close to what you need. Often, adding a few custom fields to an existing module beats starting from zero. For example:
- Need to track renovation project progress? Add custom fields to the "Project" module.
- Need to manage membership expiry dates? Add a date field and an automation reminder to the "Contacts" model.
Naming Conventions
Keep your field naming disciplined:
- field labels in your local language, technical names in lowercase English with underscores (such as x_complaint_type)
- arrange selection-field options in a logical order
- avoid creating duplicate fields that do roughly the same job
Back Up Regularly
Studio changes take effect immediately in the production environment, so:
- test major changes in a staging environment first
- document every change along with its purpose
- keep regular database backups
Consider Upgrade Impact
Studio customisations usually migrate automatically across Odoo version upgrades. Even so:
- avoid modifying the core fields of standard Odoo modules
- custom fields use the
x_prefix (Studio handles this for you) - always validate in a test environment before upgrading
Common Questions
Is Odoo Studio included in every Odoo plan?
No. Studio is only in the Enterprise edition; the Community edition does not include it. You need an Odoo Enterprise subscription to use it.
Will Studio-built apps slow the system down?
Generally not. Studio apps use the same underlying architecture as standard modules. That said, if you add a large number of computed fields or complex automation rules, keep an eye on response times.
Can I edit apps another Studio user created?
Yes. Any app built through Studio can be modified by anyone with Studio access rights. Keep an internal change log so team members do not overwrite each other's configurations.
Can Studio changes be undone?
There is no automatic undo — every change takes effect immediately. Document existing configurations before you change them, or test in staging first, and always back up the database before a major change.
When should I choose custom development over Studio?
Reach for custom development when you need:
- third-party API integrations (payment gateways, logistics APIs)
- complex business logic (dynamic pricing formulas, for instance)
- substantial changes to how a core module behaves
- a highly customised frontend interface
The Takeaway
Odoo Studio gives Hong Kong SMEs a genuinely practical low-code tool. It lets business users build and adjust applications on their own, without depending on an outside development team.
The points worth holding onto:
- Studio is ideal for field customisation, simple workflow automation, and report design
- start with small apps and grow them gradually
- use automation rules to remove repetitive manual tasks
- configure access rights properly to keep data secure
- complex requirements still call for custom development
If you are weighing up customising Odoo to fit your business processes, Studio is a low-risk place to start. And if you would like a second opinion on where Studio ends and custom development should begin, talk to the APAA team — we will help you draw that line for your specific case.