Skip to main content

Scheduled Report Emails

Purpose​

Scheduled Report Emails generates selected PDF reports or tabular exports and queues them through Odoo email. Administrators allowlist the report or export fields; report managers configure recipients and timing. Each execution records a run so managers can distinguish queued mail, failures, empty results, and completed sends.

Before you start​

Install the package for your exact Odoo major version. The 19.0 manifest depends on Discuss/Mail (mail) and Web (web) and declares no Enterprise-only dependency. The server must also provide the Python xlsxwriter library imported by this addon. PDF output needs a working native QWeb PDF report for the chosen business model. Configure Odoo outgoing email and scheduled actions before scheduling deliveries.

This guide covers the 19.0 source-defined workflow, with targeted comparisons of other versions. No runtime execution or email delivery test was performed.

Access and roles​

A System Administrator creates report allowlists. A Scheduled Report Manager can read those allowlists, manage schedules, preview data and recipients, send tests, and retry failed runs. Schedule owners must be active managers or System Administrators with access to the schedule company.

The Scheduled Report Service role identifies the internal user whose permissions govern the report data. That user must be active, allowed in the schedule company, and have the native permissions and record access required by the target model. CSV and XLSX additionally require native Export Data permission. PDF reports can require their own groups. The service role alone does not grant access to business records.

Setup and menu​

In the Settings technical menus, open Reporting → Report Allowlists. Each company and model can have one allowlist. The administrator selects allowed PDF reports and stored export fields, with an optional lower record cap.

Managers use Reporting → Scheduled Report Delivery and Scheduled Report Runs. A schedule contains Export Fields, Recipients, Message, Timing, Safeguards, and Run History tabs. The initial global safeguards are 500 records, a 10 MiB attachment, batches of 100 records, and 30 days of run retention. A schedule cannot exceed the configured global limits or its policy's record cap.

Workflow​

  1. Create a draft schedule. Choose its company, owner, active allowlist, and service user. Select PDF, CSV, or XLSX. For PDF, choose an allowed QWeb PDF report for the model. For CSV or XLSX, add allowed export fields, labels, ordering, and supported formatting.
  2. Select the records. Enter a literal Odoo domain or select an appropriate saved filter. Domains are data expressions, not executable Python. The service user's access and the schedule company constrain the records selected. Activation stores a domain snapshot; editing the saved filter later does not automatically replace that snapshot.
  3. Set recipients and message. Check all To, CC, and BCC partner, user, and email selections. Choose a template for Scheduled Report Run. Subject and filename text support {schedule}, {company}, {date}, and {datetime}. Choose an installed language and the intended timezone.
  4. Set timing and empty-result behavior. Choose Daily, Selected Weekdays, Weekly, Monthly, or an Interval, then review Next Run (Local) after activation. For no matching records, choose Skip, Send Empty Notice, or Send Header Only. Header-only output is for CSV and XLSX.
  5. Use Preview. Inspect the normalized To, CC, and BCC list and up to five sample records. The displayed sample count is not a total result count or proof that the complete result fits the record cap. Preview does not send mail.
  6. Send a test only to approved recipients. Send Test queues real email to the schedule's configured recipients. It has no separate test-recipient override. Check the entire recipient list first, then inspect the resulting test run. Test runs do not update the recurring schedule's success or failure counters.
  7. Activate and monitor. Activation validates the configuration and calculates the next run. The supplied delivery scheduled action checks every five minutes, so the selected time is not an exact delivery guarantee. Open Run History or Scheduled Report Runs to follow the result.
  8. Pause before changing the definition. Active schedule definitions and export fields are locked. Pause, edit, preview, and activate again. A schedule with audit history cannot be deleted; pause it when no longer needed.

Practice scenario​

Fictional Northstar wants a weekly CSV of a small approved set of contact records. In an authorized test database, an administrator allowlists Contacts and only the necessary stored fields. A manager chooses an existing restricted service user, selects test contacts with a literal domain, and enters approved test recipients. Stop at Preview and verify the five-record sample and recipient list. The source-derived expected outcome is a preview limited by the service user's access. This exercise has not been executed and sends no email as written.

Troubleshooting and limitations​

  • Validation rejects the service user: check the service role, active internal-user status, company access, native read rights, and Export Data permission for tabular formats.
  • Field or domain rejected: export and sort fields must be allowlisted, stored, direct, and supported. Sensitive field names and unsafe domain operators are blocked. Relational traversal is not a general export feature.
  • Result too large: refine the domain or have an administrator review appropriate limits. Exceeding the record cap fails the run instead of silently truncating it. The attachment size limit is separate.
  • Queued remains queued: review Odoo's outgoing mail processing. A run marked Sent reflects mail processing, including the configured successful auto-delete case; it does not confirm that a recipient read the message.
  • Failed run: review its recorded error and correct the schedule or mail setup. Retry accepts failed runs and uses the schedule's current configuration, so recheck recipients and content first. Repeated production failures can create an activity for the owner; the initial threshold is three.

The catalogue offers 15.0–20.0. Earlier versions use different native view and scheduling APIs; 20.0 changes access configuration and attachment handling. Their complete workflows remain unreviewed here.

Live Test — Odoo 19 is a qualified catalogue selector, not evidence of successful mail delivery. For purchase, use the Corvus app catalogue and choose the exact version. Related: CRM First Response SLA for the CRM response process whose records you may separately allowlist for reporting.