Odoo Helpdesk is often treated as an afterthought during an ERP implementation - configured in the last week before go-live, with default settings left in place. That approach produces a support workflow that doesn't match how the team actually works, SLAs that are either impossible or trivially met, and a customer portal experience that confuses rather than helps. This guide covers the decisions that matter and the gotchas that surface in the first month of operation.
The data model#
The central record is helpdesk.ticket. Key fields:
| Field | Purpose |
|---|---|
team_id | Helpdesk team (routes to a queue and inbox) |
user_id | Assigned agent |
partner_id | Customer contact (res.partner) |
stage_id | Current stage in the team's Kanban pipeline |
priority | 0–3 stars; used in SLA and reporting |
ticket_type_id | Category of issue (bug, question, feature request) |
sla_ids | Many2many of applicable SLA policies |
sla_deadline | Earliest deadline across all applicable SLAs |
Teams and stages#
Helpdesk teams (helpdesk.team) are independent support queues. Each team has its own:
- Stage pipeline (Kanban columns specific to that team)
- SLA policies
- Assignment method
- Email alias for ticket creation
Stages are not global - a stage named "In Progress" in Team A is a different record from "In Progress" in Team B. This lets each team define its own workflow without affecting others. The trade-off: consolidated reporting across teams requires care. Reports use stage names, not a normalized status field.
Ticket types#
Ticket types (helpdesk.ticket.type) are optional classification labels. They have no workflow effect by default - they're reporting dimensions. If your SLA policies need to vary by ticket type (bugs get a 4-hour first response, feature requests get 5 days), you'll need either separate teams or custom SLA conditions.
Email alias and channel creation#
Every Helpdesk team can have an email alias (e.g., support@yourcompany.com). Inbound emails to that address create tickets automatically. The email subject becomes the ticket name; the body becomes the first message in the ticket chatter.
Configuration: Helpdesk → Configuration → Teams → [your team] → Email Alias.
Odoo also supports:
- Live chat - a live chat channel can be configured to create tickets from chat conversations. Helpdesk → Configuration → Teams → Live Chat.
- Website form - a contact form widget that creates tickets directly from the website.
- Customer portal - logged-in customers can create and track their own tickets.
For multi-brand operations where different email addresses should go to different teams, configure one alias per team. The incoming mail server must route all alias domains to the same Odoo instance.
SLA policies#
SLAs (helpdesk.sla) define a time limit for reaching a specific stage, applied to tickets that match certain criteria.
Each SLA policy has:
| Setting | Description |
|---|---|
| Team | Which team this SLA applies to |
| Ticket type | Optional filter; empty = all types |
| Minimum priority | Star rating threshold |
| Time to reach stage | Hours within which the ticket must reach the target stage |
| Target stage | The stage the ticket must reach to satisfy the SLA |
Working hours vs calendar hours. SLA time is measured against the team's configured working hours. A 4-hour SLA on a team with a 9–5 Monday–Friday schedule means the 4 hours count only during business hours. A ticket created at 4 PM Friday has until Tuesday morning to satisfy a 4-hour SLA - a fact that surprises teams who expected 24/7 measurement.
SLA breach tracking#
The sla_deadline field on the ticket is the earliest deadline across all applicable SLAs. Odoo colors tickets in the list view: green (within SLA), red (breached), orange (approaching). The Helpdesk dashboard shows the current SLA compliance rate.
SLA breach notifications are handled by a cron job (helpdesk.ir_cron_sla_mail). The cron runs hourly by default. If you need faster breach detection (e.g., 15-minute notification for critical tickets), adjust the cron schedule - but be aware that this adds server load.
Assignment methods#
Teams support three assignment methods:
Manual - tickets are unassigned until an agent picks them up or a manager assigns them. Best for small teams where agents self-organize.
Random - tickets are distributed randomly across team members marked as available. Simple but doesn't account for agent load.
Balanced - tickets are assigned to the team member with the fewest open tickets. More equitable for consistent volume. Note that "fewest open" counts all non-closed tickets, not active workload - an agent on vacation with 10 open tickets will still receive assignments.
For shift-based support, none of the built-in methods account for schedules. The standard workaround is to remove agents from the team during off-shift hours and add them back at shift start.
Escalation and merging#
Escalation in Odoo Helpdesk means changing the team or stage. There is no dedicated escalation button - agents use the Kanban card or form view to reassign team or move stage. If you want a formal escalation workflow with notifications and tracking, you need either a custom stage (e.g., "Escalated") with specific automation rules, or a custom module.
Merging tickets combines two duplicate tickets into one. In the list view, select two or more tickets and use Action → Merge Tickets. The primary ticket keeps its ID and chatter history; the secondary ticket's messages are appended. The secondary ticket is archived (not deleted). This is irreversible - there is no split operation.
Customer portal#
The customer portal lets customers:
- Create tickets without logging in (if the team's website form is public)
- View all their tickets and their statuses
- Add messages to existing tickets
- Close tickets when satisfied
Portal access requires a contact with a portal user account. B2B customers with multiple contacts can share a ticket queue if contacts are linked to the same company (partner_id.parent_id).
The portal URL is /my/tickets. Customizing the portal appearance requires overriding the helpdesk.ticket_form_page and helpdesk.my_tickets QWeb templates. Avoid modifying the base templates directly - inherit and override in a custom module.
Integration with CRM and invoicing#
CRM - Helpdesk tickets can be converted to CRM leads/opportunities. Useful when a support ticket reveals an upsell opportunity. In the ticket form, use Action → Convert to Lead.
Timesheets - If the Timesheets app is installed and the team has timesheet logging enabled, agents can log time directly on tickets. Logged time feeds into the project/analytic account for billing. This is the foundation for time-and-materials support contracts.
Invoicing - Tickets can be linked to a sale order. When timesheet billing is configured, validated timesheets on a ticket generate invoiceable lines on the linked sale order. The flow: ticket → timesheet → sale order → invoice. To invoice support work, you must link the ticket to a sale order at creation time (or add the link before closing).
Common mistakes#
Stages not marked as closed. A stage is "closed" only if the Closing checkbox is set on the stage. Without it, tickets in that stage still count as open in SLA and dashboard metrics. Check every end-state stage.
SLA policies on teams with no working hours. If you don't configure working hours on the team, SLA deadlines use a 24/7 calendar. A 4-hour SLA will literally mean 4 wall-clock hours, including 3 AM.
Email alias domain not configured. If the catchall domain is not set (Settings → Technical → Outgoing mail → Alias Domain), Odoo cannot route inbound emails to the correct team. Symptoms: replies go to a black hole; ticket chatter doesn't update when customers reply.
Merging tickets losing the customer context. After a merge, the resulting ticket keeps the partner of the primary ticket. If you merge ticket A (partner: Company) with ticket B (partner: specific contact), verify the final partner is correct before closing.
For customer-facing pricing and contract setup that helpdesk tickets may need to reference, see the purchase workflow guide. For billing time on support tickets, see the project management and timesheets guide.

