If your delivery or onboarding team needs a task every time a deal is won, Odoo can create that task in a chosen project the moment a sales order is confirmed. This guide sets it up with a service product and a default quotation template, using only the standard Sales and Project apps and no custom code. The steps were verified on Odoo 19.
Before you start
- Version: Odoo 19, Community or Enterprise. The feature uses standard apps, so it should behave the same on Odoo Online and Odoo.sh. Odoo 20 differences are listed at the end.
- Apps: Sales and Project must both be installed. Odoo then links them automatically, which adds the task options to the product form.
- Access: changing the Sales settings needs the Administrator role in Settings. Creating quotation templates needs Administrator rights in Sales. Creating products needs the Create right for Products, which the Settings administrator already has. Turning a task into a template needs Administrator rights in Project.
- Project: the delivery or onboarding project should already exist.
- Terms: a service product is a product you sell that represents work rather than physical goods. A sales order line is one row on a quotation or order. A quotation template is a saved set of lines that Odoo copies onto new quotations.
How the automatic task works
Odoo creates these tasks from sales order lines. When an order is confirmed, Odoo checks each line. If a line holds a service product whose Create on Order setting is Task, Odoo creates one task for that line in the project chosen on the product.
By default, the task is named after the order and the product, for example "S00042 - Onboarding". It carries the order's customer, it stays linked to the sales order line, and its chatter (the message log at the side or bottom of every record) notes which order created it. If the product has no project set, Odoo uses the project selected on the quotation instead. If neither is set, confirmation stops with an error asking for a project.
Set up the product and the default template
Step 1: create the onboarding product
- Open the Sales app, then go to Products > Products and click New.
- Name the product, for example "Onboarding".
- Keep the Sales checkbox under the name ticked. The task options are hidden on products that cannot be sold.
- On the General Information tab, set Product Type to Service. The Create on Order field now appears.
- Set Create on Order to Task. A Project field now appears below it.
- In Project, choose the delivery team's project.
- Set the Sales Price to 0 if the customer should not pay for this line, then save.
Create on Order has two other project options. Project & Task creates a new project for each order with a task per order line, and Project creates an empty project for each order. Use them only if every customer should get a project of their own.
Step 2: put the product on every quotation
A task is only created for orders that contain the product, so make it part of the default quotation template.
- Open the Sales app, then go to Configuration > Settings.
- Tick Quotation Templates. A Default Template field appears under it. Save.
- Go to Configuration > Sales Orders > Quotation Templates, a menu that appears once the setting is on, and click New.
- Give the template a name. On the Lines tab, click Add a product, add the onboarding product with a quantity of 1, and add any other lines you always quote. Save.
- Go back to Configuration > Settings, select the new template in Default Template, and save.
Every new quotation now opens with this template and the onboarding line in place.
Check that it worked
- In the Sales app, go to Orders > Quotations and click New.
- Choose a customer. The onboarding line should already be on the quotation.
- Click Confirm. The quotation becomes a sales order, and users with access to Project see a smart button (a counter at the top of the record) showing Projects and Tasks.
- Open the Project app and open the delivery project. A new task such as "S00043 - Onboarding" should be there with the order's customer on it.
If confirmation stops with a missing-project error, the product's Project field is empty and none was chosen on the quotation's Other Info tab.
Pre-fill the task with a task template
By default, the task is created with no one assigned, and its description only holds any extra text from the order line. A task template, which is a task saved as a reusable pattern, can carry a standard checklist into every new task.
- Open the Project app and open the delivery project. Create a task with the description, sub-tasks and assignees that every onboarding should start with.
- With the task open, open the Actions menu (the gear icon) and choose Convert to Template.
- Open the onboarding product again. Because a project is chosen, a Task Template field now shows below Project. Select the template and save.
Each confirmed order then creates a copy of the template, named after the order and the template, linked to the order and set to the order's customer. The template's active assignees and active sub-tasks are copied with it.
Why an automation rule is not enough
An automation rule, which is Odoo's tool for running an action when a record changes, looks like the obvious choice, but its no-code record actions fall short. Create Record only sets the new record's name, so it cannot place the task in a chosen project or link it to the customer. Duplicate Record copies one fixed task, but the copy keeps the original's name with "(copy)" added and keeps the original task's customer rather than the customer on the order. Doing this properly in a rule requires Execute Code, which is custom code.
Pitfalls and version differences
- The quantity must be above zero. Odoo skips task creation for a line with a quantity of 0. To keep the line free for the customer, set the price to 0 instead.
- Reconfirming does not duplicate the task. If an order is cancelled, set back to quotation and confirmed again, the line keeps its existing task.
- Lines added later still count. Adding the product to a confirmed order creates the task straight away and posts a link to it on the order.
- Website orders skip the default template. Orders placed through eCommerce do not receive the default quotation template, so they will not get the onboarding line automatically.
- The template only pre-fills the quotation. If a salesperson deletes the line, or picks a different template (which replaces all lines), no task is created.
- Multi-company databases. The product's Project is stored per company, so each company that sells the product needs its own project selected on it.
- Odoo 20. In the Odoo 20 source, the product settings and the task creation on confirmation work the same way. The Default Template setting is not present there, so the template has to be chosen on each quotation. Tasks created from a task template also add the customer's company name to the task name.
Steps verified on Odoo 19. Menus and labels can differ on other versions.
Common questions
Can Odoo create a task automatically when a sales order is confirmed?
Yes. A service product with Create on Order set to Task and a project selected creates a task in that project whenever an order containing the product is confirmed. Adding that product to the default quotation template puts it on every new quotation.
Who is assigned to a task that Odoo creates from a sales order?
By default, nobody: Odoo creates the task unassigned. If the product uses a task template, the template's active assignees are copied onto each new task.
Will confirming the same sales order again create a second task?
No. A sales order line that already has a task keeps it, so cancelling, resetting and reconfirming the order does not create a duplicate task.
What happens if the task-creating product has no project set?
In Odoo 19, Odoo uses the project selected in the Project field on the quotation's Other Info tab. If neither the product nor the quotation has a project, confirmation stops with an error asking for one.
Talk to the team.
If you are setting this up, or Odoo is not behaving the way this guide describes, book a 30-minute call. We will look at your configuration and tell you what it needs. Calgary studio, in-house team, no offshore handoffs.
Book the call →