Customer Satisfaction (CSAT) ratings in Odoo Helpdesk are triggered automatically when a ticket moves to a resolved stage. The customer receives an email with three emoji buttons (happy, neutral, unhappy) and optionally a text comment field. Results appear on the helpdesk dashboard and per-ticket timeline.
Enabling Customer Ratings on a Team#
Helpdesk → Configuration → Helpdesk Teams → [Team] → Customer Ratings
Options:
- No rating - disabled
- Rating based on ticket activity - request sent at a configurable interval
- Rating when a ticket is closed - request sent when the ticket reaches a Closing Stage
Stage Configuration#
Helpdesk → Configuration → Stages → [Closed Stage]
- Check Closing Stage
- Optionally set Send Rating Request timing: immediately or after N days
Rating Request Email#
Odoo sends the Helpdesk: Rating Email template containing:
- Ticket summary (subject, agent, close date)
- Three inline emoji links (green smiley, yellow neutral, red sad)
Clicking an emoji opens a minimal page for an optional comment. No portal login required.
Viewing Ratings#
- Per ticket: Rating appears in the ticket chatter once the customer responds
- Per team dashboard: Average CSAT shown as percentage (happy / total rated)
- Report: Helpdesk → Reporting → Customer Ratings - filters by team, agent, period, value
Programmatic Access#
from datetime import datetime, timedelta
cutoff = datetime.now() - timedelta(days=30)
ratings = env['rating.rating'].search([
('res_model', '=', 'helpdesk.ticket'),
('team_id', '=', team.id),
('write_date', '>=', cutoff),
])
satisfied = sum(1 for r in ratings if r.rating >= 5)
total_rated = sum(1 for r in ratings if r.consumed)
csat = (satisfied / total_rated * 100) if total_rated else 0Rating values: 1 = dissatisfied, 3 = neutral, 5 = satisfied. consumed is True when the customer clicked the link.
Common Mistakes#
- Closing Stage not checked - the rating trigger does not fire without the Closing Stage flag even if the team has ratings enabled
- Customer never receives email - check the helpdesk alias domain and outgoing mail server
- Multiple rating emails per ticket - re-opening and re-closing a ticket fires a second request; add a custom constraint to rate only once per ticket if needed

