Ir al contenido

 docs

Try Odoo for FREE

EN 

Odoo 18 

CRM

Odoo CRM helps you organize your sales activities: track leads, close opportunities and get accurate forecasts. Keep opportunities organized with the pipeline and manage your day-to-day activities with meetings and next activities.

 See also

 Edit on GitHub

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Lost opportunities

Not every opportunity results in a successful sale. To keep the pipeline up-to-date, lost opportunities need to be identified. Specifying why an opportunity was lost helps identify recurring issues, reveal coaching opportunities, and can assist with improving overall sales strategy.

 Note

Merging lost opportunities with active ones will pull them back into the pipeline.

Mark an opportunity as lost

To mark an opportunity as lost, first open the CRM app, and then select an opportunity from the pipeline by clicking on its corresponding Kanban card. Doing so reveals that opportunity’s detail form.

Then, click Lost, located at the top of the opportunity’s detail form.

This opens the Mark Lost pop-up window. From the Lost Reason drop-down menu, choose an existing lost reason. If no applicable reason is available, then create a new one by entering it into the Lost Reason field, and then clicking Create.

Additional notes and comments can be added below the lost reason in the designated Closing Note field.

 Tip

Neither the Lost Reason field, nor the Closing Note field, on the Mark Lost pop-up window are required. However, it is recommended to include this information for the sake of traceability, accountability, and reporting purposes.

When all the desired information has been entered in the Mark Lost pop-up window, click Mark as Lost.

After clicking Mark as Lost, a red Lost banner is added to the upper-right corner of the opportunity.

 Note

To mark an inactive (archived) opportunity as lost, set the Probability field to 0 percent.

Create/edit lost reasons

To create a new lost reason, or edit an existing one, navigate to CRM app ‣ Configuration ‣ Lost Reasons.

To edit an existing lost reason, click the reason to be edited to highlight it. From here, change the selected lost reason by editing the Description field.

To create a new lost reason, click New in the upper-left corner of the Lost Reasons page. Then, type the new lost reason in the Description field.

View lost opportunities

To retrieve lost opportunities, go CRM app ‣ Sales ‣ My Pipeline, then click on the search bar at the top of the page, and then remove all of the default filters.

Open the Filters drop-down menu by clicking the  (dropdown) icon to the right of the search bar to open the drop-down menu containing Filters, Group By, and Favorites options, designated into respective columns.

Select the Lost option from the Filters section. Upon selecting Lost, only the opportunities marked as Lost appear on the Pipeline page.

Sort opportunities by lost reason

To filter opportunities by a specific lost reason, click the  (dropdown) icon to the right of the search bar again to open the drop-down menu. In addition to the Lost filter, under the Filters column, click Add Custom Filter, which opens an Add Custom Filter pop-up window.

On the Add Custom Filter pop-up window, click in the first field and type Lost Reason in the search bar, or scroll to search through the list to locate it. Then, click into the next field, and select = from the drop-down menu. Click into the third field, and then select a lost reason from the drop-down menu. Finally, click Add.

 Tip

To view results for more than one lost reason, select the operator is in in the second field of the custom filter in the Add Custom Filter pop-up window. Choosing this operator makes it possible to choose multiple lost reasons in the third field.

Restore lost opportunities

To restore a lost opportunity, open the CRM app to reveal the Pipeline dashboard. Or, navigate to CRM app ‣ Sales ‣ My Pipeline. From here, click the  (dropdown) icon to the right of the search bar to open the drop-down menu that contains Filters, Group By, and Favorites columns.

Under the Filters column, select Lost. Doing so reveals all the lost opportunities on the Pipeline page.

 Tip

To see all opportunities in the database, remove the default My Pipeline filter from the search bar.

From the lost opportunity’s detail form, click Restore in the upper-left corner. Doing so removes the red Lost banner from the opportunity form, signifying the opportunity has been restored.

Restore multiple opportunities at once

To restore multiple opportunities at once, open the dashboard mega menu by clicking the  (dropdown) icon (to the right of the search bar) and select the default Lost option located under the left-side Filters column.

Next, select the list view option, represented by the  (list) icon in the upper-right corner. Doing so places all the opportunities from the Pipeline page in a list view. With the list view chosen, select the checkbox to the left of each opportunity to be restored.

Once the desired opportunities have been selected, click the  Actions drop-down menu at the top of the Pipeline page. From the  (Actions) drop-down menu, select Unarchive.

Doing so removes those selected opportunities from the Pipeline page because they no longer fit the Lost filter criteria. Delete the Lost filter from the search bar to reveal these newly-restored opportunities.

Manage lost leads

If Leads are enabled on a database, then they can be marked as lost in the same manner as opportunities. Leads use the same lost reasons as opportunities.

 Note

To enable leads, navigate to CRM app ‣ Configuration ‣ Settings and check the Leads checkbox. This adds a new Leads menu to the header menu bar at the top of the page.

Mark a lead as lost

To mark a lead as lost, navigate to CRM app ‣ Leads, and select a lead from the list. Doing so reveals that lead’s detail form. Then, click Lost, located at the top of the lead’s detail form.

This opens the Mark Lost pop-up window. From the Lost Reason drop-down menu, choose an existing lost reason. If no applicable reason is available, then create a new one by entering it into the Lost Reason field, and selecting Create.

Additional notes and comments can be added below the lost reason designated in the Closing Note field.

When all the desired information has been entered in the Mark Lost pop-up window, click Mark as Lost.

Restore lost leads

To restore a lost lead, navigate to CRM app ‣ Leads, and then click the  (dropdown) icon to the right of the search bar to open the drop-down menu that contains the Filters, Group By, and Favorites columns.

Under the Filters column, select Lost. Doing so reveals all the lost leads on the Leads page.

Then, click on the desired lost lead to restore, which opens that lead’s detail form.

From the lost lead’s detail form, click Restore in the upper-left corner. Doing so removes the red Lost banner from the lead form, signifying the lead has been restored.

Restore multiple leads at once

To restore multiple leads at once, navigate to CRM app ‣ Leads, open the Filters drop-down menu, and select the Lost option. Select the checkbox to the left of each lead to be restored.

Once the desired leads have been selected, click the  (Actions) drop-down menu at the top of the Leads page. From the  (Actions) drop-down menu, select Unarchive.

Doing so removes those selected leads from the Leads page because they no longer fit the Lost filter criteria. Delete the Lost filter from the search bar to reveal these newly-restored leads.

 See also

Pipeline Analysis

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Merge similar leads and opportunities

Odoo automatically detects similar leads and opportunities within the CRM app. Identifying these duplicated records allows them to be merged without losing any information in the process. Not only does this help keep the pipeline organized, but it also prevents customers from being contacted by more than one salesperson.

 Note

When merging opportunities, no information is lost. Data from the other opportunity is logged in the chatter, and the information fields, for reference.

Identify similar leads and opportunities

Similar leads and opportunities are identified by comparing the email address and phone number of the associated contact. If a similar lead/opportunity is found, a Similar Leads smart button appears at the top of the lead (or opportunity) record.

Comparing similar leads and opportunities

To compare the details of similar leads/opportunities, navigate to CRM app ‣ Pipeline or CRM app ‣ Leads. Open a lead or opportunity, and click the Similar Leads smart button. Doing so opens a Kanban view that only displays similar leads/opportunities. Click on a card to view the details for the lead/opportunity, and confirm if they should be merged.

Merging similar leads and opportunities

 Important

When merging, Odoo gives priority to whichever lead/opportunity was created in the system first, merging the information into the first created lead/opportunity. However, if a lead and an opportunity are being merged, the resulting record is referred to as an opportunity, regardless of which record was created first.

After confirming that the leads/opportunities should be merged, return to the Kanban view using the breadcrumb link, or by clicking the Similar Leads smart button. Click the  (list) icon to change to list view.

Check the box on the left of the page for the leads/opportunities to be merged. Then, click the  Actions icon at the top of the page, to reveal a drop-down menu. From that drop-down menu, select the Merge option to merge the selected opportunities or leads.

When Merge is selected from the  Actions drop-down menu, a Merge pop-up modal appears. In that pop-up modal, under the Assign opportunities to heading, select a Salesperson and Sales Team from the appropriate drop-down menus.

Below those fields, the leads/opportunities to merge are listed, along with their related information. To merge those selected leads/opportunities, click Merge.

 Danger

Merging is an irreversible action. Do not merge leads/opportunities unless absolutely certain they should be combined.

When leads/opportunities should not be merged

There may be instances where a similar lead or opportunity is identified, but should not be merged. These circumstances vary, based on the processes of the sales team and organization. Some potential scenarios are listed below.

Lost leads

If a lead/opportunity has been marked as lost, it can still be merged with an active lead or opportunity. The resulting lead/opportunity is marked active, and added to the pipeline.

Different contact within an organization

Leads/opportunities from the same organization, but with different points of contact, may not have the same needs. In this case, it is beneficial to not merge these records, though assigning the same salesperson, or sales team, can prevent duplicated work and miscommunication.

Existing duplicates with more than one salesperson

If more than one lead/opportunity exists in the database, there may be multiple salespeople assigned to them, who are actively working on them independently. While these leads/opportunities may need to be managed separately, it is recommended that any affected salespeople be tagged in an internal note for visibility.

Contact information is similar but not exact

Similar leads and opportunities are identified by comparing the email addresses and phone numbers of the associated contacts. However, if the email address is similar, but not exact, they may need to remain independent.

 Example

Three different leads were added to the pipeline and assigned to different salespeople. They were identified as Similar Leads due to the email addresses of the contacts.

Two of the leads appear to come from the same individual, Robin, and have identical email addresses. These leads should be merged.

The third lead has the same email domain, but the address is different, as is the contact name. While this lead is most likely from the same organization, it is from a different contact, and should not be merged.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Manage sales teams

The Sales Teams feature within Odoo’s CRM app allows for the creation and management of multiple sales teams, each with their own assignment rules, invoicing targets, and roster of salespeople.

Create a sales team

To create a new sales team, go to CRM app ‣ Configuration ‣ Sales Teams, then click New.

On the blank sales team form, enter a name in the Sales Team field.

Next, select a Team Leader from the drop-down list.

Set an Email Alias to automatically generate a lead/opportunity for this sales team whenever a message is sent to that unique email address. Choose whether to accept emails from Everyone, Authenticated Partners, Followers Only, or Authenticated Employees.

Select a Company from the drop-down menu to assign this team to.

 Note

The Company field is only visible in multi-company databases, and is not required.

 Note

If the Sales app is installed on the database, an Invoicing Target field appears on the sales team form. This is the revenue target for the current month. The amount entered in this field is used to populate the invoicing progress bar on the sales team dashboard.

Add sales team members

To add team members, click Add under the Members tab when editing the sales team’s configuration page. This opens a Create Sales Team Members pop-up window.

 Note

If the Rule-Based Assignment feature has not been enabled on the CRM app’s Settings page, clicking Add under the Members tab opens an Add: Salespersons pop-up window. Tick the checkbox to the far-left of the salesperson to be added to the team, then click Select.

Select a user from the Salesperson drop-down list to add them to the team. To prevent this salesperson from being automatically assigned leads, tick the Skip auto assignment checkbox. If this feature is activated, the salesperson can still be assigned leads manually.

The Leads (30 days) field tracks how many leads the salesperson has been assigned in the past thirty days for this team, and the maximum number of leads they should be assigned. To edit the maximum number of leads this salesperson can be assigned, enter that amount in the Leads (30 days) field.

 Tip

Assignment rules can be configured for individual salespeople using the Domain section.

Click Save & Close when finished, or Save & New to add additional members.

Enable multi teams

To allow salespeople to be assigned to more than one sales team, the Multi Teams setting needs to be enabled. First, navigate to CRM app ‣ Configuration ‣ Settings. Under the CRM section, tick the checkbox labeled Multi Teams. Then, click Save at the top-left of the page.

Sales team dashboard

To view the sales team dashboard, go to CRM app ‣ Sales ‣ Teams. Any team the user is a member of appears in the dashboard.

Each Kanban card gives an overview of the sales team’s open opportunities, quotations, sales orders, and expected revenue, as well as a bar graph of new opportunities per week, and an invoicing progress bar.

Click the Pipeline button to go directly to that team’s CRM pipeline.

Click on the  (vertical ellipsis) icon in the top-right corner of the Kanban card to open a drop-down menu. Then, to view or edit the team’s settings, click Configuration.

 See also

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Convert leads into opportunities

Leads act as a qualifying step before an opportunity is created. This provides additional time to review its potential, and gauge its viability, before the opportunity is assigned to a salesperson.

Configuration

To activate the Leads setting, navigate to CRM app ‣ Configuration ‣ Settings and check the box labeled, Leads. Then, click Save.

Activating this feature adds a new menu option, Leads, to the header bar, located along the top of the screen.

Once the Leads setting has been activated, it applies to all sales teams by default. To turn off leads for a specific team, navigate to CRM app ‣ Configuration ‣ Sales Teams. Then, select a team from the list to open that team’s configuration page. Clear the Leads checkbox, located beneath the Sales Team field, then click Save.

Convert a lead into an opportunity

To convert a lead into an opportunity, navigate to CRM app ‣ Leads, and click on a lead from the list to open it.

 Warning

If a Similar Leads smart button appears at the top of the page for the lead, it indicates a similar lead or opportunity already exists in the database. Before converting this lead, click the smart button to confirm if the lead should be merged.

Click the Convert to Opportunity button, located at the top-left of the page.

This opens a Convert to opportunity pop-up modal. Here, in the Conversion Action field, select the Convert to opportunity option.

 Note

To merge this lead with an existing similar lead or opportunity, select Merge with existing opportunities in the Conversion Action field. This generates a list of the similar leads/opportunities to be merged.

When merging, Odoo gives priority to whichever lead/opportunity was created in the system first, merging the information into the first created lead/opportunity. However, if a lead and an opportunity are being merged, the resulting record is referred to as an opportunity, regardless of which record was created first.

Then, select a Salesperson and a Sales Team to which the opportunity should be assigned. Neither field is required, though if a selection is made in the Salesperson field, the Sales Team field is populated automatically, based on the salesperson’s team assignments.

If the lead has already been assigned to a salesperson or a team, these fields automatically populate with that information.

Under the Customer heading, choose from the following options:

  • Create a new customer: choose this option to use the information in the lead to create a new customer record.
  • Link to an existing customer: choose this option, then select a customer from the resulting drop-down menu, to link this opportunity to an existing customer record.
  • Do not link to a customer: choose this option to convert the lead, but not link it to a new or existing customer.

Lastly, when all configurations are complete, click Create Opportunity.

To view the newly created opportunity, navigate to CRM app ‣ My Pipeline.

 Note

Some filters may need to be removed from the Search… bar on the top Pipeline page to view all opportunities.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Create opportunities from web contact forms

Adding a contact form to a website makes it easy to convert visitors into leads and opportunities. After a visitor submits their information, an opportunity can be created automatically, and assigned to a designated sales team and salesperson.

Customize contact forms

By default, the Contact Us page on an Odoo website displays a preconfigured contact form. This form can be customized, as needed, to suit the needs of a specific sales team.

Navigate to Website app ‣ Contact Us, then click Edit in the top-right of the screen to open the web editor. Click on the form building block in the body of the webpage to open the form configuration settings on the right sidebar. The following options are available to customize the contact form from the From section of the right sidebar:

  • Action: the default action for a contact form is Send an Email. Select Create an Opportunity from the drop-down list to capture the information in the CRM app.
  • Sales Team: choose a sales team from the drop-down menu that the opportunities from this form should be assigned to. This field only appears if the Action field is set to Create an Opportunity.
  • Salesperson: if the opportunities should be assigned to a specific salesperson, select them from the drop-down menu. If no selection is made in this field, the opportunities are assigned based on the team’s existing rules.
  • Marked Fields: use this field to alter how the form handles marked fields. The default option is to treat marked fields as Required, which is the recommended setting.
  • Mark Text: choose how Marked Fields should be identified. The default character is an asterisk (*).
  • Labels Width: use this field to alter the pixel width of the labels, if desired.
  • On Success: select how the webpage reacts after a customer successfully submits a form. Nothing keeps the customer on the same screen, with the addition of a confirmation message that the form was submitted successfully. Redirect sends the customer to a new webpage, based on the address provided in the URL field below. Show Message replaces the form with a preconfigured message that informs the customer someone should respond to them as soon as possible.
  • URL: if Redirect is selected in the On Success field, enter the URL for the webpage, where customers should be directed after successfully submitting a form.
  • Visibility: use the drop-down menu to add any visibility conditions for this field, if desired.

 Important

If leads are activated in CRM settings, selecting Create an Opportunity generates a lead instead. To activate leads, navigate to CRM app ‣ Configuration ‣ Settings, and tick the Leads checkbox. Then, click Save.

Customize contact form fields

In addition to the settings for the form, the settings for each field can be customized, as well. With the web editor menu still open, click into a field to open the Field configuration settings section on the sidebar. The following options are available to customize a field:

  • Type: choose a custom field option or an existing field type.
  • Input Type: determine the type of information customers should input. Available options are Text, Email, Telephone, or Url. The selection made in this field limits the format that customers can use when entering information.
  • Label: enter the name for the field.
  • Position: choose the way the label is aligned with the rest of the form. The label can be hidden, above the field, to the left of the field, or right adjusted and closer to the field.
  • Description: slide the toggle to add a description for the field, which can provide additional instructions to customers. Click under the field on the form to add the description.
  • Placeholder: enter an example to help users know how to input information where formatting is important, such as a phone number or email address.
  • Default Value: enter a value to include in the form, by default, if the customer does not provide information in the field. It is not recommended to include a default value for required fields.
  • Required: slide the toggle to mark this field as required if it must be filled in for every submission.
  • Visibility: select when this field should be visible. Use the button on the left to choose whether to show or hide this field on a desktop users. Use the button on the right to choose whether to show or hide this field to mobile users.
  • Animation: select if this field should have any animation.

View opportunities

After a customer submits a contact form, and an opportunity is created, it is assigned based on the form settings. To view opportunities, navigate to CRM app ‣ Sales ‣ My Pipeline.

 Note

If leads are activated on the database, contact form submissions are generated as leads, not opportunities. To activate leads, navigate to CRM app ‣ Configuration ‣ Settings, and tick the Leads checkbox. Then, click Save.

Navigate to CRM app ‣ Leads to view the newly-created leads.

On the My Pipeline dashboard, click on an opportunity card in the Kanban view to open the opportunity record. The information submitted by the customer is visible on the opportunity record.

 Note

As the contact form fields are customizable, the fields on the opportunity record, where the form information is stored, varies accordingly.

If the preconfigured contact form is used, the Subject field is added to the Title field, and the content in the Notes field, which is labeled as Your Question, is added to the Internal Notes tab.

 See also

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Create leads (from email or manually)

Leads can be added to the CRM app from custom email aliases, and by manually creating new records. This is in addition to the leads and opportunities created in the app through the website contact form.

First, ensure the Leads feature is enabled in the database by navigating to CRM app ‣ Configuration ‣ Settings. Tick the Leads checkbox, then click Save.

Configure email aliases

Each sales team has the option to create and utilize their own unique email alias. When messages are sent to this address, a lead (or opportunity), is created with the information from the message.

To create or update a sales teams’ email alias, navigate to CRM app ‣ Configuration ‣ Sales Teams. Click on a team from the list to open the team’s details page.

In the Email Alias field, enter a name for the email alias, or edit the existing name. In the Accept Emails From field, use the drop-down menu to choose who is allowed to send messages to this email alias:

  • Everyone: messages are accepted from any email address.
  • Authenticated Partners: only accepts messages from email addresses associated with a a partner (contact or customer) record.
  • Followers only: only accepts messages from those who are following a record related to the team, such as a lead or opportunity. Messages are also accepted from team members.
  • Authenticated Employees: only accepts messages from email addresses that are connected to a record in the Employees app.

Leads created from email

Leads created from email alias messages can be viewed by navigating to CRM app ‣ Leads. Click a lead from the list to open it, and view the details.

The email received by the alias is added to the chatter thread for the lead. The subject line of the message is added to the title field, and the Email field is updated with the contact’s email address.

 Note

If the leads feature is not enabled on the database, messages to the email alias are added to the database as opportunities.

 See also

Communication in Odoo by email

Manually create leads

Leads can be added directly to the CRM app by manually creating a new record. Navigate to CRM app ‣ Leads to view a list of existing leads.

 Tip

Leads can also be added via the Generate Leads button.

At the top-left of the list, click New to open a blank Leads form.

In the first field of the new form, enter a title for the new lead. Next, enter a Contact Name, and a Company Name.

 Note

If a lead is converted to an opportunity, the Company Name field is used to either link this opportunity to an existing customer, or to create a new customer.

Manually create opportunities

To manually create an opportunity, navigate to CRM app ‣ Sales ‣ My Pipeline. At the top-left of the page, click New to create a new opportunity Kanban card. In the Organization/Contact field, enter the name of the company the opportunity is for.

Choose a name, and enter it in the Opportunity field. This is a required field. When manually creating an opportunity, it is helpful to add a name that relates to the details of the opportunity.

 Example

In the example below, the opportunity is named 5 VP Chairs. This identifies the product the customer is interested in, as well as the potential number of products.

Enter the contact information for the opportunity in the Email and Phone fields.

In the Expected Revenue field, enter an estimated value for the opportunity.

 Note

The information in the Expected Revenue and priority fields can be used to track performance for individual salespeople, and on a team basis. See Expected revenue report and Assign leads with predictive lead scoring for more information.

Then, use the  (star) icons to assign a priority.

  •   : low priority
  •   : medium priority
  •   : high priority
  •   : very high priority

 Note

Assigning a priority changes the order of leads in Kanban view, with higher priority leads displayed first.

Once all the necessary information has been entered, click Add.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 

 docs

Try Odoo for FREE

EN 

Odoo 18 

Create and send quotations

Once a qualified lead has been converted into an opportunity, the next step is to create and deliver a quotation. This process can be easily handled through Odoo’s CRM application.

Create a new quotation

To create a new quotation, open the CRM app, revealing the Pipeline page on the main CRM dashboard.

From here, click on any opportunity to open it. Review the existing information and update any fields, if necessary.

 Note

If a quotation has already been created for this opportunity, it can be found by clicking on the Quotations smart button at the top of the top of the form. The number of existing quotations is listed on the smart button, as well.

At the top-left of the form, click the New Quotation button.

 Important

The Sales application must be installed for the New Quotation button to appear.

 Important

The Customer field is not required on the opportunity form.

However, customer information must be added or linked before a quotation can be sent. If the Customer field is left blank on the opportunity, clicking the New Quotation button opens a pop-up window with the following options:

  • Create a new customer: creates a new customer record, using any available information provided on the opportunity form.
  • Link to an existing customer: opens a drop-down field with existing customer names. Select a name to link this new quotation to an existing customer record.
  • Do not link to a customer: the quotation will not be linked to a customer, and no changes are made to the customer information.

Once this button is clicked, a new quotation form appears. Confirm the information in the top half of the form, and update any missing or incorrect fields:

  • Customer: the company or contact for whom this quotation was created.
  • Referrer: if this customer was referred by another customer or contact, select it from the drop-down menu in this field.
  • Invoice Address: physical address where the invoice should be sent.
  • Delivery Address: physical address where any products should be delivered.
  • Quotation Template: if applicable, select a pre-configured quotation template from this field.
  • Expiration: date when this quotation is no longer valid.
  • Quotation Date: creation date of draft/sent orders, confirmation date of confirmed orders. Note that this field is only visible if Developer mode (debug mode) is active.
  • Recurring Plan: if this quotation is for a recurring product or subscription, select the recurring plan configuration to be used.
  • Pricelist: select a pricelist to be applied to this order.
  • Payment Terms: select any applicable payment terms for this quotation.

 Tip

The Expiration field automatically populates based on the creation date of the quotation, and the default validity time frame.

To update the default validity time frame, navigate to Sales app ‣ Configuration ‣ Settings ‣ Quotations & Orders and update the Default Quotation Validity field. To disable automatic expiration, enter 0 in this field.

When the desired changes are complete, click Save.

When using a quotation template, the expiration date is based off of the Quotation Validity field on the template. To alter the validity date computation on a template, go to Sales app ‣ Configuration ‣ Sales Orders ‣ Quotation Templates.

Then, click on a template to open it, and update the number in the Quotation Validity field.

Order lines

After updating the customer, payment, and deadline information on the new quotation, the Order Lines tab can be updated with the appropriate product information.

To do that, click Add a product in the Order Lines tab.

Next, type the name of an item into the Product field to search through the product catalog. Then, select a product from the drop-down menu, or create a new one by selecting Create or Create and Edit.

After selecting a product, update the Quantity, if necessary. Confirm the information in the remaining fields.

To remove a line from the quotation, click the  (trash can) icon.

To organize products into sections click Add a section and type a name for the section. Then, click the  (drag) icon to the left of the name and drag to move the section to the appropriate location. Move each product using the same method to finish organizing the quotation order lines.

Product catalog

To quickly add numerous products to the quotation, click the Catalog button to open the product catalog.

All products in the database are listed as cards and can be sorted in the left panel by Product Category and Attributes.

To add a product, click the  Add button on the product card. Set the quantity of the item using the  (add) or  (subtract) buttons, or type the quantity in the number field between the two buttons. To remove an item, click the  Remove button on the product card.

Once all product quantities are set, click the Back to Quotation button to return to the quotation. The items selected in the product catalog now appear in the Order Lines tab.

Preview and send quotation

To see a preview of the quotation as the customer will see it, click the Preview button. Doing so opens a preview in the Customer Portal.

After reviewing the customer preview, click Return to edit mode to return to the quotation form in the backend.

When the quotation is ready to deliver to the customer, click the Send by Email button.

Doing so opens a pop-up window with a pre-configured email message. Information from the quotation, including the contact information, total cost, and quotation title are be imported from the quotation.

A PDF of the quotation is added as an attachment to the email.

 Note

A pre-loaded template is used to create the email message. To alter the template, click the internal link to the right of the Load template field, located at the bottom of the email pop-up window.

To select a new template, select an option from the Load template drop-down menu.

Proceed to make any necessary changes to the email, then click Send. A copy of the message is added to the Chatter of the of the record.

After a quotation is sent, the originating opportunity’s Quotations smart button updates with a new count. This quotation, and all other quotations can be accessed through this smart button at the top of the opportunity in the CRM app.

Any quotations attached to the opportunity that are confirmed, and have therefore been converted to sales orders, will be deducted from the number listed on the Quotations smart button. Instead, the value of the sales order will appear in the Orders smart button located in the same control panel.

Mark an opportunity won or lost

In order to keep the pipeline up to date and accurate, opportunities need to be identified as won or lost once a customer has responded to a quotation.

To mark an opportunity as won or lost, return to the opportunity using the breadcrumbs at the top-left of the quotation form. Or navigate to CRM app ‣ Sales ‣ My Pipeline and click on the correct opportunity to open it.

At the top-left of the form, click on either the Won or Lost button.

If the opportunity is marked won, a green Won banner is added to the record, and it is moved to the Won stage.

Marking an opportunity as lost, via the Lost button opens a Mark Lost pop-up window, where a Lost Reason can be entered.

From the Lost Reason drop-down field, choose an existing lost reason. If no applicable reason is available, create a new one by entering it into the Lost Reason field, and clicking Create.

 Tip

It’s best practice to try and use pre-configured Lost Reason values as much as possible or to limit the creation of new values only to sales team leads. Using consistent values for this parameter will make pipeline analysis easier and more accurate when filtering for the Lost Reason parameter.

To set up new values for this field, navigate to CRM ‣ Configuration ‣ Lost Reasons, and click both New and Save for each new entry added to the list.

Additional notes and comments can be added in the Closing Note field.

When all the desired information has been entered in the Mark Lost pop-up window, click Mark as Lost.

Upon clicking Mark as Lost, the pop-up window disappears, and Odoo returns to the opportunity form, where a new red Lost banner is now present in the upper-right corner of the opportunity.

Once an opportunity is marked as lost, it is no longer considered active, and it is removed from the pipeline.

In order to view a lost opportunity from the pipeline, click the down arrow icon to the right of the search bar, and select either Lost or Archived from the drop-down menu that appears.

 Important

While opportunities that have been marked as lost are considered Archived, be advised that, in order for an opportunity to be included as lost in reporting, it must be specifically marked as lost, not Archived.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Lead mining

Lead mining is a feature that allows CRM users to generate new leads directly into their Odoo database. To ensure lead qualification, lead mining output is determined by a variety of filtering criteria, such as the country, the company size, and the industry.

Configuration

To get started, go to CRM app ‣ Configuration ‣ Settings, and tick the Lead Mining checkbox to activate the feature. Then, click Save.

Generate leads

After the Lead Mining setting is activated, a new button called Generate Leads is available to use in the upper-left corner of the CRM Pipeline (CRM app ‣ Sales ‣ My Pipeline).

Lead mining requests are also available through CRM app ‣ Configuration ‣ Lead Mining Requests, or through CRM app ‣ Leads ‣ Leads, where the Generate Leads button is also available.

Click the Generate Leads button, and a pop-up window appears, offering a variety of criteria by which to generate leads.

Choose to generate leads for Companies to get company information only, or choose Companies and their Contacts to get company information and individual employee contact information.

 Note

When targeting Companies and their Contacts, additional options are available to filter contacts based on Role or Seniority.

Additional filtering options include the following:

  • Countries: filter leads based on the country (or countries) they are located in.
  • States: further filter leads based on the state in which they are located, if applicable.
  • Industries: filter leads based on the specific industry they work in.
  • Filter on Size: tick this checkbox to specify the number of employees at the company. This generates a field labeled Size. Fill in the blanks to create a range for the desired company size.
  • Sales Team: choose which Sales Team the leads will be assigned to.
  • Salesperson: choose which member of the Sales Team the leads will be assigned to.
  • Default Tags: choose which tags are applied directly to the leads once found.

 Important

Make sure to be aware of the latest EU regulations when receiving contact information. Get more information about the General Data Protection Regulation on Odoo GDPR.

View leads

After leads are generated, they are assigned to the designated salesperson and team. To view additional information regarding the lead, select one from the list, and click to open it.

In the chatter thread for the lead, additional information is provided. This can include the number of employees, the technology used by the company, the timezone, and direct contact information.

 Note

If Leads are not enabled for the database, then leads are generated as opportunities, and added to the pipeline for the designated salesperson.

To enable the Leads feature, navigate to CRM app ‣ Configuration ‣ Settings, and tick the Leads checkbox. Then, click Save.

Pricing

Lead mining is an In-App Purchase feature, and each generated lead costs one credit.

 Important

Generating Companies and their Contacts costs one additional credit for each contact generated. See here for complete pricing information: Lead Generation by Odoo IAP.

To buy credits, navigate to CRM app ‣ Configuration ‣ Settings. In the Lead Generation section, under the Lead Mining feature, click Buy Credits.

Credits may also be purchased by navigating to the Settings app. In the Contacts section, under the Odoo IAP feature, click View My Services.

 Note

Enterprise Odoo users with a valid subscription get free credits to test IAP features before purchasing more credits for the database. This includes demo/training databases, educational databases, and one-app-free databases.

 See also

In-app purchases (IAP)

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Assign leads with predictive lead scoring

The Odoo CRM app can automatically assign leads/opportunities to sales teams and salespeople. A standard practice is to assign leads based on the probability of winning each lead. Companies can prioritize the leads that are more likely to result in successful deals by quickly assigning them to the appropriate salespeople.

Odoo automatically calculates the probability of winning each lead using a method called predictive lead scoring.

Predictive lead scoring

Predictive lead scoring is a machine-learning model that uses historical data from Odoo CRM to score open leads/opportunities.

As a company processes opportunities through the CRM pipeline, Odoo collects data on which opportunities are won and lost. Predictive lead scoring uses this data to predict the probability of winning each new lead or opportunity.

The more opportunities that are sent through the CRM pipeline, the more data Odoo collects, resulting in more accurate probabilities.

Specifically, Odoo’s predictive lead scoring uses the naive Bayes probability model:

P(A|B)=P(A)×P(B|A)P(B)

Breaking down the equation:

  • P(A|B) = The probability of a successful lead in this case
  • P(A) = The overall probability of a lead being successful regardless of the conditions
  • P(B|A) = The probability of this being the case given a lead is successful
  • P(B) = The probability of this being the case

The term in this case refers to the variables that can affect a lead being successful in Odoo. This can include variables such as the assigned Salesperson, the source of the lead, the language of the lead, and other historical and demographic data.

Which variables are considered in this calculation can be configured to tailor the calculation to each business’s needs.

The probability of success of each opportunity is displayed on the opportunity form, and it updates automatically as the opportunity progresses through the CRM pipeline.

When an opportunity moves to the next stage, its probability of success automatically increases according to the predictive lead scoring algorithm.

Configuration

Predictive lead scoring is always active in Odoo CRM. However, the variables used to calculate the probability of success can be customized in the settings.

To customize the variables used by predictive lead scoring, go to CRM ‣ Configuration ‣ Settings. Under Predictive Lead Scoring, click on the Update Probabilities button.

Then, click on the drop-down menu to choose which variables the predictive lead scoring feature will take into account.

Any number of the following variables can be activated:

  • State: the geographical state from which the opportunity originates
  • Country: the geographical country from which the opportunity originates
  • Phone Quality: whether or not a phone number is listed for the opportunity
  • Email Quality: whether or not an email address is listed for the opportunity
  • Source: the source of an opportunity (e.g. search engine, social media)
  • Language: the spoken language specified on the opportunity
  • Tags: the tags placed on the opportunity

 Note

The variables Stage and Team are always in effect. Stage refers to the CRM pipeline stage that an opportunity is in. Team refers to the sales team that is assigned to an opportunity. Predictive lead scoring always takes into account these two variables, regardless of which optional variables are selected.

Next, click on the date field next to the option Consider leads created as of the: to select the date from which predictive lead scoring will begin its calculations.

Lastly, click Confirm to save changes.

Change the probability manually

An opportunity’s probability of success can be changed manually on the opportunity form. Click on the probability number to edit it.

 Important

Manually changing the probability removes the automatic probability updates for that opportunity. The probability will no longer update automatically as the opportunity moves through each stage of the pipeline.

To reactivate automatic probability, click on the gear icon next to the probability percentage.

Assign leads based on probability

Odoo CRM can assign leads/opportunities to sales teams and salespeople based on specified rules. Create assignment rules based on the leads’ probability of success to prioritize those that are more likely to result in deals.

Configure rule-based assignment

To activate rule-based assignment, navigate to CRM ‣ Configuration ‣ Settings, and activate Rule-Based Assignment.

The rule-based assignment feature can be set to run Manually, meaning an Odoo user must manually trigger the assignment, or Repeatedly, meaning Odoo will automatically trigger the assignment according to the chosen time period.

To set up automatic lead assignment, select Repeatedly for the Running section. Then, customize how often Odoo will trigger the automatic assignment in the Repeat every section.

If rule-based assignment is set to run Repeatedly, the assignment can still be triggered manually using the circular arrow icon in the Rule-Based Assignment settings (or using the Assign Leads button on the sales team configuration page).

Configure assignment rules

Next, configure the assignment rules for each sales team and/or salesperson. These rules determine which leads Odoo assigns to which people. To get started, navigate to CRM ‣ Configuration ‣ Sales Teams, and select a sales team.

On the sales team configuration form, under Assignment Rules, click on Edit Domain to configure the rules that Odoo uses to determine lead assignment for this sales team. The rules can include anything that may be relevant for this company or team, and any number of rules can be added.

Click Add Filter to start creating assignment rules. Click on the + sign on the right of the assignment rule to add another line. Click on the x symbol to remove the line.

To create an assignment rule based on an opportunity’s probability of success, click on the far left drop-down menu of an assignment rule line, and select Probability.

From the middle drop-down menu, select the desired equation symbol—most likely the symbol for greater thanless thangreater than or equal to, or less than or equal to.

In the far right space, enter the desired number value of the probability. Finally, click Save to save changes.

 Example

To configure an assignment rule such that a sales team receives leads that have a probability of success of 20% or greater, create a Domain line that reads: Probability >= 20.

Separate assignment rules can also be configured for individual team members. From the sales team configuration page, click on a team member in the Members tab, then edit the Domain section. Click Save to save changes.

If automatic lead assignment is configured in the settings, both the sales team and individual team members have the option to Skip auto assignment. Check this box to omit a particular sales team or salesperson from being assigned leads automatically by Odoo’s rule-based assignment feature. If Skip auto assignment is activated, the sales team or salesperson can still be assigned leads manually.

To manually assign leads to this sales team, click on the Assign Leads button at the top of the sales team configuration page. This will assign any leads that are currently unassigned and match this team’s specified domain.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Unattended leads report

Unattended leads are leads that have scheduled activities that are either due or past due. Whenever an activity is scheduled, Odoo tracks the due date, and sends email reminders to the users the activity is assigned to.

An unattended leads report compiles all active leads in the pipeline with due or past due activities, allowing a sales manager to identify which opportunities require immediate attention.

By pulling a daily unattended leads report, sales managers can remind their teams to address outstanding activities before they become past due, helping avoid neglected leads and reinforcing proactive behaviors in their salespeople.

 Example

A sales manager starts their day by pulling an unattended leads report, and upon switching to list view, they see the following:

Their team member, Mitchell, has two leads in the Proposition stage with activities that are due.

The yellow 📞 (phone) icon indicates that the Modern Open Space lead has a phone call activity scheduled for today. The red ✉️ (envelope) icon indicates that the 5 VP Chairs lead has an email activity scheduled that is past due.

Clicking on the 5 VP Chairs lead, the sales manager opens the record of the lead and reviews the chatter. They see that the email was scheduled to be sent two days ago, but Mitchell never marked this activity as done.

 Important

In order to pull a unattended leads report, sales teams must be regularly utilizing activity in the CRM pipeline, on individual lead and opportunity cards.

It is not possible to compile a complete report if the sales people are not using the Activities feature in the chatter

For more information, refer to Activities

Create an unattended leads report

To create an unattended leads report, first navigate to CRM app ‣ Reporting ‣ Pipeline to open the Pipeline Analysis dashboard. Click into the Search… bar at the top of the page, and remove all of the default filters.

 Note

The Created on filter can remain active, as this variable may be useful to include in the report.

Next, add custom filters by clicking the 🔻(triangle pointed down) icon to the right of the Search… bar to open the drop-down menu that contains Filters, Group By, and Favorites columns. Under the Filters column, click Add Custom Filter, which opens an Add Custom Filter pop-up window.

The Add Custom Filter pop-up window allows for the creation of more specific filters.

Add custom filters

In order to generate an unattended leads report, filters need to be created for the following conditions:

  • Past due activities: limits the results to only include leads with an assigned activity where the due date has past. This can be altered to include activities due to occur on the date the report is generated as well.
  • Unassigned leads: excludes leads without an assigned salesperson.
  • Specific sales teams: limits results to only include leads assigned to one or more sales teams. This filter is optional and should not be included if the report is intended for the entire company.

Add filter for past due activities

Click the first field for the new rule, and type Activities in the Search… bar, or scroll to search through the list to locate it. Then, next to Activities, click the > (greater than sign) to open a new drop-down menu with secondary conditions.

Type Due Date in the Search… bar, or scroll to search through the list. Click Due Date to add it to the rule.

Then, click into then next field and select <= from the drop-down menu. Selecting this operator includes all activities with a due date up to, and including, the date selected in the next field.

The third field can be left as today’s date, or adjusted as needed.

Exclude unassigned leads

After filtering for activities, add a New Rule. Then, click into the first field for the new rule, and type Salesperson in the Search… bar, or scroll to search through the list to locate it.

In the rule’s second field, select is set from the drop-down menu. Selecting this operator excludes any leads not assigned to a specific salesperson.

Add a Sales team

 Note

This filter is optional. To view results for the entire company, do not add this filter, and continue to View results

To limit the results of the report to one or more sales teams, click New Rule. Next, click the first field for the new rule, and type Sales Team in the Search… bar, or scroll to search through the list to locate it.

In the rule’s second field, select is in from the drop-down menu. Selecting this operator limits results to the sales teams selected in the next field.

Lastly, in the third field, select the desired sales team from the drop-down menu. Multiple teams can be added in this field, where each parameter is treated with an “or” (e.g. “any”) operator in the search logic.

An example of the Add Custom Filter pop-up window with all of the rules configured.

View results

At the top of the Add Custom Filter form, there is an option to match any or all of the rules. In order to properly run the report, only records that match all of the following filters should be included. Before adding the filters, make sure all is selected in this field.

After the filters are configured, click Add. The resulting report displays all leads assigned to a salesperson where an activity is past due, or is due on the current date. The default display is a bar graph, where the leads are grouped by stage.

To group the results by salesperson, click the 🔻(triangle pointed down) icon to the right of the Search… bar to open the drop-down menu that contains Filters, Group By, and Favorites columns. Under the Group By heading, select Salesperson.

 Note

The option to group by Sales Team is also available under the Group By heading.

To change to a list view, click the ≣ (list) icon in the top-right corner of the screen.

 Tip

Clicking the (toggle) icon opens a drop-down menu of additional columns that can be added to the report.

Some options that are beneficial for this report include:

  • Activities: the summary of the latest activity for this lead.
  • Expected Closing: the estimated date on which the lead will be won.
  • Probability: estimated success rate based on the stage.

 See also

Activities

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Quality leads report

quality lead is a lead that is likely to result in a sale. It should match the characteristics most commonly believed to help salespeople close a deal, in addition to more precise criteria that is specific to each organization.

 Note

The specific criteria that defines a quality lead is different for every organization. For more information, see Define a quality lead.

A quality leads report compares how many quality leads each salesperson has received over a specific amount of time, such as within the past 30 days. Sales managers can use such a report to make more informed decisions when assigning new leads to their team

 Example

A sales manager pulls a quality leads report using their company’s criteria:

  • Leads must include a phone number and an email address.
  • The email address must be from a professional domain.
  • The source for the lead must be from a live chat conversation or an appointment with a salesperson.

After running the report, the manager can see that, although everyone’s ability to close a deal has varied, some members of the sales team have received a higher number of quality leads than others.

Using this information, the sales manager may decide to assign more quality leads to the sales people currently on the lower end, to balance out the distribution of quality leads.

Create a quality leads report

To create a quality leads report, first navigate to CRM app ‣ Reporting ‣ Pipeline to open the Pipeline Analysis dashboard. Click into the Search… bar at the top of the page and remove any active filters.

Click the 🔻(triangle pointed down) icon to the right of the Search… bar to open the drop-down mega menu that contains Filters, Group By, and Favorites columns. Click Add Custom Filter. This opens a Add Custom Filter pop-up window.

The Add Custom Filter pop-up window allows for the creation of more specific filters.

Add custom filters

In order to generate a quality leads report, filters need to be created for the following conditions:

  • Starting date: limits results to those created within a specific time frame.
  • Specific sales teams: limits results to only include leads for one or more sales teams. This filter is optional and should not be included if the is intended for the entire company.
  • Exclude unassigned leads: excludes leads without an assigned salesperson.
  • Include archived leads: ensures that both active and inactive leads are included in the results.
  • Add rules for quality leads: includes or excludes results based on criteria that is specific to a company or sales team.

An example of the Custom Filter pop-up window with all of the default rules configured.

Add a starting date filter

Begin by first defining the rule’s parameter with a date range, by clicking into the first field, on the left of the row, and typing Created On in the Search… bar, or by scrolling through the menu’s list to locate it.

In the rule’s operator drop-down menu, define the parameter further by selecting either:

  • >= (greater than or equal to) to specify a start date and include all entries after that start date (as well as the initial value itself); or
  • is between to more sharply define a time frame with a clear start and end date. All matching entries that fit within the defined start and end dates are included in the report.

With either option, use the pop-up calendar’s day and time pickers, in the far right field, to define the respective date range. Setting these values concludes the creation of the first rule.

Add a sales team filter

 Note

This filter is optional. To view results for the entire company, do not add this filter.

To limit the results of the report to one or more sales teams, click New Rule. Next, click the first field for the new rule, and type Sales Team in the Search… bar, or scroll to search through the list to locate it.

In the rule’s second field, select is in from the drop-down menu. Selecting this operator limits results to the sales teams selected in the next field.

Lastly, in the third field, select the desired sales team from the drop-down menu. Multiple teams can be added in this field, where each parameter is treated with an “or” (e.g. “any”) operator in the search logic.

Exclude unassigned leads

Next, add a New Rule. Then, click into the first field for the new rule, and type Salesperson in the Search… bar, or scroll to search through the list to locate it.

In the rule’s second field, select is set from the drop-down menu. Selecting this operator excludes any leads not assigned to a specific salesperson.

Include archived leads

 Tip

This filter is also optional, as it adds archived (inactive) leads to the report, however it is recommended to include this since it pulls all assigned leads, regardless of status, into the report. This ensures a more accurate representation of assigned leads is captured. However, to pull a report that only includes active leads, do not activate this feature.

Next, in the upper-right corner of the Add Custom filter pop-up window, move the Include archived toggle to active.

Enabling this feature adds archived (inactive) leads to the report.

Add rules for quality leads

The filters added in this step vary, based on how an organization defines a quality lead.

Define a quality lead

As defined earlier, a quality lead is a lead that is likely to result in a won opportunity. Although the exact criteria for a quality lead varies from organization to organization, it is often a combination of factors commonly attributed to positive sales outcomes, in addition to factors valued by the specific organization.

In addition to the basic filters and grouping options outlined in the general Quality leads report, consider the following filters when defining a quality lead:

  • Email or Phone: the information in these fields can help determine whether or not a lead is a professional contact.
  • Source: this field links to the marketing and lead generation efforts from other Odoo applications, including Live ChatSocial Marketing, and Email Marketing.
  • Stage: this filter can be used to eliminate or target leads that have reached specific stages.
  • Medium: a lead’s source can indicate its quality level, as various channels have different won rates and expected revenues.
  • Campaign: adding this filter helps track of the success of different marketing efforts to capture high quality leads.
  • Lost Reason: exclude leads that may appear to be quality based on various criteria, but have been marked as lost for specified reasons.
  • Tags: include or exclude results based on one or more customized tags.

 Tip

When adding rules to a custom filter, keep the statements preceding each rule in mind. The statement above a rule determines whether the search results must match all of the rules below the statement, or any of the rules below the statement.

View the report

 Important

At the top of the Add Custom Filter form, there is an option to match any or all of the rules. In order to properly run the report, only records that match all of the following filters should be included. Before adding the filters, make sure all is selected in this field.

After the filters are configured, click Add. The default display for the report is a bar graph, where the leads are grouped by stage.

To group the results by salesperson, click the 🔻(triangle pointed down) icon to the right of the Search… bar to open the drop-down mega menu. Under the Group By heading, select Salesperson. In the same column, under the Group By heading, click Add a Custom Group, then select Active on the resulting drop-down menu to layer in lead status, under the parent Salesperson grouping.

The report now displays the total count of quality leads each salesperson has received in the designated time period. Because there are layered Group By filters, the grouped leads are also color-coded to identify whether they are active or marked as lost.

 Tip

To save this search for later, click the 🔻(triangle pointed down) icon next to the Search… bar to open the drop-down menu. Under the Favorites heading, click Save current search.

In the drop-down menu, rename the report from the default Pipeline label to Quality Leads, and click Save.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Resellers

Within Odoo’s CRM app, leads can be forwarded to resellers (or partners). Leads can be manually assigned, or automatically assigned, based on the resellers’ designated level and location.

Configuration

To utilize the reseller features, the Resellers module first needs to be installed. Navigate to the Apps application, and remove the Apps filter from the Search… bar. Then, search for Resellers.

Click Activate on the Resellers module card that appears. Doing so installs the module, and returns to the main Odoo dashboard.

After the module is installed, navigate to the CRM app. Under the Configuration menu is a new section, titled Resellers, with three options beneath it: Partner Levels, Partner Activations, and Commission Plans.

Partner levels

Partner levels are used to differentiate between various resellers. To view the partner levels, navigate to CRM app ‣ Configuration ‣ Resellers: Partner Levels.

On the Partner Levels page that appears, there are three default levels:

  • Gold
  • Silver
  • Bronze

New levels can be added, as needed, by clicking New, and filling out the resulting level form.

Existing levels can also be edited and renamed, if desired, as well. To modify a level, select it from the list, and proceed to make any desired changes from the level form page that appears.

Level weight is used to decide the probability a partner to be assigned a lead or opportunity. On the level form, assign a numerical value (greater than zero) to the Level Weight field. If the weight is zero, no leads are assigned.

 Tip

Level Weight can be assigned on an individual contact record. The weight assigned on the individual record overwrites the default weight assigned on the level configuration form.

Partner activations

Partner activations are used to identify the status of a partner. Activations are assigned on an individual contact record, and can be used to group or filter the Partnership Analysis report (CRM app ‣ Reporting ‣ Partnerships).

To view the partner levels, navigate to CRM app ‣ Configuration ‣ Partner Activations.

Three activation types are created by default in the CRM app:

  • Fully Operational
  • Ramp-up
  • First Contact

New partner activations can be added, as needed, by clicking New, and entering a Name on the new line that appears. Then, select the desired status in the Active column.

Existing partner activations can also be edited and renamed, if desired. To rename a status, click the Name field of a desired level, and enter a new name.

To change the active status of an activation, slide the toggle in the Active column of the desired activation to the inactive position.

The list of default Partner Activations in the CRM app. The toggle for First Contact is in the inactive position, while the rest are active.

Partner assignments

After partner levels and partner activations configured.

To update an individual partner record, navigate to CRM app ‣ Sales ‣ Customers, and click the Kanban card for the desired partner to open the customer record.

On the customer record, click the Partner Assignment tab.

Click the Partner Level field, and select an option from the drop-down menu to assign a level. Click the Activation field, and select a partner activation type from the drop-down list, if desired. Then, click the Level Weight field to assign a different level weight, if necessary.

Publish partners

With the Odoo Website and Resellers apps installed, a new webpage (/partners) is created to display a list of all active partners from the CRM app.

Next, return to CRM app ‣ Sales ‣ Customers, and click the Kanban card for a partner. From that partner’s contact form, click the Go to Website smart button at the top of the page to open that partner’s webpage.

Next, click Edit at the top-right of the partner’s webpage, and use the building blocks to add any additional design elements, or information about the partner.

 Tip

A company summary is a useful addition to this page.

After making any necessary changes to the page, click Save. At the top of the page, slide the Unpublished toggle to the active, Published position, if needed.

Repeat these steps for all partners.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Marketing attribution reports

Use the Odoo CRM app to compile a marketing attribution report, which analyzes the source of leads, and groups them in such a way as to calculate marketing’s overall impact on lead generation, attribution, won rate, and more.

Leads Analysis dashboard

Begin by navigating to the Leads Analysis dashboard by going to CRM app ‣ Reporting ‣ Leads.

 Tip

Reports can also be run on the CRM app ‣ Leads dashboard, which is only accessible if the Leads feature has been activated on the Settings page.

If the Leads feature has not been activated, the CRM app ‣ Sales ‣ My Pipeline dashboard can also be used to run reports.

Both dashboards contain the necessary Filters and Group By criteria to run an attribution report.

 See also

The  (graph) view is shown, by default, with Active or Inactive and Created on: [current year] filters active in the Search… bar. The graph visualization displays the number of leads generated, by month and by sales team, with each sales team attributed to its own color per month shown.

Switch the view to the  (list) option, by clicking the respective icon located at the top-right of the dashboard. This allows leads to easily be displayed in the grouping set by the Group By parameters.

Add UTM parameters

Urchin Tracking Modules (UTMs) are snippets of text embedded in URLs that are used to track visitor data. This includes parameters relating to how a visitor reached the link, such as the type of website visited, and/or marketing campaign the visit came from.

Odoo can use these UTMs as parameters in the marketing attribution report to track the metrics and performance of marketing campaigns.

Create UTMs

The link tracker in Odoo can be used to create and configure UTMs.

UTMs can also be automatically generated by the Email Marketing and Marketing Automation apps.

The UTM parameters used in a marketing attribution report are MediumSource, and Campaign, in descending order of coverage.

  • Medium is the UTM with the widest coverage, and is used to identify the medium used to access the link. This can include mediums such as social media, email, or cost per click (CPC).
  • Source is more narrow, and is used to identify the source of traffic. For example, the name of a website, search engine used, or a specific social media platform.
  • Campaign is the most narrow, and can track specific marketing campaigns by name. This can include a contest or product name, type of sale, etc.

Create reports

To start creating a report, click the  (down arrow) to the right of the Search… bar to see the list of filtering and grouping parameters.

Filters, located in the left column of the search options, can be used to keep only the results that fit the filter. For example, selecting the Won filter only shows leads that have been won in the attribution report.

Group By, found in the middle column, is used to organize the results into groups, and can be used with or without filters.

 Tip

Setting multiple Group By options creates nested groups, according to which option is selected first. For example, selecting Medium, followed by Source, and then Campaign, in Group By column, sorts all results first by medium, then by the specific sources in each medium, followed by the campaigns in each source.

This can be verified by looking at the direction, and order, of the selections in the group tile that appears in the Search… bar.

 Example

For a useful first report:

#. From the Filters column, select the Active filter to view only leads that are still marked as active. #. From the Group By column, select (in this specific order) Source, followed by the City or Country, depending on which grouping is more relevant.

This report contains all active leads, grouped first by the source of the lead, then by the city or country each lead is from. This is useful to see the density of active opportunities sorted by location.

With this data, marketing campaigns, such as conferences or billboards, can be targeted to the locations generating the largest amount of potential revenue. Similarly, more attention can be put toward increasing outreach in locations where existing marketing campaigns are less effective.

Export reports

To set the measures of the report, begin by navigating to the  (pivot view) on the Leads Analysis dashboard.

Click the Measures button to view the available measures of the report. Select the desired measures from the drop-down menu (multiple measures can be selected), and verify the measures, filters, and groups are all displayed correctly in the pivot table. This ensures the data is ready for export.

To quickly export the data in a list, as a .xlsx file, navigate to the  (list view). Click on the Actions  (gear) icon, located to the right of Lead Analysis in the top-left of the page, and click  Export All. The report downloads automatically as a .xlsx file.

For more export options, the report can be exported to the Odoo Documents app. From the  (list view) of Leads Analysis page, begin by clicking the Actions  (gear) icon again. Now, navigate to  Spreadsheet, and click  Insert list in spreadsheet. A pop-up window titled, Select a spreadsheet to insert your list. appears.

The report can be renamed using the Name of the list field, if desired. The number of items on the report can be set with the field labeled: Insert the first _ records of the list. Next, select either a new Blank spreadsheet, or export into an existing spreadsheet. Finally, click the Confirm button.

To export the report as a .xlsx file, for use in an external spreadsheets program, click the Actions  (gear) icon, and select the  Export All option. If prompted, choose a file location, name the file, then click Save.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Lead distribution report

lead distribution report can be used to see if active leads are being assigned equitably across sales members. It can also be used to view the distribution of good or quality leads, and see how frequently each salesperson is receiving (and keeping) leads.

Lead distribution reports can be run each week to help keep salespeople on track, while providing them with ample good leads. These reports can also be used to see whether sales members are staying productive, if good leads are being lost too often by one salesperson, and what percentage of good leads are being retained overall.

Create lead distribution reports

To create a lead distribution report, first navigate to CRM app ‣ Reporting ‣ Pipeline, which reveals the Pipeline Analysis dashboard.

Remove all the default filters in the search bar at the top of the page. Doing so displays data related to all leads.

Custom filters can now be added by clicking the  (down caret) icon, to the right of the search bar, to reveal a drop-down menu of search and filter options.

Three columns are displayed: FiltersGroup By, and Favorites. To begin, navigate to the bottom of the Filters column, and click Add Custom Filter. This opens an Add Custom Filter pop-up window, where the essential filters can be added one at a time.

Essential filters

The following filter conditions are used to create a basic lead distribution report. Together they gather all leads created within a certain timespan that have an associated contact method and have been assigned to a sales team.

Lead creation date

Click the first field, under Match any of the following rules:, that has the value Country in it. In the popover that appears, type Created on in the search bar, or scroll to search through the list to locate and select it.

Then, in the second field of that row, select >= from the drop-down menu. This operator only includes values greater than (or equal to) the value in the third, rightmost field.

The third field on the Add Custom Filter pop-up window should contain the earliest date leads are selected from.

For example, setting 01/01/2024 00:00:00 only includes leads created from, and including, the first day of 2024.

Sales team

Click New rule to add another row to the form, and choose Sales Team for this rule’s parameter. Then, click the second field of the new rule, and select contains from the drop-down menu. Selecting this operator filters for any records that contain the words in the third, rightmost field.

 Tip

For certain pre-determined, limited choices like a sales team, the is in operator helps make for an easier and more accurate selection, via a drop-down menu in the third field, instead of risking a typo or incorrect value in the text box field that accompanies the contains operator.

In this third field, enter the name of the desired sales team(s) that are to be included in the report. It is important for all contains argument values to be specific enough and spelled correctly as they exist in Odoo, otherwise this risks returning multiple (or zero) values.

 Important

By adding more than one rule to the form, a new option emerges at the top of the pop-up window above all the filters, to specify whether any  or all  of the conditions should match. This distinction is important to set correctly, as it impacts the driving logic of how the filters return data.

Click the default any  menu item and be sure the all  option is chosen instead. This setting will only show records that match all the rules contained inside the form.

Contact method

 Note

The instruction below is not necessary, however, it’s highly recommended to add a set contact value to the report’s search criteria. A lot of spam, duplicate, or low quality leads can easily be screened out of the report simply by adding either a set Phone or Email rule.

Add another New rule to the form and set the first field to the first field to Phone. Then, select is set from the drop-down menu in the second field. Selecting this operator only filters for records that have a phone number associated with the lead.

Alternatively (or in addition to the above rule), click New rule and set the first field to Email. Then, select is set from the drop-down menu in the second field.

These rules add only leads with an associated contact method to the report.

Active status

Click the  (Add branch) icon to the right of the Phone is set line, to add a new rule that branches from the rules above.

Two horizontal sets of fields appear below a line showing any  of: option. This setting filters for records that match any of the rules contained inside. This uses the same logic as an OR (|) logical operator.

Set the first field to Active. Then, select is set in the next field.

Next, click the  (Add New Rule) button next to Active is set to create a new line of fields beneath it.

Set the first field to Active. Then, select is not set in the next field.

This rule adds the activity status of the lead to the report.

 Note

Active status is an important filter to include when creating a lead distribution report because it includes all leads regardless of won/lost or active/inactive status in the report. This provides a comprehensive view of all the leads assigned to each sales member.

Group by

Once all filters are set, click the Add button to add these filters to the search bar. To have the report grouped appropriately, click the  (down caret) icon, to the right of the search bar, and click Salesperson in the Group By section. All results are now grouped by the salesperson assigned to each lead.

Once the rules for the filter are set, click the purple Confirm button at the bottom of the pop-up menu to save the custom filter and close the pop-up menu.

The Pipeline Analysis dashboard is now displayed again with each filter rule in the search bar.

Click the  (Graph) icon, to the right of the search bar, to view the report as a bar chart. Alternatively, click the  (List) icon to view leads in a grouped list.

 Tip

To save the filter so it can easily be re-applied, click the Save current search button in the Favorites section of the search bar drop-down menu.

Next, type a name for the filter in the text box below. Check the Shared checkbox to have the filter shared with any user with access to the pipeline. Finally, click the purple Save button below to save the filter.

The filter will now appear with the name it was given under the Favorites section of the drop-down menu and can be re-applied by clicking on it.

Filter for quality leads

The following additional conditions are provided as an example of a good, but not comprehensive, set of rules for finding quality leads. These filters should be applied on top of the Essential filters in the order specified to achieve a heavily-detailed filter.

  • Referred-by: Filter for referrals, such as by appointment or sales member.
  • Source: Filter for specific source UTMs, such as Facebook or LinkedIn.
  • Notes: Filter for internal notes.
  • Tags: Filter for categorical tags.
  • Email: Filter for specific email domains, such as gmail.com or yahoo.com.
  • Salesperson: Filter for leads associated with certain sales members.

These conditions can be added, removed, or modified to best fit the desired information in the report.

 See also

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Pipeline Analysis

The CRM app manages the sales pipeline as leads/opportunities move from stage to stage, origination to sale (Won) or archival (Lost).

After organizing the pipeline, use the search options and reports available on the Pipeline Analysis page to gain insight into the effectiveness of the pipeline and its users.

To access the Pipeline Analysis page, go to CRM app ‣ Reporting ‣ Pipeline.

Navigate the pipeline analysis page

Upon accessing the Pipeline Analysis page, a bar graph showcasing the leads from the past year automatically populates. The bars represent the number of leads in each stage of the sales pipeline, color-coded to show the month the lead reached that stage.

The interactive elements of the Pipeline Analysis page manipulate the graph to report different metrics in several views. From left-to-right, top-to-bottom, the elements include:

  • Actions: represented by the ⚙️ (gear) icon, located next to the Pipeline Analysis page title. When clicked, a drop-down menu appears with three options, each with their own sub-menu: Knowledge, Dashboard, Spreadsheet. (See Save and share reports for more information)
    • The Knowledge option is for linking to or inserting the graph in a Knowledge app article.
    • The Dashboard option is for adding the graph to a dashboard in the Dashboards app.
    • The Spreadsheet option is for linking the graph in a spreadsheet in the Documents app.
  • Search… bar: shows the filters and groupings currently being applied to the graph. To add new filters/groups, type them into the search bar, or click the ⬇️ (down arrow) icon, at the end of the bar, to open a drop-down menu of options. (See Search Options for more information)

In the upper-right corner, there are view options represented by different icons. (See View Options for more information)

  • Graph view: displays the data in a bar graph. This is the default view.
  • Pivot view: displays the data in a customizable, categorized metrics table.
  • Cohort view: displays and organizes the data, based on their Created on and Closed Date week (default), day, month, or year.
  • List view: displays the data in a list.

Located on the far-left side of the page, beneath the Pipeline Analysis page title, there are more configurable filter and view options.

  • Measures: opens a drop-down menu of different measurement options that can be seen in the graph, pivot, or cohort view. The Measure drop-down menu is not available in the list view. (See Measurement Options for more information)
  • Insert in Spreadsheet: opens a pop-up window with options for adding a graph or pivot table to a spreadsheet in the Documents app or a dashboard in the Dashboards app. This option is not available in the cohort or list view.

With the graph view selected, the following options are available:

  • Bar Chart: switches the graph to a bar chart.
  • Line Chart: switches the graph to a line chart.
  • Pie Chart: switches the graph to a pie chart.
  • Stacked: when selected, the results of each stage of the graph are stacked on top of each other. When not selected, the results in each stage are shown as individual bars.
  • Descending: re-orders the stages in the graph in descending order from left-to-right. Click the icon a second time to deselect it. Depending on the search criteria, this option may not be available.
  • Ascending: re-orders the stages in the graph in ascending order from left-to-right. Click the icon a second time to deselect it. Depending on the search criteria, this option may not be available.

With the pivot view selected, the following options are available:

  • Flip Axis: flips the X and Y axis for the entire table.
  • Expand All: when additional groupings are selected using the ➕ (plus sign) icons, this button opens those groupings under every row.
  • Download xlsx: downloads the table as an Excel file.

Search options

The Pipeline Analysis page can be customized with various filters and grouping options.

To add new search criteria, type the desired criteria into the search bar, or click the ⬇️ (down arrow) icon, next to the search bar, to open a drop-down menu of all options. See the sections below for more information on what each option does.

FiltersGroup ByComparisonFavorites

The Filters section allows users to add pre-made and custom filters to the search criteria. Multiple filters can be added to a single search.

  • My Pipeline: show leads assigned to the current user.
  • Opportunities: show leads that have been qualified as opportunities.
  • Leads: show leads that have yet to be qualified as opportunities.
  • Active: show active leads.
  • Inactive: show inactive leads.
  • Won: show leads that have been marked Won.
  • Lost: show leads that have been marked Lost.
  • Created On: show leads that were created during a specific period of time. By default, this is the past year, but it can be adjusted as needed, or removed entirely.
  • Expected Closing: show leads that are expected to close (marked Won) during a specific period of time.
  • Date Closed: show leads that were closed (marked Won) during a specific period of time.
  • Archived: show leads that have been archived (marked Lost).
  • Add Custom Filter: allows the user to create a custom filter with numerous options. (See Add Custom Filters and Groups for more information)

Add custom filters and groups

In addition to the pre-made options in the search bar, the Pipeline Analysis page can also utilize custom filters and groups.

Custom filters are complex rules that further customize the search results, while custom groups display the information in a more organized fashion.

To add a custom filter:

  1. On the Pipeline Analysis page, click the down arrow icon next to the Search… bar.
  2. In the drop-down menu, click Add Custom Filter.
  3. The Add Custom Filter pop-up window appears with a default rule (Country is in _____) comprised of three unique fields. These fields can be edited to make a custom rule, and multiple rules can be added to a single custom filter.
  4. To edit a rule, start by clicking the first field (Country), and select an option from the drop-down menu. The first field determines the primary subject of the rule.
  5. Next, click the second field, and select an option from the drop-down menu. The second field determines the relationship of the first and third fields, and is usually an is or is not statement, but can also be greater than or less than statements, and more.
  6. Finally, click the third field, and select an option from the drop-down menu. The third field determines the secondary subject of the rule.
  7. With all three fields selected, the rule is complete.
    • To add more rules: click New Rule and repeat steps 4-7, as needed.
    • To delete a rule: click the 🗑️ (trash) icon to the right of the rule.
    • To duplicate an existing rule: click the ➕ (plus sign) icon to the right of the rule.
    • To create more complex rules: click the Add branch icon to the right of the rule. This adds another modifier below the rule for adding an “all of” or “any of” statement.

  1. Once all rules have been added, click Add to add the custom filter to the search criteria.
    • To remove a custom filter: click the ✖️ (x) icon beside the filter in the search bar.

To add a custom group:

  1. On the Pipeline Analysis page, click the down arrow icon next to the search bar.
  2. In the drop-down menu that appears, click Add Custom Group.
  3. Scroll through the options in the drop-down menu, and select one or more groups.
    • To remove a custom group: click the ✖️ (x) icon beside the custom group in the search bar.

Measurement options

By default, the Pipeline Analysis page measures the total Count of leads that match the search criteria, but can be changed to measure other items of interest.

To change the selected measurement, click the Measures button on the top-left of the page, and select one of the following options from the drop-down menu:

  • Days to Assign: measures the number of days it took a lead to be assigned after creation.
  • Days to Close: measures the number of days it took a lead to be closed (marked Won).
  • Days to Convert: measures the number of days it took a lead to be converted to an opportunity.
  • Exceeded Closing Days: measures the number of days by which a lead exceeded its Expected Closing date.
  • Expected MRR: measures the Expected Recurring Revenue of a lead.
  • Expected Revenue: measures the Expected Revenue of a lead.
  • Prorated MRR: measures the Prorated Monthly Recurring Revenue of a lead.
  • Prorated Recurring Revenues: measures the Prorated Recurring Revenues of a lead.
  • Prorated Revenue: measures the Prorated Revenue of a lead.
  • Recurring Revenues: measures the Recurring Revenue of a lead.
  • Count: measures the total amount of leads that match the search criteria.

View options

After configuring filters, groupings, and measurements, the Pipeline Analysis page can display the data in a variety of ways. By default, the page uses the graph view, but can be changed to a pivot view, cohort view, or list view.

To change the pipeline to a different view, click one of the four view icons, located in the top-right of the Pipeline Analysis page.

Graph ViewPivot ViewCohort ViewList View

The graph view is the default selection for the Pipeline Analysis page. It displays the analysis as either a: bar chart, line chart, or pie chart.

This view option is useful for quickly visualizing and comparing simple relationships, like the Count of leads in each stage, or the leads assigned to each Salesperson.

By default, the graph measures the Count of leads in each group, but this can be changed by clicking the Measures button, and selecting another option from the resulting drop-down menu.

 Tip

When using a bar chart in this view, consider deselecting the Stacked option, in order to make the breakdown of results more legible.

Create reports

After understanding how to navigate the pipeline analysis page, the Pipeline Analysis page can be used to create and share different reports. Between the pre-made options and custom filter and groupings, almost any combination is possible.

Once created, reports can be saved to favorites, shared with other users, and/or added to dashboards and spreadsheets.

A few common reports that can be created using the Pipeline Analysis page are detailed below.

Win/Loss reports

Win/Loss is a calculation of active or previously active leads in a pipeline that were either marked as Won or Lost over a specific period of time. By calculating opportunities won over opportunities lost, teams can clarify key performance indicators (KPIs) that are converting leads into sales, such as specific teams or team members, certain marketing mediums or campaigns, and so on.

Win/LossRatio=OpportunitiesWonOpportunitiesLost

A win/loss report filters the leads from the past year, whether won or lost, and groups the results by their stage in the pipeline. Creating this report requires a custom filter, and grouping the results by Stage.

Follow the steps below to create a win/loss report:

  1. Navigate to CRM app ‣ Reporting ‣ Pipeline.
  2. On the Pipeline Analysis page, click the ⬇️ (down arrow) icon, next to the search bar, to open a drop-down menu of filters and groupings.
  3. In drop-down menu that appears, under the Group By heading, click Stage.
  4. Under the Filters heading, click Add Custom Filter to open another pop-up menu.
  5. In the Add Custom Filter pop-up menu, click on the first field in the Match any of the following rules: section. By default, this field displays Country.
  6. Clicking that first field reveals a sub-menu with numerous options to choose from. From this sub-menu, locate and select the Active option. Doing so automatically populates the remaining fields.
    The first field reads: Active. The second field reads: is. And lastly, the third field reads: set.
    In total, the rule reads: Active is set.
  7. Click New Rule, change the first field to Active, and the last field to not set. In total, the rule reads Active is not set.
  8. Click Add.

The report now displays the total Count of leads, whether “Won” or “Lost,” grouped by their stage in the CRM pipeline. Hover over a section of the report to see the number of leads in that stage.

Customize win/loss reports

After creating a win/loss report, consider using the options below to customize the report for different needs.

 Example

A sales manager might group wins and losses by salesperson, or sales team, to see who has the best conversion rate. Or, a marketing team might group by sources, or medium, to determine where their advertising has been most successful.

Filters and groupsPivot ViewList View

To add more filters and groups, click the ⬇️ (down arrow) icon, next to the search bar, and select one or more options from the drop-down menu.

Some useful options include:

  • Created on: adjusting this filter to a different period of time, such as the last 30 days, or the last quarter, can provide more timely results.
  • Add Custom Filter: clicking this option, and scrolling through the numerous options in the drop-down menu, opens up additional search criteria, like Last Stage Update or Lost Reason.
  • Add Custom Group > Active: Clicking Add Custom Group ‣ Active separates the results into Won (true) or Lost (false). This shows at what stage leads are being marked Won or Lost.
  • Multiple Groupings: add multiple Group By selections to split results into more relevant and manageable chunks.
    • Adding Salesperson or Sales Team breaks up the total count of leads in each Stage.
    • Adding Medium or Source can reveal what marketing avenues generate more sales.

Save and share reports

After creating a report, the search criteria can be saved, so the report does not need to be created again in the future. Saved searches automatically update their results every time the report is opened.

Additionally, reports can be shared with others, or added to spreadsheets/dashboards for greater customization and easier access.

Save to FavoritesAdd to a SpreadsheetAdd to a Dashboard

To save a report for later:

  1. On the Pipeline Analysis page, click the ⬇️ (down arrow) icon, next to the search bar.
  2. In the drop-down menu that appears, under the Favorites heading, click Save current search.
  3. In the next drop-down menu that appears, enter a name for the report.
    • Checking the Default filter box sets this report as the default analysis when the Pipeline Analysis page is accessed.
    • Checking the Shared box makes this report available to other users.
  4. Finally, click Save. The report is now saved under the Favorites heading.

 See also

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Expected revenue report

Expected revenue is the total cash value of leads that are expected to close by a certain date, usually the end of the current month.

An expected revenue report compiles all active leads in a sales pipeline that have a set expected closing date, and compares how sales teams are performing in a given time frame.

By pulling a monthly expected revenue report, sales managers can see which team members are reaching their goals, and who may need additional assistance to close valuable deals.

Create an expected revenue report

To create an expected revenue report, first navigate to CRM app ‣ Reporting ‣ Pipeline. This opens the Pipeline Analysis dashboard.

 Important

The Pipeline Analysis dashboard includes several filters in the search bar by default. Remove these before adding any additional custom filters.

On the top-left of the report, click Measures, then select Expected Revenue from the drop-down menu.

At the top of the page, click the 🔻(triangle pointed down) icon to the right of the Search… bar to open the drop-down menu that contains Filters, Group By, and Favorites columns. Under the Filters column, click Add Custom Filter, which opens an Add Custom Filter pop-up window.

Add custom filters

In order to generate an expected revenue report, filters need to be created for the following conditions:

  • Expected closing date: limits results to only include leads expected to close within a specific time frame.
  • Exclude unassigned leads: excludes leads without an assigned salesperson.
  • Specific sales teams: limits results to only include leads assigned to one or more sales teams. This filter is optional and should not be included if the report is intended for the entire company.

Add filter for expected closing date

On the Add Custom Filter pop-up window, click into the first field of the new rule. Type Expected Closing into the Search… bar, or scroll to select it from the list. Click in the second field and select is set. This limits the results to only include leads where an estimated closing date is listed.

Next, click the ➕ (plus) icon to the right of the rule to duplicate it.

 Tip

Using the ➕ (plus) icon makes it easy to add multiple rules based on the same filter.

In the second field of the new rule, select is between from the drop-down menu. This creates a set time frame during which the expected closing date must occur for leads to be included in the results.

Click in each date field, one at a time, and use the calendar popover window to add both a start and end date to the rule. This is usually the beginning and ending of the current month, or fiscal quarter.

Exclude unassigned leads

After filtering for the expected closing date, add a New Rule. Then, click into the new rule’s first field, and type Salesperson in the Search… bar, or scroll through the list to select it. Click in the rule’s second field and select is set from the drop-down menu. This excludes any results without an assigned salesperson.

Add a filter for sales teams

 Note

This filter is optional. To view results for the entire company, do not add this filter, and continue to View results.

To limit the results of the report to one or more sales teams, click New Rule. Next, click the first field for the new rule, and type Sales Team in the Search… bar, or scroll to search through the list to locate it.

In the rule’s second field, select is in from the drop-down menu. Selecting this operator limits results to the sales teams indicated in the next field.

Lastly, click into the third field, and either: make a selection from the complete list revealed in the popover menu, or type the first few characters of the specific sales team’s title to quickly find and select it as a parameter.

 Tip

Multiple teams can be added to the Sales Team rule, where each parameter is treated with an “or” (e.g. “any”) operator in the search logic.

View results

At the top of the Add Custom Filter form, there is an option to match any or all of the rules. In order to properly run the report, only records that match all of the following filters should be included. Before adding the filters, make sure all is selected in this field.

At the bottom of the Add Custom Filter form, click Add.

View options

The expected revenue report benefits from utilizing multiple views. The default graph view can be used to identify which salespeople are expected to bring in the most revenue, while the list view and pivot view provide more detail on specific deals.

Graph viewList viewPivot view

The graph view is used to visualize data, and is beneficial in identifying patterns and trends.

Bar charts are used to show the distribution of data across several categories or among several salespeople.

Line charts are useful to show changing trends over a period of time.

Pie charts are useful to show the distribution, or comparison, of data among a small number of categories or salespeople, specifically how they form the meaningful part of a whole picture.

The default view for the expected revenue report is the bar chart, stacked. To change to a different graph view, click one of the icons at the top-left of the report. While both the line chart and bar chart are available in stacked view, the pie chart is not.

Graph view icons in order: bar chart, line chart, pie chart, stacked.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Forecast report

The Forecast report in the CRM app allows users to view upcoming opportunities and build a forecast of potential sales. Opportunities are grouped by the month of their expected closing date, and can be dragged-and-dropped to adjust the deadline.

To access the Forecast report, navigate to CRM app ‣ Reporting ‣ Forecast.

Navigate the forecast report

The default Forecast report includes opportunities assigned to the current user’s pipeline, and are expected to close within four months. It also shows opportunities without an assigned expected closing date. The opportunities are grouped by month in a  (Kanban) view.

Expected closing date

Opportunities are grouped by the date assigned in the Expected Closing field on an opportunity form. To change this date directly from the Forecast page, select the Kanban card for the desired opportunity, then click and drag the card to the desired column.

 Note

The default time frame for the forecast is month. This can be changed by clicking the  (down) icon next to the Search… bar at the top of the report. Under the Group By heading in the resulting drop-down menu, click Expected Closing to expand the list of available options, and select a desired amount of time from the list.

After an opportunity is added to a new month, the Expected Closing field on the opportunity form is updated to the last date of the new month.

 Tip

The Expected Closing field can also be manually updated on the opportunity card. To do that, click on the Kanban card for an opportunity on the Forecast page to open the opportunity’s detail form. Click in the Expected Closing field, and use the calendar popover to select a new closing date.

Prorated revenue

At the top of the column for each month on the Forecast reporting page, to the right of the progress bar, is a sum of the prorated revenue for that time frame.

The prorated revenue is calculated using the formula below:

Expected Revenue×Probability=Prorated Revenue

As opportunities are moved from one column to another, the column’s revenue is automatically updated to reflect the change.

 Example

A forecast report for June includes two opportunities:

The first opportunity, Global Solutions, has an expected revenue of $3,800, and a probability of 90%. This results in a prorated revenue of $3,420.

The second opportunity, Quote for 600 Chairs, has an expected revenue of $22,500, and a probability of 20%. This results in a prorated revenue of $4,500.

The combined prorated revenue of the opportunities is $7,920, which is listed at the top of the column for the month.

 See also

For more information on how probability is assigned to opportunities, see Assign leads with predictive lead scoring

View results

Click the  (area chart) icon to change to graph view. Then, click the corresponding icon at the top of the report to switch to a  (bar chart),  (line chart), or  (pie chart).

Click the  (pivot) icon to change to the pivot view, or the  (list) icon to change to the list view.

 Tip

The pivot view can be used to view and analyze data in a more in-depth manner. Multiple measures can be selected, and data can be viewed by month, and by opportunity stage.

 See also

To save this report as a favorite, see Favorites.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Enrich contacts with partner autocomplete

Partner autocomplete enriches the contacts database with corporate data. In any module, enter the new company name into the Customer field (partner_id technical field), and select one of the companies suggested in the drop-down menu. Instantly get valuable company information full of hard-to-find data for a desired company.

 Important

A company cannot already be manually entered in the Contacts application prior to enriching it with data.

The information provided by partner autocomplete can include general information about the business (including full business name and logo), social media accounts, Company type, Founded information, Sectors information, the number of Employees, Estimated revenue, Phone number, Timezone, and Technologies Used.

 Important

When getting a company’s contact information make sure to be aware of the latest EU regulations. For more information about General Data Protection Regulation refer to: Odoo GDPR. In Odoo, individual contact information cannot be searched for with the partner autocomplete feature.

Configuration

Go to Settings app ‣ Contacts section. Then, activate the Partner Autocomplete feature, by ticking the checkbox beside it, and clicking Save.

Enrich contacts with corporate data

From any module, as the user is typing in the name of a new company contact, Odoo reveals a large drop-down menu of potential match suggestions. If any are selected, the contact is then populated with corporate data related to that specific selection.

For example, after typing Odoo, the following information populates:

In the chatter, the following information populates about the company, after clicking on the desired pre-populated contact:

 Tip

Partner Autocomplete also works if a VAT number is entered instead of company name.

Pricing

Partner Autocomplete is an In-App Purchase (IAP) service, which requires prepaid credits to be used. Each request consumes one credit.

To buy credits, go to Settings app ‣ Contacts section. Then, locate either the Partner Autocomplete feature and click Buy credits, or locate the Odoo IAP feature and click View My Services. From the resulting page, select a desired package.

 Note

If the database runs out of credits, the only information populated when clicking on the suggested company will be the website link and the logo.

Learn about our Privacy Policy.

 Note

Enterprise Odoo users with a valid subscription get free credits to test IAP features before deciding to purchase more credits for the database. This includes demo/training databases, educational databases, and one-app-free databases.

 See also

In-app purchases (IAP)

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

CRM Gamification

In Odoo’s CRM app, gamification tools provide the opportunity to evaluate and motivate users through customizable challenges, goals, and rewards. Goals are created to target actions within the CRM app, and can be tracked and rewarded automatically to participating sales teams.

Configuration

To install the CRM Gamification module, navigate to the Apps application. Click into the Search… bar at the top of the page and remove the Apps filter. Type CRM Gamification to search.

On the CRM Gamification module, click Install. This module features goals and challenges related to the CRM and Sales applications.

 Note

If both the CRM and Sales apps are installed, the CRM Gamification module is automatically installed on the database.

To access the Gamification Tools menu, first enable Developer mode (debug mode).

Next, navigate to Settings app ‣ Gamification Tools.

Create badges

Badges are awarded to users when they have completed a challenge. Different badges can be awarded based on the type of task completed, and can be issued to more than one user, depending on the time they accomplish the goal.

To view the existing badges, or create a new one, navigate to Settings ‣ Gamification Tools ‣ Badges.

 Note

Some badges can be awarded outside of challenges, as well. Select the Kanban card for the desired badge, then click Grant. This opens a Grant Badge pop-up window. Select a user from the Who would you like to reward? field.

Add any additional information regarding why the user is receiving the reward in the field below, then click Grant Badge.

To create a new badge, click New at the top-left of the page to open a blank form. Enter a name for the Badge, followed by a description.

The Allowance to Grant field determines when a badge can be granted, and by whom:

  • Everyone: this badge can be manually granted by any user.
  • A selected list of users: this badge can only be granted by a select group of users. If this option is selected, it generates a new field, Authorized Users. Choose the appropriate users from this drop-down list.
  • People having some badges: this badge can only be granted by users who have already been awarded a specific badge. If this option is selected it generates a new field, Required Badges. Use this drop-down list to select the badge(s) a user must have before they can award this badge to others.
  • No one, assigned through challenges: this badge cannot be manually granted, it can only be awarded through challenges.

To limit the number of badges a user can send, tick the Monthly Limited Spending checkbox. This sets a limit on the number of times a user can grant this badge. In the Limitation Number field, enter the maximum number of times this badge can be sent per month, per person.

Create a challenge

To create a challenge, navigate to to Settings ‣ Gamification Tools ‣ Challenges. Click New in the top-left corner to open a blank challenge form.

At the top of the form, enter a Challenge Name.

Create assignment rules

To assign the challenge to specific users, one or more assignment rules must be utilized.

Click into the first field under Assign Challenge to, and select a parameter from the drop-down list to define the rule. Then, click into the next field to define the rule’s operator. If necessary, click into the third field to further define the parameter.

 Tip

To include all users with permissions in the Sales app, create a rule with the following parameters:

  • Groups
  • is in
  • Sales/User: Own Documents Only

In the Periodicity field, select a time frame for goals to be automatically assessed.

Add goals

Challenges can be based on a single goal, or can include multiple goals with different targets. To add a goal to the challenge, click Add a line on the Goals tab.

In the Goal Definition field, choose a goal from the drop-down list. The Condition field automatically updates to reflect the condition set on the goal definition.

 Tip

The CRM Gamification module contains preconfigured goals geared towards salesteams:

  • New Leads
  • Time to Qualify a Lead
  • Days to Close a Deal
  • New Opportunities
  • New Sales Orders

Enter a Target for the goal based on the Suffix.

Repeat these steps for each additional goal.

Add rewards

Next, click the Reward tab. Choose the badges to be awarded For 1st User and For Every Succeeding User by selecting them from the drop-down lists.

 Note

Badges are granted when a challenge is finished. This is either at the end of a running period, at the end date of a challenge, or when the challenge is manually closed.

After setup is complete, click the Start Challenge button at the top-left of the page to begin the challenge.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Utilize activities for sales teams

Activities are follow-up tasks tied to a record in an Odoo database. Activities can be scheduled on any page of the database that contains a chatter thread, Kanban view, list view, or activities view of an application.

Planned Activities for Leads and Opportunities.

Activity types

A set of preconfigured activity types is available in the CRM app. To view the list of available activity types, navigate to the CRM app ‣ Configuration ‣ Activity Types.

 Note

Additional activity types are available within the database, and can be utilized through different applications. To access the complete list of activity types, go to the Settings app, then scroll to the Discuss section, and click Activity Types.

The preconfigured activity types for the CRM app are as follows:

  • Email: adds a reminder to the chatter that prompts the salesperson to send an email.
  • Call: opens a calendar link where the salesperson can schedule time to call the contact.
  • Meeting: opens a calendar link where the salesperson can schedule time to have a meeting with the contact.
  • To Do: adds a general reminder task to the chatter.
  • Upload Document: adds a link on the activity where an external document can be uploaded. Note that the Documents app is not required to utilize this activity type.

 Note

If other applications are installed, such as Sales or Accounting, other activity types are made available in the CRM app.

Create a new activity type

To create a new activity type, click New at the top-left of the page to open a blank form.

At the top of the form, start by choosing a Name for the new activity type.

Activity settings

Action

The Action field specifies the intent of the activity. Some actions trigger specific behaviors after an activity is scheduled.

  • If Upload Document is selected, a link to upload a document is added directly to the planned activity in the chatter.
  • If either Phonecall or Meeting are selected, users have the option to open their calendar to schedule a time for this activity.
  • If Request Signature is selected, a link is added to the planned activity in the chatter that opens a signature request pop-up window.

 Note

The actions available to select on an activity type vary, depending on the applications currently installed in the database.

Default user

To automatically assign this activity to a specific user when this activity type is scheduled, choose a name from the Default User drop-down menu. If this field is left blank, the activity is assigned to the user who creates the activity.

Default summary

To include notes whenever this activity type is created, enter them into the Default Summary field.

 Note

The information in the Default User and Default Summary fields are included when an activity is created. However, they can be altered before the activity is scheduled or saved.

Next activity

To automatically suggest, or trigger, a new activity after an activity has been marked complete, the Chaining Type must be set.

Suggest next activity

In the Chaining Type field, select Suggest Next Activity. Upon doing so, the field underneath changes to: Suggest. Click the Suggest field drop-down menu to select any activities to recommend as follow-up tasks to this activity type.

In the Schedule field, choose a default deadline for these activities. To do so, configure a desired number of Days, Weeks, or Months. Then, decide if it should occur after completion date or after previous activity deadline.

This Schedule field information can be altered before the activity is scheduled.

When all configurations are complete, click Save.

 Note

If an activity has the Chaining Type set to Suggest Next Activity, and has activities listed in the Suggest field, users are presented with recommendations for activities as next steps.

Trigger next activity

Setting the Chaining Type to Trigger Next Activity immediately launches the next activity once the previous one is completed.

If Trigger Next Activity is selected in the Chaining Type field, the field beneath changes to: Trigger. From the Trigger field drop-down menu, select the activity that should be launched once this activity is completed.

In the Schedule field, choose a default deadline for these activities. To do so, configure a desired number of Days, Weeks, or Months. Then, decide if it should occur after completion date or after previous activity deadline.

This Schedule field information can be altered before the activity is scheduled.

When all configurations are complete, click Save.

 Note

When an activity has the Chaining Type set to Trigger Next Activity, marking the activity as Done immediately launches the next activity listed in the Trigger field.

Activity tracking

To keep the pipeline up to date with the most accurate view of the status of activities, as soon as a lead is interacted with, the associated activity should be marked as Done. This ensures the next activity can be scheduled as needed. It also prevents the pipeline from becoming cluttered with past due activities.

The pipeline is most effective when it is kept up-to-date and accurate to the interactions it is tracking.

Activity plans

Activity plans are preconfigured sequences of activities. When an activity plan is launched, every activity in the sequence is scheduled automatically.

To create a new plan, navigate to CRM app ‣ Configuration ‣ Activity Plan. Click New at the top-left of the page to open a blank Lead Plans form.

Enter a name for the new plan in the Plan Name field. On the Activities to Create tab, click Add a line to add a new activity.

Select an Activity Type from the drop-down menu. Click Search More to see a complete list of available activity types, or to create a new one.

Next, in the Summary field, enter any details to describe the specifics of the activity, including instructions for the salesperson or information due upon the completion of the activity. The contents of this field are included with the scheduled activity, and can be edited later.

In the Assignment field, select one of the following options:

  • Ask at launch: activities are assigned to a user when the plan is scheduled.
  • Default user: activities are always assigned to a specific user.

If Default user is selected in the Assignment field, choose a user in the Assigned to field.

 Tip

Activity plans can feature activities that are assigned to default users and users assigned at the plan launch.

Next, configure the timeline for the activity. Activities can be scheduled to occur either before the plan date or after. Use the Interval and Units fields to set the deadline for this activity. Lastly, in the Trigger field, select whether the activity should occur before or after the plan date.

 Example

An activity plan is created to handle high priority leads. Specifically, these leads should be contacted quickly, with a meeting scheduled within two days of the initial contact. The plan is configured with the following activities:

  • Email two days before plan date
  • Meeting zero days before plan date
  • Make quote three days after plan date
  • Upload document three days after plan date
  • Follow-up five days after plan date

This sets the plan date as the meeting deadline, which is the objective of the plan. Before that date, there is lead time to contact the customer and prepare for the meeting. After that date, the salesperson has time to create a quote, upload the document, and follow-up.

Repeat these steps for each activity included in the plan.

Launch an activity plan

To launch an activity plan on a CRM opportunity, navigate to CRM app and click on the Kanban card of an opportunity to open it.

At the top-right of the chatter, click Activities to open the Schedule Activity pop-up window.

In the Plan field, select the desired activity plan to launch. This generates a Plan summary, listing out the activities included in the plan. Select a Plan Date using the calendar popover. This updates the Plan summary with deadlines based on the intervals configured on the activity plan.

Select a user in the Assigned To field. This user is assigned to any of the activities on the plan were configured with Ask at launch in the Assignment field.

Click Schedule.

The details of the plan are added to the chatter, in addition to each of the activities.

 See also

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Lead enrichment

Lead enrichment is a service that provides business information for a contact attached to a lead. Lead enrichment is an In-App Purchase (IAP) that requires credits to use, and is available for existing leads in an Odoo database.

The information provided by lead enrichment can include general information about the business (including full business name and logo), social media accounts, Company type, Founded information, Sectors information, the number of Employees, Estimated revenue, Phone number, Timezone, and Technologies Used.

 Note

Enterprise Odoo users with a valid subscription get free credits to test IAP features before deciding to purchase more credits for the database. This includes demo/training databases, educational databases, and one-app-free databases.

 Important

The leads feature must be activated in the CRM settings page in order to use lead enrichment. To access the CRM settings, navigate to CRM app ‣ Configuration ‣ Settings. Under the CRM section activate the Leads option and click Save.

Lead enrichment set up

To set up lead enrichment in the CRM application, navigate to CRM app ‣ Configuration ‣ Settings. Then, under the Lead Generation section, tick the checkbox next to Lead Enrichment, and select either Enrich leads on demand only or Enrich all leads automatically. Click the Save button to activate the changes.

Enrich leads

Enrichment of leads is based on the domain of the email address of the customer set on the lead. There are two different ways that a lead can be enriched: automatically or manually.

Automatically enrich leads

During set up, if Enrich all leads automatically was selected on the CRM Settings page, then no action needs to be taken by the user to enrich the lead. A scheduled action runs automatically, every sixty minutes, and enrichment occurs on leads, after a remote database is contacted.

 Tip

To access the cron that runs for the automatic lead enrichment, activate developer mode, and navigate to Settings app ‣ Technical menu ‣ Automation section ‣ Scheduled Actions. In the Search… bar, type in CRM. Click into the result labeled CRM: enrich leads (IAP), and make any necessary adjustments. In the Execute Every field, enter a value greater than, or equal to, five minutes.

 Example

The following is an example of lead enrichment data that has been autocompleted successfully:

Manually enrich leads

If the Enrich leads on demand only option was selected on the CRM Settings page, when activating Lead Enrichment, each lead that a user wishes to enrich must be manually enriched. This is achieved by clicking the Enrich button in the top menu of the lead.

The same information will be retrieved at the same IAP credit cost (one per enrichment). This method of enrichment is useful when every lead does not need to be enriched, or cost is an issue.

 Tip

Manually enrich leads in bulk using the list view. First, navigate to CRM app ‣ Leads, and click the list view button (☰ (three horizontal lines) icon). Next, tick the checkboxes for the leads that should be manually enriched. Finally, click the ⚙️ Action icon, and select Enrich from the resulting drop-down menu. This can also be achieved from the My Pipeline page. To do so, simply open the CRM app, or navigate to CRM app ‣ Sales ‣ My Pipeline. Either route reveals leads and opportunities on the Pipeline page.

Pricing

Lead enrichment is an In-App Purchase (IAP) feature, and each enriched lead costs one credit.

 Note

See here for full pricing information: Lead Generation by Odoo IAP.

To buy credits, navigate to CRM app ‣ Configuration ‣ Settings. In the Lead Generation section, under the Lead Enrichment feature, click on Buy Credits.

Credits and balances may also be purchased by navigating to the Settings app. In the Contacts section, under the Odoo IAP feature, click on View My Services.

 See also

In-app purchases (IAP)

 Important

When collecting a company’s contact information, make sure to be aware of the latest EU regulations. For more information about General Data Protection Regulation, refer to: Odoo GDPR.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Sales

Odoo Sales is the application to run your sales process (from quotation to sales order) and deliver and invoice what has been sold.

 See also

 Edit on GitHub

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Sales quotations

sales quotation or quote is a document sent to a customer that outlines the estimated costs and terms for goods and services. Once accepted, a quotation can be converted into a sales order, which serves as the final agreement before delivery and invoicing.

Sales flow overview

Quotations fit into a broader sales flow that connects different stages of customer interactions from initial interest to payment.

The typical flow follows these steps:

  1. Quotation: A proposal sent to the customer with product details and pricing.
  2. Sales order: Created automatically when the customer accepts the quotation, confirming the sale.
  3. Delivery (if applicable): Products are shipped or services are delivered.
  4. Invoice: The final bill is issued based on the sales order or delivered products/services.
  5. Payment: The customer settles the invoice, completing the sales cycle.

This flow helps businesses track the entire lifecycle of a sale while keeping information consistent across apps.

In Odoo, quotations are configured in the Sales app. They can also be generated from other apps as part of the sales workflow:

Create quotations

Create, configure, and send quotations to customers.

Quotation templates

Configure and use quotation templates to send tailor-fit quotations at a quicker pace.

Optional products

Offer useful and related products to customers to increase sales.

Online signatures for order confirmations

Customers have the ability to confirm orders via online signatures, directly on sales orders.

Online payment order confirmation

Customers have the ability to confirm orders via online payment, directly on sales orders.

Quotation Deadlines

Set deadlines on quotations to encourage customers to act in a timely manner when closing business deals.

Deliver orders and invoices to different addresses

Specify separate customer delivery and invoicing addresses on quotations.

Product variants on quotations and sales orders

Add product variants to sales orders to provide additional options for single products.

PDF quote builder

Add custom PDF files to quotations to elevate the document’s headers and designs.

Sales quotations in business deals

Sales quotations serve as a key step in the sales process, bridging the gap between a customer’s initial inquiry about goods and services and the final contractual agreement for payment and delivery. The quotation also provides transparency in pricing, helping both parties negotiate and finalize the terms before making a commitment.

Sales quotations play a crucial role in business transactions by defining the scope and cost of what is being sold to the end-customer; setting clear expectations on pricing, delivery, tax, and payment terms; and providing a documented stage where the business deal can be negotiated before agreed upon.

Key components of a sales quotation

A well-structured sales quotation comprises the following:

  • Quotation number and date: A unique identifier for tracking and reference, as well as the dates of issue and expiration. In Odoo Sales app, the quotation number is assigned under a standard naming convention once it is confirmed.
  • Customer information: Customer name and contact information, as well as invoicing and delivery address.
  • Products and services: Itemized listing of items to be purchased, including quantity, specifications (as needed), and unit price.
  • Payment terms and pricelists: Configured agreements and rules for the pricing and payment of this particular sales quotation.
  • Special pricing: Optional discounts and promotional pricing to update and/or modify individual product lines.
  • Total cost and currency: Summary totals of product or service and shipping prices, including relevant taxes.

In Odoo’s Sales app, quotations can include additional details and configurations that add more detail and information, such as quotation templatessubscription plans, and sales team referrer name.

 Edit on GitHub

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Create quotations

In Odoo Sales, quotations can be created and sent to customers. Once a quotation has been confirmed, it officially turns into a sales order, which can then be invoiced and paid for.

Quotation settings

To access these setting options, navigate to Sales app ‣ Configuration ‣ Settings, and scroll to the Quotations & Orders section.

  • Quotation Templates: Enable this option to create quotation templates featuring standard product offers, which are then selectable on quotation forms. When this checkbox is ticked, an additional field, Default Template, appears, along with a link to the Quotation Templates page.
  • Online Signature: Request an online signature to confirm orders.
  • Online Payment: Request an online prepayment from customers to confirm orders. Request a full or partial payment (via down payment). When this checkbox is ticked, an additional field, Prepayment amount (%), appears. There is also a link to the Payment Providers page.
  • Default Quotation Validity: Determine a set amount (in days) that quotations can remain valid for.
  • Default Recurrence: Select a default period from the drop-down menu to use as a recurrence period for a new quotation.
  • Sale Warnings: Get warning messages about orders that include specific products or customers.
  • PDF Quote builder: Customize the look of quotations with header pages, product descriptions, footer pages, and more.
  • Lock Confirmed Sales: Ensure no further edits can be made to confirmed orders.
  • Pro-Forma Invoice: Send pro-forma invoices to customers.

To activate any of these settings, tick the checkbox beside the desired option(s). Then, click Save.

Quotations dashboard

The Quotations dashboard is the page that appears when the Sales app is opened.

By default, the Quotations dashboard displays all quotations in the database related to the current user, as indicated by the default My Quotations filter present in the search bar.

 Note

To view all quotations in the database, remove the My Quotations filter from the search bar.

Quotations on this page appear in a default list view, but can also be viewed in a  Kanban view,  Calendar,  Pivot table,  Graph, or  Activity view.

To view and/or modify any listed quotation from the Quotations dashboard, click on the desired quotation line from the list, and Odoo reveals the specific form for that selected quotation.

Create quotation

To create a quotation, open the Sales app, and click the New button, located in the upper-left corner of the main Quotations dashboard.

 Important

The New button is only present if the Quotations dashboard is in list or Kanban view.

Clicking the New button reveals a blank quotation form, with various fields and tabs to configure.

Begin by entering the customer’s name in the Customer field at the top of the form. This is a required field.

If the customer’s information is already in the database, the Invoice Address and Delivery Address fields auto-populate with the saved information for those respective fields, based on the data from that customer’s contact record (found in the Contacts application).

If the customer was referred by another customer or contact, enter their name in the Referrer field.

If a Referrer is selected, a new field, Commission Plan appears, in which a commission can be selected from the drop-down menu. This commission is rewarded to the contact selected in the Referrer field.

Next, if they have not already been auto-populated with the customer’s information, enter the appropriate addresses in the Invoice Address and Delivery Address fields. Both of these fields are required.

Then, if desired, choose a Quotation Template from the drop-down field to apply to this quotation. It should be noted that some additional fields may appear, depending on the template selected.

The default date that appears in the Expiration field is based on the number configured in the Default Quotation Validity setting (in Sales app ‣ Configuration ‣ Settings).

 Tip

When using a quotation template, the date in the Expiration field is based off the Quotation Validity figure on the template form.

If the quotation is for a recurring product or subscription, select the desired Recurring Plan from that specific drop-down menu.

If desired, select a specific Pricelist to be applied to this quotation.

Lastly, select any specific Payment Terms to be used for this quotation.

Order Lines tab

The first tab on the quotation form is the Order Lines tab.

In this tab, select products, and quantities of those products, to add them to the quotation.

There are two ways to add products to the quotation from this tab.

Click Add a product, select the desired item from the Product drop-down field, and proceed to adjust the quantity of that selected product, if necessary.

Or, click Catalog to reveal a separate page, showcasing every item (and every potential product variant) in an organized catalog display, with items organizable by Product Category and Attributes.

From here, simply locate the desired items, click the  Add button on the product card, and adjust the quantity, if needed. When complete, click the Back to Quotation button in the upper-left corner to return to the quotation, where the newly-selected catalog items can be found in the Order Lines tab.

If multiple items should be presented in a more organized way on the quotation, click Add a section, enter a name for the section, and drag-and-drop that section heading in the desired location amongst the items in the Order Lines tab. The section heading appears in bold.

If needed, click Add a note beneath a certain product line to add a custom note about that specific product. The note appears in italics. Then, if needed, proceed to drag-and-drop the note beneath the desired product line.

Beneath the product lines, there are buttons that can be clicked to apply any of the following: Coupon Code, Promotions, Discount, and/or Add shipping.

 See also

Optional Products tab

Open the Optional Products tab to select related products that can be presented to the customer, which may result in an increased sale.

For example, if the customer wants to buy a car, an optional product that could be offered is a Trailer Hitch.

 See also

Optional products

Other Info tab

In the Other Info tab, there are various quotation-related configurations separated into four different sections: Sales, Delivery, Invoicing, and Tracking.

 Note

Some fields only appear if specific settings and options have been configured.

Sales section

In the Sales section of the Other Info tab, there are sales specific fields that can be configured.

  • Salesperson: Assign a salesperson from the drop-down menu to be associated with this quotation. The user who originally created the quotation is selected in this field, by default.
  • Sales Team: Assign a specific sales team to this quotation. If the selected Salesperson is a member of a sales team, that team is auto-populated in the field.
  • Company: Select a company from the drop-down menu this quotation should be associated with. This field only appears when working in a multi-company environment.
  • Online signature: Tick this checkbox to request an online signature from the customer to confirm the order. This field only appears if the Online Signature setting has been enabled.
  • Online payment: Tick this checkbox, and enter a desired percentage in the adjacent field, to request an online payment from the customer (for that designated percentage of the total amount) to confirm the order. This field only appears if the Online Payment setting has been enabled.
  • Customer Reference: Enter a custom reference ID for this customer. The entered reference ID can contain letters, numbers, or a mix of both.
  • Tags: Add specific tags to the quotation for added organization and enhanced searchability in the Odoo Sales application. Multiple tags can be added, if necessary.

Delivery section

In the Delivery section of the Other Info tab, there are delivery-specific fields that can be configured.

  • Shipping Weight: Displays the weight of the items being shipped. This field is not modifiable. Product weight is configured on individual product forms.
  • Incoterm: Select an Incoterm (International Commerical Term) to use as predefined commerical terms for international transactions.
  • Incoterm Location: If an Incoterm is being used, enter the international location in this field.
  • Shipping Policy: Select a desired shipping policy from the drop-down menu. If all products are delivered at once, the delivery order is scheduled, based on the greatest product lead time. Otherwise, it is based on the shortest lead time. The available options are: As soon as possible or When all products are ready.
  • Delivery Date: Click into the empty field to reveal a calendar popover, from which a customer delivery date can be selected. If no custom date is required, refer to the Expected date listed to the right of that field.

Invoicing section

In the Invoicing section of the Other Info tab, there are invoicing specific fields that can be configured.

  • Fiscal Position: Select a fiscal position to be used to adapt taxes and accounts for particular customers or sales orders/invoices. The default value comes from the customer. If a selection is made in this field, an  Update Taxes clickable link and icon appear. When clicked, the taxes for this partiuclar customer and quotation are updated. A confirmation window appears, as well.
  • Analytic Account: Select an analytic account to apply to this customer/quotation.

Tracking section

In the Tracking section of the Other Info tab, there are tracking specific fields that can be configured.

  • Source Document: Enter the reference of the document that generated the quotation/sales order, if applicable.
  • Opportunity: Select the specific opportunity (from the CRM app) related to this quotation, if applicable.
  • Campaign: Select the marketing campaign related to this quotation, if applicable.
  • Medium: Select the method by which this quotation originated (e.g. Email), if applicable.
  • Source: Select the source of the link used to generate this quotation (e.g. Facebook), if applicable.

 See also

Link tracker

Notes tab

In the Notes tab of the quotation form, enter any specific internal notes about the quotation and/or customer, if desired.

Sending and confirming quotations

Once all the necessary fields and tabs have been configured, it is time to send the quotation to the customer for confirmation. Upon confirmation, the quotation turns into an official sales order.

At the top of the form, there is a series of buttons:

  • Send by Email: When clicked, a pop-up window appears with the customer’s name and email address in the Recipients field, the quotation (and reference ID) in the Subject field, and a brief default message in the body of the email, which can be modified, if needed.
    Below that, a PDF copy of the quotation is attached. When ready, click Send to send the quotation, via email, to the customer, so they can review and confirm it.
  • Send PRO-FORMA Invoice: This button only appears if the Pro-Forma Invoice setting has been enabled. When clicked, a pop-up window appears with the customer’s name and email address in the Recipients field, the Proforma invoice (and reference ID) in the Subject field, and a brief default message in the body of the email, which can be modified, if needed.
    Below that, a PDF copy of the quotation is attached. When ready, click Send to send the quotation, via email, to the customer, so they can review and confirm it.
  • Confirm: When clicked, the quotation is confirmed, and the status changes to Sales Order.
  • Preview: When clicked, Odoo reveals a preview of the quotation the customer sees when they log into their customer portal. Click the  Back to edit mode link at the top of the preview page, in the blue banner, to return to the quotation form.
  • Cancel: When clicked, the quotation is canceled.

 Note

If the Lock Confirmed Sales setting is enabled, the sales order becomes Locked, and is indicated as such on the sales order form.

At this point, the quotation has been confirmed, turned into a sales order, and is now ready to be invoiced and paid for.

For more information about invoicing, refer to the Invoice based on delivered or ordered quantities

 See also

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Quotation templates

Reusable quotation templates can be made in Odoo’s Sales app for common products or services.

By using these templates, quotations can be tailored and sent to customers at a quicker pace, without having to create new quotations from scratch every time a sales negotiation occurs.

Configuration

To use quotation templates, begin by activating the setting in Sales app ‣ Configuration ‣ Settings, and scroll to the Quotations _Orders heading.

Under the heading, tick the Quotation Templates checkbox. Doing so reveals a new Default Template field, in which a default quotation template can be chosen from the drop-down menu.

Upon activating the Quotation Template feature, an internal  Quotation Templates link appears beneath the Default Template field.

Clicking this link reveals the Quotation Templates page, from which templates can be created, viewed, and edited.

Before leaving the Settings page, do not forget to click the Save button to save all changes made during the session.

Create quotation templates

To create a quotation template, click the Quotation Templates link on the Settings page once Quotation templates are enabled, or navigate to Sales app ‣ Configuration ‣ Quotation Templates. Both options reveal the Quotation Templates page, where quotation templates can be created, viewed, and edited.

To create a new quotation template, click the New button, located in the upper-left corner. Doing so reveals a blank quotation template form that can be customized.

Start by entering a name for the template in the Quotation Template field.

Then, in the Quotation Validity field, designate how many days the quotation template will remain valid for, or leave the field on the default 0 to keep the template valid indefinitely.

Next, in the Confirmation Mail field, click the blank drop-down menu to select a preconfigured email template to be sent to customers upon confirmation of an order.

 Tip

To create a new email template directly from the Confirmation Mail field, start typing the name of the new email template in the field, and select either: Create or Create and edit… from the drop-down menu that appears.

Selecting Create creates the email template, which can be edited later.

Selecting Create and edit… creates the email template, and a Create Confirmation Mail pop-up window appears, in which the email template can be customized and configured immediately.

When all modifications are complete, click Save & Close to save the email template and return to the quotation form.

If working in a multi-company environment, use the Company field to designate to which company this quotation template applies.

If a journal is set in the Invoicing Journal field, all sales orders with this template will invoice in that specified journal. If no journal is set in this field, the sales journal with the lowest sequence is used.

If the Online Signature and/or Online Payment features are activated in the Settings (Sales app ‣ Configuration ‣ Settings), those options are available on quotation template forms.

Check the box beside Online Signature to request an online signature from the customer to confirm an order.

Check the box beside Online Payment to request an online payment from the customer to confirm an order. When Online Payment is checked, a new percentage field appears, in which a specific percentage of payment can be entered.

Both options, Online Signature and Online Payment can be enabled simultaneously, in which case the customer must provide both a signature and a payment to confirm an order.

In the Recurring Plan field, choose from a variety of pre-configured amounts of time (e.g. Monthly, Quarterly, etc.) to designate how often this quotation template should occur.

 Note

The Recurring Plan field only applies to subscription plans. For more information, check out the documentation on Subscription plans.

Lines tab

In the Lines tab, products can be added to the quotation template by clicking Add a product, organized by clicking Add a section (and dragging/dropping section headers), and further explained with discretionary information (such as warranty details, terms, etc.) by clicking Add a note.

To add a product to a quotation template, click Add a product in the Lines tab of a quotation template form. Doing so reveals a blank field in the Product column.

When clicked, a drop-down menu with existing products in the database appears. Select the desired product from the drop-down menu to add it to the quotation template.

If the desired product is not readily visible, type the name of the desired product in the Product field, and the option appears in the drop-down menu. Products can also be found by clicking Search More… from the drop-down menu.

 Tip

It is possible to add event-related products (booths and registrations) to quotation templates. To do so, click the Product field, type in Event, and select the desired event-related product from the resulting drop-down menu.

 Note

When a product is added to a quotation template, the default Quantity is 1, but that can be edited at any time.

Then, drag and drop the product to the desired position, via the six squares icon, located to the left of each line item.

To add a section, which serves as a header to organize the lines of a sales order, click Add a section in the Lines tab. When clicked, a blank field appears, in which the desired name of the section can be typed. When the name has been entered, click away to secure the section name.

Then, drag and drop the section name to the desired position, via the  (six squares) icon, located to the left of each line item.

To add a note, which appears as a piece of text for the customer on the quotation, click Add a note in the Lines tab. When clicked, a blank field appears, in which the desired note can be typed. When the note has been entered, click away to secure the note.

Then, drag and drop the note to the desired position, via the  (six squares) icon.

To delete any line item from the Lines tab (product, section, and/or note), click the  (remove record) icon on the far-right side of the line.

Optional Products tab

Using optional products is a marketing strategy that involves the cross-selling of products along with a core product. The aim is to offer useful and related products to customers, which may result in an increased sale.

 Example

If a customer wants to buy a car, they have the choice to order massaging seats as an additional product that compliments the car, or ignore the offer and buy the car alone.

Optional products appear as a section on the bottom of sales orders and eCommerce pages. Customers can immediately add them to their online sales orders themselves, if desired.

In the Optional Products tab, Add a line for each cross-selling product related to the original items in the Lines tab, if applicable.

Clicking Add a line reveals a blank field in the Product column.

When clicked, a drop-down menu with products from the database appear. Select the desired product from the drop-down menu to add it as an optional product to the quotation template.

To delete any line item from the Optional Products tab, click the  (remove record) icon.

 Note

Optional products are not required to create a quotation template.

Terms & Conditions tab

The Terms & Conditions tab provides the opportunity to add terms and conditions to the quotation template. To add terms and conditions, type the desired terms and conditions in this tab.

 See also

Default terms and conditions (T&C)

 Note

Terms and conditions are not required to create a quotation template.

Use quotation templates

When creating a quotation (Sales app ‣ New), choose a preconfigured template in the Quotation Template field.

 Note

The order of the templates in the Quotation Template field is determined by the order of the templates in the Quotation Templates form. The order of the quotations in the Quotation Templates form does not affect anything else.

To view what the customer will see, click the Preview button at the top of the page to see how the quotation template appears on the front-end of the website through Odoo’s customer portal.

When all blocks and customizations are complete, click the Save button to save the configuration.

The blue banner located at the top of the quotation template preview can be used to quickly return  Back to edit mode. When clicked, Odoo returns to the quotation form in the back-end of the Sales application.

Mass cancel quotations/sales orders

Cancel multiple quotations (or sales orders) by navigating to the Sales app ‣ Orders ‣ Quotations dashboard, landing, by default, in the list view. Then, on the left side of the table, tick the checkboxes for the quotations to be canceled.

 Tip

Select all records in the table by selecting the checkbox column header at the top-left of the table; the total number of selected items are displayed at the top of the page.

Then, with the desired quotations (or sales orders) selected from the list view on the Quotations page, click the  Actions button to reveal a drop-down menu.

From this drop-down menu, select Cancel quotations.

 Note

This action can be performed for quotations in any stage, even if it is confirmed as a sales order.

Upon selecting the Cancel quotations option, a Cancel quotations confirmation pop-up window appears. To complete the cancellation, click the Cancel quotations button.

 Note

An error pop-up message appears when attempting to cancel an order for an ongoing subscription that has an invoice.

 See also

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Optional products

The use of optional products is a marketing strategy that involves the cross-selling of products along with a core product. The aim is to offer useful and related products to customers, which may result in an increased sale.

For instance, if a customer wants to buy a car, they have the choice to order massaging seats, as well, or ignore the offer and simply buy the car. Presenting the choice to purchase optional products enhances the customer experience.

Optional products on quotations

With the Odoo Sales application, it is possible to add or modify optional products directly on quotations by navigating to the Optional Products tab on a quotation form.

To add an optional product(s) to a quotation, click Add a product in the Optional Products tab of a quotation. Doing so reveals a blank field in the Product column.

When clicked, a drop-down menu with products from the database appear. Select the desired product from the drop-down menu to add it as an optional product to the quotation template.

 Tip

If the desired product isn’t readily visible, type the name of the desired product in the field, and the option appears in the drop-down menu. Then, select that desired product to add it to the quotation.

 Note

When a product is added, the default Quantity is 1, but that can be edited at any time.

To delete any line item from the Optional Products tab, click the 🗑️ (trash can) icon.

Click the Preview button, located in the upper-left corner of the quotation, to reveal a preview of the quotation customers would receive, via email, along with the optional products they can potentially add to their order, located in the Options section.

Customers are able to add different optional products to an order by clicking the 🛒 (shopping cart) icon, located to the right of the optional product line.

If a customer selects optional products, these are automatically added to the quotation managed by the salesperson.

When the customer adds an optional product(s) to an order, the salesperson is instantly notified about the change, along with any other change the customer makes to an order. This allows salespeople to stay up-to-date with everything related to an order in the backend of the Sales application.

Optional products on quotation templates

 Note

Be sure to review the Quotation templates documentation to better understand how quotation templates work before reading the following information.

For quotation templates, just like a typical quotation form, there is also an Optional Products tab, wherein related products or services can be added to a quotation template.

To add optional products to a quotation template, navigate to Sales app ‣ Configuration ‣ Quotation Templates. Then, either select an existing quotation template to edit, or create a new one by clicking New.

On the quotation template form, click the Optional Products tab. Under the Optional Products tab, click Add a line, and select the desired product to add as an optional product to the quotation template.

The products added in the Optional Products tab are present in the quotation, by default, whenever that particular quotation template is used. These products can be removed, and additional products can be added, before the quotation is sent to a customer.

 Tip

It’s best to offer optional products that would encourage a customer to add additional items to their order, or entice them to purchase a more expensive version of their initially selected product.

For example, if a customer purchases a wooden chair, some optional products could be: a warranty on that chair and/or a wooden chair with leather seats.

 Note

There is no limit to how many optional products can be added to a quotation template.

 See also

Quotation templates

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Online signatures for order confirmations

The Odoo Sales application provides customers with the ability to confirm orders, via an online signature, directly on the sales order. Once the sales order is electronically signed by the customer, the salesperson attached to the sales order is instantly notified that the order is confirmed.

Activate online signatures

In order to have customers confirm orders with an online signature, the Online Signature feature must be activated.

To activate the Online Signature feature, go to Sales app ‣ Configuration ‣ Settings, scroll to the Quotations & Orders heading, and activate the Online Signature feature by checking the box beside it.

Then, click the Save button in the top-left corner.

 Note

When making a quotation template, the online signature feature is the Signature option, located in the Online confirmation field of the quotation template form.

On standard quotations, the online signature feature is the Signature option, located under the Other Info tab of the quotation form.

Order confirmations with online signatures

When clients access quotations online through their customer portal, there’s a Sign & Pay button directly on the quotation.

When clicked, a Validate Order pop-up window appears. In this pop-up window, the Full Name field is auto-populated, based on the contact information in the database.

Then, customers have the option to enter an online signature with any of the following options: Auto, Draw, or Load.

Auto lets Odoo automatically generate an online signature based on the information in the Full Name field. Draw lets the customer use the cursor to create a custom signature directly on the pop-up window. And Load lets the customer upload a previously-created signature file from their computer.

After the customer has chosen any of the three previously mentioned signature options (Auto, Draw, or Load), they will click the Accept & Sign button.

When Accept & Sign is clicked, the various payment method options become available for them to choose from (if the online payment option applies to this quotation).

Then, when the quotation is paid and confirmed, a delivery order is automatically created (if the Odoo Inventory app is installed).

 See also

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Online payment order confirmation

The Odoo Sales application provides customers with the ability to confirm orders, via an online payment, directly on a sales order. Once the sales order is electronically paid for by the customer, the salesperson attached to the sales order is instantly notified that the order is confirmed.

Activate online payments

In order to have customers confirm orders with an online payment, the Online Payment setting must be activated.

To activate the Online Payment feature, go to Sales app ‣ Configuration ‣ Settings, scroll to the Quotations & Orders heading, check the box next to the Online Payment feature, and click Save.

Beneath the Online Payment option on the Sales Settings page, there’s a Default Quotation Validity field. In this field, there’s the option to add a specific number of days for quotations to remain valid by default.

To enable this feature on a standard quotation, click the checkbox for the Payment feature option, located in the Online confirmation field, on the Other Info tab.

To enable this feature on a quotation template, click the checkbox for the Payment feature option, located in the Online confirmation field of the quotation template form.

Payment providers

After activating the Online Payment feature, a link to configure Payment Providers appears beneath it.

Clicking that link reveals a separate Payment Providers page, in which a large variety of payment providers can be enabled, customized, and published.

 See also

Online payments

Register a payment

After opening quotations in their customer portal, customers can click Accept & Pay to confirm their order with an online payment.

After clicking Accept & Pay, customers are presented with Validate Order pop-up window containing different options for them to make online payments, in the Pay with section.

 Note

Odoo will only offer payment options on the Validate Order pop-up window that have been published and configured on the Payment Providers page.

Once the customer selects their desired method of payment, they will click the Pay button on the pop-up window to confirm the order. Odoo instantly notifies the assigned salesperson upon order confirmation with an online payment.

 See also

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Quotation deadlines

In the Odoo Sales application, it is possible to set deadlines on sales quotations. Doing so encourages customers to act quickly during sales negotiations, for they might fear for missing out on a good deal. As well, deadlines also can also act as protection for a company in case an order has to be fulfilled at a price that is no longer profitable for the business.

Quotation expiration

In Odoo Sales, there’s the option to add an expiration date to a quotation.

To add an expiration date to a quotation, navigate to Sales app, and select a desired quotation, or create a new one by clicking New.

On the quotation form, click the Expiration field to reveal a pop-up calendar. From this pop-up calendar, select the desired month and date as the expiration date for the quotation.

 Tip

By clicking the Preview button on a quotation, Odoo clearly displays when that specific offer expires.

Quotation template expiration

The Odoo Sales application also makes it possible to add a deadline expiration date to quotation templates.

To add a deadline expiration date to a quotation template, navigate to Sales app ‣ Configuration ‣ Quotation Templates, and either select the desired quotation template to which a deadline should be added, or click New to build a new quotation template from scratch.

On the quotation template form, add a specific number of days to the Quotation expires after field, located beneath the quotation template name. The number of days represents how long the quotation will be valid for, before it expires.

Then, whenever that specific quotation template is used in a quote, an expiration date is automatically calculated, based on the number of days designated above. However, this date can be overwritten before sending the quotation to the customer.

 See also

Quotation templates

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Deliveries and invoices to different addresses

People and businesses often use separate addresses for billing (invoicing) and shipping (delivery) purposes. With the Odoo Sales app, contacts can have different specified addresses for delivery and invoicing.

Settings

To properly utilize multiple addresses in Odoo, go to Accounting app ‣ Configuration ‣ Settings, and scroll down to the Customer Invoices heading. Then, tick the checkbox.

Contact form configuration

To add multiple addresses to a contact, go to Sales app ‣ Orders ‣ Customers, and clear any default filters from the search bar. Then, click on the desired customer to open their contact form.

 Tip

Contact forms can be accessed in the Contacts application, as well.

From the contact form, click Edit, and then select Add, which is located under the Contacts & Addresses tab. Doing so reveals a Create Contact pop-up form, in which additional addresses can be configured.

On the Create Contact pop-up form, start by clicking the default Other Address field to reveal a drop-down menu of address-related options.

Select any of the following options:

  • Contact: adds another contact to the existing contact form.
  • Invoice Address: adds a specific invoice address to the existing contact form.
  • Delivery Address: adds a specific delivery address to the existing contact form.
  • Other Address: adds an alternate address to the existing contact form.
  • Private Address: adds a private address to the existing contact form.

Once an option is selected, proceed to enter the corresponding contact information that should be used for the specified address type.

Then, click Save & Close to save the address and close the Create Contact window. Or, click Save & New to save the address and immediately input another one.

Address added to quotations

When a customer is added to a quotation, the Invoice Address and Delivery Address fields autopopulate with the corresponding addresses specified on the customer’s contact form.

The Invoice Address and Delivery Address can also be edited directly from the quotation by clicking the Edit button, and then clicking the ➡️ (right arrow) internal link buttons next to each address line.

These addresses can be updated at any time to ensure accurate invoicing and delivery.

 Tip

If any changes are made on a form in Odoo, include Contacts forms, remember to click Save to save the changes to the database.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Product variants on quotations and sales orders

Before getting into detail about how to use product variants on quotations and sales orders, it’s recommended to learn about Product variants in Odoo.

Once familiarized with the basics surrounding product variants, the following covers how product variants can be added to quotations and sales orders using the product configurator or order grid entry.

 Note

It should be noted that the setting is titled, Variant Grid Entry on the Sales app settings page, and titled, Order Grid Entry on product forms. So, be sure to keep that in mind.

Settings

When working with product variants, Odoo uses the product configurator, by default. To add the variant grid entry option, that feature must be enabled in the Odoo Sales application. The variant grid entry option provides a pop-up window on the quotation/sales order to simplify the variant selection process.

To enable that setting, go to Sales app ‣ Configuration ‣ Settings, and scroll to the Product Catalog section. Then, check the box next to the Variant Grid Entry option, and click Save.

 Note

Of course, the Variants feature must also be activated, in order to use product variants on quotations and sales orders.

Product configuration

Once the Variant Grid Entry setting is enabled, both options (Product Configurator and Order Grid Entry) become available on every product form.

To configure a product form to use either a product configurator or variant grid entry, start by navigating to Sales app ‣ Products ‣ Products to view all the products in the database.

Then, select the desired product to configure, or click New, to create a new product from scratch. Once on the product form, click into the Attributes & Variants tab, where product variants can be viewed, modified, and added.

At the bottom of the Attributes & Variants tab, there is a Sales Variant Selection section with two options: Product Configurator and Order Grid Entry.

 Note

It should be noted that these options only appear if at least two values of an attribute have been added to the record.

These options determine which method is used when adding product variants to quotations or sales orders.

The Product Configurator provides a pop-up window that neatly displays all the available product variants for that particular product when it’s added to a quotation. However, only one variant can be selected/added at a time.

The Order Grid Entry provides the same information as the Product Configurator in a table layout, allowing the user to select larger numbers of unique product variants, and add them to a quotation/sales order, in a single view.

Product configurator

The product configurator feature appears as a Configure pop-up window, as soon as a product with (at least two) variants is added to a quotation or sales order, but only if the Product Configurator option is selected on its product form.

 Note

This Configure pop-up window also appears if the Order Grid Entry setting is not activated, as it is the default option Odoo uses when dealing with product variants on quotations and/or sales orders.

The Product Configurator option lets salespeople choose exactly which product variant to add to the quotation or sales order using a format similar to online shopping.

Order grid entry

The order grid entry feature appears as a Choose Product Variants pop-up window, as soon as a product with (at least two) variants is added to a quotation or sales order, but only if the Order Grid Entry option is selected on its product form.

The Choose Product Variants pop-up window features all the variant options for that particular product. From this pop-up window, the salesperson can designate how many of each variant they’d like to add to the quotation/sales order at once.

When all the desired quantities and variants have been selected, the salesperson simply clicks Confirm, and those orders are instantly added to the quotation/sales order in the Order Lines tab.

 See also

Product variants

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

PDF quote builder

The PDF Quote Builder in Odoo Sales provides the opportunity to send customers a fully customized PDF file for quotes, showcasing the company and products, with various information and design elements, instead of just showing the price and total.

The PDF Quote Builder groups header pages, product descriptions, the price(s), and footer pages to create a detailed quote. It can also inject dynamic texts or custom notes in the PDF to personalize the offer for the customer.

Having a customized PDF in quotes provides a heightened conclusion to the shopping experience for customers, and adds an elegant level of professionalism to a company.

 See also

Odoo Quick Tips - Create a PDF quote [video]

 Note

It is recommended to edit PDF forms with Adobe software. The form fields on the header and footer PDF templates are necessary to get dynamic values with Odoo.

Configuration

In order to add custom PDF files for quotes, the PDF Quote builder feature must be configured.

To do that, navigate to Sales app ‣ Configuration ‣ Settings. Then, on the Settings page, scroll to the Quotations & Orders section, and locate the PDF Quote builder feature.

Add PDF as Header/Footer

In Odoo Sales, it’s possible to add a custom PDF that can be used either as a header or a footer. When the PDF quote builder is activated in a quotation, you can then select as many headers and footers as you wish to use, these PDF will then also be inserted in the final PDF.

To add a custom PDF as header or footer, start by navigating to Sales app ‣ Configuration ‣ Headers/Footers. From this page, either click New or Upload.

Clicking Upload instantly provides the opportunity to upload the desired document. Then, the document can be further configured on the document card, or by clicking the  (vertical ellipsis) icon in the top right corner of the document card, and then clicking Edit.

Clicking New reveals a blank documents form, in which the desired PDF can be uploaded via the Upload your file button on the form, located in the File Content field.

Various information and configurations related to the uploaded document can be modified here.

The first field on the documents form is for the Name of the document, and it is grayed-out (not clickable) until a document is uploaded. Once a PDF has been uploaded, the Name field is auto-populated with the name of the PDF, and it can then be edited.

Then, in the Document Type field, click the drop-down menu, and select either: Header, or Footer to define whether these files would be selectable to be at the beginning or at the end of your quote.

Under this, in the Quotation Templates section, this PDF can be restricted quotation templates only.

 Note

Alternatively, you can also navigate to Sales app ‣ Configuration ‣ Quotation Templates, select a template and directly Add or Upload a PDF to it in the Quote Builder tab.

Lastly, beside the File Content field, you have the possibility to Configure dynamic fields.

Dynamic text in PDFs

While creating custom PDFs for quotes, use dynamic text for Odoo to auto-fill the PDF content with information related to the quote from the Odoo database, like names, prices, etc.

Dynamic text values are form components (text inputs) that can be added in a PDF file, and Odoo automatically fills those values in with information related to the quote.

Dynamic text values

Below are common dynamic text values used in custom PDFs that are already mapped to the correct fields, and what they represent.

For headers and footers PDF:

  • name: Sales Order Reference
  • partner_id__name: Customer Name
  • user_id__name: Salesperson Name
  • amount_untaxed: Untaxed Amount
  • amount_total: Total Amount
  • delivery_date: Delivery Date
  • validity_date: Expiration Date
  • client_order_ref: Customer Reference

For product PDF:

  • description: Product Description
  • quantity: Quantity
  • uom: Unit of Measure (UoM)
  • price_unit: Price Unit
  • discount: Discount
  • product_sale_price: Product List Price
  • taxes: Taxes name joined by a comma (,)
  • tax_excl_price: Tax Excluded Price
  • tax_incl_price: Tax Included Price

After uploading a PDF, you can then Configure dynamic fields. This will allow you to map any field name found in your PDF to the field you want to show by writing down any existing path. Headers and footers starts from the current sale_order model, whereas product document follows their path from their sale_order_line. Leaving that path empty allows you to fill a custom notes, directly from the specific quote that requires it.

 Example

When a PDF is built, it’s best practice to use common dynamic text values (name and partner_id_name). When uploaded into the database, Odoo auto-populates those fields with the information from their respective fields.

In this case, Odoo would auto-populate the Sales Order Reference in the name dynamic text field, and the Customer Name in the partner_id_name field.

Once the PDF file(s) are complete, save them to the computer’s hard drive, and proceed to upload them to Odoo via Sales app ‣ Configuration ‣ Headers/Footers.

 Example

When uploading PDF containing the form field invoice_partner_country, which is an information available in the sales order, configure the path of the Form Field Name to: - partner_invoice_id.country_id.name for a header or footer document - order_id.partner_invoice_id.country_id.name for a product document fills the form with the invoice partner country’s name when the PDF is built.

 Example

When uploading any PDF containing the form field custom_note, leaving the path empty allows the seller to write down any note where that form field is in that document and shown when the PDF is built.

Add PDF to product

In Odoo Sales, it’s also possible to add a custom PDF to a product form. When a PDF is added to a product, and that product is used in a quotation, that PDF is also inserted in the final PDF.

To add a custom PDF to a product, start by navigating to Sales app ‣ Products ‣ Products, and select the desired product to add a custom PDF to.

 Note

A document could also be added to a product variant, instead of a product. If there are documents on a product and on its variant, only the documents in the variant are shown.

To add a custom document to a product variant, navigate to Sales app ‣ Products ‣ Product Variants. Select the desired variant, click the Documents smart button, and proceed to upload the custom document to the specific product variant.

On the product page, click the Documents smart button at the top of the page to navigate to a Documents page for that product, where files related to that product can be uploaded. From this page, either click New or Upload.

Clicking Upload opens the computer’s local file directory. An uploaded document can be further configured on the document card, or by clicking the  (vertical ellipsis) icon in the top-right corner of the document card, and then clicking Edit.

Clicking New reveals a blank documents form, in which the desired PDF can be uploaded via the Upload your file button on the form, located in the File Content field.

PDF form configuration

The first field on the documents form is for the Name of the document, and it is grayed-out (not clickable) until a document is uploaded. Once a PDF has been uploaded, the Name field is auto-populated with the name of the PDF, and it can then be edited.

Prior to uploading a document, there’s the option to designate whether the document is a File or URL from the Type drop-down field menu.

 Note

If a PDF is uploaded, the Type field is auto-populated to File, and it cannot be modified.

Then, in the Sales section, in the Visible at field, click the drop-down menu, and select either: On quotation, On confirmed order, or Inside quote pdf.

  • Quotation: the document is sent to (and accessible by) customers at any time.
  • Confirmed order: the document is sent to customers upon the confirmation of an order. This is best for user manuals and other supplemental documents.
  • Inside quote: the document is included in the PDF of the quotation, between the header pages and the Pricing section of the quote.

 Example

When the Inside quote option for the Visible at field is chosen, and the custom PDF file, Corner Desk.pdf is uploaded, the PDF is visible on the quotation in the customer portal under the Documents field.

Beside the File Content field, you have the possibility to Configure dynamic fields. When doing so, remember that the starting model is the sale_order_line, unlike for headers and footers that start from the sale_order.

Lastly, in the E-Commerce section, decide whether or not to Publish on Website so that the PDF appears on the product page in the online store.

 Example

When the Publish on Website option is enabled, a link to the uploaded document, Corner Desk.pdf, appears on the product’s page in the online store.

It appears beneath a Documents heading, with a link showcasing the name of the uploaded document.

PDF quote

On a sales order, in the Quote Builder tab, select additional documents to be merged into the final PDF. If a selected document has custom fields, they appear as editable text boxes to be filled in.

Once a quote with a pre-configured PDF has been confirmed, Odoo provides the option to print the confirmed quote to check for errors, or to keep for records.

To print the PDF quote, navigate to the confirmed quote, and click the ⚙️ (gear) icon to reveal a drop-down menu. From this drop-down menu, select Print, then select PDF Quote.

Doing so instantly downloads the PDF quote. When opened, the PDF quote, along with the configured product PDF that was set to be visible inside the quote, can be viewed and printed.

 Note

Download these PDF quote builder examples or download sample quotation for added reference.

 See also

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Invoice based on delivered or ordered quantities

Different business policies might require different options for invoicing:

  • The Invoice what is ordered rule is used as the default mode in Odoo Sales, which means customers are invoiced once the sales order is confirmed.
  • The Invoice what is delivered rule invoices customers once the delivery is done. This rule is often used for businesses that sell materials, liquids, or food in large quantities. In these cases, the ordered quantity may differ slightly from the delivered quantity, making it preferable to invoice the quantity actually delivered.

Being able to have different invoicing options provides more flexibility.

Invoicing policy features

To activate the necessary invoicing policy features, go to Sales app ‣ Configuration ‣ Settings, and under the Invoicing heading, select an Invoicing Policy rule: Invoice what is ordered or Invoice what is delivered.

 Important

If the Invoice what is delivered rule is chosen, it is not possible to activate the Automatic Invoice feature, which automatically generates invoices when an online payment is confirmed.

Invoicing policy on product form

On any product page, via the Sales app ‣ Products ‣ Products dashboard, locate the Invoicing Policy option located under the General Information tab. It can be changed manually using the drop-down menu.

Impact on sales flow

In Odoo Sales, the basic sales flow starts with the creation of a quotation. Then, that quotation is sent to a customer. Next, it needs to be confirmed, which turns the quotation into a sales order. This, in turn, creates an invoice.

The following is a breakdown of how invoicing policy rules impact the aforementioned sales flow:

  • Invoice what is ordered: No impact on the basic sales flow. An invoice is created as soon as a sale is confirmed.
  • Invoice what is delivered: Minor impact on sales flow, because the delivered quantity needs to be manually entered on the sales order. Or, the Inventory app can be installed and used to confirm the delivered quantity before creating an invoice with the Sales app.

 Warning

If a user attempts to create an invoice without validating the delivered quantity, the following error message appears: There is no invoiceable line. If a product has a Delivered quantities invoicing policy, please make sure that a quantity has been delivered.

 Note

Once a quotation is confirmed, and the status changes from Quotation sent to Sales order, the delivered and invoiced quantities are available to view, directly from the sales order. This is true for both invoicing policy rule options.

Odoo automatically adds the quantities to the invoice, both Delivered and Invoiced, even if it’s a partial delivery, when the quotation is confirmed.

Finally, there are a few different options to create an invoice: Regular invoice, Down payment (percentage) or Down payment (fixed amount).

 See also

Be sure to check out the documentation explaining down payment options to learn more: Down payments

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Down payments

A down payment is an initial, up-front payment made during the confirmation of a sales transaction. Down payments reduce the risk for both parties (the seller and the buyer) as they indicate a mutual commitment to complete the sales transaction.

With a down payment, the buyer pays a portion of the total amount owed while agreeing to pay the remaining amount at a later date. In turn, the seller provides goods or services to the buyer upon or after accepting the down payment, trusting that the remaining amount will be paid later on.

In the Odoo Sales app, down payments can be customized to fit the needs of each individual sales transaction.

Create invoices

When a sales order is confirmed, the option to create an invoice becomes available, via the Create Invoice button. When clicked, a Create invoice(s) pop-up appears.

 Note

Invoices are automatically created as drafts, so they can be reviewed before validation.

On the Create invoices pop-up, there are 3 options to choose from in the Create Invoice field:

  • Regular invoice
  • Down payment (percentage)
  • Down payment (fixed amount)

Initial down payment request

On the Create invoice(s) pop-up window, the down payment options are:

  • Down payment (percentage)
  • Down payment (fixed amount)

Select the desired down payment option, then designate the desired amount, either as a percentage or a fixed amount, in the Down Payment Amount field.

Once all fields are filled in, click the Create Draft button. Upon clicking this button, Odoo reveals the Customer Invoice Draft.

 Important

If an Invalid Operation error appears, double-check that the invoicing policy is configured correctly. In some cases, for example, the invoicing policy is configured to require delivery before invoicing.

In the Invoice Lines tab of the Customer Invoice Draft, the down payment that was just configured in the Create invoices pop-up form appears as a Product.

Example: request 50% down payment

 Note

The following example involves a 50% amount down payment on a product (Cabinet with Doors) with Ordered quantities as the Invoicing Policy.

 See also

Invoice based on delivered or ordered quantities

First, navigate to Sales app ‣ New, and add a Customer to the quotation.

Then, click Add a product in the Order Lines tab, and select the Cabinet with Doors product.

When the order is confirmed (via the Confirm button), the quotation turns into a sales order. Once this occurs, create and view the invoice by clicking Create Invoice.

Next, on the Create invoices pop-up window that appears, select Down payment (percentage), and type 50 in the Down Payment Amount field.

 Note

The Income Account attached to the Down payment product can be changed.

For more information, check out the documentation on income account modification on down payments.

A Down payment Account can also be set on a product category. If set, this account is prioritized.

Lastly, click Create Draft Invoice to create and view the invoice draft.

Clicking Create Draft Invoice reveals the draft invoice, which includes the down payment as a Product in the Invoice Lines tab.

From there, the invoice can be confirmed and posted by clicking Confirm. Confirming the invoice changes the status from Draft to Posted. It also reveals a new series of buttons at the top of the page.

From those buttons, the payment can be registered by clicking Register Payment.

Doing so reveals a Register Payment pop-up form, which is auto-populated with the necessary information. Confirm the information provided is correct, and make any necessary adjustments. When ready, click the Create Payment button.

After clicking Create Payment, Odoo reveals the customer invoice, now with a green In Payment banner in the upper-right corner.

Now, when the customer wants to pay the remaining amount of the order, another invoice must be created. To do that, return to the sales order, via the breadcrumb links.

Back on the sales order, a new Down Payments section is present in the Order Lines tab, along with the down payment that was just invoiced and posted.

Next, click the Create Invoice button.

On the Create invoices pop-up window that appears, there are two new fields: Already invoiced and Amount to invoice.

If the remaining amount is ready to be paid, select the Regular Invoice option. Odoo will create an invoice for the exact amount needed to complete the total payment, as indicated in the Amount to invoice field.

Once ready, click Create Draft Invoice.

Doing so reveals another Customer Invoice Draft page, listing all the invoices for that specific sales order in the Invoice Lines tab. Each invoice line item displays all the necessary information related to each invoice.

To complete the flow, click Confirm, which changes the status of the invoice from Draft to Posted. Then, click Register Payment.

Once again, the Register Payment appears, with all fields auto-populated with the necessary information, including the remaining amount left to be paid on the order.

After confirming that information, click Create Payment. Doing so reveals the final Customer Invoice with a green In Payment banner in the upper-right corner. Also, both down payments are present in the Invoice Lines tab.

At this point, the flow is now complete.

 Note

This flow is also possible with the Fixed amount down payment option.

 Important

If a down payment is used with a product that has a Delivered quantities invoicing policy, and the cost of the product exceeds the 50% down payment (as in most cases), a regular invoice is created.

However, for products that cost less than the 50% down payment, the down payments will not be able to be deducted when it comes time to invoice the customer.

This is because the product(s) would have to be delivered before creating the final invoice due to Odoo not allowing negative totals for invoices.

If nothing has been delivered, a Credit Note is created, which cancels the draft invoice that was created after the down payment.

To utilize the Credit Note option, the Inventory application must be installed, in order to confirm the delivery. Otherwise, the delivered quantity can be entered manually directly on the sales order.

Example: request 100% down payment

The process of requesting a 100% down payment is similar to the process of setting up a 50% down payment, but with fewer steps.

 Note

A 100% down payment is not the same as a full payment of the sales order.

A sales order paid through the regular invoice process will not allow any additional invoices to be generated, and will not display the Create Invoice button on the Sales Order.

Following this example will cause the Create Invoice button to be displayed on the Sales Order. This is because Odoo expects another invoice to be created after the down payment to complete payment of the sales order.

The Solar Panel Installation product is being used in this example.

To configure a 100% down payment, begin by navigating to Sales app ‣ New, and add a Customer to the quote.

Next, click Add a product in the Order Lines tab, and select the Solar Panel Installation product.

Upon clicking the Confirm button, the quotation turns into a sales order. At that point, an invoice can now be created by clicking Create Invoice in the top-left corner.

On the Create invoices pop-up window that appears, select Down payment (percentage), and type 100 in the Down Payment Amount field.

Next, click Create Draft Invoice to create an invoice draft. This will also bring the draft invoice into view, which includes the Down payment as a Product in the Invoice Lines tab.

The invoice can now be confirmed and posted by clicking Confirm. Confirming the invoice changes the status from Draft to Posted. It also reveals a new series of buttons at the top of the page.

The payment can be registered by clicking the Register Payment button.

Doing so reveals a Register Payment pop-up form, which is auto-populated with the necessary information. Confirm the information provided is correct and make any necessary adjustments. When ready, click the Create Payment button.

After clicking Create Payment, Odoo reveals the customer invoice, now with a green In Payment banner in the upper-right corner.

The process is now complete, and the 100% down payment has been successfully applied.

Income account modification on down payments

To change or adjust the income account attached to the Down Payment product page, the Accounting app must be installed.

Navigate to the Products page (Sales app ‣ Products ‣ Products), search for the Down Payment product in the search bar, and select it to reveal the product detail page.

With the Accounting app installed, the Accounting tab becomes available on the product page.

In the Accounting tab, the income account can be changed in the Income Account field, located in the Receivables section.

 See also

Invoice based on delivered or ordered quantities

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 

 docs

Try Odoo for FREE

EN 

Odoo 18 

Pro-forma invoices

pro-forma invoice is an abridged or estimated invoice sent in advance of a delivery of goods. It notes the kind and quantity of goods, their value, and other important information, such as weight and transportation charges.

Pro-forma invoices are commonly used as preliminary invoices with a quotation. They are also used during importation for customs purposes. They differ from a normal invoice, in that they are not a demand (or request) for payment.

Configuration

In order to utilize pro-forma invoices, the Pro-Forma Invoice feature must be activated.

To enable this feature, navigate to Sales app ‣ Configuration ‣ Settings, and in the Quotations & Orders section, click the checkbox next to Pro-Forma Invoice. Then, click Save to save all changes.

Send pro-forma invoice

With the Pro-Forma Invoice feature activated, the option to send a pro-forma invoice is now available on any quotation or sales order, via the Send Pro-Forma Invoice button.

 Note

Pro-forma invoices can not be sent for a sales order or quotation if an invoice for a down payment has already been sent, or for a recurring subscription.

In either case, the Send Pro-Froma Invoice button does not appear.

However, pro-forma invoices can be sent for services, event registrations, courses, and/or new subscriptions. Pro-forma invoices are not limited to physical, consumable, or storable goods.

When the Send Pro-Forma Invoice button is clicked, a pop-up window appears, from which an email can be sent.

In the pop-up window, the Recipients field is auto-populated with the customer from the sales order or quotation. The Subject field and the body of the email can be modified, if necessary.

The pro-forma invoice is automatically added as an attachment to the email.

When ready, click Send, and Odoo instantly sends the email, with the attached pro-forma invoice, to the customer.

 Tip

To preview what the pro-forma invoice looks like, click on the PDF at the bottom of the email pop-up window before clicking Send. When clicked, the pro-forma invoice is downloaded instantly. Open that PDF to view (and review) the pro-forma invoice.

 See also

Invoice based on delivered or ordered quantities

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Invoicing based on time and materials

Invoicing based on time and/or materials is typically used when accurately estimating the size of a project isn’t possible, or when the requirements of a project may change.

This is different from a fixed-price contract, when a customer agrees to pay a specified total for the fulfillment of the contract—no matter what needs to be paid to the employees, sub-contractors, vendors, suppliers, and so on.

The Odoo Sales app can invoice for time and various other expenses (e.g. transport, lodging), as well as purchases needed to fulfill an order.

App and settings configuration

First, in order to accurately keep track of the progress of a project, the Odoo Project and Accounting apps must be installed.

To install the Project app, navigate to Odoo main dashboard ‣ Apps. Then, on the Apps page, locate the Project app block, and click Activate. The page automatically refreshes and returns to the main Odoo dashboard, where the Project app is now available to access.

Repeat the same process to install the Accounting application.

After installation, click the Accounting app icon from the main Odoo dashboard, and navigate to Configuration ‣ Settings. On the Settings page, scroll down to the Analytics section, and ensure the box next to Analytic Accounting is checked.

Then, click Save to save all changes.

Then, navigate to Odoo main dashboard ‣ Project app ‣ Configuration ‣ Settings. On the Settings page, in the Time Management section, ensure the box beside the Timesheets feature is checked.

Then, click Save to save all changes.

Service product configuration

With the Timesheets feature activated in the Project app, it is now possible to invoice for time spent on a project, but only when the following product configurations have been made.

 Important

Invoicing for time spent on a project is only possible with products that have Service set as the Product Type on their product form.

To configure a service product, first navigate to Sales app ‣ Products ‣ Products. On the Products page, select the desired service product to be configured, or click New to create a new product.

From the product form, in the General Information tab, set the Product Type to Service. Then, open the drop-down menu in the Invoicing Policy field, and select Based on Timesheets.

Next, from the Create on Order drop-down menu, select Project & Task. That setting indicates that, when a sales order is created with this specific service product, a new project and task is created in the Project app.

 Note

The option Task can be chosen instead from the Create on Order drop-down menu. If Task is chosen, select an existing project that the task will appear in from Project field, which only appears if Task is chosen in the Create on Order field.

Add time spent to sales order

After properly configuring a service product with the correct Invoicing Policy and Create on Order options, it is possible to add time spent to a sales order.

To see that in action, navigate to Sales app ‣ New to open a blank quotation form. Then, proceed to add a Customer, and in the Order Lines tab, click Add a product, and select the properly configured service product from the drop-down menu.

Next, click Confirm to confirm the order.

After confirming the sales order, two smart buttons appear at the top of the order form: Projects and Tasks.

If the Projects smart button is clicked, it reveals the specific project related to this sales order. If the Tasks smart button is clicked, it reveals the specific project task related to this sales order. Both are also accessible in the Project app.

In order to add time spent on a sales order, click the Tasks smart button.

On the task form, select the Timesheets tab. From the Timesheets tab, employees can be assigned to work on the project, and the time they spend working on the task can be added by the employees or by the person who created the sales order.

To add an employee, and the time spent working on the task, click Add a line in the Timesheets tab. Then, select the appropriate Date and Employee. There is also the option to add a brief description of the work done during this time in the Description column, but it’s not required.

Lastly, enter the amount of time worked on the task in the Hours Spent column, and click away to complete that line in the Timesheets tab.

 Note

The time entered in the Hours Spent column is immediately reflected in the Allocated Time field (located near the top of the task form) as a percentage, which reflects how much of the total allocated work hours have been done so far.

That same information is found as numerical hours in the Hours Spent and Remaining Hours fields, located at the bottom of the Timesheets tab.

Repeat this process for however many employees and hours have been worked on the project.

Invoice time spent

Once all the necessary employees and time spent have been added to the project task, return to the sales order to invoice the customer for those hours. To do that, either click the Sales Order smart button at the top of the task form, or return to the sales order via the breadcrumb links, located in the upper-left of the screen.

Back on the sales order form, the time that was added to the task is reflected in the Order Lines tab (in the Delivered column) and in the new Recorded Hours smart button at the top of the sales order.

To invoice the customer for time spent on the project, click Create Invoice, and select Regular invoice from the Create invoices pop-up window. Then, click Create Draft Invoice.

Doing so reveals a Customer Invoice Draft, clearly showing all the work that’s been done in the Invoice Lines tab.

 Tip

Pay attention to the Analytic Distribution column in the Customer Invoice, as that information is necessary to ensure other time/material invoicing tasks are completed properly and accurately.

Click Confirm to confirm the invoice and continue with the invoicing process.

 See also

Invoice based on delivered or ordered quantities

Expenses configuration

In order to track and invoice expenses related to a sales order, the Odoo Expenses app must be installed.

To install the Expenses app, navigate to Odoo main dashboard ‣ Apps. Then, on the Apps page, locate the Expenses app block, and click Activate.

The page automatically refreshes and returns to the main Odoo dashboard, where the Expenses app is now available to access.

Add expenses to sales order

To add an expense to a sales order, first navigate to the Expenses app. Then, from the main Expenses dashboard, click New, which reveals a blank expense form.

On the expense form, add a Description of the expense (e.g. Hotel Stay, Plane Ticket). Next, in the Category field, select the appropriate option from the drop-down menu (e.g. Meals, Miles, Travel & Accommodation).

 Note

Expense categories can be added and modified by navigating to Expenses app ‣ Configuration ‣ Expense Categories.

Then, enter the total amount of the expense in the Total field, as well as any Included Taxes that may apply. Next, ensure that the correct Employee is selected, and designate who paid for the expense in the Paid By field: the Employee (to reimburse) or the Company.

Next, in the Customer to Reinvoice field, select the appropriate sales order from the drop-down menu. Then, select that same sales order information from the Analytic Distribution field, as well.

 Note

The Analytic Distribution field will only have the corresponding sales order as an option if the sales order contains a service product that is billed based on TimesheetsMilestones, or Delivered Quantities.

If there are any receipts that should be uploaded and attached to the expense, click the Attach Receipt button, and upload the necessary documents to the expense. This is not required, but it may affect whether or not an expense is approved.

When all the information has been entered, click Create Report to create an expense report detailing all the expense information that was just entered.

Then, there’s the option to Submit to Manager for approval. Once approved, the Report in Next Payslip appears.

To showcase a complete flow in this example, select Submit to Manager. Then, the manager would click Approve to approve this expense, and click Post Journal Entries to post this expense to the accounting journal.

Invoice expenses

To invoice a customer for an expense on a sales order, navigate to the related sales order, either from the Sales app or from the expense report in the Expenses app. From the expense report, click the Sales Orders smart button at the top of the page.

If the expense report was linked to the sales order, the newly-configured expense now has its own line in the Order Lines tab, and can be invoiced to the customer.

To invoice the customer for the expense on the sales order, click Create Invoice, select Regular Invoice from the Create invoices pop-up window, then click Create Draft Invoice.

Doing so reveals a Customer Invoice Draft for the expense. Then, the invoicing process can be completed as usual.

Purchase configuration

In order to invoice a customer for purchases made on a sales order, the Purchase application must be installed.

To install the Purchase application, navigate to Odoo main dashboard ‣ Apps. Then, on the Apps page, locate the Purchase app block, and click Activate. The page automatically refreshes and returns to the main Odoo dashboard, where the Purchase app is now available to access.

Add purchase to sales order

To add a purchase to a sales order, a purchase order must first be created. To create a purchase order, navigate to Purchase app ‣ New to reveal a blank purchase order form.

First, add a Vendor to the purchase order. Then, under the Products tab, click the extra column options drop-down menu, represented by two horizontal lines with dots on them, located to the far-right of the column headers. From that drop-down menu, select Analytic Distribution.

After adding the Analytic Distribution column to the headers on the Products tab of the purchase order form, proceed to add the product(s) to the purchase order. To do that, click Add a product, and select the desired product from the drop-down menu. Repeat for all the products to add.

 Important

In order for a purchase to be properly invoiced on a sales order, the product on the purchase order must be marked as Can be Expensed, have an Invoicing Policy set to Delivered quantities, and have the At cost option selected in the Re-Invoice Expenses field on its product form.

Then, select the appropriate Analytic Distribution associated with the sales order to which this purchase order is related. To do that, click the empty Analytic Distribution field to reveal an Analytic pop-up window.

Then, from the Departments drop-down menu, select the analytic distribution associated with the desired sales order to be invoiced for the purchase.

Once all the information is entered in the Products tab of the purchase order, confirm the order by clicking Confirm Order. Then, click Receive Products when the products have been received. This creates a receipt form.

 Note

If any serial/lot numbers must be entered before validating the receipt of products, then on the receipt form, click the details icon represented by four horizontal lines located to the far-right of the product line.

This reveals a Detailed Operations tab, in which the necessary Lot/Serial Number(s) and Done quantity can be added. When ready, click Confirm to confirm the data.

Then, click Validate to validate the purchase order.

Next, return to the purchase order, via the breadcrumb links at the top of the page, and click Create Bill to create a vendor bill that can be invoiced to the customer on the attached sales order.

 Note

Make sure to enter a Bill Date on the Vendor Bill Draft before confirming. If a Bill Date is not entered, an error window appears, requesting that information to be entered before confirmation can occur.

Then, click Confirm to confirm the vendor bill, which is then automatically added to the sales order, where it can be invoiced directly to the customer attached to it.

Invoice purchase

To invoice a customer for a purchase on a sales order, first add the purchase to the sales order, then navigate to the desired sales order in the Sales app.

On the sales order that was attached to the purchase order, the purchased product now has its own product line under the Order Lines tab, and it is ready to be invoiced.

To invoice the customer for the purchase, simply click Create Invoice, select Regular Invoice from the Create invoices pop-up window, then click Create Draft Invoice.

Doing so reveals a Customer Invoice Draft with the newly-added purchase order product in the Invoice Lines tab.

To complete the invoicing process, click Confirm to confirm the invoice, and then click Register Payment in the Register Payment pop-up form.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Invoice project milestones

Invoicing based on project milestones can be used for expensive or large-scale projects. The series of milestones in a project represent a clear sequence of work that will inevitably result in the completion of a project and/or contract.

This method of invoicing ensures the company gets a consistent flow of money throughout the lifetime of the project. Customers can closely monitor every phase of the project’s development as it happens, in addition to paying a large bill in several installments, instead of all at once.

Create milestone products

In Odoo, each milestone of a project is considered as an individual product.

To create and/or configure products to work like this, first navigate to Sales app ‣ Products ‣ Products. Then, click on a product, or create a new one by clicking New.

The option to invoice based on milestones is only available for certain product types.

On the product form, under the General Information tab, the Product Type field must be set on any of the following options: Service, Event Ticket, Event Booth, or Course.

With any of those Product Type options selected, choose Based on Milestones from the Invoicing Policy drop-down menu.

Beneath that is the Create on Order field.

To ensure workflows are as seamless as possible, it is recommended that an option in the Create on Order field is selected.

 Note

Leaving it on the default Nothing option won’t negatively affect the desired workflow. However, a project must then be created directly from a sales order form with that specific product. Once a project is created then milestones and tasks can be created and configured.

When the Create on Order default option of Nothing is clicked, a drop-down menu is revealed with the following options:

  • Task: Odoo creates a task related to this milestone product in the Projects app when this specific product is ordered.
  • Project & Task: Odoo creates a project and task related to this milestone product in the Projects app when this specific product is ordered.
  • Project: Odoo creates a project related to this milestone product in the Projects app when this specific product is ordered.

When Task is selected, a Project field appears. In this field, select to which existing project in the Projects app this created task should be connected.

When Project & Task or Project is selected, two new fields appear: Project Template and Workspace Template.

The Project Template field provides template options to use for the project that will be created when this specific product is ordered.

The Workspace Template field provides template options to use for the workspace (for the Documents app, not the Projects app) that will be automatically generated for the project when this specific product is ordered.

 Tip

For organizational purposes, click the Sales tab on the product form, and enter a custom ‘Milestone’ related descriptor in the Sales Description field. This information appears in the Description column on the Order Lines tab of the sales order.

Or, directly edit/modify the Description field on the Order Lines tab of the sales order.

This is not a requirement.

Invoice milestones

 Note

The following flow features a trio of milestone products that have Service set as their Product Type, and Task set on their Create on Order field.

Those tasks are then attached to a pre-existing Project, which, in this case, is titled, Rebranding Projects.

To invoice milestones, create a sales order with the milestone product(s). To do that, go to Sales app ‣ New. Doing so reveals a blank quotation form.

From this quotation form, add a Customer. Then, click Add a product in the Order Lines tab. Next, add the milestone product(s) to the Order Lines tab.

Once the corresponding milestone product(s) have been added, click Confirm to confirm the order, which turns the quotation into a sales order.

When the order is confirmed, new smart buttons appear at the top of the sales order based on what was selected in the Create on Order field on the product form.

From the sales order, click the Milestones smart button. Doing so reveals a blank Milestones page. Click New to add milestones.

Enter a Name for the milestone. Next, apply it to the corresponding Sales Order Item. Lastly, assign a Deadline to the milestone, if desired.

Repeat that process for all milestone sales order items.

Then, return to the sales order, via the breadcrumbs. From the sales order, click the Tasks smart button. Doing so reveals a Tasks page with a task for each sales order item with that option designated in the Create on Order field.

To manually assign a configured milestone to a task, click the desired task, which reveals the task form. On the task form, select the appropriate milestone to which this task should be connected, in the Milestone field.

Repeat this process for all milestone tasks.

With those tasks properly configured, employees log in their progress as they work on the task, in addition to adding any notes related to the task.

Then, when that task is complete, that means that milestone has been reached. At that point, it is time to invoice that milestone.

To invoice a milestone, first return to the sales order — either via the breadcrumb links, or by navigating to Sales app ‣ Orders ‣ Orders and picking the appropriate sales order.

Back on the sales order form, click the Milestones smart button, and check the box in the Reached column for that particular task.

Next, return to the sales order — either by clicking View Sales Order on the Milestones page, or via the breadcrumb links.

Back on the sales order, the line item for the milestone that’s been reached has its Delivered column filled. That’s because the milestone has been reached, and therefore delivered.

Click Create Invoice in the upper-left corner. Doing so reveals a Create invoices pop-up window.

On the Create invoices pop-up window, leave the Create Invoice option on the default Regular Invoice selection, and click the Create Draft Invoice button.

Upon clicking Create Draft Invoice, Odoo reveals the Customer Invoice Draft, only showing that reached milestone in the Invoice Lines tab.

From this invoice page, click the Confirm button to confirm the invoice. Then, when the customer has paid for this milestone, click Register Payment.

When Register Payment is clicked, a Register Payment pop-up window appears.

On this pop-up window, confirm the accuracy of the auto-populated fields, then click Create Payment.

When clicked, the pop-up window disappears, and Odoo returns to the invoice for that milestone, which now has a green In Payment banner in the upper-right corner. This banner signifies the invoice has been paid.

Then, return to the sales order, via the breadcrumb links. Back on the sales order, in the Order Lines tab, the reached milestone that’s been invoiced and paid for, now has its Invoiced column filled.

There is also a new Invoices smart button at the top of the sales order. Clicking that reveals all the invoices that are connected to this sales order.

Simply repeat the above process for each milestone as it is worked on, and subsequently, completed.

Continue that process until the entire project has been completed, each milestone has been invoiced, and the entire order has been paid for in full.

 See also

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Reinvoice expenses to customers

While working on a project for a client, employees often have to spend their own money on various expenses related to the project.

For example, an employee may need to use their own money to pay for a hotel, while they provide an on-site service for a client. As a company, this expense should be reinvoiced to the customer. With Odoo, these kinds of expenses can quickly be reinvoiced to the customer related to the project.

Expenses application

To be able to reinvoice a customer for an expense, the Expenses application must be installed.

To install the Expenses application, navigate to main Odoo dashboard ‣ Apps, and click Install on the Expenses application block. When clicked, Odoo installs the application, refreshes the page, and returns to the main Odoo dashboard.

Add expenses to sales orders

To begin, have a sales order confirmed in the Sales app to which a reinvoiced expense can be added. Or, create a new sales order from scratch. To do that, navigate to the Sales app ‣ New. Doing so reveals a blank quotation form.

Then, add a Customer, and add a product to the Order Lines tab, by clicking Add a product. Next, select a product from the drop-down menu.

Lastly, click Confirm to confirm the sales order.

With the sales order confirmed, it’s time to create an expense.

To do that, navigate to the Expenses application, by going to main Odoo dashboard ‣ Expenses.

Then, from the Expenses dashboard, click New to reveal a blank expenses form.

On the expenses form, add a Description to easily reference the expense.

Then, in the Category field, select one of the following options from the drop-down menu:

  • Communication: any form of communication related to a project/order.
  • Others: expense that doesn’t fit into any other categories.
  • Meals: any form of meal costs related to a project/order.
  • Gifts: any form of gift costs related to a project/order.
  • Mileage: any form of mileage (gas) costs related to project/order.
  • Travel & Accommodation: any travel or accommodation costs related to a project/order.

 Tip

New expense categories can be created from an expense form, by clicking the Category field drop-down menu, selecting View All, and clicking New from the Search:Category pop-up window.

For this sample workflow, which will reinvoice a customer for a brief hotel stay, the Category for this example is [TRANS & ACC] Travel & Accommodation.

 Note

The following example requires the SalesAccounting, and Expense apps to view/modify all the fields mentioned during the workflow.

Beneath the Category field, enter in the amount to be expensed in the Total field.

Next, designate if there are any Included taxes in the Total. If a preconfigured tax amount is selected from the Included taxes field, Odoo auto-calculates the taxed amount, based on the amount entered in the Total field.

Then, choose which Employee was responsible for the expense, and choose an option in the Paid By field: Employee (to reimburse) or Company.

In this case, our employee paid for the hotel with their own money, so the Employee (to reimburse) option is chosen.

On the right-hand side of the expenses form, the option to add a Bill Reference is available. Beneath that, the auto-populated Expense Date and Account fields are available.

 Note

The Expense Date and Account field can be modified, if needed.

Next, in the Customer to Reinvoice field, click the blank field to reveal a drop-down menu. From this drop-down menu, select the appropriate sales order to which this expense should be attached. This field must be filled, in order to reinvoice a customer for an expense.

Lastly, the option to modify the Analytic Distribution and Company fields are available. These fields are not required to complete a reinvoiced expense to a customer, but are available to modify, if needed.

Also, at the bottom of the expense form, there is a Notes… section, wherein any notes related to this expense can be added, if needed.

At the top of the expense form, there are buttons to Attach Receipt, Create Report, and Split Expense.

If there is a physical or digital receipt that should be attached to the expense, click Attach Receipt.

If the cost of this expense needs to be split, click Split Expense. This feature can be used for a number of reasons (spitting expense with another employee, to accommodate different tax rates, etc.).

If neither of these options are necessary, click Create Report to lock in the expense report that was just configured.

Doing so reveals an Expense Report Summary for the new expense.

Here, once the details related to the expense have been confirmed, click Submit to Manager. This sends the expense report to the approving manager, who will review the expense.

The manager in charge of reviewing and approving the expense will inspect the details related to the expense, and if there are no issues, they will click the Approve button — which only appears on the manager’s view of the Expense Report Summary that’s been submitted to the manager by the employee.

Once approved, the buttons at the top of the Expense Report Summary change once again. At this point, the buttons at the top of the Expense Report Summary are: Post Journal Entries, Report in Next Payslip, Refuse, and Reset to Draft.

When the manager is satisfied with the Expense Report Summary, they’ll click Post Journal Entries.

Upon clicking Post Journal Entries, that button disappears, and the Analytic Distribution column in the Expense tab is filled with the sales order that was initially configured to the expense in the Customer to Reinvoice field.

 Important

By default, the Customer to Reinvoice field is enabled for the [TRANS & ACC] Travel & Accommodation, [COMM] Communication, [FOOD] Meals, and [MIL] Mileage expense category.

It should be noted that not all of the default expense categories that come installed with the Expenses application have reinvoicing policies activated. The setting may have to be manually activated.

To do that, navigate to Expenses app ‣ Configuration ‣ Expenses Categories to view a list of all expense categories in the database.

Look in the Re-Invoice Expenses column to see which selections have been made for each expense category.

To modify an expense category, click the  (right arrow) in the Category field, to reveal that specific expense from.

Under the Invoicing section, in the Re-Invoice Expenses field, select either At cost or Sales price.

Reinvoice expense

With those steps completed, it’s time to return to the sales order to complete the reinvoice of the expense to the customer.

To do that, navigate to main Odoo dashboard ‣ Sales app, and select the appropriate sales order that should be reinvoiced for the expense.

On the sales form, the newly-configured expense is now in the Order Lines tab, with its Delivered column filled in, and ready to be invoiced.

After confirming the details of the expense, click Create Invoice at the top of the sales order. When clicked, a Create invoices pop-up window appears.

From this pop-up window, leave the Create Invoice field on the default Regular invoice option, and click Create Draft Invoice.

Doing so reveals a Customer Invoice Draft showing only the expense in the Invoice Lines tab.

If all the information related to the expense is correct, click Confirm to confirm the invoice. Doing so moves the status of the invoice from Draft to Posted.

To send the invoice to the customer, click Send & Print. Doing so reveals a Send pop-up window, with a preconfigured message and PDF invoice in the body of the message. The message can be reviewed and modified, if needed.

Once ready, click Send & Print to send the invoice to the customer. When clicked, the pop-up window disappears, and Odoo sends the message/invoice to the customer. Additionally, a PDF of the invoice is automatically downloaded for record-keeping and/or printing purposes.

Back on the Customer Invoice, click the Register Payment button when the customer pays for the invoiced expense.

When Register Payment is clicked, a Register Payment pop-up window appears. In this pop-up window, the necessary fields are auto-populated with the correct information. After reviewing the information, click Create Payment.

Once Create Payment is clicked, the pop-up window disappears, and a green In Payment banner is in the upper-right corner of the invoice, signifying this invoice is paid for in full. Thus, completing the workflow.

 See also

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Import products

Odoo Sales provides a template for importing products with categories and variants, which can be opened and edited with any spreadsheet software (Microsoft Excel, OpenOffice, Google Sheets, etc.).

When this spreadsheet is filled out properly, it can be quickly uploaded to the Odoo database. When uploaded, those products are instantly added, accessible, and editable in the product catalog.

Import template

In order to import products with categories and variants, the Import Template for Products must be downloaded. Once downloaded, the template can be adjusted and customized, and then uploaded back into the Odoo database.

To download the necessary import template, navigate to Sales app ‣ Products ‣ Products. On the Products page, click the ⚙️ (gear) icon in the upper-left corner. Doing so reveals a drop-down menu.

From this drop-down menu, select the Import records option.

Selecting Import records reveals a separate page with a link to download the Import Template for Products. Click that link to download the template.

Once the template download is complete, open the spreadsheet file to customize it.

Customize product import template

When the import template has been downloaded and opened, it’s time to modify its contents. However, before any changes are made, there are a few elements to keep in mind during the process:

  • Feel free to remove any columns that aren’t deemed necessary. But, it is strongly advised that the Internal Reference column remains.
    While it’s not mandatory, having a unique identifier (e.g. FURN_001) in the Internal Reference column for each product can be helpful in many cases. This can even be from previous software spreadsheets to ease the transition into Odoo.
    For example, when updating imported products, the same file can be imported several times without creating duplicates, thus enhancing the efficiency and simplicity of imported product management.
  • Do not change the labels of columns that are meant to be imported. Otherwise, Odoo won’t recognize them, forcing the user to map them on the import screen manually.
  • Feel free to add new columns to the template spreadsheet, if desired. However, to be added, those fields must exist in Odoo. If Odoo can’t match the column name with a field, it can be matched manually during the import process.
    During the import process of the completed template, Odoo reveals a page showcasing all the elements of the newly-configured product template spreadsheet, separated by File Column, Odoo Field, and Comments.
    To manually match a column name with a field in Odoo, click the Odoo Field drop-down menu next to the File Column that needs a manual adjustment, and select the appropriate field from that drop-down menu.

Import product template spreadsheet

After customizing the product template spreadsheet, return to the Odoo product import page, where the template download link is found, and click the Upload File button in the upper-left corner.

Then, a pop-up window appears, in which the completed product template spreadsheet file should be selected and uploaded to Odoo.

After that, Odoo reveals a page showcasing all the elements of the newly-configured product template spreadsheet, separated by File Column, Odoo Field, and Comments.

From here, the File Column can be manually assigned to an Odoo Field, if necessary.

To make sure everything is appropriate, and all the columns and fields are lined up accurately, click the Test button in the upper-left corner.

If everything is lined up and applied correctly, Odoo reveals a blue banner at the top of the page, informing the user that Everything seems valid.

If there are any errors, Odoo reveals a red banner at the top of the page, with instructions of where to locate the specific issues, and how to fix them.

Once those errors are fixed, click Test again to ensure all necessary issues have been remedied appropriately.

If additional product template spreadsheets need to be uploaded, click the Load File button, select the desired product template spreadsheet, and repeat the process.

When everything is ready, click the Import button.

When clicked, Odoo instantly imports those products, and reveals the main Products page, with a pop-up message in the upper-right corner. This pop-up message informs the user how many products were successfully imported.

At this point, all the newly-imported products are accessible and editable via the Products page.

Import relation fields, attributes, and variants

It’s important to note that an Odoo object is always related to many other objects. For example, a product is linked to product categories, attributes, vendors, and things of this nature. These links/connections are known as relations.

 Note

In order to import product relations, the records of the related object must be imported first from their own list menu.

Relation fields

On product forms in Odoo, there are a number of fields that can be modified and customized at any time. These fields are found under every tab on a product form. While these fields are easily editable directly on the product form, they can also be modified via a product import.

As mentioned, relation fields of this nature can only be imported for products if they already exist in the database. For example, if a user attempts to import a product with a Product Type, it can only be one of the preconfigured product types existing in the database (e.g. Storable ProductConsumable, etc.).

To import information for a relation field on a product import template spreadsheet, add the name of the field as a column name/title on the spreadsheet. Then, on the appropriate product line, add the desired relation field option.

When all desired relation field information has been entered, save the spreadsheet, and import it to the database, per the process mentioned above (Sales app ‣ Products ‣ Products ‣ ⚙️ (gear) icon ‣ Import records ‣ Upload File).

Once the spreadsheet with the newly-configured relation field information has been uploaded, click Import, and Odoo returns to the Products page.

When the newly-changed/modified products, complete with the new relation field information, has been imported and uploaded, that new information can be found on the Products page.

Attributes and values

Odoo also allows users to import product attributes and values that can be used for products that already exist in the database, and/or with imported products.

To import attributes and values, a separate spreadsheet or CSV file dedicated to attributes and values must be imported and uploaded before they can be used for other products.

The column names/titles of the attributes and values spreadsheet should be as follows: Attribute, Display Type, Variant Creation Mode, and Values / Value.

  • Attribute: name of the attribute (e.g. Size).
  • Display Type: display type used in the product configurator. There are three display type options:
    • Radio: values displayed as radio buttons
    • Selection: values displayed in a selection list
    • Color: values denoted as a color selection
  • Variant Creation Mode: how the variants are created when applied to a product. There are three variant creation mode options:
    • Instantly: all possible variants are created as soon as the attribute, and its values, are added to a product
    • Dynamically: each variant is created only when its corresponding attributes and values are added to a sales order
    • Never: variants are never created for the attribute
       Note
      The Variants Creation Mode cannot be changed once the attribute is used on at least one product.
  • Values/Value: values pertaining to the corresponding attribute. If there are multiple values for the same attribute, the values need to be in individual lines on the spreadsheet.

Once the desired attributes and values have been entered and saved in the spreadsheet, it’s time to import and upload it into Odoo. To do that, navigate to Sales app ‣ Configuration ‣ Attributes ‣ ⚙️ (gear) icon ‣ Import records ‣ Upload File.

Once the spreadsheet with the newly-configured attributes and values has been uploaded, click Import, and Odoo returns to the Attributes page. That’s where those newly-added attributes and values can be found and edited, if necessary.

As mentioned previously, when attributes and values have been added to the Odoo database, they can be used for existing or imported products.

Product variants

When product attributes and values are configured in the database, they can be used on product import spreadsheets to add more information and detail to products being imported.

To import products with product attributes and values, the product import template spreadsheet must be configured with specific Product Attributes / Attribute, Product Attributes / Values, and Name columns.

There can be other columns, as well, but these columns are required in order to properly import products with specific variants.

  • Name: product name
  • Product Attributes / Attribute: name of attribute
  • Product Attributes / Values: values pertaining to the corresponding attribute

 Tip

To import multiple values, separate them by just a comma, not a comma followed by a space, in the product import template spreadsheet (e.g. furniture,couch,home).

When the desired products and product variants have been entered and saved in the spreadsheet, it’s time to import and upload them into Odoo. To do that, navigate to Sales app ‣ Products ‣ Products ‣ ⚙️ (gear) icon ‣ Import records ‣ Upload File.

Once the spreadsheet with the newly-configured products and product variants has been uploaded, click Import, and Odoo returns to the Products page. That’s where the newly-added products can be found.

To view and modify the attributes and variants on any products, select the desired product from the Products page, and click the Attributes & Variants tab.

 See also

Product variants

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Product variants

Product variants are used to give single products a variety of different characteristics and options for customers to choose from, such as size, style, or color, just to name a few.

Products variants can be managed via their individual product template, or by navigating to either the Product Variants or Attributes page. All of these options are located within the Odoo Sales application.

 Example

An apparel company has the following variant breakdown for one their best-selling t-shirts:

  • Unisex Classic Tee
    • Color: Blue, Red, White, Black
    • Size: S, M, L, XL, XXL

Here, the T-shirt is the product template, and T-shirt: Blue, S is a specific product variant.

Color and Size are attributes, and the corresponding options (like Blue and S) are values.

In this instance, there is a total of twenty different product variants: four Color options multiplied by five Size options. Each variant has its own inventory count, sales totals, and other similar records in Odoo.

 See also

Product variants

Configuration

To use product variants, the Variants setting must be activated in the Odoo Sales application.

To do that, go to Sales app ‣ Configuration ‣ Settings, and locate the Product Catalog section at the top of the page.

In that section, check the box to enable the Variants feature.

Then, click Save at the top of the Settings page.

Attributes

Before product variants can be set up, attributes must be created. To create, manage, and modify attributes, navigate to Sales app ‣ Configuration ‣ Attributes.

 Note

The order of attributes on the Attributes page dictates how they appear on the Product ConfiguratorPoint of Sale dashboard, and eCommerce pages.

To create a new attribute from the Attributes page, click New. Doing so reveals a blank attributes form that can be customized and configured in a number of ways.

First, create an Attribute Name, such as Color or Size.

Next, select one of the options from the Display Type field. The Display Type determines how this product is shown on the online store, Point of Sale dashboard, and Product Configurator.

The Display Type options are:

  • Pills: options appear as selectable buttons on the product page of the online store.
  • Color: options appear as small, colored squares, which reflect any HTML color codes
  • Radio: options appear in a bullet-style list on the product page of the online store.
  • Select: options appear in a drop-down menu on the product page of the online store. set, on the product page of the online store.
  • Multi-checkbox (option): options appear as selectable checkboxes on the product page of the online store.

The Variant Creation Mode field informs Odoo when to automatically create a new variant once an attribute is added to a product.

 Note

The Variant Creation Mode field must be set to Never (option) in order for the Multi-checkbox (option) to work properly as the Display Type.

  • Instantly: creates all possible variants as soon as attributes and values are added to a product template.
  • Dynamically: creates variants only when corresponding attributes and values are added to a sales order.
  • Never (option): never automatically creates variants.

 Warning

Once added to a product, an attribute’s Variants Creation Mode cannot be edited.

The eCommerce Filter Visibility field determines whether or not these attribute options are visible to the customer on the front-end, as they shop on the online store.

  • Visible: the attribute values are visible to customers on the front-end.
  • Hidden: the attribute values are hidden from customers on the front-end.

Lastly, in the optional eCommerce Category field, select a category from a drop-down menu to group similar attributes under the same section for added specificity and organization.

 Note

To view the details related to the attribute category selected, click the internal link  (right arrow) icon to the far-right of the eCommerce Category field, once an option has been selected. Doing so reveals that attribute category’s detail form.

Here, the Category Name and Sequence is displayed at the top. Followed by Related Attributes associated with the category. These attributes can be dragged-and-dropped into a desirable order of priority.

Attributes can be directly added to the category, as well, by clicking Add a line.

 Tip

To create an attribute category directly from this field, start typing the name of the new category, then select either Create or Create and edit… from the drop-down menu that appears.

Clicking Create creates the category, which can be modified later. Clicking Create and edit… creates the category and reveals a Create Category pop-up window, in which the new attribute category can be configured and customized.

Attribute values

Attribute values should be added to the Attribute Values tab. Values can be added to an attribute at any time, if needed.

To add a value, click Add a line in the Attribute Values tab.

Then, enter the name of the value in the Value column. Next, check the box in the Is custom value column, if the value is custom (i.e. the customer gets to provide unique specifications that are specific to this particular value).

 Note

If the Display Type - Color option is selected, the option to add an HTML color code will appear to the far-right of the value line, to make it easier for salespeople and customers to know exactly what color option they’re choosing.

To choose a color, click the blank circle in the Color column, which reveals an HTML color selector pop-up window.

In this pop-up window, select a specific color by dragging the color slider to a particular hue, and clicking on the color portion directly on the color gradient window.

Or, choose a specific color by clicking the dropper icon, and selecting a desired color that’s currently clickable on the screen.

 Tip

Attributes can also be created directly from the product template by adding a new line and typing the name into the Variants tab.

Once an attribute is added to a product, that product is listed and accessible, via the attribute’s Related Products smart button. That button lists every product in the database currently using that attribute.

Product variants

Once an attribute is created, use the attribute (and its values) to create a product variant. To do that, go to Sales app ‣ Products ‣ Products, and select an existing product to view that desired product’s form. Or, click Create to create a new product, to which a product variant can be added.

On the product form, click the Attributes & Variants tab to view, manage, and modify attributes and values for the product.

To add an attribute to a product, and subsequent attribute values, click Add a line in the Attributes & Variants tab. Then, choose the desired attribute from the drop-down menu that appears.

 Tip

Attributes can be created directly from the Attributes & Variants tab of a product form. To do that, start typing the name of the new attribute in the blank field, and select either Create or Create and edit… from the mini drop-down menu that appears.

Clicking Create creates the attribute, which can be customized later. Clicking Create and edit… creates the attribute, and a Create Attribute pop-up form appears. In the pop-up form, proceed to modify the attribute in a number of ways.

Once an attribute is selected in the Attribute column, proceed to select the specific attribute values to apply to the product, via the drop-down menu available in the Values column.

 Note

There is no limit to how many values can be added.

 Tip

Similar product variant creation processes are accessible through the Purchase, Inventory, and eCommerce applications.

Configure variants

To the far-right of the attribute line is a Configure button. When clicked, Odoo reveals a separate page showcasing those specific Product Variant Values.

Here, the specific Value name, HTML Color Index (if applicable), and Value Price Extra are viewable.

 Note

The Value Price Extra represents the increase in the sales price if the attribute is selected.

When a value is clicked on the Product Variant Values page, Odoo reveals a separate page, detailing that value’s related details.

On the specific product variant detail page, the Value and Value Price Extra fields can be found, along with an Exclude for field.

In the Exclude for field, different Product Templates and specific Attribute Values can be added. When added, this specific attribute value will be excluded from those specific products.

Variants smart button

When a product has attributes and variants configured in its Attributes & Variants tab, a Variants smart button appears at the top of the product form. The Variants smart button indicates how many variants are currently configured for that specific product.

When the Variants smart button is clicked, Odoo reveals a separate page showcasing all the specific product variant combinations configured for that specific product.

Impact of variants

In addition to offering more detailed product options to customers, product variants have their own impacts that can be taken advantage of throughout the Odoo database.

  • Barcode: barcodes are associated with each variant, instead of the product template. Each individual variant can have its own unique barcode/SKU.
  • Price: every product variant has its own public price, which is the sum of the product template price and any extra charges for particular attributes.
     Example
    A red shirt’s sales price is $23 – because the shirt’s template price is $20, plus an additional $3 for the red color variant. Pricelist rules can be configured to apply to the product template, or to the variant.
  • Inventory: inventory is counted for each individual product variant. On the product template form, the inventory reflects the sum of all variants, but the actual inventory is computed by individual variants.
  • Picture: each product variant can have its own specific picture.

 Note

Changes to the product template automatically apply to every variant of that product.

 See also

Import products

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Product images with Google Images

Having appropriate product images in Odoo is useful for a number of reasons. However, if a lot of products need images, assigning them can become incredibly time-consuming.

Fortunately, by configuring the Google Custom Search API within an Odoo database, finding product images for products (based on their barcode) is extremely efficient.

Configuration

In order to utilize Google Custom Search within an Odoo database, both the database and the Google API must be properly configured.

 Note

Free Google accounts allow users to select up to 100 free images per day. If a higher amount is needed, a billing upgrade is required.

Google API dashboard

  1. Go to the Google Cloud Platform API & Services page to generate Google Custom Search API credentials. Then, log in with a Google account. Next, agree to their Terms of Service by checking the box, and clicking Agree and Continue.
  2. From here, select (or create) an API project to store the credentials. Start by giving it a memorable Project Name, select a Location (if any), then click Create.
  3. With the Credentials option selected in the left sidebar, click Create Credentials, and select API key from the drop-down menu.
  4. Doing so reveals an API key created pop-up window, containing a custom API key. Copy and save Your API key in the pop-up window – it will be used later. Once the key is copied (and saved for later use), click Close to remove the pop-up window.
  5. On this page, search for Custom Search API, and select it.
  6. From the Custom Search API page, enable the API by clicking Enable.

Google Programmable Search dashboard

  1. Next, go to Google Programmable Search Engine, and click either of the Get started buttons. Log in with a Google account, if not already logged in.
  2. On the Create a new search engine form, fill out the name of the search engine, along with what the engine should search, and be sure to enable Image Search and SafeSearch.
  3. Validate the form by clicking Create.
  4. Doing so reveals a new page with the heading: Your new search engine has been created.
  5. From this page, click Customize to open the Overview ‣ Basic page. Then, copy the ID in the Search engine ID field. This ID is needed for the Odoo configuration.

Odoo

  1. In the Odoo database, go to the Settings app and scroll to the Integrations section. From here, check the box beside Google Images. Then, click Save.
  2. Next, return to the Settings app, and scroll to the Integrations section. Then, enter the API Key and Search Engine ID in the fields beneath the Google Images feature.
  3. Click Save.

Product images in Odoo with Google Custom Search API

Adding images to products in Odoo can be done on any product or product variant. This process can be completed in any Odoo application that provides access to product pages (e.g. Sales app, Inventory app, etc.).

Below is a step-by-step guide detailing how to utilize the Google Custom Search API to assign images to products in Odoo using the Odoo Sales application:

  1. Navigate to the Products page in the Sales app (Sales app ‣ Products ‣ Products). Or, navigate to the Product Variants page in the Sales app (Sales app ‣ Products ‣ Product Variants).
  2. Select the desired product that needs an image.
     Note
    Only products (or product variants) that have a barcode, but not an image, are processed.
    If a product with one or more variants is selected, each variant that matches the aforementioned criteria is processed.
  3. Click the Action ⚙️ (gear) icon on the product page, and select Get Pictures from Google Images from the menu that pops up.
  4. On the pop-up window that appears, click Get Pictures.
  5. Once clicked, the image(s) will appear incrementally.
     Note
    Only the first 10 images are fetched immediately. If you selected more than 10, the rest are fetched as a background job.
    The background job processes about 100 images in a minute. If the quota authorized by Google (either with a free or a paid plan) is reached, the background job puts itself on hold for 24 hours. Then, it will continue where it stopped the day before.

 See also

Create, modify, or close your Google Cloud Billing account

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Pricelists

pricelist is a method of dynamic pricing that applies a list of prices (or price rules) to adjust sales prices. This adjustment can apply to specific customers, customer groups, sales orders, time periods, etc., and is useful for creating pricing strategies and optimizing sales margins.

Odoo Sales has a useful pricelist feature that can be tailored to fit any unique pricing strategy. Pricelists suggest certain prices, but they can always be overridden on the sales order.

Pricelists configuration

To enable pricelists in the Odoo Sales app, first navigate to Sales app ‣ Configuration ‣ Settings. In the Pricing section, tick the checkbox next to the Pricelists feature, and click Save to save all changes.

After activating and saving the Pricelists feature, the Settings page reloads. From here, either select the  Pricelists link (beneath the Pricelists feature on the Settings page), or navigate to Sales app ‣ Products ‣ Pricelists.

Either option reveals the Pricelists page, in which pricelists can be created and/or modified at any time.

 Important

If there is no specific pricelist configured on a sales quotation, the Default pricelist is applied.

 Note

The Selectable column is only applicable to Odoo eCommerce. This option allows website visitors to choose a pricelist when shopping in your eCommerce website.

 Note

In Odoo 17 (and above), you are not required to enter a pricelist in the Pricelist field on a sales quotation form in order to confirm it (i.e. turn it into a sales order).

The chatter section is available on pricelist forms, which allows you to add notes and communications on each pricelist page.

Creating and editing pricelists

From the Pricelists page, either select the pricelist to edit, or click New to create a new pricelist, which reveals a blank pricelist form that can be configured in a number of different ways.

When creating a new pricelist, start by adding a name for the pricelist at the blank field at top of the form. Next, select which Currency should be used.

If working in a multi-company environment, select which company this pricelist should apply to in the Company field. If this field is left blank, the pricelist is automatically applied to all companies in the database.

If working in a multinational company, select the countries where this pricelist will apply under the Country Groups column.

Price Rules tab

In the Price Rules tab, each line creates a new record that will implement customized pricing to the sales order where the pricelist is applied. To create a new price rule, click on Add a line, which opens a new pricelist rules form.

Then, select whether to apply this set of rules to a Product or Category.

From here, there are several configuration options:

  • Product: If selected in the Apply To field, use this field to choose one or more products to which this pricelist will apply.
  • Category: Select one or more product categories to which this pricelist will apply.
  • Price Type: Select whether the specialized pricing will fall under Discount, Formula, or Fixed Price. Depending on the price type, there will be additional configurations on how to apply the pricelist.
    • Discount: Enter the percentage to be discounted. A mark-up can be configured by using a negative value in this field.
       Important
      If a pricelist is applied to a sales quotation with the discount Price Type set as Discount, the discount will visible to the customer. 
    • Formula: Calculate the pricelist rules based the following configuration:
      • Discount: Percentage discount to be applied. Negative values can be entered to increase prices.
       Important
      If a pricelist is applied to a sales quotation with the discount Price Type set as Formula, the discount will not be visible to the customer.
      • Round off to: Numerical value to act as round-off multiple, to be applied after discount. The rounding method sets the price so that it is a multiple of the value in this field.
         Note
        Rounding is applied after the discount and before the extra fee.
        • Extra Fee: Fixed amount to be added or subtracted once Discount and Round off to have been applied.
        • Fixed Price: Enter fixed price for this pricelist. When applied, all product lines in the quotation form will be updated to this price.
  • Min Qty: Specify the minimum quantity of selected products for this pricelist to apply.
  • Validity Period: Specify the start and end date during which this pricelist can be applied to quotations.

 Example

To formulate a 100% markup (or two times the price of the product), with a $5 minimum margin, set the Based price field to Sales Price and the Discount to -100. This is often seen in retail situations.

 Example

To apply 20% discounts, with prices rounded up to 9.99, set the Based on field to Sales Price, the Discount field to 20, the Extra Fee field to -0.01, and the Rounding Method field to 10.

 Tip

To have prices that end in 9.99, set the Rounding Method to 10 and the Extra Fee to -0.01.

Recurring Prices tab

Recurring prices are specifically used with subscription products. When configuring price rules in this tab, keep in mind that they will only apply to subscription products, or products with recurring prices enabled.

In the Recurring Prices tab, pricelists are configured with the same options as in the Price Rules tab, with additional columns for Product Variants add Recurring Plan.

Product Variants are configured under products that have one or more values, such as color, size, etc. Once a product has been selected under the Products Tab, if applicable, select the desired product variants to be included in the price rule.

Then, select the blank field in the Recurring Plan column to reveal a drop-down menu of pre-designated recurrence periods (e.g. Monthly, Quarterly, Weekly, etc.).

New recurrence periods can also be created from this column. To do so, type in the name for the new Recurring Plan, then select Create from the resulting drop-down menu to create the time period, which can be edited later. Alternatively, select Create and edit… to reveal a Create Recurring Plan pop-up form. From this pop-up form, the new recurrence period can be configured, with specific Details, Self-Service, and Pricing options. When the configurations are complete, click the Save & Close button.

Lastly, add the desired price for this recurring price rule in the Recurring Price column.

 See also

Subscriptions

Rental rules tab

Price rules can be configured for rental products under the Rental rules tab, using the same methodology as the Price Rules and Recurring Prices tabs.

To add a rental rule, click Add a line, and select a desired product in the Products column. Then, select any specific Variants, if necessary.

Next, designate a Period of time for the rental rule (e.g. Daily, Hourly, etc.).

Lastly, configure a Price for the rental rule in the respective column.

Ecommerce Tab

Under the Ecommerce tab, price rules can be configured for products sold on an Ecommerce website.

To enable the pricelist to be visible, select the target website in the Website field.

The Selectable can be enabled to allow the customer to choose this pricelist.

Finally, promotional and loyalty codes can be added to the E-commerce Promotional Code field.

Customer pricelist application

While the default pricelist applied to any customer is the Public Pricelist, Odoo provides the opportunity to directly apply a different pricelist to customers on their contact form.

To do that, open the desired customer’s contact form, either by navigating to Sales app ‣ Orders ‣ Customers and selecting the customer from the main Customers page, or by clicking on the customer’s name on a sales order.

On the desired customer’s contact form, under the Sales & Purchase tab, in the Sales section, designate what pricelist should be applied to this specific customer from the drop-down menu in the Pricelist field.

 Note

When a customer is added to the database, the default pricelist is automatically applied to them. There is no way to have a blank Pricelist field on a contact form. Even if that field is left blank, the default pricelist appears when that contact form is opened again.

However, when that contact is added to a quotation, and the Pricelist field is auto-populated (based on the information from their contact form), that predetermined pricelist can be removed from the Pricelist field, and the quotation can still be confirmed, and subsequently, turned into a sales order.

Conditions

At the bottom of the Create Pricelist Rules pop-up form is the Conditions section.

Here, start by selecting one of the options in the Apply On field:

  • All Products: the advanced pricelist rule will be applied to all products.
  • Product Category: the advanced pricelist rule will be applied to a specific category of products.
  • Product: the advanced pricelist rule will be applied to a specific product.
  • Product Variant: the advanced pricelist rule will be applied to a specific product variant.

If any of those options, apart from All Products, are selected, a new option-specific field appears, in which the specific Product Category, Product, or Product Variant must be chosen.

Then, select a minimum quantity to be applied to the advanced pricelist rule in the Min. Quantity field. Lastly, select a range of dates for the pricelist item validation in the Validity field.

Once all configurations are complete, either click Save & Close to save the advanced pricelist rule, or click Save & New to immediately create another advanced pricelist rule on a fresh form.

 Note

If a price rule is set for a particular product, and another one for its product category, Odoo takes the rule of the product itself.

 See also

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Foreign currencies

With Odoo, pricelists can be used to manage prices in a number of foreign currencies. Specifically, Odoo has the ability to work with 167 total currencies.

 Note

In order to use multiple currencies in Odoo Sales, the Accounting application must be installed.

Settings

Once the Accounting app has been installed, foreign currencies can be added to the database. Navigate to Accounting app ‣ Configuration ‣ Settings, scroll to the Currencies section, and locate the Main Currency setting.

Odoo automatically sets the main currency as the currency of the country the company is based in.

To change the main currency of the company, select the drop-down menu in the Currency field, select the desired currency, and be sure to Save the changes.

 Tip

To ensure currency rates are updated automatically, enable the automatic currency rates feature on the Accounting settings page (Accounting app ‣ Configuration ‣ Settings ‣ Currencies section).

Click the checkbox beside the Automatic Currency Rates feature, choose a designated bank to get the currency rates from in the Service field drop-down menu, and select an Interval of time for the updates to take place. Then determine when the date of the Next Run should be.

To instantly update the currency rates, click the 🔁 (circular arrows) icon, located to the right of the Next Run field.

When all configurations are complete, be sure to Save all changes.

 Note

All payment methods must be in the same currency as the sales journal, or the company currency, if the company currency is not set. If it is not the same, a Validation Error message appears.

View, edit, and add currencies

To view, edit, and add currencies to the database, making them available on pricelists and on the Main Currency drop-down menu, click the Currencies link, located beneath the Currency field on the Accounting app ‣ Settings page.

When the Currencies link is clicked, a separate Currencies page is revealed.

On this page, Odoo provides a master list of 167 global currencies. Each row shows the corresponding Currency, Symbol, Name, date of the Last Update, and Current Rate (compared to the default currency of the country in which the company is based).

To the far right, there are two columns, which can be toggled on or off:

  • Active: this currency is activated, which means it can be added to a pricelist, or used as the main currency of the company, if desired (via Accounting app ‣ Configuration ‣ Settings ‣ Currencies section).

 Note

By default, all the Active currency options are at the top of the list.

 Tip

It is recommended that at least one pricelist is created per Active currency. See Pricelists to learn more about pricelist configuration.

To toggle options on/off, click the toggle switch in the row for the corresponding column. When on the color of the switch is green. When off, the color of the switch is grey.

Currency detail form

To edit any currency on the Currencies page, click the desired currency to reveal the detail form for that specific currency, and proceed to make any necessary changes.

On the currency detail form, the relevant currency code appears in the Currency field. Beneath that, the name for the currency is in the Name field.

Then, toggle the currency’s availability with the Active toggle: on is indicated with a green switch, and off is indicated with a grey switch.

On the right of the currency detail form, the appropriate Currency Unit (e.g. Dollars) and Currency Subunit (e.g. Cents) can be found.

Next, under the Rates tab, the various conversion rates can be viewed, added, or deleted. Each row shows the Date of that specific rate, the Company to which it is connected, followed by the Unit per… and …per Unit.

 Note

The  in each of the last two columns represents the main currency set for the company. For example, if the main currency is set to USD, the columns are titled Unit per USD and USD per Unit.

To add a new rate, click Add a line in the Rates tab, and proceed to fill in the necessary information in the aforementioned columns.

Main currency detail form

If the selected currency is the main currency of the company, a blue banner appears at the top of the currency detail form with the message: This is your company’s currency..

All the fields are the same as a typical currency detail form, but there will not be a Rates tab because all other currency rates are based off the main currency of the company.

Create new currency

If a desired currency isn’t on the Currencies page, click the New button to open a blank currency template form.

 Tip

The same New button is located in the upper-right corner of any currency detail form.

On the blank currency detail form, proceed to enter the desired currency code in the Currency field. Beneath that, enter the name for the currency in the Name field.

Then, toggle the currency’s availability with the Active toggle switch.

On the right of the currency detail form, enter the appropriate Currency Unit (e.g. Dollars) and appropriate Currency Subunit (e.g. Cents).

Next, under the Rates tab, add a new rate by clicking Add a line. Then, proceed to confirm and adjust the Date, Company, Unit per…, and …per Unit fields to ensure all the auto-populated information is accurate.

 Note

The  in each of the last two columns represents the main currency set for the company. For example, if the main currency is set to USD, the columns are titled Unit per USD and USD per Unit.

Currency-specific pricelists

It is recommended that at least one pricelist is created per active currency in the database. To create (or assign) a pricelist to a specific currency, start by navigating to Sales app ‣ Products ‣ Pricelists.

From the Pricelists page, either select an existing pricelist to edit, or click New to create a new pricelist.

On the pricelist detail form, for either a new or existing pricelist, adjust the Currency field as desired.

 See also

Pricelists to learn more about pricelist configuration.

Auto-conversion from public price

It should be noted that the public price seen on products is directly related to the main currency the company has set, which is configured by navigating to Accounting app ‣ Configuration ‣ Settings ‣ Currencies section ‣ Main Currency ‣ Currency drop-down menu.

The sales price automatically updates if the pricelist is changed to a different pricelist that has a different currency than the company’s main currency. The change in price is directly related to the updated conversion rate for that currency.

Set product prices

In order to have product prices set in place to avoid any changes in currency rates, start by navigating to Sales app ‣ Products ‣ Products.

From the Products page, select the desired product to modify. Or, create a new product by clicking the New button.

Then, on the product detail form, click the Extra Prices smart button, located in the upper-left corner. Doing so reveals a separate Price Rules page, specific to that particular product.

Click New, and select the desired pricelist from the drop-down menu in the Pricelist column.

The Applied On field is auto-populated with the product, so proceed to enter in the desired figures in the Min. Quantity and Price fields.

 Note

The figure in the Min. Quantity field means the Price being set will only trigger if at least that amount of product is purchased.

If necessary, configure a Start Date and End Date for the set prices. Leaving those columns blank ensures the set price will remain valid, regardless of the date of sale.

If working in a multi-company environment, designate to which company this price rule should be applied in the Company field. Leaving that field blank ensures the price rule applies to all companies in the database.

With those configurations complete, regardless of any changes/updates in conversion, whenever those designated pricelists are applied to a customer trying to purchase this specific product, these pre-determined set prices appear.

 See also

Pricelists

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Discounts

The Discounts feature allows users to decrease or increase the price on item lines in a sales quotation or order. This is calculated as a percentage of the products’ sales price.

To access discounts in the Sales app, navigate to Sales app ‣ Configuration ‣ Settings. In the Pricing section, tick the Discounts checkbox, then click Save.

After the setting has been activated, navigate to the desired quotation by going to Sales app ‣ Orders ‣ Quotations at the top of the page. Once there, click on the desired quote from the list.

Discounts on product lines

In the Order Lines tab of the quotation form, a new column heading appears labeled Disc.%. This column is used to set discounts on individual line items. Enter the desired discount for each product line and the new price is automatically calculated in the Total at the bottom of the page.

 Tip

A discount can also be added directly to a sales order in the same way. Navigate to Sales app ‣ Orders ‣ Orders, click the desired sales order, and add the discount to Disc.% field as described above.

 Note

Positive values for Disc.% will apply a discount, while negative values can be used to increase the price.

 Important

Positive values, or price decreases, will be visible to the customer, while negative values, or price increases, will not be visible to the customer. Instead of a discount column, the negative discount will change the product’s unit price.

Discount button

With the Discounts settings enabled, a Discount button appears at the bottom of sales orders.

Clicking the Discount button on a sales order opens a pop-up window, where the Discount percentage, and options are configured:

  • On All Order Lines: Add the specified discount percentage (configured in the Discount field of the pop-up window) on all existing order lines of the sales order.
  • Global Discount: Add a discount product line to the order, which has the cumulative value equivalent to the specified discount percentage.
     Example
    A global discount of 10% is added in the last line of a sales order with a subtotal of $4,200 by adding a discount line with a -$420 value (which is 10% of $4,200).
     Important
    Any product added (or removed) after the global discount line is added does not affect the discount value on the discount line. To include new products or amend current products in the global discount, delete the current global discount line and repeat the steps.
  • Fixed Amount: Add a monetary amount to the Discount field. Once applied, this amount is added to the order as a product line, with the monetary value subtracted from the order total.
     Example
    A fixed discount of $20 appears as a product line, with a negative Unit Price.

 Note

It is more beneficial to add a Fixed Amount discount after all desired products have been added to a sales order. If there are changes made to the sales order after the discount is added, adjust the value on the Discount line, or remove the line and add the discount again, as needed.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Returns and refunds

The Odoo Sales app provides two different ways to process returns. The method used depends on whether or not an invoice has been sent.

Before invoicing

Returns are completed using Reverse Transfers when a customer decides to return a product before an invoice has been sent or validated.

 Note

In order to use Reverse Transfers, the Inventory app must be installed.

To start a return before invoicing, navigate to the Sales app, select the desired sales order, and click on the Delivery smart button to open the associated delivery order.

On the validated delivery order, click Return.

This opens a Reverse Transfer pop-up window.

By default, the Quantity matches the validated quantities from the delivery order. Update the quantities, if necessary. Click on the 🗑️ (trash) icon next to a line item to remove it from the return.

Next, click Return to confirm the return. This generates a new warehouse operation for the incoming returned product(s).

Upon receiving the return, the warehouse team validates the warehouse operation by clicking Validate. Then, on the original sales order, the Delivered quantity updates to reflect the difference between the initial validated quantities and the returned quantities.

When an invoice is created, the customer receives an invoice only for the products they are keeping, if any.

After invoicing

Sometimes, customers return an item after they receive and/or pay for their invoice. In these cases, a return using only Reverse Transfers is insufficient since validated, or sent, invoices cannot be changed.

However, Reverse Transfers can be used in conjunction with Credit Notes to complete the customer’s return.

To start a return after invoicing, navigate to the relevant sales order in the Sales app.

If there is a payment registered on the sales order, the payment details appear in the chatter, and the invoice (accessible through the Invoices smart button) has a green In Payment banner.

From the sales order, click on the Delivery smart button to view the validated delivery order. Then, click Return to open the Reverse Transfer pop-up window.

Next, edit the Product and/or Quantity, as needed for the return. Then, click Return. This generates a new warehouse operation for the incoming returned product(s), which is validated by the warehouse team once the return is received by clicking Validate.

Then, on the sales order, the Delivered quantity updates to reflect the difference between the initial validated quantities and the returned quantities.

To process a refund, navigate to the relevant invoice (from the sales order, click on the Invoices smart button). Then, click the Credit Note button at the top of the validated invoice.

Doing so reveals a Credit Note pop-up form.

Start by entering a Reason displayed on Credit Note and a specific Journal to process the credit. Then, select a specific Reversal Date.

After the information is filled in, click Reverse or Reverse and Create Invoice. Then, edit the draft, if needed.

Lastly, click Confirm to confirm the credit note.

When complete, a blue banner reading: You have outstanding credits for this customer. You can allocate them to mark this invoice as paid. appears at the top of the page.

 See also

Credit notes and refunds

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Use eWallets and gift cards

With Odoo, customers can use eWallets and gift cards for online and in-store shopping.

To enable eWallets and gift cards for eCommerce and Point of Sale (PoS), first enable Discounts, Loyalty & Gift Card under Sales app ‣ Configuration ‣ Settings ‣ Pricing section. Once enabled, go to Sales app ‣ Products ‣ Gift cards & eWallet and Create a new eWallet or gift card program.

eWallets

eWallets allow customers to save credits on their online account and use these credits as a payment method when buying items in an online store or a brick-and-mortar store. eWallets can also be used to centralize multiple gift cards.

Before creating an eWallet program, it is necessary to create an eWallet top-up product. Top-ups are pre-defined digital credit values added to an eWallet in exchange for its equivalent in real currency. These credits can then be used as a payment method in the eCommerce shop or PoS. Top-up values can be of different amounts.

 Example

A $50 top-up can be bought for $50, and adds that same amount of credits to the eWallet.

To create a top-up product, go to Sales app ‣ Products ‣ Products and Create a new product. On the product template, configure the options as follows:

  • Product Name: enter a name for the top-up product (for example, $50 Top-Up)
  • Can be Sold: enabled
  • Product Type: select Service
  • Invoicing Policy: select Prepaid/Fixed Price
  • Create on Order: select Nothing
  • Sales Price: enter the amount of the top-up

 Note

In order to have eWallet top-ups of different amounts, create multiple top-up products and modify the Sales Price accordingly.

Once the top-up is created, go to Sales app ‣ Products ‣ Gift cards & eWallet to Create an eWallet program. The following configuration options are available:

  • Program Name: enter a name for the eWallet program
  • Program Type: select eWallet
  • eWallet Products: select the eWallet top-up created earlier. Repeat the process if you created top-ups of different amounts.
  • Email template: select the email template used for the email sent to the customer. To create a new template, click on the field, select Search More, and then click Create.
  • Currency: select the currency to use for the eWallet program
  • Company: select the company for which the program is valid and available
  • Available On: select the applications on which the program is valid and available
  • Website: select the website on which the program is valid and available. Leave this field empty to include all websites.
  • Point of Sale: select the PoS in which the program is valid and available. Leave this field empty to include all PoS.

Once the program is configured, click the Generate eWallet button in the upper-left corner to generate eWallets. eWallets can be generated based on Customers and/or Customer Tags. The quantity is automatically adapted according to the Customers and Customer Tags selected. Then, set the eWallet value. Finally, set the Valid Until period if applicable.

Generated eWallets can be accessed through the eWallets smart button in the upper-right corner. From there, Send or Share the eWallets via email or a URL link.

Click on an eWallet to change the Expiration Date, Partner, or Balance. The Code of an eWallet cannot be changed, deleted, or duplicated.

Gift cards

Gift cards can be purchased by customers, and in turn used as a payment method upon checkout at an eCommerce shop or PoS.

Before creating a new gift card program, it is necessary to first create gift cards as products. To do so, go to Sales app ‣ Products ‣ Products and Create a product. On the product template, configure the options as follows:

  • Product Name: enter a name for the gift card product
  • Can be Sold: enabled
  • Product Type: select Service
  • Invoicing Policy: select Prepaid/Fixed Price
  • Create on Order: select Nothing
  • Sales Price: enter the amount of the gift card

 Note

In order to have gift cards of different amounts, create multiple gift card products and modify the Sales Price accordingly.

Once the gift card product is created, go to Sales app ‣ Products ‣ Gift cards & eWallet to Create a gift card program. The following configuration options are available:

  • Program Name: enter a name for the gift card program
  • Program Type: select Gift Card
  • Gift Card Products: select the gift card product created earlier. Repeat the process if you created gift card products of different amounts.
  • Email template: select the default Gift Card: Gift Card Information template, or create a new template by clicking on the field, selecting Search More, and then clicking Create.
  • Print Report: select Gift Card
  • Currency: select the currency to use for the gift card program
  • Company: select the company for which the program is valid and available
  • Available On: select the applications on which the program is valid and available
  • Website: select the website on which the program is valid and available. Leave this field empty to include all websites.
  • Point of Sale: select the PoS in which the program is valid and available. Leave this field empty to include all PoS.

Once the program is configured, click the Generate Gift Cards button in the upper-left corner to generate gift cards. Gift cards can be generated either for Anonymous Customers or Selected Customers. Set the Quantity to generate for Anonymous Customers, or select the Customers and/or Customer Tags for Selected Customers. Then, set the Gift Card value. Finally, set the Valid Until period if applicable.

Generated gift cards can be accessed through the Gift Cards smart button in the upper-right corner. From there, Send or Share the gift cards via email or a URL link.

Click on a gift card to change the Expiration Date, Partner, or Balance. The Code of a gift card cannot be changed, deleted, or duplicated.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Discount and loyalty programs

The Odoo SaleseCommerce, and Point of Sale applications allow users to create discount and loyalty programs that customers can use for online and in-store shopping. These programs offer more varied, public, and time-sensitive pricing options than pricelists.

Configure the settings

To begin using discount and loyalty programs, navigate to Sales ‣ Configuration ‣ Settings. Under the Pricing heading, activate the Discounts, Loyalty & Gift Card setting by checking the box next to the feature. Finally, click Save to save the changes.

Configure discount and loyalty programs

To create discount and loyalty programs, go to Sales ‣ Products ‣ Discount & Loyalty.

If no discount or loyalty programs have been created yet, Odoo provides a choice of templates to help create the first program. Choose one of the template cards, or click New to create a new program from scratch.

Or, if there are already existing programs, select an existing program to edit it.

 Note

Templates only appear when no programs have been created, and they disappear once the first program is created.

Creating or editing a program opens the program form.

The program form contains the following fields:

  • Program Name: Enter the name of the program in this field. The program name is not visible to the customer.
  • Program Type: Select the desired program type from the drop-down menu.
  • Currency: Select the currency used for the program.
  • Pricelist: If desired, select a pricelist from the drop-down menu to have this loyalty program applied to a specific pricelist (and customers attached to the pricelist). More than one pricelist can be selected in this field. When a single loyalty program is linked to several pricelists, it makes it viable for different customer segments to have different pricelists, but the same loyalty programs. If this field is left blank, the program applies to everyone, regardless of pricelist.
  • Points Unit: Enter the name of the points used for the Loyalty Cards program (e.g. Loyalty Points). The points unit name is visible to the customer. This field is only available when the Program Type is set to Loyalty Cards.
  • Start Date: Select the date on which the program becomes valid. Leave this field blank if the program should always be valid and not expire.
  • End Date: Select the date on which the program stops being valid. Leave this field blank if the program should always be valid and not expire.
  • Limit Usage: If desired, tick this checkbox, and enter a number of usages to limit the number of times the program can be used during the validity period.
  • Company: If working in a multi-company database, choose the one company for which the program is available. If left blank, the program is available to all companies in the database.
  • Available On: Select the apps on which the program is available.
  • Website: Select a website on which the program is available. Leave this field blank to make it available on all websites.
  • Point of Sale: Select the point(s) of sale at which the program is available. Leave this field blank to make it available at all PoS.

 Note

The options available on the program form vary depending on the Program Type selected.

All of the existing cards, codes, coupons, etc. that have been generated for the program are accessible through the smart button located at the top of the form.

 Note

In Odoo 17 (and later), when a loyalty card or coupon is associated with a contact in the database, a Loyalty Cards smart button conditionally appears on the contact form.

This smart button only appears if a loyalty card or coupon is associated with the contact.

Program types

The different Program Types available on the program form are:

  • Coupons: Generate and share single-use coupon codes that grant immediate access to rewards.
  • Loyalty Cards: When making purchases, the customer accumulates points to exchange for rewards on current and/or future orders.
  • Promotions: Set conditional rules for ordering products, which, when fulfilled, grant access to rewards for the customer.
  • Discount Code: Set codes which, when entered upon checkout, grant discounts to the customer.
  • Buy X Get Y: for every (X) item bought, the customer is granted 1 credit. After accumulating a specified amount of credits, the customer can trade them in to receive (Y) item.
  • Next Order Coupons: Generate and share single-use coupon codes that grant access to rewards on the customer’s next order.

Conditional rules

Next, configure the Conditional rules that determine when the program applies to a customer’s order.

In the Rules & Rewards tab, click Add next to Conditional rules to add conditions to the program. This reveals a Create Conditional rules pop-up window.

 Note

The options for Conditional rules vary depending on the selected Program Type.

The following options are available for configuring conditional rules:

  • Discount Code: Enter a custom code to be used for the Discount Code program, or use the default one generated by Odoo. This field is only available when the Program Type is set to Discount Code.
  • Minimum Quantity: Enter the minimum number of products that must be purchased in order to access the reward. Set the minimum quantity to at least 1 to ensure that the customer must make a purchase in order to access the reward.
  • Minimum Purchase: Enter the minimum amount (in currency), with tax Included or tax Excluded, that must be spent in order to access the reward. If both a minimum quantity and minimum purchase amount are entered, then the customer’s order must meet both conditions.
  • Products: Select the specific product(s) for which the program applies. Leave this field blank to apply it to all products.
  • Categories: Select the category of products for which the program applies. Choose All to apply it to all product categories.
  • Product Tag: Select a tag to apply the program to products with that specific tag.
  • Grant: Enter the number of points the customer earns per order, per currency spent, or per unit paid (for the Loyalty Cards and Buy X Get Y programs).

Click Save & Close to save the rule and close the pop-up window, or click Save & New to save the rule and immediately create a new one.

Rewards

In the Rules & Rewards tab of the program form, click Add next to Rewards to add rewards to the program. This reveals a Create Rewards pop-up window.

 Note

The options for Rewards vary depending on the selected Program Type.

The following options are available for configuring rewards:

  • Reward Type: Select the reward type among Free Product, Discount, and Free Shipping. The other options for reward configuration depend on the Reward Type selected.
    • Free Product:
      • Quantity Rewarded: Select the number of free products rewarded to the customer.
      • Product: Select the product given for free as a reward. Only one product can be selected.
      • Product Tag: Select a tag to further specify the free product eligible for the reward.
    • Discount:
      • Discount: Enter the discounted amount in either percentage, currency per point, or currency per order. Then, select whether the discount applies to the entire Order, only the Cheapest Product on the order, or only Specific Products.
      • Max Discount: Enter the maximum amount (in currency) that this reward may grant as a discount. Leave this field at 0 for no limit.
    • Free Shipping:
      • Max Discount: Enter the maximum amount (in currency) that this reward may grant as a discount. Leave this field at 0 for no limit.
  • In exchange of: Enter the number of points required to exchange for the reward (for the Loyalty Cards and Buy X Get Y programs).
  • Description on order: Enter the description of the reward, which is displayed to the customer upon checkout.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Amazon Connector features

The Amazon Connector synchronizes orders between Amazon and Odoo, which considerably reduces the amount of time spent manually entering Amazon orders (from the Amazon Seller account) into Odoo. It also allows users to accurately keep track of Amazon sales in Odoo.

Supported features

The Amazon Connector is able to:

  • Synchronize (Amazon to Odoo) all confirmed orders (both FBA and FBM), and their order items, which include:
    • product name, description, and quantity
    • shipping costs for the product
    • gift wrapping charges
  • Create any missing partner related to an order in Odoo (contact types supported: contact and delivery address).
  • Notify Amazon of confirmed shipment in Odoo (FBM) to get paid.
  • Synchronize (Odoo to Amazon) all available quantities of your products (FBM).
  • Support multiple seller accounts.
  • Support multiple marketplaces per seller account.

The following table lists capabilities provided by Odoo when using the Amazon Connector:

Fulfilled By Amazon (FBA)

Fulfilled By Merchant (FBM)

Orders

Synchronize shipped and cancelled orders.

Synchronize unshipped and cancelled orders.

Shipping

Shipping cost is computed by Amazon, and included in the synchronized order.

Shipping cost is computed by Amazon and included in the synchronized orders.

Shipping done by Amazon.

A delivery order is automatically created in Odoo for each new order. Once it has been processed in Odoo, the status is then synchronized in Amazon.

Gift Wrapping

Handled by Amazon.

Cost is computed by Amazon, and included in the synchronized order. Gift message is added on a line of the order and on the delivery order. Then it is up to the user.

Stock Management

Managed by Amazon, and synchronized with a virtual location to follow it in Odoo.

Managed in Odoo Inventory app, and synchronized with Amazon.

Delivery Notifications

Handled by Amazon.

Send by Amazon, based on delivery status synchronized from Odoo.

 Note

The Amazon Connector is designed to synchronize the data of sales orders. Other actions, such as downloading monthly fees reports, handling disputes, or issuing refunds, must be managed from the Amazon Seller Central, as usual.

 Warning

As of February 19, 2024, in North American marketplaces, FBA orders created with the Amazon Connector, do not get the customer’s name passed onto the sales/delivery order in Odoo. This is due to the fact that Amazon now calculates, and remits, sales tax on behalf of sellers. In other words, personally identifiable customer information is not transmitted to the seller any longer, after a FBA order.

Supported marketplaces

If a marketplace is not listed in your Amazon marketplaces, it’s possible to add a new marketplace.

North America region

Canada

Amazon.ca

Mexico

Amazon.com.mx

US

Amazon.com

Europe region

Germany

Amazon.de

Spain

Amazon.es

France

Amazon.fr

UK

Amazon.co.uk

Italy

Amazon.it

Netherlands

Amazon.nl

 See also

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Amazon Connector configuration

Odoo allows users to register an Amazon seller account in the database, but the user must have a paid Amazon Seller account prior to completing the configuration.

Set up a paid Seller account on Amazon by first logging into the Amazon platform, and navigating to Account & Lists ‣ Start a Selling Account from the drop-down menu located in the header section.

Then on the Sell with Amazon page, follow the sign-up process and finally proceed to follow the instructions below to register and link that Amazon Seller account in Odoo.

 See also

Sell with Amazon

Connect Amazon Seller account to Odoo

To connect an Amazon Seller account in Odoo, navigate to Sales app ‣ Configuration ‣ Settings ‣ Connectors section, activate the Amazon Sync feature, and click Save.

Then, return to Sales app ‣ Configuration ‣ Settings ‣ Connectors section, and click on the Amazon Accounts link under the Amazon Sync setting.

Doing so reveals a separate Amazon Accounts page. From here, click New to create and link a new Amazon account.

On the blank Amazon Account form page, start by choosing a name for the account (e.g. American Marketplace). Then, in the Credentials tab, select the marketplace on which the seller account was initially created from the Home Marketplace drop-down menu.

After saving, the field in the Credentials tab is replaced by a Link with Amazon button.

Clicking that button redirects to either the Amazon login page, or directly to the required consent page, if the user is already logged in to Amazon.

On the login page, log in to the desired Amazon seller account.

On the consent page, confirm that Amazon is allowed to give Odoo access to the account and related data.

Upon confirmation, Amazon returns the user to Odoo, and the account has been registered.

With the Amazon account successfully registered, the marketplaces available to this specific account are synchronized with Odoo and listed under the Marketplaces tab.

If desired, remove items from the list of synchronized marketplaces to disable synchronization.

Amazon orders in Odoo

When an Amazon order is synchronized, up to three line items are created on the sales order in Odoo. Each one represents a product sold on Amazon: one for the product that was sold on Amazon Marketplace, one for the shipping charges (if any), and one for the gift wrapping charges (if any).

The selection of a database product for a sales order item is done by matching its Internal Reference (a customizable product reference idenifier in Odoo, like FURN001) with the Amazon SKU for marketplace items, the Amazon Shipping Code for delivery charges, and the Amazon Gift Wrapping code for gift wrapping charges.

For marketplace products, pairings are saved as Amazon Offers, which are listed under the Offers smart button on the account form.

Offers are automatically created when the pairing is established, and they’re used for subsequent orders to lookup SKUs. If no offer with a matching SKU is found, the internal reference is used instead.

 Tip

It’s possible to force the pairing of a marketplace item with a specific product, by changing either the product or the SKU of an offer to ensure they match. The offer can be manually created if it was not automatically done yet.

This is useful if the internal reference is not used as the SKU, or if the product sells under different conditions.

If no database product with a matching internal reference is found for a given Amazon SKU or gift wrapping code, then a default database product, Amazon Sale, is used. The same is done with the default product Amazon Shipping if no database product is found for a given Amazon shipping code.

 Note

To modify default products, activate the developer mode, and navigate to Sales app ‣ Configuration ‣ Settings ‣ Connectors ‣ Amazon Sync ‣ Default Products.

Product tax configuration

To allow for tax reporting of Amazon sales with Odoo, the taxes applied to the sales order items are those set on the product, or determined by the fiscal position.

Make sure to have the correct taxes set on your products in Odoo, or have it done by a fiscal position, to avoid discrepancies in the subtotals between Amazon Seller Central and Odoo.

 Note

As Amazon does not necessarily apply the same taxes as those configured in Odoo, it may happen that order totals differ by a few cents between Odoo and Amazon Seller Central. Those differences can be resolved with a write-off when reconciling the payments in Odoo.

Add a new marketplace

All marketplaces are supported by the Amazon Connector. To add a new marketplace, proceed as follows:

  1. Activate the developer mode.
  2. Go to Sales app ‣ Configuration ‣ Settings ‣ Connectors ‣ Amazon Sync ‣ Amazon Marketplaces.
  3. Click New to create a new marketplace record.
  4. Enter the Marketplace ID in the API Idenifier field, and select the Amazon Region for your marketplace as described in the Amazon Documentation for marketplace IDs and regions, and the Seller Central URL as described in the Amazon Documentation for seller central URLs.
  5. Set the Name of the record to Amazon.<country code> to easily retrieve it (e.g. Amazon.se). The API Identifier, the Region and the Seller Central URL fields should respectively hold the Marketplace ID, the selected Amazon region, and the Seller Central URL values from the Amazon Documentation.
  6. Once the marketplace is saved, update the Amazon Account configuration by going to Sales app ‣ Configuration ‣ Settings ‣ Connectors ‣ Amazon Sync ‣ Amazon Accounts.
  7. Select the account on which to use the new marketplace, go to the Marketplaces tab, and click on Update available marketplaces. An animation should confirm the success of the operation. Newly added marketplaces are automatically added to the list of synchronized marketplaces. If the new marketplace is not added to the list, it means that it is either incompatible or unavailable for the seller account.

 See also

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Amazon order management

Order synchronization

Orders are automatically fetched from Amazon, and synchronized in Odoo, at regular intervals.

The synchronization is based on the Amazon status: only orders whose status has changed since the last synchronization are fetched from Amazon. This includes changes on either end (Amazon or Odoo).

For FBA (Fulfilled by Amazon), only Shipped and Cancelled orders are fetched.

For FBM (Fulfilled by Merchant), the same is done for Unshipped and Cancelled orders. For each synchronized order, a sales order and customer are created in Odoo (if the customer is not already registered in the database).

 Important

The stock synchronization does not currently support selling the same product as FBM and FBA.

At times, when stock is sent for all products, it triggers a stock problem with Amazon, where Amazon incorrectly thinks the FBM product has some quantity in FBM.

As a result, Amazon then sells it as FBM, instead of taking from their own warehouse. Odoo developers are currently working on resolving this issue to avoid future discrepancies.

 Note

When an order is cancelled in Amazon, and was already synchronized in Odoo, the corresponding sales order is automatically cancelled in Odoo.

Force synchronization

In order to force the synchronization of an order, whose status has not changed since the previous synchronization, start by activating the developer mode. This includes changes on either end (Amazon or Odoo).

Then, navigate to the Amazon account in Odoo (Sales app ‣ Configuration ‣ Settings ‣ Connectors ‣ Amazon Sync ‣ Amazon Accounts), and modify the date under Orders Follow-up ‣ Last Order Sync.

Be sure to pick a date that occurs prior to the last status change of the desired order to synchronize and save. This will ensure synchronization occurs correctly.

 Tip

To immediately synchronize the orders of an Amazon account, switch to developer mode, head to the Amazon account in Odoo, and click Sync Orders. The same can be done with pickings by clicking Sync Pickings.

Manage deliveries in FBM

Whenever an FBM (Fulfilled by Merchant) order is synchronized in Odoo, a picking is instantly created in the Inventory app, along with a sales order and customer record. Then, decide to either ship all the ordered products to the customer at once, or ship products partially using backorders.

When a picking related to the order is confirmed, a notification is then sent to Amazon, who, in turn, notifies the customer that the order (or a part of it) is on its way.

 Important

Amazon requires users to provide a tracking reference with each delivery. This is needed to assign a carrier.

If the carrier doesn’t automatically provide a tracking reference, one must be set manually. This rule applies to all Amazon marketplaces.

 Tip

If the chosen carrier isn’t supported by Odoo, a carrier with the same name can still be created (e.g. create a carrier named easyship). The name used is not case sensitive, but be mindful to avoid typos. If there are typos, Amazon will not recognize them. Next, create a delivery carrier named Self Delivery to inform Amazon that the user will make the deliveries. Even with this route, a tracking reference still must be entered. Remember, the customer is notified by email about the delivery, and the carrier, along with the tracking reference, are displayed in the email to the customer.

 See also

Third-party shipping carriers

Manage errors when synchronizing deliveries

Sometimes, Amazon can fail to correctly process all the information sent by Odoo. In this case, Odoo sends an email listing all the shipments that failed and the errors Amazon sent with them. In addition, these shipments are flagged with a Synchronization with Amazon failed tag.

Usually, the error can be corrected directly in the Amazon backend or in Odoo. If the problem is corrected in Odoo, synchronize the shipment again using the Retry Amazon Sync button.

 Note

It might happen that Odoo receives a notification from Amazon saying that some delivery information was not processed, but without specifying which shipments were affected. In that case, all the shipments in an unknown state will be treated as if they failed to synchronize. Once Odoo receives a notification from Amazon saying that a shipment was processed, its tag will change to Synchronized with Amazon. To speed up this process, on your Amazon account, click on Sync Orders to manually synchronize these orders, or click on Recover Order and enter the relevant Amazon Order Reference.

Follow deliveries in FBA

When an FBA (Fulfilled by Amazon) order is synchronized in Odoo, a stock move is recorded in the Inventory app for each sales order item. That way, it’s saved in the system.

Inventory managers can access these stock moves by navigating to Inventory app ‣ Reporting ‣ Moves History.

For FBA orders, the stock move is automatically created in Odoo by the Amazon connector, thanks to the shipping status of Amazon. When sending new products to Amazon, the user should manually create a picking (delivery order) to transfer these products from their warehouse to the Amazon location.

 Tip

To follow Amazon (FBA) stock in Odoo, make an inventory adjustment after replenishing stock. An automated replenishment from reordering rules can also be triggered on the Amazon location.

The Amazon location is configurable by accessing the Amazon account managed in Odoo. To access Amazon accounts in Odoo navigate to Sales app ‣ Configuration ‣ Settings ‣ Connectors ‣ Amazon Sync ‣ Amazon Accounts.

All accounts of the same company use the same Amazon location, by default. However, it is possible to follow the stock filtered by marketplace.

To do that, first remove the marketplace, where the desired stock to follow separately can be found, from the list of synchronized marketplaces, which can be found by navigating to Sales app ‣ Configuration ‣ Settings ‣ Connectors ‣ Amazon Sync ‣ Amazon Accounts.

Next, create another registration for this account, and remove all marketplaces— except the marketplace this is desired to be isolated from the others.

Lastly, assign another stock location to the second registration of the account.

Invoice and register payments

Issue invoices

Due to Amazon’s policy of not sharing customer email addresses, it is not possible to send invoices directly to Amazon customers from Odoo. However, it is possible to manually upload the generated invoices from Odoo to the Amazon back-end.

Additionally, for B2B clients, it is currently required to manually retrieve VAT numbers from the Amazon back-end before creating an invoice in Odoo.

Register payments

Since customers pay Amazon as an intermediary, creating a dedicated Bank journal (e.g. named Amazon Payments), with a dedicated Bank and Cash intermediary account is recommended.

Additionally, as Amazon makes a single monthly payment, selecting all the invoices linked to a single payment is necessary when registering payments.

To do that, use the appropriate Journal dedicated to Amazon payments, and select Batch Deposit as the Payment Method.

Then, select all the generated payments, and click Actions ‣ Create batch payment ‣ Validate.

 Tip

This same action can be performed with vendor bills from Amazon dedicated to commissions.

When the balance is received in the bank account at the end of the month, and the bank statements are recorded, credit the Amazon intermediary account by the amount received.

Follow Amazon sales in sales reporting

On the Amazon account profile in Odoo, a sales team is set under the Order Follow-up tab.

This gives quick access to important metrics related to sales reporting. By default, the Amazon account’s sales team is shared between all of the company’s accounts.

If desired, the sales team on the account can be changed for another, in order to perform a separate reporting for the sales of this account.

 Tip

It is also possible to perform reporting on a per-marketplace basis.

First, remove the desired marketplace from the list of synchronized marketplaces.

To access the list of synchronized marketplaces in Odoo, navigate to Sales app ‣ Configuration ‣ Settings ‣ Connectors ‣ Amazon Sync ‣ Amazon Accounts.

Then, create another registration for this account, and remove all other marketplaces except the one to isolate.

Lastly, assign another sales team to one of the two registrations of the account.

 See also

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Shopee Connector

The Shopee Connector synchronizes orders between Shopee and Odoo, which considerably reduces the amount of time spent manually entering Shopee orders (from the Shopee Seller account) into Odoo. It also allows users to accurately keep track of Shopee sales in Odoo.

Supported features

The Shopee Connector is able to:

  • Synchronize (Shopee to Odoo) all confirmed orders, and their order items, which include:
    • Product name
    • SKU reference
    • Quantity
  • Synchronize (Odoo to Shopee) all available quantities of your products (FBM).
  • Support multiple seller accounts.
  • Support multiple Shopee marketplaces (shops) per seller account.

 Note

The Shopee Connector is designed to synchronize sales orders data. Other actions, such as downloading weekly/monthly income/fees reports, handling disputes, or issuing refunds, must be managed from the Shopee Seller Central, as usual.

Shopee supported marketplaces

APAC region

Indonesia

Shopee.co.id

Taiwan

Shopee.tw

Vietnam

Shopee.vn

Thailand

Shopee.co.th

Philippines

Shopee.ph

Malaysia

Shopee.com.my

Singapore

Shopee.sg

South America region

Brazil

Shopee.com.br

Chile

Shopee.cl

Colombia

Shopee.com.co

Mexico

Shopee.com.mx

 See also

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Point of Sale

With Odoo Point of Sale, run your shops and restaurants easily. The app works on any device with a web browser, even if you are temporarily offline. Product moves are automatically registered in your stock, you get real-time statistics, and your data is consolidated across all shops.

 See also

Start a session

From the POS dashboard, click New Session, and at the Opening Cash Control screen, click Open Session to start a POS session, or click Continue Selling if the session is already opened.

 Note

Multiple users can be logged into the same session at the same time. However, the session can only be opened once on the same browser.

Sell products

Click on products to add them to the cart. To change the quantity, click Qty and enter the number of products using the keypad. To add a discount or modify the product price, click respectively % Disc or Price and enter the amounts.

Once an order is completed, proceed to checkout by clicking Payment. Select the payment method, enter the received amount, and click Validate. Click New Order to move on to the next customer.

 Tip

  • You can use both , and . on your keyboard as decimal separators.
  • Cash is selected by default if you enter the amount without choosing a payment method.

 Note

The system can only load a limited number of products for effective opening. Click Search more if the desired product is not loaded automatically.

Set customers

Registering your customer is necessary to collect their loyalty points and grant them rewards, automatically apply the attributed pricelist, or generate and print an invoice.

You can create customers from an open POS session by clicking Customer ‣ Create, and filling in the contact information. You can also create customers from the backend by going to Point of Sale ‣ Orders ‣ Customers and clicking New. Then, fill in the information and save.

To set a customer during an order, access the list of customers by clicking Customer on the POS interface. You can also set a customer at the payment screen by clicking Customer.

Customer notes

You can add customer notes about specific products directly from an open POS session. For instance, to provide cleaning and maintenance tips. They can also be used to track a customer’s particular request, such as not wanting the product to be assembled for them.

To do so, select a product and click Customer Note on the pad. Doing so opens a pop-up window in which you can add or modify content for the note.

 Note

Product notes from an imported SO are displayed identically in the cart.

Customer notes appear on customers’ receipts and invoices similarly to how they appear in the cart, under the related product.

Return and refund products

To return and refund a product,

  1. start a session from the POS dashboard;
  2. click Refund and select the corresponding order;
  3. select the product and the quantity to refund using the keypad;
  4. click Refund to go back to the previous screen;
  5. once the order is completed, click Payment to proceed to the refund;
  6. click Validate and New Order to move on to the next customer.

 Note

  • You can filter the orders list by Receipt Number, Date or Customer using the search bar.
  • You can also refund a product by selecting the returned product from an open session, and setting a negative quantity that equals the number of returned products. To do so, click Qty and +/-, followed by the quantity of returned products.

Once the return payment is validated, Odoo generates the required credit note, referencing the original receipt or invoice and partially or fully canceling the document.

Manage the cash register

To add or take out cash from the register, click the menu icon in the upper right corner of your screen and Cash In/Out.

Doing so opens a pop-up window on which you can select Cash In or Cash Out, enter the amount and the reason, and click Confirm.

Close the POS session

To close your session, click the menu icon in the upper right corner of your screen and Close Session.

Doing so opens the Closing Control pop-up screen. From this screen, you can retrieve various information:

  • the number of orders made and the total amount made during the session;
  • the expected amounts grouped by payment method.

Before closing this window, count your cash using the calculator icon. Doing so opens a pop-up window that computes the total amount in the cash drawer depending on the coins and bills counted and added manually. Then, click Confirm or Discard to close the window. The computed amount is set in the Counted column, and the Money Details are specified in the Notes section.

Once you are done controlling the amounts, click Close Session to close and go back to the POS dashboard.

 Note

  • To reach the backend without closing the session, click Backend on the dropdown menu.
  • To abort, click Discard on the pop-up window.
  • Depending on your setup, you might only be allowed to close a session if the expected cash revenue equals the counted cash. To close it anyway, click Ok on the Payments Difference screen.

 Tip

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Configuration

Access the POS settings

To access the general POS settings, go to Point of Sale ‣ Configuration ‣ Settings. Then, open the dropdown menu in the Point of Sale field and select the POS to configure.

 Note

These settings are available to users with the access rights Administration set as Settings.

You can also configure some settings from the dashboard by clicking the vertical ellipsis button (⋮) on a POS card. Doing so opens a popup window, from which you can:

 Note

These settings are available to users with the access rights Point of Sale set as Administrator.

Make products available

To make products available for sale,

  1. Go to Point of Sale ‣ Products ‣ Products.
  2. Select a product to open the product form.
  3. Tick the Point of Sale checkbox at the top of the form.

PoS product categories

Configuration

POS product categories allow users to categorize products and get a more structured and clean POS interface.

To manage PoS categories, go to Point of Sale ‣ Configuration ‣ PoS Product Categories. To add a new category, click Create. Then, name it in the Category Name field.

To associate a category with a parent category, fill in the Parent Category field. A parent category groups one or more child categories.

 Example

Assign PoS product categories

Go to Point of Sale ‣ Products ‣ Products and open a product form. Then, go to the Point of Sale tab and fill in the Category field under the Point of Sale section with one or multiple PoS categories.

Restrict categories

You can limit the categories displayed on your POS interface. To achieve this, go to your POS settings and choose the specific categories to display in the Restrict Categories field within the Product & PoS categories section.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

IoT system connection

To connect the POS with an IoT system:

  1. Make sure both the Point of Sale and Internet of Things (IoT) apps are installed on your database.
  2. Set up the IoT box or Windows virtual IoT.
  3. Connect the peripheral devices to the IoT system:

    Device

    Instructions

    Printer

    Connect a supported receipt printer to a USB port or to the network, and power it on. Refer to Orders printing.

    Cash drawer

    The cash drawer should be connected to the printer with an RJ25 cable.

    Barcode scanner

    The barcode scanner must end barcodes with an ENTER character (keycode 28) in order for the barcode scanner to be compatible. This is most likely the barcode scanner’s default configuration.

    Scale

    Connect the scale and power it on. Refer to Connect a scale.

    Customer display

    Connect a screen to the IoT box to display the PoS order. Refer to Connect a screen.

    Payment terminal

    The connection process depends on the terminal. Refer to the payment terminals documentation.

  4. Connect the IoT system to your Odoo database.
  5. Access the POS settings and select your POS, or click the vertical ellipsis button (⋮) on a POS card and click Edit. Scroll down to the Connected Devices section, enable IoT Box, then select the devices to be used for the POS. Click Save.

 Tip

Click IoT Devices to access the list of Devices for your POS and view their connection status. Click a card to access the device’s form.

 See also

Setup example

 Edit on GitHub

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

ePOS printers

ePOS printers are designed to work seamlessly with Point of Sale systems. Once connected, these devices automatically share information, allowing for direct printing of tickets from the POS system to the ePOS printer.

Configuration

To use an ePos printer in Point of Sale:

  1. Access the POS settings.
  2. Activate the ePos Printer feature.
  3. Fill in the field with your ePos IP address.

 Note

When the printer connects to a network, it automatically prints a ticket with its IP address.

Directly supported ePOS printers

The following ePOS printers are directly compatible with Odoo without needing an IoT system.

  • Epson TM-m30 i/ii/iii (Wi-Fi/Ethernet models only; Recommended)
  • Epson TM-H6000IV-DT (Receipt printer only)
  • Epson TM-T70II-DT
  • Epson TM-T88V-DT
  • Epson TM-L90-i
  • Epson TM-T70-i
  • Epson TM-T82II-i
  • Epson TM-T83II-i
  • Epson TM-U220-i
  • Epson TM-m10
  • Epson TM-P20 (Wi-Fi® model)
  • Epson TM-P60II (Receipt: Wi-Fi® model)
  • Epson TM-P60II (Peeler: Wi-Fi® model)
  • Epson TM-P80 (Wi-Fi® model)

ePOS printers with IoT system integration

The following printers require an IoT system to be compatible with Odoo:

  • Epson TM-T20 family (incompatible ePOS software)
  • Epson TM-T88 family (incompatible ePOS software)
  • Epson TM-U220 family (incompatible ePOS software)

 Important

  • Epson printers using Wi-Fi/Ethernet connections and following the EPOS SDK Javascript protocol are compatible with Odoo without needing an IoT system.
  • Thermal printers using ESC/POS are compatible with an IoT system.
  • Epson printers using only USB connections are compatible with an IoT system.
  • Epson printers that connect via Bluetooth are not compatible.

 See also

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Secure connection (HTTPS)

If Direct Devices is enabled in a Point of Sale settings (for example, if you use an ePos printer), HTTP becomes the default protocol.

Force your Point of Sale to use a secure connection (HTTPS)

Add a new key in the System Parameters to force your Point of Sale to use a secure connection with the HTTPS protocol.

To do so, activate the developer mode, go to Settings ‣ Technical ‣ Parameters ‣ System Parameters, then create a new parameter, add the following values and click on Save.

  • Key: point_of_sale.enforce_https
  • Value: True

 See also

 Edit on GitHub

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Self-signed certificate for ePOS printers

To work with Odoo, some printer models that can be used without an IoT system may require the HTTPS protocol to establish a secure connection between the browser and the printer. However, trying to reach the printer’s IP address using HTTPS leads to a warning page on most web browsers. In that case, you can temporarily force the connection, which allows you to reach the page in HTTPS and use the ePOS printer in Odoo as long as the browser window stays open.

 Warning

The connection is lost after closing the browser window. Therefore, this method should only be used as a workaround or as a pre-requisite for the following instructions.

Generate, export, and import self-signed certificates

For a long-term solution, you must generate a self-signed certificate. Then, export and import it into your browser.

 Important

Generating an SSL certificate should only be done once. If you create another certificate, devices using the previous one will lose HTTPS access.

Windows 10 & Linux OSMac OSAndroid OSiOS

Generate a self-signed certificateExport a self-signed certificateImport a self-signed certificate

Navigate to the ePOS’ IP address (e.g., https://192.168.1.25) and force the connection by clicking Advanced and Proceed to [IP address] (unsafe).

Warning page on Google Chrome, Windows 10

Then, sign in using your printer credentials to access the ePOS printer settings. To sign in, enter epson in the ID field and your printer serial number in the Password field.

Click Certificate List in the Authentication section, and click create to generate a new Self-Signed Certificate. The Common Name should be automatically filled out. If not, fill it in with the printer IP address number. Select the years the certificate will be valid in the Validity Period field, click Create, and Reset or manually restart the printer.

The self-signed certificate is generated. Reload the page and click SSL/TLS in the Security section to ensure Selfsigned Certificate is correctly selected in the Server Certificate section.

 Important

  • If you need to export SSL certificates from an operating system or web browser that has not been mentioned, search for export SSL certificate + the name of your browser or operating system in your preferred search engine.
  • Similarly, to import SSL certificates from an unmentioned OS or browser, search for import SSL certificate root authority + the name of your browser or operating system in your preferred search engine.

Check if the certificate was imported correctly

To confirm your printer’s connection is secure, connect to its IP address using HTTPS. For example, navigate to https://192.168.1.25 in your browser. If the SSL certificate has been applied correctly, you should no longer see a warning page, and the address bar should display a padlock icon, indicating that the connection is secure.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Multi-employee management

Odoo Point of Sale allows you to manage access to a specific POS by enabling the Multi Employees per Session feature. When activated, you can select which users can log into the POS and keep track of the employees involved in each order.

Configuration

Access the POS settings and select your POS, or click the vertical ellipsis button (⋮) on a POS card and click Edit. Then, enable Multi Employees per Session, and add the allowed employees in the Allowed Employees field.

Practical application

Once the feature is activated, cashiers can log in by scanning their badge or selecting their name from the list of allowed employees to open the session.

To switch to another user from an open session, click the employee name at the top-right of the screen and select the employee to swap with from the list.

You can also require your employees to enter a pin code every time they log into a POS to prevent them from logging in as someone else. To define the code, go to the Employees app, open the employee form, and click the HR settings tab. Then, enter a pin code of your choice in the PIN Code field of the Attendance/Point of Sale category.

Log in using badges

For your employees to be able to log in by scanning their badge, they must have a badge ID assigned. To do so, go to the Employees app, open the employee form, and click the HR settings tab. Then, enter the badge ID of your choice in the Badge ID field of the Attendance/Point of Sale category or click Generate.

To switch to another user, lock the session by clicking the lock-shaped icon (🔓) at the top-right of the screen and scan your badge.

Analytics

Once you close and post the POS session, access the comprehensive report to review all session activities, including who initiated the session and who handled specific orders. To access the session’s report, click the vertical ellipsis button (⋮) on the POS card and select Sessions from the View section. Then, select a specific session for more detailed information, and click the Orders button to view a list of all orders placed during that session.

To get an overview of all orders, regardless of the session, click the vertical ellipsis button (⋮) on the POS card and select Orders from the View section.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Receipts and invoices

Receipts

Set up receipts by going to Point of Sale ‣ Configuration ‣ Point of Sale, selecting a POS, and scrolling down to the Bills & Receipts section.

To customize the header and footer, activate Header & Footer and fill in both fields with the information to be printed on the receipts.

To print receipts automatically once the payment is registered, enable the Automatic Receipt Printing setting.

 See also

Reprint a receipt

From the POS interface, click Orders, open the dropdown selection menu next to the search bar, and change the default All active orders filter to Paid. Then, select the corresponding order and click Print Receipt.

 Note

You can filter the list of orders using the search bar. Type in your reference and click Receipt Number, Date, or Customer.

Invoices

Point of Sale allows you to issue and print invoices for registered customers upon payment and retrieve all past invoiced orders.

 Note

An invoice created in a POS creates an entry into the corresponding accounting journal, previously set up.

Configuration

To define what journals will be used for a specific POS, go to the POS’ settings and scroll down to the accounting section. Then, you can determine the accounting journals used by default for orders and invoices in the Default Journals section.

Invoice a customer

Upon processing a payment, click Invoice underneath the customer’s name to issue an invoice for that order.

Select the payment method and click Validate. The invoice is automatically issued and ready to be downloaded and/or printed.

 Note

To be able to issue an invoice, a customer must be selected.

Retrieve invoices

To retrieve invoices from the POS dashboard,

  1. access all orders made through your POS by going to Point of Sale ‣ Orders ‣ Orders;
  2. to access an order’s invoice, open the order form by selecting the order, then click Invoice.

 Note

  • Invoiced orders can be identified by the Invoiced status in the Status column.
  • You can filter the list of orders to invoiced orders by clicking Filters and Invoiced.

QR codes to generate invoices

Customers can also request an invoice by scanning the QR code printed on their receipt. Upon scanning, they must fill in a form with their billing information and click Get my invoice. On the one hand, doing so generates an invoice available for download. On the other hand, the order status goes from Paid or Posted to Invoiced in the Odoo backend.

To use this feature, you have to enable QR codes on receipts by going to Point of Sale ‣ Configuration ‣ Settings. Then, select the POS in the Point of Sale field, scroll down to the Bills & Receipts section and enable Use QR code on ticket.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Preparation display

The preparation display feature allows you to handle POS orders requiring preparation. Concretely,

  • For retail: The preparation team is notified after a payment is completed at the POS to gather the purchased items for customer pickup.
  • For restaurants: POS orders inform the kitchen of the meals to be prepared.

Configuration

To enable the preparation display feature,

  1. Go to the POS settings.
  2. Scroll down to the Preparation section.
  3. Check the Preparation Display option.

To create and set up a preparation display,

  1. Go to Point of Sale ‣ Orders ‣ Preparation Display
  2. Click New.
  3. Give the display a descriptive Name (e.g., Main Kitchen, Bar)
  4. Set it up:
    1. Point of Sale: Select the POS that sends orders to this display.
    2. Product categories: Specify the POS Product categories sent to this display.
    3. Stages: Define the steps required for the orders to be ready.
      • Click Add a line to add a stage.
      • Assign specific colors to each stage for clarity (optional).
      • Define an Alert timer (min) for each stage to indicate the expected processing time.

 Note

To edit a pre-existing preparation display, click the vertical ellipsis button () on the display’s card and select Configure.

Practical application

Go to Point of Sale ‣ Orders ‣ Preparation Display to get an overview of all your displays.

The display card shows:

  • The configured stages.
  • The number of orders currently In progress.
  • The Average time employees usually take to complete an order.

 Tip

Click the Kitchen Display app icon on your Odoo Dashboard for quicker access.

Using the preparation display

To access the preparation display, click Preparation Screen. This interface, designed for employees, shows:

  • Stages and order count: Displays the progress of orders across stages such as To prepare, Ready, and Completed, along with the number of orders in each stage.
  • Ordered products by category: Lists all items in progress, grouped by POS categories (e.g., Drinks, Food).
  • Order cards: Summarizes individual orders, including:
    • Associated tables and order numbers.
    • Status, such as Ready, highlighted with the defined colors.
    • Waiting time, with visual indicators.

 Note

The duration indicator turns red if the elapsed time exceeds the predefined alert time.

To update order progress:

  • Click items on the order card to cross them off individually.
  • Click the order card itself to mark all items at once.
  • The card automatically moves to the next stage once every item is crossed off.
  • Click  Recall to move an order back to the previous stage if you mistakenly sent it to the next stage.

Customer display

In parallel, click Order Status Screen to open the customer interface. This interface, designed for customers, provides an overview of orders that are:

  • Ready for pickup.
  • Almost there, indicating they are taken care of.

 Note

The order number can be found at the top of the customer’s receipt.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Self-ordering

The self-ordering feature allows customers to browse your menu or product catalog, place an order, and complete payment using their mobile device or a self-ordering kiosk.

Configuration

Feature activation

To enable this feature and select a self-ordering type, access the POS settings, scroll down to the Mobile self-order & Kiosk section, and select a Self Ordering type under the QR menu & Kiosk activation section.

You can choose from:

QR menuKiosk

Select QR menu or QR menu + Ordering to give customers access to your menu or product catalog by scanning a QR code on their personal device. The latter also allows them to place an order and make a payment.

  • Click  Print QR Codes to download a .pdf document with the generated QR codes.
  • Click  Download QR Codes to download a compressed file with the generated QR codes.

 Note

In restaurants, printing or downloading QR codes generates as many QR codes as the number of available tables. In shops, it generates only one generic QR code.

 Tip

To customize QR codes,

  1. Scan the relevant QR code to acquire its URL.
  2. Use a QR code generator (e.g., QR code monkey or QR code generator) to create a custom QR code.

Once a self-ordering type is selected, the additional settings update to fit the selected type’s needs.

Additional settings

Home buttonsService location and payment optionsLanguageSplash screensEat in/ Take out

The Home buttons are displayed on the kiosk or mobile device interfaces when customers are self-ordering. To set them up, click  Home buttons. Then,

  1. Click New to add a new button.
  2. Set the Label.
  3. Enter a URL preceded by https:// to redirect customers to a specific URL when clicking the button. For instance, you might want to redirect them to a campaign video for a new product or to a contest page.
  4. In the same URL column, enter /products to create a button that redirects customers to the product catalog.
  5. Select the Points of Sale to ensure this button only appears on the selected POS’ self-ordering interface.
  6. Select a predefined Style from the dropdown menu.

 Note

  • Leaving the Points of Sale field empty shares the button with all POS.
  • The Preview column automatically updates, giving you a glimpse of the button’s appearance based on its configuration.

Preview

Review the interface before making the self-ordering feature available to customers to ensure all settings are applied correctly. Click  Preview Web interface under the Self Ordering field to ensure all additional settings are correctly applied.

Usage guidelines

QR menuKiosk

On the POS user’s end, access the self-ordering interface by

  • Scanning a downloaded or printed QR code; or
  • Clicking the  (vertical ellipsis) icon on the POS card, then Mobile Menu.

On the customers’ end,

  1. Access the self-ordering interface by scanning a downloaded or printed QR code.
  2. Click the home button to reach the menu or catalog.
  3. Select the items and click Order to place an order.
  4. Follow the instructions on-screen to assign a table and pay for the order.

 Important

  • A POS session must be open for customers to place an order.
  • Once an order is placed, it is automatically sent to the preparation screen and added to the list of POS orders.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Product combos

The Product Combos feature allows users to define and manage combination options for a single product.

In the context of a restaurant, the feature enables users to create multiple-choice menus. For example, a user can define a main dish and specify various options for sides, drinks, or desserts that customers can combine with the main dish.

In retail, this feature allows you to create a product set with multiple products to choose from and combine.

Configuration

First, you need to create combination choices. To do so:

  1. Go to Point of Sale ‣ Products ‣ Product Combos and click New.
  2. Name your combo and add the products you want customers to choose from by clicking Add a line. You can also include an extra price for each option in the Extra Price column.

 Note

As a reference, the selected product’s original price is displayed in the Original Price column.

Second, you need to create a specific product to gather combo choices. To do this:

  1. Go to Point of Sale ‣ Products ‣ Products and click New.
  2. Set the Product Type to Combo and fill in the General Information tab.
     Note
    The sales price of the combo product is fixed and does not vary based on the individual prices of included items or the quantity of items in the combo. The combo product price is only affected by the extra price optionally defined at the combo choice creation or if a variant of one of the items has a specified extra price.
  3. Go to the Combo Choices tab, click Add a line, and select the combinations to add. You can also create a new combination at this step by clicking New on the popup window.

Once you have created and added the combo choices into a product, you can sell combos in your retail store or restaurant.

Practical application

Open a POS session and select the combo product. Choose the options and click Add to order. As a reminder, the extra price appears under the related choices.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Sales orders

When working in retail, you might need to order products directly from your Point of sale. Fortunately, Odoo Point of Sale is fully integrated with Odoo Sales, meaning that you can create a sales order and pay for it directly from your point of sale.

Select a sales order

From the Point of Sale application, open a new session. Then, click on Quotations/Orders to get the complete list of quotations and sales orders created on the sales application.

 Note

To ease finding the right sales order, you can filter that list on the customer or on the order reference. You can also set the customer before clicking on Quotations/Orders to reduce the list to one particular customer.

Apply a down payment or settle the order

From the list of sales order, select one to make a payment.

You can either:

  • Settle the order partially: after clicking on Apply a down payment, enter the percentage of down payment you want the customer to pay. Then, click on ok and proceed with the order.
  • Settle the order completely: click on Settle the order to pay for the total of the sales order.

 Note

Once you settle a sales order, the applied down payment is automatically deducted from the total amount.

 See also

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Barcodes

Using a barcode scanner to process point-of-sale orders improves your efficiency in providing quicker customer service. Barcode scanners can be used both to scan products or to log employees into a POS session.

Configuration

To use a barcode scanner, you must enable the feature in the Inventory app. Go to Inventory ‣ Configuration ‣ Settings, in the Barcode section, tick Barcode Scanner and save.

 See also

Once enabled in Inventory, you can use the barcode feature in Point of Sale with products that have a barcode number assigned.

Assign barcodes

To your products

To use this feature in POS, your products must have barcodes assigned. To do so, go to Point of Sale ‣ Products ‣ Products and open a product form. Add a barcode number in the Barcode field in the General Information tab.

To your employees

To add an identification number to an employee, go to the Employees app and open an employee form. Choose an identification number for your employee and fill in the PIN Code field in the HR Settings tab.

Use barcodes

Scan products

Scan a product’s barcode using a barcode scanner. Doing so adds it directly to the cart. To change the quantity, scan a product as many times as needed, or click Qty and enter the number of products using the keypad.

You can also enter the barcode number manually in the search bar to look for the product. Then, click it to add it to the cart.

Log employees

You can also use a barcode scanner to log your employees. To do so, restrict access to the POS and use barcodes to log your employees in your POS.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Serial numbers and lots

Working with serial numbers and lots allows tracking your products’ movements. When products are tracked, the system identifies their location based on their last movement.

To enable traceability, go to Point of Sale ‣ Products ‣ Products. Then, select a product and check the Tracking By Unique Serial Number or the Tracking By Lots box in the Inventory tab.

Serial numbers and lots importation

You can import serial numbers in Point of Sale. To do so, select a sales order or a quotation containing tracked products. Then, agree to load the Lots or Serial Numbers linked to the SO.

The imported tracking numbers appear below the tracked products. You can modify them by clicking on the list-view button next to the products.

 See also

Serial numbers and lots creation

If a tracked product is available in your POS, adding the product to the cart opens a pop-up window where you can type or scan the product’s serial or lot numbers. To add more than one of the same tracked products, click on enter to validate and start a new line.

 Note

  • Changing a tracked product’s quantity using the numpad turns the list-view button red. Click on it to add the missing lot and serial numbers.
  • Lot & Serial Number(s) are required on tracked products but not mandatory. Meaning that not attributing some or any does not prevent from completing the sale.

 See also

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Ship later

The Ship Later feature allows you to sell products and schedule delivery at a later date. It is useful, for example, when a product is out of stock or so voluminous that it requires to be shipped, or if, for any reason, the customer needs their order to be shipped later, etc.

Configuration

Go to the POS settings, scroll down to the Inventory section, and enable Allow Ship Later.

Once activated, you can:

  • Choose the location from where the products are shipped by selecting a Warehouse.
  • Define a Specific route, or leave this field empty to use the default route.
  • Define the Shipping Policy; select As soon as possible if the products can be delivered separately or When all products are ready to ship all the products at once.

 See also

Practical application

  1. Open a session and make a sale.
  2. On the payment screen, set a customer and select Ship Later.
  3. On the popup window, set a shipping date and click Confirm to proceed to payment.

The system instantly creates a delivery order from the warehouse to the shipping address.

 Note

The selected customer must have referenced an address in the system for products to be shipped.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Customer display

The customer display feature provides customers with real-time checkout updates on a secondary display.

Configuration

Depending on your POS setup, the feature can be displayed locally on a secondary screenremotely on another device, or another monitor connected to an IoT Box.

To activate the feature, go to the POS settings, scroll down to the Connected Devices section, and tick the Customer Display checkbox.

Local

Connect a second screen to your POS and open a POS session. Then, click Customer Screen to open a new window to drag and drop onto the second screen.

Remote

Access your database from another device (any computer, tablet, or smartphone), go to the POS application, click the vertical ellipsis button (⋮) on a POS card, and then Customer Display to open the display remotely.

 Note

The two devices are not required to share the same network.

IoT system

Connect an IoT box to your database and the second screen to the IoT box. Then, go to Point of Sale ‣ Configuration ‣ Settings, scroll down to the Connected Devices section, tick the IoT Box checkbox, and select the second monitor in the Customer Display field.

 Note

Both devices need to be connected to the same local network.

 See also

IoT system connection

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Restaurant features

Managing a restaurant or a bar comes with specific needs. The Point of Sale application provides various features that allow performing all the required tasks in such businesses.

Once the POS is set to be used in a restaurant or a bar, you can:

Configuration

To enable the restaurant and bar-specific features, go to Point of Sale ‣ Configuration ‣ Settings, select the POS, and activate Is a Bar/Restaurant.

These features are displayed in the Restaurant & Bar section.

Take orders

Click a table to access the POS interface and start taking your customer’s order. The system automatically associates the orders and the table, allowing you to add more items later and generate a bill specifically for that table’s orders.

Once you have taken an order, click Change table to return to the floor plan view.

 Note

As soon as you click a table, the number of guests is automatically set to one. If you mistakenly select a table, click Release table to free it or transfer the customer to another table.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Floors and tables

The Floor plan view enables you to manage restaurant floors and table arrangements and monitor table status in real time — including occupancy, reservations, and kitchen orders.

  • Table 101: The table is available now but booked at 15:00.
  • Table 102: An order has been placed and sent to the kitchen.
  • Table 103: The table was booked at 12:00, but customers are late.
  • Table 104: Two items are waiting to be sent to the kitchen.
  • Table 105: The table is available.

Configuration

From the POS backend

To create floors and tables from the backend, go to Point of Sale ‣ Configuration ‣ Floor Plans, and click New to create a floor. Optionally, activate additional settings by clicking the  (adjust settings) icon. Then,

  1. Enter a Floor Name.
  2. Select the related Point of Sales.
  3. Hover over the placeholder image and click the  (pencil) icon to add a background image (e.g., your restaurant layout).
  4. Click Add a line to create a table and set it up:
    • Enter a Table Number.
    • Fill in the number of Seats.
    • Select a Square or Round Shape.
    • Assign an Appointment resource to make the table bookable.
    • Adjust the Height, Width, and Color.
  5. Click the  (delete) icon to delete a table.

 Tip

Create floors on the spot: access your POS settings, type your floor name in the Floors field of the Floors & Tables Map section, and press enter or click Create and edit… to set it up.

From the POS front end

To create floors and tables from the front end, open a POS session, click the  (hamburger menu) icon in the upper right corner, then Edit Plan.

  1. Add a floor by clicking the  (plus) icon, then enter a name in the modal window.
  2. Click the  (paintbrush) icon to change the background color or image.
  3. Click  Table to add a new table.

To adjust a specific table, select it and click:

  • The  (user) icon to change the number of seats.
  • The  (square) or  (round) icon to switch the shape from round to square, and vice versa.
  • The  (paintbrush) icon to change the table’s color.
  • The  (rename) icon to change the table number.
  • The  (clone) icon to duplicate the table.
  • The  (bin) icon to remove the table.

After making all the necessary modifications, click Save or the  (floppy disk) icon to save.

 Warning

Removing a table or a floor cannot be undone.

Table transfer

Select a table to move customers to another table, then click Actions and  Transfer/Merge.

In the floor plan view, choose the target table:

  • Select a free table to transfer customers and their orders.
  • Select an occupied table to merge customers and their orders.

 See also

Restaurant features

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Orders printing

Integrating printers in a restaurant or bar’s workflow can enhance communication and collaboration between the front-of-house and back-of-house teams, leading to a more streamlined and efficient service.

Configuration

Enable and create printers

To enable sending orders to a kitchen or bar printer, go to Point of Sale ‣ Configuration ‣ Settings, scroll down to the Restaurant & Bar section, and enable Kitchen Printers. Type in a name for the printer in the Printers field and click Create and edit… to open a setup form.

To get a list of all the printers already created or to modify an already created printer, click –> Printers and select the desired printer to open the setup form.

Setup form

From the setup form, select the Printer Type according to your installation:

  • If your printer is connected to an IoT system, select Use a printer connected to the IoT Box and select the device in the IoT Device field.
  • If you use an Epson printer that does not require an IoT system, select Use an Epson printer and enter the printer’s IP address in the Epson Printer IP Address field.

 See also

Set your printer to print specific products based on their POS category. To do so, click Add a line in the Printed Product Categories field. If you leave this field empty, all products are sent to the printer regardless of their POS category.

Print orders

From an open session, start taking an order and click Order to send it to the bar or the kitchen.

 Note

When products can be printed, they appear in green in the cart, and the order button turns green.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Bills

Typical practices in restaurants or bars are to request the bill before proceeding to payment or splitting it based on the items ordered. Odoo POS provides two features to perform these tasks seamlessly: Bill Printing and Bill Splitting.

Configuration

To activate the features, go to Point of Sale ‣ Configuration ‣ Settings, select the POS, and activate Early Receipt Printing and Allow Bill Splitting in the Restaurant & Bar section.

Bill printing

From an open session, click Bill ‣ Print at any moment to generate and print a bill.

 Note

The printed bill is not final and will be updated to reflect any changes to the order.

Bill splitting

From an open session, click Split to select the items to regroup. Once everything is selected, click Payment and proceed to checkout for these items. Repeat for each guest.

 Note

  • Once you return to the table, the selected items are no longer on order, as they have been paid for.
  • The feature is available as soon as at least two items are ordered.

 See also

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Tips

Tipping is customary in multiple countries. Point of Sale allows tipping in shopsbars, or restaurants.

Configuration

To allow tipping in your POS, activate the Tips feature in Point of Sale ‣ Configuration ‣ Settings. At the top of the page, select the POS in which you wish to allow tipping, scroll down to the Payment section and check Tips. Once enabled, add a Tip Product in the corresponding field, and save. The designated product will be used as a reference on customers’ receipts.

Tip products

Tip products can be created on the spot. To do so, enter a product’s name in the Tip Product field and click Create or press enter. The product is automatically configured to be used as a tip at the payment screen.

However, if you wish to be able to select the tip product in a POS session, you must activate the Available in POS setting. To do so, click Create and edit… to open the product configuration form. Then, go to the Sales tab, tick the Available in POS checkbox, and click Save & Close.

 Note

  • When you create a product to use as a tip, leave the product type as Consumable to avoid unnecessary inventory movements.
  • You can only select one tip product per POS, but you can choose a different one for each.

Tip using an Adyen terminal

If you use an Adyen payment terminal and wish to enable tips using the terminal, check Add tip through payment terminal (Adyen) below the tip settings.

Tip after payment

If you use a POS system in a bar or a restaurant, you can enable Add tip after payment (North America specific). Doing so generates a bill to print and complete manually by the customer and the waiter. That bill indicates the tip value the customer chooses to give after the payment.

 Important

To use this feature, the selected payment method must have a bank journal attributed.

Add tips

To add tips to an order, access the payment screen and click ♥ Tip. Then, enter the tipping amount, click Confirm to validate, and process the payment.

Alternatively, you can select the tip product on the POS interface to add it to the cart. When selected, the product is automatically set as a tip, and its default value equals its Sales Price.

Tip using an Adyen terminal

During checkout, select Adyen as the payment terminal, and send the payment request to the device by clicking Send. The customers are asked to enter the desired tipping amount on the terminal’s screen before proceeding to the payment.

Tip after payment

At checkout, select a card payment method and click Close Tab. Doing so generates a bill to complete by the customer.

On the following screen, click the percentage (15%, 20%, 25%), No Tip, or enter the tipping amount the customer chose to give. Then, click Settle to move to the following order.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Discounts

By offering discounts, you can entice your customers and drastically increase your revenue. It is vital to offer discounts, whether they are time-limited, seasonal or manually given.

To manage discounts, Odoo has powerful features that help set up a pricing strategy tailored to every business.

Apply manual discounts

If you seldom use discounts, applying manual ones might be the easiest solution for your Point of Sale.

You can either apply a discount on the whole order or on specific products inside an order.

Apply a discount on a product

From your PoS session interface, use the Disc button.

Then, you can input a discount over the product that is currently selected.

Apply a global discount

To apply a discount on the whole order, go to Point of Sales ‣ Configuration ‣ Point of Sale and select your PoS.

Once on your PoS form, select Global Discounts, under the Pricing category.

Now, you have a new Discount button appearing on your PoS interface.

Click on it and enter the wanted discount.

 Note

On this example, there is a global discount of 50% as well as a specific 50% discount on oranges.

Apply time-limited discounts

To activate time-limited discounts, you must activate the Pricelists feature. To do so, go to Point of Sales ‣ Configuration ‣ Point of Sale and open your PoS. Then, enable the pricelist feature.

Once activated, you must choose the pricelists you want to make available in the PoS and define a default one.

Create a pricelist

By default, Odoo has a Public Pricelist configured. To create more, go to Point of Sale ‣ Products ‣ Pricelists. Then click on create.

When creating a pricelist, you can set several criteria to use a specific price: period, min. quantity, etc. You can also decide to apply that pricelist on specific products or on the whole range.

Using a pricelist with the PoS interface

On the PoS interface, a new button appears. Use it to select a pricelist.

Click on it to instantly update the prices with the selected pricelist. Then, you can finalize the order.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community



 docs

Try Odoo for FREE

EN 

Odoo 18 

Discount tags (barcode scanner)

If you want to sell your products with a discount, for a product getting close to its expiration date for example, you can use discount tags. They allow you to scan discount barcodes.

 Note

To use discount tags you will need to use a barcode scanner.

Barcode Nomenclature

To use discounts tags, we need to learn about barcode nomenclature.

Let’s say you want to have a discount for the product with the following barcode:

You can find the Default Nomenclature under the settings of your PoS interface.

Let’s say you want 50% discount on a product you have to start your barcode with 22 (for the discount barcode nomenclature) and then 50 (for the %) before adding the product barcode. In our example, the barcode would be:

Scan the products & tags

You first have to scan the desired product (in our case, a lemon).

And then scan the discount tag. The discount will be applied and you can finish the transaction.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Loyalty programs

Encourage your customers to continue to shop at your point of sale with a Loyalty Program.

Configuration

To activate the Loyalty Program feature, go to Point of Sale ‣ Configuration ‣ Point of sale and select your PoS interface. Under the Pricing features, select Loyalty Program

From there you can create and edit your loyalty programs.

You can decide what type of program you wish to use, if the reward is a discount or a gift, make it specific to some products or cover your whole range. Apply rules so that it is only valid in specific situation and everything in between.

Use the loyalty program in your PoS interface

When a customer is set, you will now see the points they will get for the transaction and they will accumulate until they are spent. They are spent using the button Rewards when they have enough points according to the rules defined in the loyalty program.

You can see the price is instantly updated to reflect the pricelist. You can finalize the order in your usual way.

 Note

If you select a customer with a default pricelist, it will be applied. You can of course change it.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community



 docs

Try Odoo for FREE

EN 

Odoo 18 

Pricelists

Pricelists allow you to adjust product prices depending on various criteria automatically. For example, you can set POS-specific prices, create temporary discount periods, reward specific customers, or offer discounts when set quantities are ordered.

Configuration

Navigate to the general POS app settings and ensure Flexible Pricelists are enabled under the Pricing section.

Multiple prices per product is the default pricelist option for setting simple fixed price rules per product. Select Advanced price rules (discounts, formulas) to apply price rules to multiple products at once and to compute prices dynamically using percentage discounts or more complex formulas in addition to setting fixed prices.

 Note

The selected pricelist type applies to the entire database, including the Sales and eCommerce apps.

Create pricelists

Go to Point of Sale ‣ Products ‣ Pricelists and click New or select an existing pricelist. The pricelist setup differs depending on the selected pricelist option.

Multiple prices per product

When pricelists are configured to use the Multiple prices per product option, it is possible to use multiple fixed prices for different products or their variants depending, if necessary, on one or several conditions. To add a new price rule to a pricelist:

  1. Click Add a line, and select a product and its variant if needed.
  2. Add the condition(s):
    • a product quantity to be reached by using the Min. Quantity column;
    • a determined period during which the pricelist is applied by using the Start Date and End Date columns.
  3. Add the Price to be applied when the conditions are met (if any).

Advanced price rules

When pricelists are configured to use the Advanced price rules (discounts, formulas) option, it is possible to use percentage discounts/mark-ups and formulas in addition to using fixed prices. To add a new price rule to a pricelist, click Add a line. In the pop-up windows:

  1. Select a Computation method:
    • Fixed Price to set a new fixed price (similarly to the Multiple prices per product option).
    • Discount to compute a percentage discount (e.g., 10.00 %) or mark-up (e.g., -10.00 %).
    • Formula to compute the price according to a formula. It is required to define what the calculation is based on (Sales Price, Cost, or Other Pricelist). You can then:
      • Apply a percentage Discount or mark-up.
      • Add an Extra Fee (e.g., $ 5.00) or subtract a fixed amount (e.g., $ -5.00).
      • Define a Rounding Method by forcing the price after Discount to be a multiple of the value set. The Extra Fee is applied afterward.
         Example
        To have the final price end with .99, set the Rounding Method to 1.00 and the Extra Fee to -0.01.
      • Specify the minimum (e.g., $ 20.00 ) and maximum (e.g., $ 50.00 ) profit Margins for computations based on Cost.
  2. Select on which product(s) the price rule should be applied:
    • All Products
    • a Product Category
    • a Product
    • a Product Variant
  3. Add conditions, such as a specific quantity to reach for the price to change by using the Min. Quantity field or a specific period during which the pricelist should be applied by using the Validity fields.

Select pricelists

Go to the specific POS settings and add all the available pricelists in the Available field. Then, set its default pricelist in the Default field.

When you open a POS session, click the pricelists button, and select the desired pricelist from the list.

 Note

  • Multiple pricelists must be selected for the pricelist button to be displayed.
  • If a pricelist is selected on a POS order while its conditions are not met, the price will not be adjusted.

 Tip

You can also set a pricelist to be selected automatically once a specific customer is set. To do so, go to the customer form and switch to the preferred pricelist in the Pricelist field of the Sales & Purchase tab.

 See also

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Flexible taxes (fiscal positions)

When running a business, you may need to apply different taxes and record transactions on various accounts based on the location and type of business of your customers and providers.

The fiscal positions feature enables you to establish rules that automatically select the right taxes and accounts used for each transaction.

 See also

Configuration

To enable the feature, go to Point of Sale ‣ Configuration ‣ Settings, scroll down to the Accounting section, and enable Flexible Taxes.

Then, set a default fiscal position that should be applied to all sales in the selected POS in the Default field. You can also add more fiscal positions to choose from in the Allowed field.

According to the fiscal localization package activated, several fiscal positions are preconfigured and can be set and used in POS. However, you can also create new fiscal positions.

 Note

If you do not set a fiscal position, the tax remains as defined in the customer taxes field on the product form.

Use fiscal positions

Open a POS session to use one of the allowed fiscal positions. Then, click the Tax button next to the book-shaped icon and select a fiscal position from the list. Doing so applies the defined rules automatically to all the products subject to the chosen fiscal position’s regulations.

 Note

If a default fiscal position is set, the tax button displays the name of the fiscal position.

 See also

Fiscal positions (tax and account mapping)

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Cash rounding

Cash rounding is required when the lowest physical denomination of currency, or the smallest coin, is higher than the minimum unit of account.

For example, some countries require their companies to round up or down the total amount of an invoice to the nearest five cents, when the payment is made in cash.

Each point of sale in Odoo can be configured to apply cash rounding to the totals of its bills or receipts.

Configuration

Go to Point of Sale ‣ Configuration ‣ Settings and enable Cash Rounding, then click on Save.

Go to Point of Sale ‣ Configuration ‣ Point of Sale, open the point of sale you want to configure, and enable the Cash Rounding option.

To define the Rounding Method, open the drop-down list and click on Create and Edit….

Define here your Rounding PrecisionProfit Account, and Loss Account, then save both the Rounding Method and your Point of Sale settings.

All total amounts of this point of sale now add a line to apply the rounding according to your settings.

 Note

Odoo Point of Sale only supports the Add a rounding line rounding strategy.

 Edit on GitHub

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Electronic shelf labels

Electronic shelf labels allow you to display product information like prices and barcodes on store shelves and to synchronize them remotely from the backend. This removes the need to print new labels when product information changes.

 Note

Odoo uses electronic labels from Pricer.

Configuration

Pricer setup

  1. Get in touch with Pricer to create and configure your Pricer account.
  2. Create your stores: one pricer store equates to one physical store.
  3. Link as many transceivers as needed to the Pricer store(s).
  4. Create the following variables to share product information between your Odoo database system and Pricer. These variables act like placeholders on the label template.
    • itemId: this holds the unique internal identifier assigned to each product
    • itemName: the actual name of the product
    • price: the selling price of the product, including any applicable taxes
    • presentation: the template name used in Pricer for displaying the product information on the label
    • currency: the currency of your company (e.g., USD, EUR)
    • barcode: the barcode number associated with each product
     Important
    The names for these variables must be identical in your Pricer database.
  5. Create a template named NORMAL. This template is used to display information on your digital tags.

Once your account, stores, variables, and template are configured on Pricer, you can proceed with the setup of your Odoo database.

 Important

The account associated with your Pricer store must have access to send API requests to Pricer.

Odoo setup

As a pre-requisite, activate the POS Pricer module (technical name: pos_pricer) to have all the required features to use Pricer electronic tags.

Once the module is activated, configure your pricer stores and associate Pricer tags with your products.

Pricer stores

Similarly to the configuration in Pricer, you need to create one pricer store per physical location. To do so, go to Point of Sale ‣ Configuration ‣ Pricer Stores, click New, and fill in the line with the required information:

  • Store Name: you can put any name of your liking.
  • Pricer Tenant Name: the name of your company account in Pricer, usually followed by -country_code. This value is provided by Pricer.
  • Pricer Login: the login of your Pricer account.
  • Pricer Password: the password of your Pricer account.
  • Pricer Store ID: the ID of the related Pricer store as defined on your Pricer database.

 Note

  • The Pricer Tags column is updated automatically when a label is linked to a product.
  • The Last Update and Last Update Status columns are updated automatically when the tags are updated.

Pricer tags

For a label to display specific product information, the label needs to be associated with the product. To do so:

  1. Open the product form by going to Point of Sale ‣ Products ‣ Products and clicking New or selecting an existing product.
     Note
    If you are creating a new product, configure and save it before associating any Pricer tags.
  2. Go to the Sales tab, scroll to the Pricer section, and select the corresponding Pricer Store.
  3. Fill in the Pricer tags ids field by copying the label’s ID from the label itself or scanning its barcode.
     Note
    Pricer tag IDs are composed of a letter followed by 16 digits.

 Tip

  • We recommended using a barcode scanner to speed up the encoding process.
  • When setting up Pricer with Odoo for the first time, it is recommended that you configure only one product first. Before configuring more products, ensure you can display their information on a Pricer tag.

Now that you have a product associated with a Pricer tag, we can send its information to Pricer.

Practical application

Odoo automatically sends requests to Pricer to synchronize the tags every 12 hours if you make any modifications to:

  • Product name, price, barcode, or customer taxes
  • Currency
  • Associated Pricer store or Pricer tags

To force the update, activate the developer mode. Then:

  1. Go to Point of Sale ‣ Configuration ‣ Pricer Store.
  2. Select the desired store(s).
  3. Click Update tags to update all tags affected by changes to:
    • Product name, price, barcode, or customer taxes
    • Currency
    • Associated Pricer store or Pricer tags

Alternatively, click Update all tags to force the update of every tag, regardless of whether changes were made.

If Pricer has processed and accepted the request, the status field shows Update successfully sent to Pricer. If there is any issue, the system displays an error message.

 Warning

If a request sent to Pricer fails, Odoo still considers that the product has been updated. In that case, we recommend forcing the update of all tags.

Discount labels

To display a discount label on a Pricer Tag, you need to link a pricelist to the product variant associated with the tag.

To do so, open the product variant form:

  1. Go to Point of Sale ‣ Products ‣ Product Variants.
  2. Select the product you want to apply a discount to.

Then, set the desired pricelist:

  1. Go to the General Information tab.
  2. Select a pricelist in the Pricer Sales Pricelist field.

Once a pricelist is set, the On Sale Price field appears, showing the Sales Price with the discount applied.

After updating your electronic labels, a PROMO tag should appear on the electronic label, displaying both the old, crossed-out price and the discounted price.

 Note

  • Currently, pricelists that offer discounts for purchasing multiple units or derive their prices from other pricelists are not supported.
  • Assigning a pricelist to a product variant only affects the electronic label display. Scanning the product at the point of sale does not automatically apply the discount.

 See also

Discounts

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community



 docs

Try Odoo for FREE

EN 

Odoo 18 

Payment methods

To add a payment method, you first need to create it. Go to Point of Sale ‣ Configuration ‣ Payment Methods ‣ New, and set a name. Check Identify Customer to allow this payment method exclusively for registered customers.

Then, select the Journal. Choose Cash to use this payment method for cash payments, or Bank to use it for card payments.

 Note

Selecting a bank journal automatically adds the Use a Payment Terminal field in which you can add your payment terminal’s information.

 See also

Payment terminals.

Once the payment method is created, you can select it in your POS settings. To do so, go to the POS’ settings, click Edit, and add the payment method under the Payments section.

 Edit on GitHub

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

QR code payments

QR code payments allow users to generate a code that customers can scan with their mobile banking app to initiate a bank transfer or pay instantly.

Configuration

Activate and set up QR code payments

Go to Accounting ‣ Configuration ‣ Settings, and

  1. Activate or upgrade your country’s fiscal localization package under the Fiscal Localization section to access all country-specific accounting features.
  2. Activate QR codes under the Customer Payments section.

Then, as the QR code type differs depending on your country, follow the corresponding documentation page from the following table to set them up.

QR code types

Module name

Technical name

Description

Pix

Brazilian - Accounting

l10n_br

The base module to manage the accounting chart and localization for Brazil.

FPS

Hong Kong - Accounting

l10n_hk

The base module to manage the accounting chart and localization for Hong Kong.

QRIS

Indonesian - Accounting

l10n_id

The base module to manage the accounting chart and localization for Indonesia.

PayNow

Singapore - Accounting

l10n_sg

The base module to manage the accounting chart and localization for Singapore.

QR-bill

Switzerland - Accounting

l10n_ch

The base module to manage the accounting chart and localization for Switzerland.

PromptPay

Thailand - Accounting

l10n_th

The base module to manage the accounting chart and localization for Thailand.

VietQR

Vietnam - Accounting

l10n_vn

The base module to manage the accounting chart and localization for Vietnam.

EPC

Account SEPA QR Code

account_qr_code_sepa

This module adds support for SEPA Credit Transfer QR-code generation.

Create the payment method

  1. Open the Point of Sale application.
  2. Go to Configuration ‣ Payment Methods and create a payment method.
  3. Set a bank-type journal.
  4. Select Bank App (QR Code) under the Integration section.
  5. Select the QR Code Format from the dropdown menu.
    • Select SEPA Credit Transfer QR if you are part of the Single Euro Payments Area (SEPA).
    • Select EMV Merchant-Presented QR-code for other QR code types.

 Important

At least one bank account must be defined in the journal to allow QR code payments to be registered with bank apps.

Once the payment method is created, go to the POS’ settings and add the payment method to your POS under the Payment section.

Register payments using QR codes

When processing a payment, select the payment method for QR code payments. A QR code is generated and displayed on the screen for the customer to scan and pay with their mobile banking app.

Hit Confirm Payment to validate the transaction.

 Important

Odoo does not check the bank payment. It is recommended that users verify payments for validity before confirming them on the POS register.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community



 docs

Try Odoo for FREE

EN 

Odoo 18 

Payment terminals

Connecting and integrating a payment terminal with your POS system allows you to accept multiple payment options, including credit and debit cards, making the payment process more efficient.

Configuration

Go to the application settings, scroll down to the Payment Terminals section, and tick your terminal’s checkbox.

Then, follow the corresponding documentation to configure your device:

Once the terminal is configured, you can create the corresponding payment method and add it to the POS.

Pay with a payment terminal

When processing a payment, select the terminal’s payment method. Check the amount and click on Send. Once the payment is successful, the status changes to Payment Successful.

 Note

  • In case of connection issues between Odoo and the payment terminal, force the payment by clicking on Force Done, which allows you to validate the order.
    This option is only available after receiving an error message informing you that the connection failed.
  • To cancel the payment request, click on Cancel.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Mercado Pago

Connecting a payment terminal allows you to offer a fluid payment flow to your customers and ease the work of your cashiers.

 Important

Only Point Smart payment terminals in ArgentinaBrazil, and Mexico are supported. They can be purchased on Mercado Pago’s website.

 See also

Mercado Pago online payments

Configuration

  1. Create a Mercado Pago account.
  2. Associate your Point Smart terminal with a store and a cash drawer by following Mercado Pago’s documentation.
     Note
    All purchased terminals are automatically displayed on your Mercado dashboard.
  3. Set your Point Smart terminal to the Point of Sale operation mode.
     Warning
    Odoo does not support the Standalone operation mode.
  4. Create a Point Smart application.
  5. Generate your credentials.
  6. Create and configure the related payment method.

Point Smart application

Create a new application from Mercado Pago’s developer panel by following Mercado Pago’s applications documentation, making sure you select In person Payments.

Credentials

Once the Point Smart application is created, three credentials are required:

  • An access token that Odoo uses to call Mercado Pago.
  • A webhook secret key that Odoo uses to authenticate notifications sent by Mercado Pago.
  • The terminal serial number at the back of your Point Smart terminal.

Retrieve the access token and webhook secret key by following Mercado Pago’s credentials documentation. Then, copy and paste them into Odoo when creating the payment method.

 Important

For the webhooks configuration, add the URL of your Odoo database (e.g., https://mycompany.odoo.com) followed by /pos_mercado_pago/notification (e.g., https://mycompany.odoo.com/pos_mercado_pago/notification).

Payment method

  1. Go to Point of Sale ‣ Configuration ‣ Settings and enable Mercado Pago under the Payment Terminals section.
  2. Create the related payment method by going to Point of Sale ‣ Configuration ‣ Payment Methods.
  3. Set the journal type as Bank
  4. Select Mercado Pago in the Use a Payment Terminal field.
  5. Fill in the mandatory fields with the previously generated credentials:
    • Fill in the Production user token field using the access token.
    • Fill in the Production secret key field using the webhook secret key.
    • Fill in the Terminal S/N field using the terminal serial number. You can find it at the back of your terminal.
    • Click the Force PDV button to activate the Point of Sale mode.

Select the payment method by going to the POS’ settings and adding it to the payment method under the Payment Methods field of the Payment section.

 Important

Any action made on the terminal should trigger a notification on the POS interface. Ensure the webhook secret key is correctly configured if you are not notified.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Marketing features

Use your POS system to engage with customers directly by sending them promotional offers via email or WhatsApp.

Storing contact details

This feature requires your customer’s contact details, either their email address or phone number.

  • Email addresses: automatically collected and saved in POS orders when sending a receipt by email.
  • Phone numbers: to store phone numbers when sending receipts on WhatsApp or by SMS,
    1. Go to Configuration ‣ Settings and scroll to the Bills & Receipts section;
    2. Activate the WhatsApp Enabled or SMS Enabled option(s).

If a customer’s contact information is missing, it will be automatically saved in POS orders when the receipt is sent via email, SMS, or WhatsApp.

 Tip

From a POS order form, navigate to the Contact Info category under the Extra Info tab, then click the email icon or whatsapp icon to send standalone marketing messages.

Email marketing

To send marketing emails to your customers from POS orders,

  1. Go to Point of Sale ‣ Orders ‣ Orders;
  2. Select the orders;
  3. Click Actions, then Send Email from the dropdown menu.

Doing so opens an email composing form. Fill it in and hit Send.

 Tip

  • Save some time by saving your content as a template. Click the vertical ellipsis button and select your template under the Insert Template section.
  • You can also save your content as template for later use. Click the vertical ellipsis button and select Save as Template.

 Note

  • Fill in the Mass Mailing Name field to create a mass mailing and track its results in the Email Marketing app.
  • If an email address is not related to an existing customer, a new customer is automatically created when sending marketing emails.

 See also

Use the email marketing app for more advanced marketing features.

Whatsapp marketing

Configuration

You first need to enable the related server action to send WhatsApp marketing messages from your POS using the phone numbers collected from POS orders. To do so,

  1. Go to the WhatsApp application;
  2. Create a new WhatsApp template;
  3. Configure the fields:
    • Applies to field set to Point of Sale Orders;
    • Category field to Marketing;
    • Phone Field to either Mobile or Customer > Phone.
  4. Click Submit for Approval;
  5. Once approved, click the Allow Multi button to create a server action in the POS orders list view.

 Warning

If you modify the template’s content, you must request for approval again, as its status returns to the Draft state.

 See also

WhatsApp configuration

Send WhatsApp marketing messages

  1. Go to Point of Sale ‣ Orders ‣ Orders;
  2. Select the orders;
  3. Click Actions, then WhatsApp Message from the dropdown menu.

Doing so opens a WhatsApp message composing form. Select the desired marketing template in the Template field and hit Send Message.

 Note

  • To use WhatsApp marketing in the Point of Sale, approved marketing templates must have the Allow Multi option enabled and Point of Sale Orders selected in the Applies to field.
  • If the server action is displayed without a properly configured template, an error message appears. Click Configure Templates and complete the WhatsApp setup steps.

 See also

WhatsApp

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Online food delivery

UrbanPiper is an order management system that integrates with multiple food delivery platforms. It consolidates orders from all connected platforms into a single interface, simplifying the delivery process.

Supported providers:

Configuration

UrbanPiper credentials

  1. Get your Atlas credentials:
    1. Go to the POS settings.
    2. Scroll down to the Food Delivery Connector section.
    3. Click Fill this form to get Username & Api key and fill out the survey.
  2. Go to your Atlas account and retrieve your API key and username by navigating to Settings ‣ API Access.

Point of Sale

  1. Enable the Urban Piper setting:
    1. Go to the POS settings.
    2. Scroll down to the Food Delivery Connector section.
    3. Check the Urban Piper setting.
  2. Set up UrbanPiper:
    1. Fill in the Username and Api Key fields with your UrbanPiper credentials.
    2. Select the desired delivery providers in the Food Delivery Platforms field under the Urban Piper Location section (i.e., Zomato, Uber Eats).
  3. Save the settings.
  4. Click the + Create Store button. Doing so creates a new location on the UrbanPiper Atlas platform.

 Note

  • The Pricelist and Fiscal Position fields are automatically selected after saving.
  • A successful store creation triggers a notification.
  • The store creation process may take 2–3 minutes to reflect changes on the UrbanPiper Atlas platform.
  • The store is automatically named after your point of sale name.

Products

To make products available individually,

  1. Go to Point of Sale ‣ Products ‣ Products.
  2. Select any product to open its product form.
  3. Go to the Point of Sale tab.
  4. Complete the Urban Piper section:
    • Fill in the Available on Food Delivery with the desired POS.
    • Optionally, set up the Meal Type field and enable the Is Recommended and Is Alcoholic buttons.

To make multiple products available for food delivery at once,

  1. Go to Point of Sale ‣ Products ‣ Products.
  2. Click the list icon () to switch to the list view.
  3. Select the products.
  4. Enter the desired POS in the Available on Food Delivery column.

 Note

  • Currently, UrbanPiper does not support combo products.
  • As a workaround, create a product and define combo choices as Attributes & Variants.

Synchronization

To make products available on food delivery platforms, synchronize with your UrbanPiper account:

  1. Go to the POS settings.
  2. Scroll down the Food Delivery Connector section.
  3. Click the Sync Menu button.
    • The Last Sync on timestamp below the Create Store and Sync Menu buttons updates.

 Note

  • A successful synchronization triggers a notification.
  • The synchronization process may take 2–3 minutes to reflect changes on the UrbanPiper Atlas platform.

Go live

  1. Go to the Locations tab of your Atlas account.
  2. Select the location to activate, then click Request to go Live.
  3. In the popup window:
    1. Select the platform(s) to activate and click Next.
    2. Enter the Platform ID and Platform URL in the corresponding fields to establish the connection between the platform and UrbanPiper.
    3. Click the Request to Go Live button.

     Note
    To find the location’s Platform ID and Platform URL,
    1. Click the location to open its setup form.
    2. The location’s parameters are available in the HUB tab.
  4. Verify that your location is live:
    1. Go to the Locations tab of your Atlas account.
    2. Select any provider in the Assoc. platform(s) column to review the status of that platform for this location.

Order flow

An order placed via the configured delivery platform triggers a notification. To manage these orders, open the orders’ list view by:

  1. Clicking Review Orders on the notification popup.
  2. Clicking the bag-shaped icon for online orders and New.
     Note
    • Clicking this icon displays the number of orders at each stage: New, Ongoing, and Done.
    • The New button indicates newly placed orders, Ongoing is for accepted orders, and Done is for orders ready to be delivered.

Then,

  1. Select the desired order.
  2. Click the Accept button.
  3. When an order is accepted, its Order Status switches from Placed to Acknowledged and is automatically displayed on the preparation display.

When the order is ready,

  1. Open the orders’ list view.
  2. Select the order.
  3. Click the Mark as ready button. Its Order Status switches from Acknowledged to Food Ready, and its Status switches from Ongoing to Paid.

Order rejection

Sometimes, the shop or restaurant may want to reject an order. In this case, open the orders’ list view,

  1. Select the desired order.
  2. Click the Reject button.
  3. Select one of the reasons from the popup window.

 Important

Swiggy orders cannot be directly rejected. Attempting to reject one prompts Swiggy customer support to contact the restaurant. Similarly, DeliverooJustEat, and HungerStation do not allow order rejection. Always follow the respective provider’s guidelines for handling such cases.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community



 docs

Try Odoo for FREE

EN 

Odoo 18 

Reporting

View statistics

To access your statistics, go to Point of Sale ‣ Reporting ‣ Orders. Or, from the POS dashboard, click the vertical ellipsis (⋮) button, Reporting, and Orders.

These statistics are available in a graph or pivot view that you can filter or group depending on your needs.

 Edit on GitHub

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Subscriptions

Odoo Subscriptions is used to run recurring businesses: sell new contractsupsell customers, keep the churn under control, and generate reports on the main KPIs: MRR, ARR, retention, churn, etc.

 See also

Subscription quotations

 Important

Sales orders with a defined recurrence become subscriptions.

To create a new subscription, click on New from the Subscription or the Sales app. You can either:

  • Select a subscription plan to prefill the quotation instantly, or
  • Fill out the quotation normally, making sure to select a recurrence and an end date if necessary and adding recurrent products.

 Tip

You can define different invoice and delivery addresses by enabling the Customer Addresses feature.

Confirmation

Send the quotation to the customer for confirmation by clicking on Send by email, or confirm it immediately by clicking on Confirm.

 Tip

Click on Customer Preview to preview the customer portal where the customer can view their quotation, sign and pay it, and communicate with you.

Automatic payments

You can require the customer to set an automatic payment method and pre-pay the subscription’s first occurrence before they can confirm their quotation. To do so, go to the Other Info tab of the quotation and check the Payment option in the Online confirmation field.

If you leave Payment unchecked, the customer doesn’t have to pre-pay to start the subscription. This means that the payment is not automatic and that the customer must pay each invoice manually.

 Important

If the online confirmation requires a pre-payment, your customer can select only the payment providers that have the tokenization feature. This ensures that the customer is automatically charged at each new period.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Subscription products

By closely integrating with the Odoo Sales app, the Subscriptions app enables users to sell subscription products alongside regular sales products. While regular products are sold on a one-time basis, subscription products are sold on a renewing basis, generating recurring revenue.

In Odoo, subscription products are also called recurring products.

Configure recurrence periods

To get started with subscriptions, the recurrence periods must be properly configured, as needed.

Recurrence periods are the time periods in which subscriptions renew. They designate how often the customer pays for (and receives) subscription products.

To configure recurrence periods, go to Subscriptions app ‣ Configuration ‣ Recurrence periods.

The Subscriptions app comes with some basic recurrence periods already configured:

  • Monthly
  • Quarterly
  • Weekly
  • 2 Weeks
  • Yearly
  • 3 Years
  • 5 Years

New recurrence periods can be added and/or edited at any time.

To create a new recurrence period, click New on the Recurrence Periods page. Doing so reveals a blank recurrence period form.

Then, type in the Name and Duration of the recurrence period, and select the Unit that defines the duration.

 Important

The unit Days cannot be used as a recurrence period on subscriptions. The daily recurrence is meant for rentals, and cannot be added on recurring subscription sales orders.

This limitation is there to avoid sales orders that would generate daily invoices.

Product form configuration

To create a new subscription product, navigate to Subscriptions app ‣ Products ‣ Products, and click New.

Doing so reveals a blank product form, which can be configured and customized in a number of ways.

 Note

By default, the Recurring option is already enabled, prompting Odoo to recognize it as a subscription product. Be sure to leave the Recurring and Can be Sold options enabled.

The Product Type field is set to Service by default, as well. However, subscription products can be set to other types, if needed.

 Important

When creating a physical subscription product in the Odoo Sales application, the Invoicing Policy must be set to Ordered quantities.

Setting it to Delivered quantities causes issues with invoice creation, and disrupts the subscription process.

Similarly, when creating a physical subscription product in the Odoo Subscriptions application, the Invoicing Policy must not be set to Based on Delivered Quantity (Manual) for the same reasons.

Time-based pricing

Once the desired fields in the General Information tab have been entered, click the Time-based pricing tab on the product form.

From here, click Add a price to begin defining recurring prices.

In the Period column, select a desired recurrence period. In the Pricelist column, select a pricelist, if needed. Then, in the Price column, enter the price for that recurrence period.

 Note

Daily and Hourly periods cannot be used on recurring products.

 Note

There is no limit to how many lines can be added to the Time-based pricing table.

 Tip

An existing product can be made into a subscription product, simply by marking it as Recurring, and configuring Time-based pricing on the product form.

Pricelists

Pricelists can be used with subscription products to give special pricing to customers included in pricelists.

This can be configured either in the Time-based pricing tab of the product form, or on the pricelist form in the Sales application.

To create recurring price rules for specific pricelists in the Time-based pricing tab of the product form, select a pricelist in the Pricelist column.

When pricelists are added to the Time-based pricing tab, the pricelist form in the Sales app is automatically updated.

Time-based pricing rules can also be configured directly on the pricelist form.

To do this, go to Sales app ‣ Products ‣ Pricelists, and select a pricelist (or click New to create a new pricelist).

 Note

Pricelists are also accessible through the Odoo Subscriptions app by following the same menu steps.

Then, on the pricelist form, under the Time-based rules tab, click Add a line.

Then, select a subscription product in the Products column, and select a recurrence period in the Period column. Lastly, enter a Price for that particular product and period. Add as many lines as needed.

When Time-based rules are added to the pricelist form, the Time-based pricing tab of the product form is automatically updated.

 See also

Subscriptions in the eCommerce shop

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Subscriptions in the eCommerce shop

Subscription products can be sold in the Odoo eCommerce shop just like regular sales products.

 See also

Selling eCommerce subscriptions

Configure the subscription product as a regular recurring sales product. To start selling the subscription in the eCommerce shop, click the Go to Website smart button to navigate to the product page.

From here, review the subscription product and its recurring periods. Then, toggle the switch in the upper-right corner from Unpublished to Published.

The new subscription product is now available to purchase on the eCommerce website, with options for the different recurring periods.

 Edit on GitHub

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Subscription plans

Subscription plans are quotation templates used to preconfigure quotations with subscription products. Use subscription plans to quickly create subscription orders.

Configure subscription plans

To configure subscription plans, go to Subscriptions ‣ Configuration ‣ Plans. Then, click New to create a new plan, or select an existing plan to edit it.

Since the Odoo Subscriptions app is integrated closely with the Sales app, subscription plans use the same form as quotation templates.

The subscription plan form contains the following options:

  • Name: Enter a name for the subscription plan at the top of the page.
  • Quotation expires after: Enter the number of days after which the quotation expires, starting from the day the quotation is sent to the customer. Leave this field at zero for the quotation to never expire.
  • Online Confirmation: Check the boxes next to Signature or Payment to enable the customer to confirm their subscription order by signing or paying for the quotation. Enable both to leave the choice to the customer. Enable neither to only confirm the quotation in the backend.
  • Confirmation Mail: Select an email template for the confirmation email that is automatically sent to the customer after the quotation is confirmed. Leave this field blank to send nothing.
    • To create a new email template, enter a name for the template, then click Create and edit.
    • To edit an existing email template, select one from the drop-down menu, then click on the Internal link arrow at the end of the line.
  • Recurrence: Select the recurrence period used for the plan. The recurrence periods available here are the same ones that are configured in Subscriptions ‣ Configuration ‣ Recurrence Periods.

Selecting a Recurrence turns the quotation template into a subscription plan and enables the following additional options:

  • Duration: Choose whether the subscription plan has no end date (Forever) or a Fixed duration.
    • If the duration is Forever, then the subscription plan will continually renew until either the customer or the company manually ends the subscription.
    • If the duration is Fixed, then enter an End After date, which determines the amount of time after which the subscription will automatically end.
  • Self Closable: Check this box to enable the customer to terminate their subscription from the customer portal.
  • Automatic Closing: Enter the number of days after which unpaid subscriptions past the due date are automatically closed.
  • Invoicing Journal: Select the accounting journal in which invoices for this subscription plan are recorded. Leave this field blank to use the sales journal with the lowest sequence.

In the Lines tab, create the order lines for the quotation. Click Add a product, select a product to include in the plan, and then enter the Quantity and Unit of Measure. Add as many products as desired to the order lines.

In the Optional Products tab, enter any optional products that the customer can add to their quotation before confirming the order.

If the subscription plan has unique terms and conditions, add them in the Terms & Conditions tab. If terms conditions are specified on a plan, these will be used instead of the default terms and conditions set up in the Sales app settings.

Use subscription plans on quotations

Quotations for subscription products can be created in both the Subscriptions app and the Sales app.

From the Subscriptions dashboard, click New to create a new quotation. Then, select a subscription plan in the Subscription Plan field.

The Recurrence, products, and other information from the plan are automatically filled in. The quotation can then be modified further as needed.

From the Sales dashboard, click New to create a new quotation. Then, select a subscription plan in the Quotation Template field.

All subscription orders will appear on the Subscriptions dashboard regardless of whether they were created in the Subscriptions app or the Sales app.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Upsell subscriptions

Subscriptions are recurrent, and go on indefinitely. As time passes, customers may want to modify them. With that in mind, it’s imperative to have the ability to adapt prices, or change quantities, to accommodate any need. That’s where the opportunity to upsell a subscription can come into play.

Upselling may prove beneficial to the following customer types:

  1. Loyal Customers
    These are customers who already trust the company/brand, and because they have established a pattern of paying for products/services, there’s more confidence behind the attempt to sell them a more expensive product/service.
  2. New Customers
    For brand new customers unfamiliar with the company/brand, a new, attractive tactic must be employed to entice them to purchase a more expensive product/service.

    In these instances, discounts can be useful. Typically, subscriptions end after a certain period of time.

    So, if these more expensive products/services are offered to new customers at a discount, it can result in a sale, while establishing a strong sense of trust between the customer and the company/brand. In turn, this can increase customer retention, as they’ll grow more comfortable and trustworthy over time.

Discount configuration

In order to have the ability to upsell a subscription to a new customer, with the aid of a discount, the Discounts feature must be activated.

To activate the Discounts feature, navigate to Sales app ‣ Configuration ‣ Settings, scroll to the Pricing section, and tick the checkbox beside Discounts. Then, click Save.

With that feature activated, the ability to grant discounts on sales order lines.

Upsell subscriptions

Before upselling a subscription, check out our documentation on how to Create a quotation using subscription products.

When a quotation with a subscription is confirmed, it officially becomes a sales order, and a new subscription is created in the Odoo Subscriptions application.

 Note

The subscription sales order must be invoiced before an upsell can occur.

When the subscription sales order is opened, either in the Sales or Subscriptions application, the ability to upsell that subscription is available, via the Upsell button at the top of the sales order.

When the Upsell button is clicked, a new quotation form appears, with an Upsell status banner in the upper-right corner. The initial subscription product is already in the Order Lines tab.

There is also a warning reminding the user that the recurring products are discounted, according to the prorated period of time, located beneath the initial subscription product in the Order Lines tab.

 Important

The prorated amount is only applied to Service product types. It is not applied to Consumable or Storable product types, even if the message appears.

From this new upsell quotation form, add new subscription products in the Order Lines tab, by clicking Add a product, and selecting the desired subscription product.

Once the desired upsell subscription product(s) have been added, it can be sent to the customer for approval by clicking the Send by Email button.

 Important

When the quotation is confirmed by the customer, the upsell products are added to the initial subscription. Quotation prices are then prorated to the remaining time of the current invoicing period.

 Note

Before sending the new quotation to the customer, the unit price, taxes, and even discount can be applied.

Once the customer approves, click the Confirm button on the quotation, making it a sales order. When that’s clicked, a Sales History smart button appears, displaying how many sales orders are attached to this initial subscription order.

When the Sales History smart button is clicked, Odoo reveals a separate page containing a list of the related sales orders, clearly showcasing their individual Subscription Status.

 See also

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Renew subscriptions

The foundation of any subscription business model is recurring payments. This is when customers reliably pay a regular amount at specific intervals, in exchange for access to a subscription product or service.

Subscription renewal is the process customers follow when they willingly choose to continue participating in, and paying for, a subscription product or service.

Subscribers experience the renewal process at different intervals – weekly, monthly, annually, etc. – depending on the duration of the agreed-upon contract.

Most companies that offer subscriptions prefer to automate the renewal process for customers. However, manual subscription renewals are still used in some cases.

With the Odoo Subscriptions application, a company can manage all of its subscriptions in one place. Renewals can be processed automatically, or manually, include additional products or upsells per renewal order, and be filtered in batch views to quickly locate customers who need to renew their subscriptions.

Subscription renewals

In order to renew a subscription, a quotation with a subscription product must be confirmed, with a configured Recurring Plan selected.

To open a subscription quotation, navigate to Subscriptions app ‣ Subscriptions ‣ Quotations, and select the desired quotation from the list. Or, create a new one by clicking New to open a new quotation form.

 Note

  • Only a singular product is required.
  • A subscription service counts as a product, as it is considered a recurring product.

Subscription quotations must be confirmed, and payment from the customer for the initial subscription must be invoiced and registered in order to successfully open a Renewal Quotation.

 See also

For more information on the above process of confirming quotations and invoicing payments, see: - Create quotations - Online payment order confirmation

Once the payment from the subscription quotation is confirmed, the quotation turns into a sales order. An In Progress tag is applied to the sales order form, and a series of buttons also appear at the top of the sales order, including a Renew button.

When the Renew button is clicked, Odoo instantly presents a new renewal quotation, complete with a Renewal Quotation tag.

From here, a standard sales flow can occur to confirm the quotation. This typically begins by clicking Send by Email, which sends a copy of the quotation to the customer, by email, for them to confirm, and eventually, pay for.

 Note

In the chatter of the Renewal Quotation, it is mentioned that this subscription is the renewal of the subscription from the original sales order.

Once the Renewal Quotation is confirmed, it becomes a sales order, and a Sales History smart button appears at the top of the page.

When that Sales History smart button is clicked, Odoo reveals a separate page, showcasing the different sales orders attached to this subscription, along with their individual Subscription Status.

Additionally, once the Renewal Quotation is confirmed, an MRR smart button also appears at the top of the sales order.

When clicked, Odoo reveals an MRR Analysis page, detailing the monthly recurring revenue related to this specific subscription.

 Important

On rare occasions, automatic payment can fail, which results in a Payment Failure tag on the top-right of the sales order, if there is an error in the payment method.

This is done to prevent the system from charging the customer again the next time a scheduled action is run. Because the status of the payment is unknown, Odoo requests a manual operation to check if the payment has been made, before the payment can be used again.

To do this, navigate to Subscriptions app ‣ Subscriptions ‣ Quotations. Click into the desired subscription, then check the Chatter to see if the payment was made.

If the payment was not made, first enter debug mode. Then, click the Other Info tab, and untick the checkbox next to Contract in exception. Reload the sales order, and the Payment Failure tag is gone.

If the payment was made, a new invoice must be made and posted manually. This automatically updates the next invoice date of the subscription. Once created, enter debug mode, and navigate to the new sales order. Click the Other Info tab, and untick the checkbox next to Contract in exception. Reload the sales order, and the Payment Failure tag is gone.

The contract in exception` option selected with the payment failure tag shown.

In both cases, once the Contract in exception option is no longer selected, Odoo handles renewals automatically again. If the subscription remains in payment failure, it is skipped by Odoo until the sales order is closed.

 See also

 Edit on GitHub

Get Help

Contact Support Ask the Odoo Community


 docs

Try Odoo for FREE

EN 

Odoo 18 

Close subscriptions

Odoo Subscriptions provides flexibility for businesses to decide whether customers can self-manage their subscriptions, or restrict that ability entirely.

Configuration

Start by navigating to Subscriptions app ‣ Configuration ‣ Recurring Plans. From there, either create a new plan by clicking New or select an existing one to modify it.

Once on the Recurring Plans form, enable the Closable option, in the Self-Service section, to allow customers to close their own subscriptions using the customer portal.

 See also

Configure recurring plans

Close a subscription

Administrator view

After a quotation for a subscription product has been confirmed, it becomes a sales order, and the subscription status changes to In Progress.

At that point, the ability to close the subscription becomes available, via the Close button at the top of the subscription order, near the row that contains In Progress and other stages. This option is also available after the order has been invoiced and the payment has been registered.

Clicking the Close button prompts a Close Reason pop-up window to appear, allowing administrators to input the reason for closing the subscription, or choose from the drop-down menu of options in the Reason field.

When the desired Reason is entered, click the Submit button.

Clicking Submit on the Close Reason pop-up window updates the subscription sales order to show Churned status tag, along with the specified Close Reason.

That same close reason can be found in the Chatter of the sales order, as well.

Customer view

 Note

As an administrator, the ability to visualize what customers see when managing their subscriptions is accessible via the Preview button, located at the top of the subscription sales order.

From the customer’s point of view, in the customer portal, the Close Subscription button is located on the left side of the sales order.

When the customer clicks the Close Subscription button, a Close Subscription pop-up window appears, in which the customer has to choose from a select list of reasons why they are choosing to close the subscription.

 Note

Customers can only chose a pre-configured reason why the subscription is being closed. They can not enter a custom reason from the customer portal. These selections can be adjusted by navigating to Subscriptions ‣ Configuration ‣ Close Reasons.

Once the customer has chosen a close reason, they would click the Submit button on the pop-up window.

Upon closure, the subscription order in the customer portal is tagged as Closed.

In addition, the specified Close Reason appears on the subscription order in the Subscriptions app in the backend (Administrator’s view).

 See also

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Automation rules

With subscriptions up-and-running, it is important to stay up-to-date with customers. It is efficient to use automation to avoid having to manually go through the list of subscribers to see how things are going. That is where Odoo’s automation rules feature comes into play.

The Odoo Subscriptions application allows users to set up automatic emails, create tasks for salespeople, and even send satisfaction surveys for subscribers to evaluate their experience.

Create automation rules

To create an automated rule, start by navigating to Subscriptions app ‣ Configuration ‣ Automation Rules. This is where all the automation rules for subscriptions can be found.

The Automation Rules page shows each rule’s Name, Action To Do, what the automated rule will Trigger On, and the Company to which the rule applies.

To view or modify any existing automation rule, simply click the desired rule from this page.

 Note

When modifying an existing automation rule, Odoo “grays-out” the Action section of the form, and provides the following warning: Action data can not be updated to avoid unexpected behaviors. Create a new action instead.

To create a new automation rule, click New.

Clicking New reveals a blank Automation Rules form with numerous fields to configure.

Automation rule form fields

  • Action Name: title of the automated action rule.

Apply On section

The Apply On section dictates which subscription orders/customers this automated action applies to.

  • MRR Between: designate a range of monthly recurring revenue to target.
  • MRR Change More: designate a change of monthly recurring revenue to target, in either percentage or unit of currency.
  • Over: choose a period of time over which the designated KPIs (Key Performance Indicators) are calculated.
  • Rating Satisfaction: designate satisfaction as greater than or less than a percentage.
  • Status: select the status of the subscriptions to be included in this automation rule. The options are: Quotation, Quotation Sent, Sales Order, and Cancelled.
  • Stage goes from: designate when the automation rule should be activated using two fields that represent two different stages of the subscription.
  • Subscription Plans: choose specific subscription plans to target with the automation rule.
  • Products: select specific product(s) to target with the automation rule.
  • Customers: select specific customer(s) to target with the automation rule.
  • Company: in a multi-company environment, select a specific company’s subscription data to target with the automation rule.
  • Sales Team: select the data of specific sales team(s) to target with the automation rule.

 Note

If any field is left blank, the rule applies to every subscription without that specific designation.

 Tip

The number of subscriptions that match the configured criteria of the customized automation rule are displayed at the bottom of the Apply On field.

If that green subscriptions link is clicked, Odoo reveals a separate page showcasing all the subscriptions that meet that automation rule’s criteria.

Action section

The Action section dictates what action occurs when an automated rule is triggered.

In the Action To Do field, choose the action that will occur once the automated rule is triggered. When clicked, the following options become available on a drop-down menu:

  • Create next activity: creates the next activity to occur, which is configured in the Activity section that appears at the bottom of the automation rule form.
  • Send an email to the customer: sends an email to the customer(s) who fit the specified criteria of the automation rule.
  • Send an SMS Text Message to the customer: sends an SMS message to the customer(s) who fit the specified criteria of the automation rule.
  • Set Contract Health value: set the health value of the subscription contract.

If Send an email to the customer is selected in the Action To Do field, the following field appears:

  • Email Template: create (and edit) a new email template or select from a list of pre-configured email templates to send to the customer(s).

If Send an SMS Text Message to the customer is selected in the Action To Do field, the following field appears:

  • SMS Template: create (and edit) a new SMS template or select from a list of pre-configured SMS templates to send to the customer(s).

If Set Contract Health value is selected in the Action To Do field, the following field appears:

  • Health: designate the health of the subscription by choosing one of the following options: Neutral, Good, or Bad.

In the Trigger On field, decide whether the automated rule should be triggered on a Modification or Timed Condition.

 Note

A Trigger Now button appears at the top of the automation rule form only when a trigger has been configured for the rule.

 Warning

When the Trigger Now button is clicked, Odoo will trigger the action on all linked subscriptions, regardless of possible timed conditions.

 Note

Sending a SMS text message in Odoo requires In-App Purchase (IAP) credit or tokens. For more information on IAP, visit In-app purchases (IAP). For more information on sending SMS messages, visit SMS Marketing.

If Timed Condition is selected in the Trigger On field, the following fields appear:

  • Trigger Date: represents when the condition should be triggered. If left blank, the action is created upon subscription creation and updates.
  • Delay After Trigger: select a delayed amount of time (Minutes, Hours, Days, or Months) for Odoo to wait before triggering the configured action. If a negative number is entered, the “delay” will occur before the Trigger Date.
Activity section

If Create next activity is selected in the Action To Do field, an Activity section appears at the bottom of the Automation Rules form.

  • Activity Type: select an pre-configured activity type from the drop-down menu.
  • Title: enter a custom title for the chosen activity.
  • Note: leave a note for the employee to whom the activity is assigned.
  • Due Date In: enter an amount of days within which the activity should be completed.
  • Assign To: choose to assign the specified activity to either: Subscription Salesperson, Sales Team Leader, or Specific Users.

 Note

If Specific Users is selected as the Assign To option, a new Specific Users field appears beneath it, where a specific employee(s) can be chosen as the assignee(s) for the configured activity.

 See also

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Scheduled actions

Scheduled actions are pre-configured processes that allow users to automate certain tasks within a database, based on a designated schedule or number of occurrences. These tasks can include sending emails, generating invoices, data clean-up, and so much more.

In Odoo, some scheduled actions are active, by default, to ensure that certain functions are triggered automatically, however there are also many scheduled action options that appear in the database that are not activated by default.

In Odoo Subscriptions, there are two scheduled actions that initiate the billing process for active recurring subscriptions, as well as when billing should stop due to subscription expiration.

They are turned on, by default and can be deactivated at any time in order to manage subscriptions manually.

Access scheduled actions

 Important

In order to access scheduled actions, developer mode must be activated.

With developer mode activated, navigate to Settings app ‣ Technical ‣ Scheduled Actions.

Doing so reveals a dedicated Scheduled Actions dashboard. On this page, there is a complete list of scheduled actions for the entire database.

From here, enter Subscription in the search bar. Doing so provides three subscription-specific results. The following documentation focuses on the last two results in the list:

  • Sale Subscription: generate recurring invoices and payments
  • Sale Subscription: subscriptions expiration

Determine if a scheduled action is active by looking under the Active column, in the it’s corresponding row on the Scheduled Actions dashboard, for a ticked checkbox; if the checkbox is green with a check mark, the scheduled action is active.

If a scheduled action needs to be activated, click into the desired scheduled action from the list.

Then, from the scheduled action form, toggle the switch in the Active field to the right. Doing so turns the switch green, indicating that the scheduled action is now Active.

The ability to set up how often the scheduled action runs is also available on the scheduled action form, in the Execute Every field.

 Important

The scheduled action does not function correctly if the execution time is less than five minutes. This is a general rule for all scheduled actions.

For more information, read the Frequent Technical Questions documentation.

Generate recurring invoices and payments

In order for the Sale Subscription: generate recurring invoices and payments scheduled action to properly generate recurring invoices and payments on subscriptions, the Deferred Expense and Deferred Revenue accounts must be set up, in order for Odoo to process various invoices and payments related to subscriptions.

To set up Deferred Expense and Deferred Revenue accounts, navigate to Accounting app ‣ Configuration ‣ Settings. Both accounts can be configured in the Default Accounts section.

Once the correct accounts are entered in the Deferred Expense and Deferred Revenue drop-down menu fields, click Save in the upper-left corner.

Create invoice

Elements related to the Sale Subscription: generate recurring invoices and payments scheduled action can be found on confirmed subscription sales orders.

To examine these elements, open any confirmed sales order in the Subscriptions application to reveal the subscription sales order form.

On a confirmed subscription sales order form, focus on the Recurring Plan and Date of Next Invoice fields.

The scheduled action creates an invoice when today’s date is the same date as the Date of Next Invoice.

Odoo uses the information in the Recurring Plan field to update the next invoice date accordingly.

 Warning

If the product invoicing policy is set to Based on Delivered Quantities (Manual), and the delivered quantity is 0, Odoo does not create an invoice, and the customer is not charged.

Instead, the subscription is processed as a free recurring product, and is reflected as such in the chatter of the subscription sales order.

When this occurs, the following message appears: Automatic renewal succeeded. Free subscription. Next invoice:[date]. No email sent.

Once the invoice for the subscription sales order is created, the invoice can be viewed by clicking the Invoices smart button that appears at the top of the subscription sales order.

An email is sent to the customer notifying them of the recurring subscription charge, if there is a Payment Token on the account.

To check if there is a Payment Token, open the Other Info tab, and look at the Payment Token field, under the Subscription section.

If there is no Payment Token, the invoice is created, and sent to the customer. The payment must be registered manually in this case.

Closing invoices

The Sale Subscription: generate recurring invoices and payments scheduled action also has the ability to close a subscription, if the following conditions are met:

  • If the subscription has no Payment Token, create and post the invoice.
  • If the subscription has a Payment Token, try to charge.
    • If the charge is successful, create and post the invoice.
    • If the charge fails, send reminders periodically.
      • Close the subscription if it continues to fail for more than fourteen days.

Subscriptions expiration

The Sale Subscription: subscriptions expiration scheduled action checks for all other conditions that may cause a subscription to close automatically. If certain conditions are met, the scheduled action closes that subscription.

First, the Sale Subscription: subscriptions expiration scheduled action checks to see if the end date has passed, which is configured on the subscription sales order.

Then, the Sale Subscription: subscriptions expiration scheduled action checks if the invoice has not been paid within the payment terms deadline.

To access the invoices attached to a subscription, access the sales order for the subscription product, and click the Invoices smart button. Then, look at the Invoice Date column.

Unpaid subscriptions with an Invoice Date that are past the determined number of days in the Automatic Closing field of a Recurring Plan are automatically closed by the Sale Subscription: subscriptions expiration scheduled action.

For example, if the next invoice date is July 1st, and the Automatic Closing is set to ‘30 Days’, the scheduled action would close the subscription on August 1st.

 See also

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Subscription reports

The Odoo Subscriptions app provides a series of reporting pages to help companies analyze how subscriptions are performing.

On the Subscriptions Analysis reporting page, users can view specific data related to recurring subscriptions, quantity of subscriptions, in-progress or paused subscriptions, and more.

The Retention Analysis reporting page provides an organized table of subscription retention percentages over any period of time.

The MRR Breakdown reporting page clearly divides MRR and ARR metrics for subscriptions into various graphs, lists, and charts.

And the MRR Analysis reporting page offers a time-based collection of analytics showcasing how subscription MRR and ARR have changed over the course of any given period of time.

Reporting page elements

All subscriptions-based reporting pages can be accessed via the Reporting header menu in the Subscriptions app.

The following sections describe elements found on each reporting page.

Filters and Group By

Filters are used to narrow down metrics to show specific analytics, whereas groupings (via the Group By option) are used to gather the data from specific sections into groups for more organized analysis.

This section refers to both filters and groupings, as a combination of the two can be saved in the Favorites section.

To modify the results being shown on any reporting page, click the  (down arrow) icon to the right of the search bar. Doing so reveals a drop-down menu of detailed filter and grouping options.

If desired, a filter or grouping (or combination of filters and/or groupings) can be saved in the Favorites section of that drop-down menu. To do so, click the  (down arrow) icon beside Save current search, located beneath the Favorites section.

This reveals a field to assign a title to the favorite filter. Two options are also found beneath the title field: Default filter and Shared.

Ticking the checkbox beside Default filter makes the newly-favorited filter the default option for that reporting page.

Ticking the checkbox beside Shared makes the newly-favorited filter available to other users in the database.

 Note

The Default filter and Shared options are not required, and only one of these options can be selected at a time.

To save the filter, click Save in the Favorites section of the drop-down filter menu.

When clicked, that saved filter appears beneath the Favorites column of the drop-down filter menu, and a  (gold star) icon appears beside the favorite filter’s name in the search bar.

Views

On the Subscription Analysis, MRR Breakdown, and MRR Analysis reporting pages, three different view options are located in the upper-right corner.

 Note

There are no other view options available on the Retention Analysis reporting page.

The available view options, from left to right, are:

  • Graph
  • List
  • Pivot

Each view has its own series of related view-specific visual options.

Graph view

With the graph view selected, the following options appear between the search bar and visual representation of the data. These graph-specific options are located to the right of the Measures and Insert in Spreadsheet buttons.

The first three options, from left to right, represent different graph-related views. The remaining options represent different ways to organize and visualize that specific graph-related data.

From left to right, the specific graph-related view options are:

  •  Bar Chart: showcases the data in a bar chart format.
  •  Line Chart: showcases the data in a line chart format.
  •  Pie Chart: showcases the data in a pie chart format.

Each graph view option has its own series of specific visual options, which are represented by the available buttons that appear to the right of the selected graph-related view option.

When the  Bar Chart graph view is selected, the following visual options are available:

  •  Stacked: showcases the data in a stacked visual format.
  •  Descending: showcases the data in descending order.
  •  Ascending: showcases the data in ascending order.

When the Line Chart graph view is selected, the following visual options are available:

  •  Stacked: showcases the data in a stacked visual format.
  •  Cumulative: showcases the data in accumulated, increasing format.
  •  Descending: showcases the data in descending order.
  •  Ascending: showcases the data in ascending order.

When the Pie Chart graph view is selected, there are no additional visual options.

List view

With the list view selected, the subscription metrics being analyzed are displayed in a simple list, which can be fully customized by using any of the available filters or groupings in the drop-down filter menu (accessible via the  (down arrow) icon to the right of the search bar).

 Note

With list view selected, the Measures drop-down menu and Insert in Spreadsheet button are not available.

Pivot view

With the pivot view selected, the subscription metrics are displayed in a data table, which can be fully customized.

The pivot data table can be customized using the options available in the Measures drop-down menu, and/or the filter grouping options available in the filter drop-down menu (accessible via the  (down arrow) icon to the right of the search bar).

Three pivot-specific options are available, located to the right of the Measures drop-down menu and Insert in Spreadsheet button.

From left to right, those pivot-specific view options are:

  •  Flip axis: the x and y axis of the pivot data table flip.
  •  Expand all: all the available rows and columns of the pivot data table expand fully.
  •  Download .xlsx: the pivot data table is downloaded as an .xlsx file.

Measures

The graph and pivot reporting pages have their own metric-specific Measures drop-down menu of data-related options to choose from, located in the upper-left corner, above the visual representation of metrics.

When the Measures button is clicked, a series of selectable measures becomes available, via a drop-down menu. When any of the options are selected from the Measures drop-down menu, the chosen metrics related to that specific measure appear on the reporting page.

 Note

For more information on the different measures that can be utilized on each reporting page, refer to the specific reporting page breakdowns found below in this documentation.

Insert in spreadsheet

Beside the Measures drop-down menu, there is an Insert in Spreadsheet button.

When clicked, the ability to add the configured data currently being showcased on the reporting page into a new or pre-existing spreadsheet or dashboard becomes available, via a pop-up window.

Select the desired option from this pop-up window, then click Confirm.

Reporting pages

In the Odoo Subscriptions app, there are four different reporting pages available.

To access, analyze, and customize various reports related to subscriptions, navigate to Subscriptions app, and click the Reporting drop-down menu in the header to reveal the following reporting pages:

  • Subscriptions
  • Retention
  • MRR Breakdown
  • MRR Timeline

Clicking any of those options reveals a separate, fully-customizable reporting page focusing on that particular aspect of subscription data.

The following is a breakdown of those four specific reporting pages.

Subscriptions analysis

To access the Subscriptions Analysis reporting page, navigate to Subscriptions app ‣ Reporting ‣ Subscriptions.

By default, the Bar Chart option, in the Graph view, is selected on the Subscriptions Analysis reporting page.

The following filters are also present in the search bar: In Progress or Paused and Recurring.

When the Measures button on the Subscriptions Analysis page is clicked, a series of metric-related options becomes available as a drop-down menu.

The metric-related options in the Measures drop-down menu on the Subscriptions Analysis page are:

  • Monthly Recurring
  • Quantity
  • Recurring Revenue
  • Untaxed Total
  • Yearly Recurring
  • Count

 Note

The Monthly Recurring measure option is selected by default.

When any of those available measures are clicked, Odoo displays that selected data on the reporting page for further analysis.

Retention analysis

To access the Retention Analysis reporting page, navigate to Subscriptions app ‣ Reporting ‣ Retention.

The Retention Analysis reporting page differs from the other Subscriptions app reporting pages, in that it does not provide any additional view options. The data on this page is only presented in a customizable data chart.

When the Measures drop-down menu on the Retention Analysis reporting page is clicked, a series of metric-related options become available.

The metric-related options in the Measures drop-down menu on the Retention Analysis reporting page are:

  • Amount to invoice
  • Margin
  • Margin (%)
  • Prepayment percentage
  • Shipping Weight
  • Unpaid Amount
  • Count

 Note

The Count measure option is selected by default.

To the right of the Measures drop-down menu on the Retention Analysis page is an additional drop-down menu containing different time periods. The default time period is Month.

When clicked, a drop-down menu of various time period options become available.

The time period options are:

  • Day
  • Week
  • Month
  • Year

When a time period option from this drop-down menu is selected, the Retention Analysis reporting page showcases data for the configured measures and filters within that time period.

To the right of the time period drop-down menu, there is a download button, which allows the user to download the data presented on the Retention Analysis page as an Excel file.

MRR breakdown

To access the MRR Breakdown reporting page, navigate to Subscriptions app ‣ Reporting ‣ MRR Breakdown.

By default, the data displayed on the MRR Breakdown reporting page is in graph view, with the Bar Chart option and Stacked option selected.

A default filter is also available in the search bar for Event Date: Month > Event Type.

When the Measures drop-down menu on the MRR Breakdown reporting page is clicked, a series of metric-related options become available.

The metric-related options in the Measures drop-down menu on the MRR Breakdown reporting page are:

  • Active Subscriptions Change
  • ARR Change
  • MRR Change
  • Count

 Note

The MRR Change measure option is selected by default.

 Tip

To make a different measure option the default, first, select the desired measure from the Measures drop-down menu. Then, click the  (down arrow) icon in the search bar to open the mega menu of filters and groupings.

In the Favorites column, click the  (down arrow) icon beside Save current search to reveal a field, where a title can be entered, along with two checkboxes:Default filter and Shared.

Tick the checkbox for Default filter, and click Save.

That newly-chosen measure option is now the default option that appears when this reporting page is accessed.

MRR analysis

To access the MRR Analysis reporting page, navigate to Subscriptions app ‣ Reporting ‣ MRR Timeline.

By default, the data displayed on the MRR Analysis reporting page is in graph view, with the Line Chart option, Stacked option, and Cumulative option selected.

A default filter is also found in the search bar for Event Date: Month.

When the Measures drop-down menu on the MRR Analysis reporting page is clicked, a series of metric-related options become available.

The metric-related options in the Measures drop-down menu on the MRR Analysis reporting page are:

  • Active Subscriptions Change
  • ARR Change
  • MRR Change
  • Count

 Note

The MRR Change measure option is selected by default.

 See also

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Wire transfer

The wire transfer payment method allows for payment instructions to be shared with a customer after purchasing a product. With a subscription, these payment instructions are shared every time the payment is renewed.

 Note

The wire transfer payment method requires minimal setup, but in most cases, it is inefficient compared to other online payment providers. It is recommended to use another payment provider with subscriptions, due to wire transfers requiring manual confirmation for each payment.

Configuration

To use the wire transfer payment method, first ensure the Wire Transfer payment method is enabled.

To do so, begin by navigating to the Payment Providers page in either the AccountingWebsite, or Sales apps.

For example, navigate to Accounting app ‣ Configuration ‣ Online Payments: Payment Providers, then click the Wire Transfer card.

 Tip

If the Accounting app is not installed, the Payment Providers page can also be reached by navigating to Website app ‣ Configuration ‣ eCommerce: Payment Providers, or Sales app ‣ Configuration ‣ Online Payments: Payment Providers.

Next, set the State to Enabled to enable wire transfers. Use the drop-down menus next to the Company and Website fields to set where wire transfers can be used.

The options in the Configuration tab can be used to customize the wire transfer. Optionally tick the checkbox next to Enable QR Codes to enable the use of QR codes when paying by wire transfer, if desired.

Use the drop-down menu next to the Communication field to select the communication type used on sales orders. Choose Based on Document Reference to use the sales order (or invoice number), or Based on Customer ID to use the customer identifier. With either method selected, communication is given to the customer, once they choose the wire transfer payment method.

The configuration options listed under the Availability section are used to set payment restrictions, and are optional. Use the Maximum Amount field to set a maximum payment value, the Currencies field to restrict any currencies from being used for payment, and the Countries field to restrict payment from any particular countries, if desired.

In the Messages tab, use the Pending Message field to add a message containing wire transfer information. This message is displayed to the customer after confirming their order, as well as if the order is marked as pending after the payment is processed.

If a bank account has already been defined, the account number is automatically added to the default message generated by Odoo. A bank account can also be added afterwards, and the message updates with the appropriate bank information by clicking  Reload pending message.

Once all necessary configuration settings are complete, the  Unpublished smart button located at the top of the page automatically changes to  Published to show the wire transfer payment option is now visible to customers. Only keep the payment method published if payments are ready to be received.

 Tip

It is possible to keep the payment method enabled, but not visible to customers, until payments are ready to be received. To do that, set the smart button to  Unpublished after setting the State to Enabled.

Test mode

The wire transfer payment method can be tested before it is accessed by customers by selecting the Test Mode option in the State field on the form. Upon selecting Test Mode, an orange Test mode banner appears in the upper-right corner of the form.

Next, enter the credentials for a bank account with accessible transactions in the Messages tab. To re-enable normal function after testing, change the State setting to Enabled.

 Note

By default, the payment provider remains Unpublished in Test Mode, so it is not visible to visitors.

 Warning

It is recommended to use the Test Mode setting on a duplicate (or test) database to avoid potential issues with invoice numbering.

Pay by wire transfer

With wire transfers enabled and published, customers see wire transfers as an available payment method at checkout when purchasing a product.

When this method is selected by a customer, they are shown the Pending Message set in the wire transfer configuration page, after confirming their purchase. Once the purchase is confirmed, a sales order is created.

 Important

Online orders remain in the Quotation sent (i.e. unpaid order) stage until both the payment is received, and the order is confirmed manually, using the Confirm button on the sales order.

To begin processing the payment, navigate to Sales app ‣ Orders ‣ Orders, and click the corresponding sales order. Ensure the sales order is correct, then click Confirm to confirm the sales order.

Next, click the new Create Invoice button, then choose Regular invoice, and click Create Draft Invoice. A draft of the invoice appears. Click Confirm to validate the invoice.

To send this invoice to the customer, click the Send & Print button. A Send pop-up window appears, with an email template configured, and a PDF invoice attached.

Ensure the information is correct, then click Send & Print. The pop-up window disappears, and the Send & Print button turns gray to show the invoice has been sent.

 Tip

The default template for sending an invoice can be modified by navigating to Settings app ‣ Companies ‣ Email Templates ‣ Review All Templates ‣ Invoice: Sending.

Next, click the Register payment button on the invoice page. A pop-up window titled, Register Payment, appears with options for selecting the type of payment. In the Journal field, select Bank from the drop-down menu. Next, set the Payment Method to Manual. Ensure the Amount and Payment Date are correct, then click the Create Payment button.

The customer invoice is revealed with a green In Payment banner in the upper-right corner. At this point, the flow is now complete.

 Note

If payment has been received before sending the invoice, such as in cash, the payment can still be registered in Odoo by clicking the Register Payment button, and creating the payment before clicking Send & Print. Now, when an invoice is sent using the Send & Print button, a new line is automatically added to the invoice message, stating the invoice is already paid.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community


 docs

Try Odoo for FREE

EN 

Odoo 18 

Rental

The Odoo Rental application provides comprehensive solutions to configure and manage rentals.

Send quotations, confirm orders, schedule rentals, register products when they are picked up and returned, and invoice customers from this single platform.

 See also

Dashboard

Upon opening the Rental application, the Rental Orders dashboard is revealed.

In the default kanban view, all rentals are visible. Each rental card displays the customer name, the price of the rental, the related sales order number, along with the status of the rental.

 Note

Rental kanban cards that do not display a rental status means those rentals have confirmed quotations, but have not been picked up yet.

On the left sidebar, the Rental Status for each rental can be found. Beneath that, the Invoice Status of the rentals is accessible. Clicking any option in the left sidebar filters the displayed rentals on the dashboard.

Settings

To configure additional rental delay costs, availability of rental items, or minimum time of rental, navigate to Rental app ‣ Configuration ‣ Settings.

In the Rental section, there are options to configure Default Delay Costs and Default Padding Time. There is also the option to activate Rental Transfers and Digital Documents.

  • Default Delay Costs are additional costs for late returns.
  • Default Padding Time represents the minimum amount of time between two rentals.
  • Rental Transfers means stock deliveries and receipts can be used for rental orders.
  • Digital Documents allows users to upload documents for customers to sign prior to
    confirming their rental.

In the Rent Online section, there are options to configure a Minimal Rental Duration and designate Unavailability days, or days during which pickup and return are not possible.

Rental products

To view all products that can rented in the database, navigate to Rentals app ‣ Products. By default, the Can be Rented search filter appears in the search bar.

Each product kanban card displays that product’s name, rental price, and product image (if applicable).

Rental pricing

To adjust the rental pricing on a product, go to the Products page in the Rental app, then select the desired product or click New to create a new product from scratch.

On the product form, ensure the Can be Rented checkbox is ticked. Then, open the Rental prices tab.

 Note

If creating a rental product outside of the Rental app, just ensure the Can be Rented checkbox is ticked on the product form. By default, this checkbox is ticked whenever a product is created directly in the Rental application.

Pricing

Under the Pricing section of the Rental prices tab, designate custom rental prices and rental periods for the product.

To add pricing for a rental, click Add a price. Then, choose a pricing period (the unit of duration of the rental) in the Period column, or create a new pricing period by typing in the name and clicking Create.

Next, decide whether or not to apply this custom rental price to a specific Pricelist.

Lastly, enter the desired Price for that specific Period.

 Note

There is no limit to how many pricing lines can be added. Multiple pricing options for rental products are typically used to give discounts for customers who agree to longer rental durations.

To delete any rental pricing option, click the 🗑️ (trash) icon, and that row is deleted.

Reservations

Under the Reservations section of the Rental prices tab, there is the option to configure additional fines for any Extra Hour or Extra Day that the customer takes to return a rental.

There is also the option to set a Security Time, expressed in hours, to make the rental product temporarily unavailable between two rental orders. Such a feature may prove useful if maintenance or cleaning is required between rentals.

Price computing

Odoo always uses two rules to compute the price of a product when a rental order is created:

  1. Only one price line is used.
  2. The cheapest line is selected.

 Exercise

Consider the following rental pricing configuration for a product:

  • 1 day: $100
  • 3 days: $250
  • 1 week: $500

A customer wants to rent this product for eight days. What price will they pay?

After an order is created, Odoo selects the second line as this is the cheapest option. The customer has to pay three times ‘3 days’ to cover the rental’s eight days, for a total of $750.

Rental orders

To create a rental order in the Rental app, navigate to Rental app ‣ Orders ‣ Orders, and click New. Doing so reveals a blank rental order form to be filled in accordingly.

Start by adding a Customer, then configure the desired duration of the rental in the Rental period field.

To adjust the rental duration, click the first date in the Rental period field, and select the range of dates to represent the rental duration from the pop-up calendar form that appears.

Once complete, click Apply in the calendar pop-up form. Following that, the pop-up form disappears, and the designated time period of the rental is represented in the Duration field.

Next, add a rental product in the Order Lines tab, by clicking Add a product, and selecting the desired rental product to add to the form.

 Note

If a rental product is added before the Rental period field has been properly configured, the user can still adjust the Rental period field accordingly.

Simply select the desired range of dates to represent the duration of the rental, then click Update Rental Prices in the Duration field.

Doing so reveals a Confirmation pop-up window. If everything is correct, click Ok, and Odoo recalculates the rental price accordingly.

Once all the information has been entered correctly on the rental order form, click the Send by Email button to send the quotation to the customer, or click the Confirm button to confirm the order.

Customer signature

Upon confirming a rental order, the Sign Documents button appears. This gives the ability to request the customer sign a rental agreement, outlining the arrangement between the company and customer, before they pick up the rental product(s).

Such documents can ensure everything is returned on-time and in its original condition.

 Important

The Sign Documents button/option only appears if the Digital Documents feature has been activated in the Rental application settings. To do so, navigate to Rental app ‣ Configuration ‣ Settings, activate Digital Documents, and click Save.

 Note

This feature also requires the Sign app. If necessary, Odoo automatically installs it after activating the Digital Documents setting.

To request a customer signature on a rental agreement, select a confirmed rental order, and click the Sign Documents button to reveal a Sign Documents pop-up window.

From here, select the desired document from the Document Template field. Then, click Sign Document. Doing so reveals a New Signature Request pop-up window.

Upon confirming the information in the New Signature Request pop-up form, click Sign Now to initiate the signing process.

A separate page is then revealed, showcasing the document to be signed, which is accessible to the customer via the customer portal.

Odoo guides the customer through the signing process with clear, clickable indicators, and allows them to create electronic signatures to quickly complete the form.

Once the document has been signed and completed, click the Validate & Send Completed Document button at the bottom of the document.

Upon clicking the Validate & Send Completed Document button, Odoo presents the option to download the signed document for record-keeping purposes, if necessary.

 See also

Odoo Tutorials: Sign

Pickup products

When a customer picks up the product(s), navigate to the appropriate rental order, click the Pickup button, and then click Validate in the Validate a pickup pop-up form that appears.

Doing so places a Picked-up status banner on the rental order.

Return products

When a customer returns the product(s), navigate to the appropriate rental order, click the Return button, and validate the return by clicking Validate in the Validate a return pop-up form that appears.

Doing so places a Returned status banner on the rental order.

Print pickup and return receipts

Pickup and return receipts can be printed for customers when they pick up and/or return rental products.

To print pickup and/or return receipts, navigate to the appropriate rental order, click the ⚙️ (gear) icon to reveal a drop-down menu.

From this drop-down menu, hover over the Print option to reveal a sub-menu. Then select Pickup and Return Receipt.

Odoo generates and downloads a PDF, detailing all information about the current status of the rented item(s).

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Members

The Members application is where all operations related to memberships can be configured and managed. The Members app integrates with the Sales and Accounting applications to sell and invoice memberships directly to customers.

Membership products

To create a new membership product, navigate to Members app ‣ Configuration ‣ Membership Products, and click New to open a blank product record.

Complete the blank form with the necessary information, including the Membership Duration.

 Note

Membership products require a start and end date, as they are used to determine membership status. Membership products can be sold before their active start date.

Membership products can be added to a sales order, and invoiced as regular products or subscriptions.

Activate a membership

To activate a membership from the Contacts application, navigate to Contacts app, and click on a contact to open that specific contact’s detail form.

From the resulting contact form, open the Membership tab, and click Buy Membership.

On the Join Membership pop-up window that appears, select a Membership from the drop-down menu. Then, configure a Member Price.

Click Invoice Membership when both fields are filled in. Doing so reveals a Membership Invoices page, wherein invoices can be confirmed and completed.

Alternatively, to offer a free membership, tick the Free Member checkbox, in the Membership tab of a contact form.

Membership status

The Current Membership Status is listed on the Membership tab of each contact record:

  • Non Member: a partner who has not applied for membership.
  • Cancelled Member: a member who has cancelled their membership.
  • Old Member: a member whose membership end date has passed.
  • Waiting Member: a member who has applied for membership, but whose invoice has not yet been created.
  • Invoiced Member: a member whose invoice has been created, but has not been paid.
  • Paid Member: a member who has paid the membership fee.

Publish members directory

To publish a list of active members on the website, the Online Members Directory application must first be installed. After installing the module, add the /members page to the website’s menu by editing the website menu.

Publish individual members

Return to CRM app ‣ Sales ‣ Customers, and click the Kanban card for a member. From the resulting customer form that appears, click the Go to Website smart button at the top of the page to open the member’s webpage.

Click the  Edit button to reveal a sidebar of editing tools. After making any necessary changes to the page, click Save. At the top of the page, slide the Unpublished toggle to the active, Published position.

Repeat these steps for all desired members.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Members analysis

The Members Analysis report provides a detailed overview of all memberships sold and managed within the Members application.

To access the Memberships Analysis report, navigate to Members app ‣ Reporting.

Navigate the report

The default Members Analysis report displays a bar chart, measuring the Quantity of memberships against the amount of Revenue Done. The data is grouped by the assigned salesperson, then by the month the membership begins.

Additional Group By options include the following:

  • Salesperson: the internal user in charge of the contact. This information is managed in the Salesperson field on the Sales & Purchase tab on the contact’s record.
  • Associated Partner: the contact listed as the Associated Member on the Membership tab on the contact’s record.
  • Membership Product: the type of membership assigned to a contact. This includes both purchased memberships and free memberships.
  • Current Membership State: the status of the membership.
  • Company: the company the membership is purchased through. This option only appears in multi-company databases.
  • Month: the month the membership began.

View results

Click the  (graph) icon to change to graph view. Then, click the corresponding icon at the top of the report to switch to a  (bar chart),  (line chart), or  (pie chart).

Click the  (pivot) icon to change to the pivot view.

 Tip

The pivot view can be used to view and analyze data in a more in-depth manner. Multiple measures can be selected, and data can be viewed by month, and by opportunity stage.

 See also

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Website

Odoo Website offers a user-friendly platform for creating and managing your website. It includes various tools and features to help you design, publish, and maintain web pages without needing advanced technical skills. You can easily customize layouts, add multimedia content, and integrate with other Odoo apps to expand your website’s functionality.

Web design

Design your website using building blocks and website themes.

Pages

Manage website pages, menus, and search engine optimization.

Configuration

Configure domain names, address autocompletion, Google Search Console, cookies bar, translations, multiple websites, form spam protection, content delivery network (CDN).

Reporting

Monitor your website’s traffic with website analytics and set up link trackers.

Mail groups

Configure mail groups to allow website visitors to participate in public discussions via email.

 Note

Odoo offers a free custom domain name to all Odoo Online databases for one year. Visitors can then access your website with an address such as www.example.com rather than the default example.odoo.com.

 See also

 Edit on GitHub

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Building blocks

Building blocks let you design your website quickly by dragging and dropping them onto your web pages. Four types of building blocks are available depending on their use: StructureFeaturesDynamic Content, and Inner Content.

 See also

Odoo Tutorial: Design your first webpage

Adding a building block

To add a building block to your website page, click Edit, select the desired building block, and drag and drop it to your page. You can add as many blocks as needed.

To edit the content of a building block, click on it and go to the Customize tab, where available features depend on the block you selected.

Color preset and background

You can customize and apply color presets to building blocks. To proceed, select a building block, go to the Customize tab, click the Background button, and select a Preset.

When you modify a color preset, all elements using it are automatically updated to match the new configuration.

 See also

Website themes

Layout: grid and columns

You can choose between two layout styles for most building blocks: grid or columns (cols). To change the default layout, go to the Customize tab. Under the Banner section, select Grid or Cols as the Layout.

Grid

The Grid layout allows you to reposition and resize elements, such as images or text, by dragging and dropping them.

 Tip

Position images behind the text by using the above/below icons.

Cols

Choosing the Cols layout allows you to determine the number of elements per line within the block. To do so, select the block to modify, click the Cols Layout, and adjust the number.

By default, on mobile devices, one element is visible per line to ensure that content remains easily readable and accessible on smaller screens. To adjust the value, click the  (mobile icon) at the top of the website editor and adapt the number of columns.

Duplicating a building block

You can duplicate a building block by clicking on the duplicate icon. Once duplicated, the new block appears on your website beneath the original one.

Reordering a building block

To reorder a building block, select it and click the up arrow to move it before the previous block or click the down arrow to move it after.

You can also use the drag-and-drop icon to move a block manually.

Saving a custom building block

You can save a customized building block and reuse it elsewhere. To do so, select it, navigate to the Customize tab, and click the  (floppy disk) icon to save it.

Saved building blocks are available in the Custom section of the Blocks tab. Click the  (pen) icon to edit their name.

Visibility

Visibility on desktop/mobile

You can hide specific elements depending on the visitor’s device. To do so, select the element to hide, and in the Customize tab, scroll down to Visibility, and click the Show/Hide on Mobile or the Show/Hide on Desktop icon.

 Tip

Click the  (mobile) icon at the top of the configurator to preview how your website would look on a mobile device.

Conditional visibility

You can also hide or show building blocks using other conditions. To do so, select an element, go to Visibility, click No condition, and select Conditionally instead. Then, configure the condition(s) to apply by selecting Visible for or Hidden for and which Records will be impacted.

 See also

Link Tracker

Invisible elements

Depending on the visibility settings, some elements can become hidden from your current view. To make a building block visible again, go to the Invisible Elements section at the bottom of the configurator and select a building block.

Mobile view customization

You can customize building block elements for the mobile view without impacting the desktop view. To do so, open the website editor, click the  (mobile) icon at the top, and select the building block element. Then, you can:

  • reorder the elements by clicking the   (left/right arrow) icons;
  • edit the Cols and Visibility features in the Customize tab of the website editor.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community


 docs

Try Odoo for FREE

EN 

Odoo 18 

Structure

The website configurator provides a range of Structure building blocks to design your website’s layout, including headings, images, and text.

Below are presented two types of structure blocks: Banner and Masonry.

 Note

To add a building block, click Edit, select the desired building block under the Blocks tab, and drag and drop it onto the page. To access its settings, click it and go to the Customize tab, where the available options depend on the type of block selected.

Banner

The Banner block combines a title, text, images, and a call to action button, making it suitable for placement at the top of a website.

Call to action

The call to action button encourages visitors to take a specific action, for example, consulting your shop, downloading a file, or making an appointment.

To change the button’s link, select it and click the Edit Link icon. Additional customization options are available in the Inline Text section.

Masonry

The Masonry block offers a range of templates that associate image and text bricks. To change the default template, go to the Customize tab, click Template and select one.

 Tip

The Masonry block allows you to add text on top of images. To do so, go to the Customize tab, scroll to Add Elements, and click Text.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Features

The Features building blocks allow you to list multiple items next to each other.

The Table of Content and the Call to Action blocks are presented below.

 Note

To add a building block, click Edit, select the desired building block under the Blocks tab, and drag and drop it onto the page. To access its settings, click it and go to the Customize tab, where the available options depend on the type of block selected.

Table of content

The Table of Content block is used to list many different items grouped under several headings. A clickable index is available to navigate quickly between the different categories.

Call to action

The Call to Action block is used to prompt visitors to take a specific action, such as signing up for a newsletter or contacting you.

To change the button’s link, select it, go to the Customize tab’s Inline Text section and replace /contactus with another URL.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Dynamic content

The Dynamic Content building blocks, such as FormProductsEmbed Code, or Blog Posts, help you create interactive and visually appealing layouts for your web pages.

 Note

To add a building block, click Edit, select the desired building block under the Blocks tab, and drag and drop it onto the page. To access its settings, click it and go to the Customize tab, where the available options depend on the type of block selected.

Form

The Form block is used to collect information from website visitors and create records in your database.

Action

By default, submitting the form sends you an email containing what the visitor entered. Depending on the apps installed on your database, new actions that can automatically create records become available:

  • Apply for a Job (Recruitment)
  • Create a Customer (eCommerce)
  • Create a Ticket (Helpdesk)
  • Create an Opportunity (CRM)
  • Subscribe to Newsletter (Email Marketing)
  • Create a Task (Project)

Select another action with the Action field found under the Customize tab’s Form section.

By default, actions redirect visitors to a thank you page after submitting the form. Use the URL field to change where they are redirected. It is also possible to let visitors stay on the form’s page by selecting Nothing or Show Message under the On Success field.

Fields

To add a new field to the form, click the + Field button found next to the Customize tab’s Form or Field section. By default, new fields are text fields. To change the type, use the Type field and select an option under the Custom Field heading.

Click here to preview all field types

It is also possible to select an Existing Field from a database and use the data it contains. The fields available depend on the selected action.

 Tip

Property fields added to the database can also be used.

Products

The Products block is available after installing the eCommerce app. It is used to display a selection of products sold on your website.

By default, the block displays the Newest Products. To change which products are shown, go to the Customize tab’s Products section and select as Filter the Recently Sold Products or Recently Viewed Products option.

In addition, it is possible to display products from a single category only by selecting one with the Category field.

Embed code

Embedding code allows you to integrate content from third-party services into a page, such as videos from YouTube, maps from Google Maps, social media posts from Instagram, etc.

After adding the block to a page, click the Edit button found under the Customize tab’s Embed Code section and enter the code, replacing the code used to show the block’s instructions.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Inner content

The Inner content building blocks allow you to add elements such as videos, images, and social media buttons, into pre-existing blocks.

 Note

To add a building block, click Edit, select the desired building block under the Blocks tab, and drag and drop it onto the page. To access its settings, click it and go to the Customize tab, where the available options depend on the type of block selected.

Social media

The Social Media block inserts clickable buttons leading to your social network’s URL. By default, the buttons display the icons of seven major social networks. You can click Add New Social Network to create a new button and switch the buttons next to a URL to turn them on or off.

 Note

You cannot edit the default icons but can edit the ones you added by clicking Add New Social Network. To do so, select the icon, then click the Replace button found under the Customize tab’s Icon section, and either select one of the available icons or click the Images tab and upload an image or add its URL.

 Edit on GitHub

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Website themes

Odoo offers numerous themes to shape your website’s style, including its colors, fonts, and layouts. When setting up your site using the Odoo website configurator, you are prompted to select a theme that aligns with your desired aesthetic. If you wish to modify the theme options later, navigate to the website builder by clicking the Edit button and access the Theme tab. The following sections are available:

  • Colors: The website builder relies on palettes composed of five colors: two Main colors and three Light & Dark colors.
    You can also customize the Color Presets that have been defined automatically by the website builder according to the five colors defined above. Click the arrow next to a color preset to update it. Each color preset contains colors for your building block’s Background, Text, Headings, Links, Primary Buttons, and Secondary Buttons.
    To apply a color preset to a building block of your site, select it, go to the Customize tab, click the Background button, and select the preset.
     Note
    Changing a color preset automatically updates the colors of both the default preset and the building blocks where the preset is used.
  • Website: From this section, you can Switch Theme, Add a Language, select the Page Layout, and customize the Background by uploading your own image.
  • Paragraph: Customize the formatting of your website’s paragraph <p> elements.
     Tip
    The Font Family field contains fonts that are hosted and served by Google servers. To add another font, click Add a Google Font, and, in the popup window, click fonts.google.com.
    Select a font you like, copy the address of the page, paste it in the Google Font address field, then click Save and Reload. The new font applies to your entire website.
  • Headings: Customize the formatting of your headings.
  • Button: Customize the Primary Style and Secondary Style buttons.
  • Link: To edit the style of the hyperlinks available on your website.
  • Input Fields: Customize fields where you can enter data, e.g., a search bar or a form.
  • Advanced: You can hide the header bar of your website using the Show Header button, inject head and body code, enter your Google Map Custom Key, change the colors of the Success, Info, Warning, and Error pop up messages by clicking the related Status Colors buttons, and customize the Grays elements of your site.
     Example
    • The Status Color of the Success messages is set to green. 
    • Customizing the gray elements of your site.

 Edit on GitHub

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Pages

Odoo allows you to create pages for your website and customize their content and appearance to your needs.

Static pages have stable content, such as the homepage. You can manually create new ones, define their URLs, adapt their properties, etc. Dynamic pages, on the other hand, are generated dynamically. All pages generated automatically by Odoo, for example, when you install an app or module (e.g., /shop or /blog) or publish a new product or blog post, are dynamic pages and are therefore managed differently.

Page creation

Website pages can be created from the frontend and the backend. To create a new website page, proceed as follows:

    • Either open the Website app, click + New in the top-right corner, then select Page;
    • Or go to Website ‣ Site ‣ Pages and click New.
  1. Enter a Page Title; this title is used in the menu and the page’s URL.
  2. Click Create.
  3. Customize the page’s content and appearance using the website builder, then click Save.
  4. Publish the page.

 Note

Disable Add to menu if the page should not appear in the menu.

Page management

Publishing/unpublishing pages

Pages need to be published to make them accessible to website visitors. To publish or unpublish a page, access it and toggle the switch in the upper-right corner from Unpublished to Published, or vice versa.

 Note

It is also possible to:

  • publish/unpublish a page from the page properties, where you can define a publishing date and/or restrict the page’s visibility if needed;
  • publish/unpublish several pages at once: go to Website ‣ Site ‣ Pages, select the pages, then click Action and select Publish or Unpublish.

Homepage

When you create a website, Odoo creates a dedicated Home page by default, but you can define any website page as your homepage. To do so, go to Website ‣ Configuration ‣ Settings, then, in the Website info section, define the URL of the desired page in the field Homepage URL (e.g., /shop).

Alternatively, you can define any static page as your homepage by going to Website ‣ Site ‣ Properties. Select the Publish tab and enable Use as Homepage.

Page properties

To modify a static page’s properties, access the page you wish to modify, then go to Site ‣ Properties.

The Name tab allows you to:

  • rename the page using the Page Name field;
  • modify the Page URL. In this case, you can redirect the old URL to the new one if needed. To do so, enable Redirect Old URL, then select the Type of redirection:
    • 301 Moved permanently: to redirect the page permanently;
    • 302 Moved temporarily: to redirect the page temporarily.

You can further adapt the page’s properties in the Publish tab:

  • Show in Top Menu: Disable if you don’t want the page to appear in the menu;
  • Use as Homepage: Enable if you want the page to be the homepage of your website;
  • Indexed: Disable if you don’t want the page to be shown in search engine results;
  • Published: Enable to publish the page;
  • Publishing Date: To publish the page at a specific moment, select the date, click the clock icon to set the time, then click the green check mark to validate your selection.
  • Visibility: Select who can access the page:
    • All
    • Signed In
    • Restricted Group: Select the user access group(s) in the Authorized group field.
    • With Password: Enter the password in the Password field.

 Tip

Some of these properties can also be modified from Website ‣ Site ‣ Pages.

Duplicating pages

To duplicate a page, access the page, then go to Site ‣ Properties and click Duplicate Page. Enter a Page Name, then click OK. By default, the new page is added after the duplicated page in the menu, but you can remove it from the menu or change its position using the menu editor.

Deleting pages

To delete a page, proceed as follows:

  1. Access the page, then go to Site ‣ Properties and click Delete Page.
  2. A pop-up window appears on the screen with all links referring to the page you want to delete, organized by category. To ensure website visitors don’t land on a 404 error page, you must update all the links on your website referring to the page. To do so, expand a category, then click on a link to open it in a new window. Alternatively, you can set up a redirection for the deleted page.
  3. Once you have updated the links (or set up a redirection), select the I am sure about this check box, then click OK.

URL redirect mapping

URL redirect mapping consists in sending visitors and search engines to a URL different from the one they initially requested. This technique is used, for example, to prevent broken links when you delete a pagemodify its URL, or migrate your site from another platform to an Odoo domain. It can also be used to improve Search Engine Optimization (SEO).

To access existing URL redirections and create new ones, activate the developer mode and go to Website ‣ Configuration ‣ Redirects.

 Note

To create a new redirection, click the New button, then fill in the fields:

  • Name: Enter a name to identify the redirect.
  • Action: Select the type of redirection:
    • 404 Not found: visitors are redirected to a 404 error page when they try to access an unpublished or deleted page.
    • 301 Moved Permanently: for permanent redirections of unpublished or deleted static pages. The new URL is shown in search engine results, and the redirect is cached by browsers.
    • 302 Moved Temporarily: for short-term redirections, for example, if you are redesigning or updating a page. The new URL is neither cached by browsers nor shown in search engine results.
    • 308 Redirect/Rewrite: for permanent redirections of existing dynamic pages. The URL is renamed; the new name is shown in search engine results and is cached by browsers. Use this redirect type to rename a dynamic page, for example, if you wish to rename /shop into /market.
  • URL from: Enter the URL to be redirected (e.g., /about-the-company) or search for the desired dynamic page and select it from the list.
  • URL to: For 301, 302, and 308 redirects, enter the URL to be redirected to. If you want to redirect to an external URL, include the protocol (e.g., https://).
  • Website: Select a specific website.
  • Sequence: To define the order in which redirections are performed, e.g., in the case of redirect chains (i.e., a series of redirects where one URL is redirected to another one, which is itself further redirected to another URL).

Toggle the Activate switch to deactivate the redirection.

 Important

404, 301, and 302 redirections are meant to migrate traffic from unpublished or deleted pages to new pages, while the 308 redirect is used for permanent redirections of existing pages.

 See also

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Menus

Menus are used to organize your website’s content and help visitors navigate through your web pages effectively. User-friendly and well-structured website menus also play a crucial role in improving search engine rankings.

Odoo allows you to customize the content and appearance of your website’s menu to your needs.

Menu editor

The menu editor allows you to edit your website’s menu and add regular menu items and mega menus.

To edit your website’s menu, go to Website ‣ Site ‣ Menu Editor. From there, you can:

  • rename a menu item or change its URL using the Edit Menu Item icon;
  • delete a menu item using the Delete Menu Item icon;
  • move a menu item by dragging and dropping it to the desired place in the menu;
  • create a regular drop-down menu by dragging and dropping the sub-menu items to the right, underneath their parent menu.

 Note

You can also access the menu editor by clicking Edit, selecting any menu item and clicking the Edit Menu icon.

Adding regular menu items

By default, pages are added to the menu as regular menu items when they are created. You can also add regular menu items from the menu editor by clicking Add Menu Item. Enter the Name and URL of the related page in the pop-up window that appears on the screen and click OK.

 Tip

In the URL or Email field, you can type / to search for a page on your website or # to search for an existing custom anchor.

Adding mega menus

Mega menus are similar to drop-down menus, but instead of a simple list of sub-menus, they display a panel divided into groups of navigation options. This makes them suitable for websites with large amounts of content, as they can help include all of your web pages in the menu while still making all menu items visible at once. Mega menus can also be structured more visually than regular drop-down menus, for example, through layout, typography, and icons.

To create a mega menu, go to Website ‣ Site ‣ Menu Editor and click Add Mega Menu Item. Enter the Name of the mega menu in the pop-up, click OK, then Save.

To adapt the options and layout of the mega menu, click it in the navigation bar, then click Edit. Mega menus are composed of building blocks, which means you can customize each component individually using inline formatting, as well as the options available in the Customize tab in the website builder. For example, you can:

  • edit the text directly in the building block;
  • edit a menu item’s URL by selecting the menu item, then clicking the Edit link button in the small preview pop-up. Type / to search for a page on your website, or # to search for an existing custom anchor.
  • move a menu item by dragging and dropping the related block to the desired position in the mega menu;
  • delete a menu item by deleting the related block.

 Tip

You can adapt the general layout of the mega menu by selecting the desired Template and Size in the Mega menu section in the Customize tab in the website builder.

Header and navigation bar appearance

To customize the appearance of your website’s menu, click Edit, then select the navigation bar or any menu item. You can then adapt the fields in the Header and Navbar sections in the Customize tab in the website builder.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Search Engine Optimization (SEO)

Search Engine Optimization, often abbreviated as SEO, is a digital marketing strategy to improve a website’s visibility and ranking in search engine results (e.g., in Google). It involves optimizing various elements on your website, including its content, social sharing, URLs, images, and page speed.

 Note

  • Odoo provides several modules to help you build your website content, such as eCommerceBlogeLearning, and Forum.
  • All Odoo themes rely on the CSS Framework Bootstrap to render efficiently according to the device: desktop, tablet, or mobile, which positively impacts ranking in search engines.

Content optimization

To optimize a webpage’s SEO, access the page, then go to Website ‣ Site ‣ Optimize SEO.

Meta tags

Meta tags are HTML elements that provide information about a webpage to search engines and website visitors. They play a crucial role in SEO by helping search engines understand the content and context of a webpage and attract visitors with appealing content. There are two types of meta tags in Odoo:

  • Title tags specify a webpage’s title and are displayed as a clickable link in search engine results. They should be concise, descriptive, and relevant to the page’s content. You can update the title tag of your webpage or keep it empty to use the default value based on the page’s content.
  • Description tags summarize the webpage’s content, often displayed in search engine results below the title. They are used to encourage the user to visit the page. You can update the description tag of your webpage or keep it empty to use the default value based on the page’s content.

 Note

The Preview card displays how the title and description tags should appear in search results. It also includes the URL of your page.

Keywords

Keywords are one of the main elements of SEO. A website that is well optimized for search engines speaks the same language as potential visitors, with keywords for SEO helping them to connect to your site.

You can enter the keywords you consider essential in the Keyword field and click ADD to see how they are used at different levels in your content (H1, H2, page title, page description, page content) and the related searches in Google. The tool also suggests relevant keywords to drive your web traffic. The more keywords are present on your webpage, the better.

 Tip

It is strongly recommended to only use one H1 title per page for SEO.

Image for social share

When you share your page on social media, your logo image is selected, but you can upload any other image by clicking the upward arrow.

 Note

  • The Social Preview card displays how the page’s information would appear when shared.
  • If you change the title of a blog post or the name of a product, the changes apply automatically everywhere on your website. The old link still functions when external websites use a 301 redirect, maintaining the SEO link juice.

Images

The size of images has a significant impact on page speed, which is an essential criterion for search engines to optimize SEO ranking.

 Tip

Compare how your website ranks using Google Page Speed or Pingdom Website Speed Test.

Odoo automatically compresses uploaded images and converts them to Webp. With this file format, photos are smaller, which increases the page loading speed and, therefore, gives a better ranking in SEO. All images used in Odoo official themes are also compressed by default. If you are using a third-party theme, it may provide images that are not compressed efficiently.

To modify an image from your website, select the image, click Edit, then go to the Customize tab, and adapt the Format in the Image section.

 Important

Alt tags are used to provide context to what an image is displaying, informing search engine crawlers and allowing them to index an image correctly. Adding alt tags keywords in the Description field is essential from an SEO perspective. This description is added to the HTML code of your image, and it is shown when the image cannot be displayed.

Advanced features

Structured data markup

Structured data markup is used to generate rich snippets in search engine results. It is a way for websites to send structured data to search engine robots, helping them understand your content and create well-presented search results.

By default, Google supports many rich snippets for content types, including Reviews, People, Products, Businesses, Events, and Organizations.

Microdata is a set of tags, introduced with HTML5, that help search engines better understand your content and display it in a relevant way. Odoo implements microdata as defined in the schema.org specification for events, eCommerce products, forum posts, and contact addresses. This allows your product pages to be displayed in Google using extra information like the price and rating of a product:

robots.txt

A robots.txt file tells search engine crawlers which URLs the crawler can access on your site, to index its content. This is used mainly to avoid overloading your site with requests.

When indexing your website, search engines take a first look at the robots.txt file. Odoo automatically creates one robot.txt file available on mydatabase.odoo.com/robots.txt.

By editing a robots.txt file, you can control which site pages are accessible to search engine crawlers. To add custom instructions to the file, go to Website ‣ Configuration ‣ Settings, scroll down to the SEO section, and click Edit robots.txt.

 Example

If you do not want the robots to crawl the /about-us page of your site, you can edit the robots.txt file to add Disallow: /about-us.

Sitemap

The sitemap points out website pages and their relation to each other to search engine robots. Odoo generates a /sitemap.xml file, including all URLs. For performance reasons, this file is cached and updated every 12 hours.

 Note

If your website has a lot of pages, Odoo automatically creates a Sitemap Index file, respecting the sitemaps.org protocol, grouping sitemap URLs in 45000 chunks per file.

Every sitemap entry has three attributes that are computed automatically:

  • <loc>: the URL of a page.
  • <lastmod>: last modification date of the resource, computed automatically based on the related object. For a page related to a product, this could be the last modification date of the product or the page.
  • <priority>: modules may implement their priority algorithm based on their content (for example, a forum might assign a priority based on the number of votes on a specific post). The priority of a static page is defined by its priority field, which is normalized (16 is the default).

 Tip

To prevent pages from appearing in a sitemap, go to Site ‣ Properties, click the Publish tab, and turn off the Indexed feature.

Hreflang HTML tags

Odoo automatically includes hreflang and x-default tags in the code of your website’s multilingual pages. These HTML attributes are crucial in informing search engines about a specific page’s language and geographical targeting.

 See also

Translations

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Domain names

Domain names are text-based addresses identifying online locations, such as websites. They provide a more memorable and recognizable way for people to navigate the internet than numerical IP addresses.

Odoo Online and Odoo.sh databases use a subdomain of the odoo.com domain by default (e.g., mycompany.odoo.com).

However, you can use a custom domain name instead by registering a free domain name (only available for Odoo Online databases) or by configuring a domain name you already own.

 See also

Odoo Tutorials: Register a free domain name [video]

Register a free domain name with Odoo

To register a one-year free domain name for your Odoo Online database, sign in to your account and go to the database manager. Click the gear icon (⚙️) next to the database name and select Domain Names.

Search for the desired domain name and check its availability.

 Tip

Ensure the Website app is installed if the domain name registration option does not appear.

Select the desired domain name, fill in the Domain Owner form, and click Register. The chosen domain name is directly linked to the database.

Next, you should map your domain name to your Odoo website.

 Important

A verification email from noreply@domainnameverification.net will be sent to the email address provided in the Domain Owner form. It is essential to verify your email address to keep the domain active and receive the renewal quote before expiration.

The domain name registration is free for the first year. After this period, Odoo will continue to manage the domain in partnership with Gandi.net, the domain name registrar, and you will be charged Gandi.net’s renewal rate. Odoo sends a renewal quotation every year to the email address mentioned in the Domain Owner form several weeks before the expiration date of the domain. The domain is renewed automatically when the quotation is confirmed.

 Note

  • The offer is only available for Odoo Online databases.
  • The offer is limited to one domain name per client.
  • The offer is limited to the registration of a new domain name.
  • The offer is available to One App Free plans. Ensure that your website contains enough original content for Odoo to verify that your request is legitimate and respects Odoo’s Acceptable Use Policy. Given the high number of requests, it can take Odoo several days to review them.

DNS records

To manage your free domain name DNS records, open the database manager, click the gear icon (⚙️) next to the database name, select Domain Names, and click DNS.

  • A: the A record holds the IP address of the domain. It is automatically created and cannot be edited or deleted.
  • CNAME: CNAME records forward one domain or subdomain to another domain. One is automatically created to map the www. subdomain to the database. If the database is renamed, the CNAME record must also be renamed.
  • MX: MX records instruct servers on where to deliver emails.
  • TXT: TXT records can be used for different purposes (e.g., to verify domain name ownership).

Any modification to the DNS records can take up to 72 hours to propagate worldwide on all servers.

 Note

Submit a support ticket if you need assistance to manage your domain name.

Mailbox

The one-year free domain name offer does not include a mailbox. There are two options to link your domain name with a mailbox.

Use a subdomain

You can create a subdomain (e.g., subdomain.yourdomain.com) to use as an alias domain for the database. It allows users to create records in the database from emails received on their email@subdomain.yourdomain.com alias.

To do so, open the database manager, click the gear icon (⚙️) next to the database name, and go to Domain Names ‣ DNS ‣ Add DNS record ‣ CNAME. Next, enter the desired subdomain in the Name field (e.g., subdomain), the original database domain with a period at the end (e.g., mycompany.odoo.com.) in the Content field, and click Add record.

Then, add the alias domain as your own domain by clicking Use my own domain, entering the alias domain (e.g., subdomain.yourdomain.com), clicking Verify, and then I confirm, it’s done.

Finally, go to your database and open the Settings. Under the Alias Domain field, enter the alias domain (e.g., subdomain.yourdomain.com), click Create, and then Save.

Use an external email provider

To use an external email provider, you should configure an MX record. To do so, open the database manager, click the gear icon (⚙️) next to the database name, click Domain Names ‣ DNS ‣ Add DNS record ‣ MX. The values you should enter for the Name, Content, and Priority fields depend on the external email provider.

 See also

Configure an existing domain name

If you already have a domain name, you can use it for your Odoo website.

 Warning

It is strongly recommended to follow in order these three steps to avoid any SSL certificate validation issues:

  1. Add a CNAME record
  2. Map your domain name to your Odoo database
  3. Map your domain name to your Odoo website

Add a CNAME record

Adding a CNAME record to forward your domain name to the address of your Odoo database is required.

Odoo OnlineOdoo.sh

The CNAME record’s target address should be your database’s address as defined at its creation (e.g., mycompany.odoo.com).

The specific instructions depend on your DNS hosting service.

 See also

 Important

Odoo only supports subdomains. To use your naked domain name (a domain name without any subdomains or prefixes) (yourdomain.com), create a redirection 301 to redirect visitors to www.yourdomain.com.

 Example

You own the domain name yourdomain.com, and your Odoo Online database’s address is mycompany.odoo.com. You want to access your Odoo database primarily with the domain www.yourdomain.com and also with the naked domain yourdomain.com.

To do so, create a CNAME record for the www subdomain, with mycompany.odoo.com as the target. Next, create a redirect (301 permanent or visible redirect) to redirect visitors from yourdomain.com to wwww.yourdomain.com.

Using Cloudflare to secure and redirect a naked domain

To redirect a naked domain with a secure HTTPS connection, we recommend using Cloudflare, as most DNS hosting services do not offer an easy way to do so.

  1. Sign up and log in to Cloudflare.
  2. Enter your domain name on Cloudflare’s dashboard and select Quick scan for DNS records.
  3. Choose a plan (the free plan is sufficient).
  4. Follow Cloudflare’s instructions and recommendations to complete the activation.
  5. Add a CNAME record to redirect your naked domain (yourdomain.com) to the www subdomain (e.g., www.yourdomain.com) by clicking DNS in the navigation menu, then clicking the Add record button, and using the following configuration:
    • Type: CNAME
    • Name: @ (or yourdomain.com)
    • Target: e.g., www.yourdomain.com
    • Proxy status: Proxied

  6. Add another second CNAME record to redirect the www subdomain (e.g., www.yourdomain.com) to your database address (e.g., mycompany.odoo.com) using the following configuration:
    • Type: CNAME
    • Name: e.g., www.yourdomain.com
    • Target: e.g., mycompany.odoo.com
    • Proxy status: DNS only

  7. Define a redirect rule to permanently redirect (301) your naked domain (e.g., yourdomain.com) to both http:// and https:// by going to Rules ‣ Create rule ‣ Products, and clicking Create a Rule under Redirect Rules:
    • Enter any Rule name.
    • Under the If incoming requests match… section, select Custom filter expression and use the following configuration:
      • Field: Hostname
      • Operator: equals
      • Value: e.g., yourdomain.com
    • Under the Then… section, use the following configuration:
      • Type: Dynamic
      • Expression: e.g., concat("https://www.yourdomain.com", http.request.uri.path)
      • Status code: 301
      • Preserve query string: enabled

  8. Go to SSL/TLS and set the encryption mode to Full.

Map a domain name to an Odoo database

 Warning

Ensure you have added a CNAME record to your domain name’s DNS before mapping your domain name to your Odoo database.

Failing to do so may prevent the validation of the SSL certificate and could result in a certificate name mismatch error. Web browsers often display this as a warning, such as “Your connection is not private”.

If you encounter this error after mapping the domain name to your database, wait up to five days, as the validation may still happen. If not, you can submit a support ticket, including screenshots of your CNAME records.

Odoo OnlineOdoo.sh

Open the database manager, click the gear icon (⚙️) next to the database name, and go to Domain Names ‣ Use my own domain. Then, enter the domain name (e.g., www.yourdomain.com), click Verify and I confirm, it’s done.

SSL encryption (HTTPS protocol)

SSL encryption allows visitors to navigate a website through a secure connection, which appears as the https:// protocol at the beginning of a web address rather than the non-secure http:// protocol.

Odoo generates a separate SSL certificate for each domain mapped to a database using Let’s Encrypt’s certificate authority and ACME protocol.

 Note

  • Certificate generation may take up to 24 hours.
  • Several attempts to validate your certificate are made for five days after you map your domain name to your database.
  • If you use another service, you can keep using it or change to Odoo’s.

 Important

No SSL certificate is generated for naked domains (domain names without any subdomains or prefixes).

Web base URL of a database

 Note

If the Website app is installed on your database, skip this section and continue from the Map a domain name to a website section.

The web base URL or root URL of a database affects your main website address and all the links sent to your customers (e.g., quotations, portal links, etc.).

To make your custom domain name the web base URL of your database, access your database using your custom domain name and log in as an administrator (a user part of the Settings access right group under Administration).

 Important

If you access your database with the original Odoo address (e.g., mycompany.odoo.com), the web base URL of your database will be updated accordingly. To prevent the automatic update of the web base URL when an administrator logs in to the database, activate the developer mode, go to Settings ‣ Technical ‣ System Parameters ‣ New, and enter web.base.url.freeze as the Key and True as the Value.

 Note

You can also set the web base URL manually. To do so, activate the developer mode, go to Settings ‣ Technical ‣ System Parameters, and search for the web.base.url key (create it if necessary) and enter the full address of your website as the value (e.g., https://www.yourdomain.com). The URL must include the protocol https:// (or http://) and not end with a slash (/).

Map a domain name to an Odoo website

Mapping your domain name to your website is different than mapping it to your database:

  • It defines your domain name as the main one for your website, helping search engines to index your website correctly.
  • It defines your domain name as the base URL for your database, including portal links sent by email to your customers.
  • If you have multiple websites, it maps your domain name to the appropriate website.

Go to Website ‣ Configuration ‣ Settings. If you have multiple websites, select the one you want to configure. In the Domain field, enter the address of your website (e.g., https://www.yourdomain.com) and Save.

 Warning

Mapping your domain name to your Odoo website prevents Google Search from indexing your original database address (e.g., mycompany.odoo.com).

If both addresses are already indexed, it may take some time before the indexation of the second address is removed from Google Search. You can use the Google Search Console to fix the issue.

 Note

If you have multiple websites and companies on your database, make sure to select the right Company under Website ‣ Configuration ‣ Settings. Doing so indicates Odoo which URL to use as the base URL according to the company in use.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Address autocomplete

You can use the Google Places API on your website to ensure that your users’ delivery addresses exist and are understood by the carrier. The Google Places API allows developers to access detailed information about places using HTTP requests. The autocompletion predicts a list of places when the user starts typing the address.

 See also

To do so, go to Website ‣ Configuration ‣ Settings and enable Address Autocomplete in the SEO section.

Insert your Google Places API key in the API Key field. If you don’t have one, create yours on the Google Cloud Console and follow these steps.

Step 1: Enable the Google Places API

Create a New Project: To enable the Google Places API, you first need to create a project. To do so, click Select a project in the top left corner, New Project, and follow the prompts to set up your project.

Enable the Google Places API: Go to the Enabled APIs & Services and click + ENABLE APIS AND SERVICES. Search for “Places API” and select it. Click on the “Enable” button.

 Note

Google’s pricing depends on the number of requests and their complexity.

Step 2: Create API Credentials

Go to APIs & Services –> Credentials.

Create credentials: To create your credentials, go to Credentials, click Create Credentials, and select API key.

 Restrict the API Key (Optional)

For security purposes, you can restrict the usage of your API key. You can go to the API restrictions section to specify which APIs your key can access. For the Google Places API, you can restrict it to only allow requests from specific websites or apps.

 Important

  • Save Your API Key: copy your API key and securely store it.
  • Do not share it publicly or expose it in client-side code.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Google Search Console

Google Search Console is a free web service provided by Google that allows website owners to monitor, maintain, and troubleshoot their site’s presence in Google Search results. It offers valuable insights into how Google views and interacts with your site, helping you optimize its performance.

To enable Google Search Console for your website, go to Google Search Console. Then, select the property type Domain property or URL prefix property.

Domain property

A domain property in Search Console tracks all versions of your website, including subdomains and protocols (http/https). This comprehensive view allows you to analyze your overall website’s search performance and make informed decisions to optimize its visibility. Enter the domain, e.g., example.com and click Continue.

 Note

  • The domain property type can only be verified via DNS record.
  • Google suggests creating at least one domain property to represent your site, as it is the most complete view of your website information.

URL prefix property

This type of verification is usually simpler as you have multiple verification methods, such as using your existing Google Analytics or Tag Manager account. It also makes sense to view a section of your website separately. For example, if you work with a consultant on a specific part of your website, you might want to verify this part separately to limit access to your data. Enter the URL, e.g., https://www.example.odoo.com and click Continue.

Site ownership verification

Before using Google Search Console for your website, you must verify your site ownership. This verification process is a security measure that protects both you and Google. It ensures that only authorized users have access to sensitive data and that you have control over how your website is treated in Google Search.

Five methods are available to do this:

  1. HTML file upload
  2. DNS record
  3. HTML tag
  4. Google Analytics tracking code
  5. Google Tag Manager container snippet

 Note

The best method for you depends on your comfort level and technical expertise. For beginners, using a file upload or HTML tag might be easiest. Those options are convenient if you already use Google Analytics or Tag Manager. You need to access your domain registrar’s settings for domain verification.

HTML file upload

This method involves uploading an HTML file provided by Google containing the verification code you have to put in your Odoo’s Website Settings. Google verifies ownership by checking for this code.

  1. Once you added your website URL under the URL prefix option and clicked continue, expand the HTML file section where you find a download  button.
  2. Download your HTML verification file and copy the verification code (e.g., google123abc.html).
  3. In your Odoo database, go to Website ‣ Configuration ‣ Settings, and enable Google Search Console in the SEO section. Paste the verification code (e.g., google123abc.html) in the dedicated field.
  4. In Google Search Console, click Verify. If you perform the steps above correctly, verification should be done immediately.

 See also

Domain names

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Cookies bar

Cookies are small text files sent to your device when you visit a website. They are processed and stored by your browser and track user information like login details, preferences, and browsing history. Essential cookies are necessary for the website to function, while optional cookies are used to analyze behavior or display ads.

Data protection laws require notifying users about data collection methods and purposes. Cookies bar fulfill this obligation by informing users on their first visit and allowing them to decide whether to store all or only essential cookies on their device.

Configuration

To enable the cookies bar on your website, go to Website ‣ Configuration ‣ Settings and enable Cookies Bar in the Privacy section.

 Note

The Cookies Policy page (/cookie-policy`) is automatically created when you enable the cookies bar.

Customization

To adapt the display of the cookies bar, click Edit, go to the Invisible Elements section at the bottom of the panel, and click Cookies Bar. You can modify the Layout and Size of the cookies bar, and enable Backdrop to gray out the page in the background when the cookies bar is displayed on the screen.

Click anywhere in the building block to further customize the appearance of the cookies bar using Block, Column and/or Inline Text customization options.

To edit the contents of the cookies bar (i.e., the consent message), click directly in the building block.

Cookies policy

When you enable the cookies bar for your website, Odoo creates the Cookie Policy page (/cookie-policy) containing a non-exhaustive list of cookies, with their purpose and examples. To access it, click the Cookie Policy hyperlink in the cookies bar or open the page from Website ‣ Site ‣ Pages.

To adapt the content of the page according to your needs, click the Edit button.

 Tip

You could add a link to this page in your website’s footer, for example.

 See also

Pages

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 

 docs

Try Odoo for FREE

EN 

Odoo 18 

Translations

Your website is displayed in the language that matches your visitor’s browser. If the browser’s language has not been installed and added to your website, the content is shown in the default language. When additional languages are installed, users can choose their preferred language using the language selector.

The Translate feature on your website allows automatic translation of standard terms and provides a tool for manual content translation.

Install languages

To allow translation of your website, you must first install the required languages and add them to your website. To do so, go to Website ‣ Configuration ‣ Settings and click  Install languages in the Website Info section. In the dialog box that opens, select the Languages you want from the dropdown menu, tick the required Websites to translate, and click Add.

To edit your website’s languages, go to Website -–> Configuration -–> Settings and add/remove the required languages in/from the Languages field in the Website info section.

 Tip

Alternatively, once the languages have been installed, you can add them from the language selector. You might then need to refresh your page to see the new language.

Default language

When multiple languages are available on your website, you can set a default language to be used if the visitor’s browser language is not available. To do so, go to Website –-> Configuration -–> Settings, and select a language in the Default field.

 Note

This field is only visible if multiple languages have been installed and added to your website.

Language selector

Your website’s visitors can switch languages using the language selector, available by default in the Copyright section at the bottom of the page. To edit the language selector menu:

  1. Go to your website and click Edit;
  2. Click the language selector available in the Copyright block and go to the Copyright section of the website builder;
  3. Set the Language Selector field to either Dropdown or Inline. Click None if you do not want to display the Language selector;

  4. Click Save.

 Tip

You can also add the Language Selector to the Header of your page. To do so, click the Header block and go to the Navbar section to edit the Language Selector.

Translate your website

Select your desired language from the language selector to see your content in another language. Then, click the Translate button in the top-right corner to manually activate the translation mode so that you can translate what has not been translated automatically by Odoo.

Translated text strings are highlighted in green; text strings that were not translated automatically are highlighted in yellow.

In this mode, you can only translate text. To change the page’s structure, you must edit the master page, i.e., the page in the original language of the database. Any changes made to the master page are automatically applied to all translated versions.

To replace the original text with the translation, click the block, edit its contents, and Save.

 Note

When a website supports multiple languages, the core URL structure remains consistent across languages, while specific elements like product names or categories are translated. For example, https://www.mywebsite.com/shop/product/my-product-1 is the English version of a product page, while https://www.mywebsite.com/fr/shop/product/mon-produit-1 is the French version of the same page. The structure (/shop/product/) stays unchanged, but the translated elements (e.g., product name) adapt to the selected language.

 Tip

Once the desired language is installed, you can translate some items from the backend (e.g., the product’s name in the product form). To do so, click the language code (e.g., EN) next to the text you want to translate and add the translation.

Content visibility by language

You can hide content (such as images or videos, for example) depending on the language. To do so:

  1. Click Edit and select an element of your website;
  2. Go to the Text - Image section and Visibility;
  3. Click No condition and select Conditionally instead;
  4. Go to Languages to configure the condition(s) to apply by selecting Visible for or Hidden for, and click Choose a record to decide which languages are impacted.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Multiple websites

Odoo allows you to create multiple websites from the same database. This can be useful, for example, if you have multiple brands operating under your organization, or to create separate websites for different products/services, or different audiences. In these cases, having different websites can help avoid confusion and make it easier to tailor your digital outreach strategies and reach your target audience.

Each website can be designed and configured independently with its own domain namethemepagesmenuslanguagesproducts, assigned sales team, etc. They can also share content and pages.

 Tip

Duplicate content (i.e., pages and content shared between multiple websites) can have a negative impact on Search Engine Optimization (SEO).

Website creation

To create a new website, proceed as follows:

  1. Go to Website ‣ Configuration ‣ Settings.
  2. Click + New Website.
  3. Specify the Website Name and Website domain. Each website must be published under its own domain.
  4. Adapt the Company name, Languages and Default language if needed.
  5. Click the Create button.

You can then start building your new website.

 Note

By default, all website-related apps that you have installed (e.g. eCommerceForumBlog, etc.) and their related website pages are also available on the new website. You can remove them by amending the website’s menu.

Switching websites

To switch from one website to another, click the menu next to the +New button in the top right corner and select the website you want to switch to.

 Note

When you switch websites, you are redirected to the homepage of the other website.

Website-specific configuration

Most website settings are website-specific, which means they can be enabled/disabled per website. To adapt the settings for a website, go to Website ‣ Configuration ‣ Settings. Select the desired website in the field Settings of Website at the top of the Settings page, in the yellow banner. Then, adapt the options for that specific website.

 Note

  • Websites are created with the default settings; the settings are not copied from one website to the other.
  • In a multi-company environment, each website can be linked to a specific company in your database so that only company-related data (e.g., products, jobs, events, etc.) is displayed on the website. To display company-specific data, set the desired company in the Company field.

Content availability

By default, pages, products, events, etc. created from the frontend (using the +New button) are only available on the website from which it was created. Records created from the backend, however, are made available on all websites by default. The content’s availability can be changed in the backend, in the Website field. For example, for products, go to eCommerce ‣ Products, then select the product and go to the Sales tab. For forums, go to Configuration ‣ Forums, then select the forum.

Records and features can be made available:

  • On all websites: leave the Website field empty;
  • Only on one website: set the Website field accordingly;
  • On some websites: in this case, you should duplicate the item and set the Website field.

Website pages

To modify the website on which a page is to be published, proceed as follows:

  1. Go to Website ‣ Site ‣ Pages.
  2. Open the search panel and select the website on which the page is currently published.
  3. Tick the check box next to the page(s) you want to change.
  4. Click the Website field and select the website, or empty it to publish the page on all websites.

 Note

Each website must have its own homepage; you may not use the same homepage for several websites.

eCommerce features

eCommerce features such as products, eCommerce categories, pricelists, discounts, payment providers, etc. can be restricted to a specific website.

Customer accounts

You can allow your customers to use the same account on all of your websites by enabling the Shared Customer Accounts check box in the website settings.

Pricing

Products can be priced differently based on the website using pricelists. The following configuration is required:

  1. Go to Website ‣ Configuration ‣ Settings.
  2. Scroll down to the Shop - Products section and select the Pricelists option Multiple prices per product.
  3. Click Pricelists to define new pricelists or edit existing ones.
  4. Select the pricelist or click New to create a new one, then select the Configuration tab and set the Website field.

Reporting

Analytics

Each website has its own analytics. To switch between websites, click the buttons in the upper right corner.

Other reporting data

Other reporting data such as eCommerce dashboard data, online sales analyses and visitors can be grouped by website if necessary. Open the search panel and select Group by –> Website.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Forms spam protection

Cloudflare Turnstile and Google reCAPTCHA v3 protect website forms against spam and abuse. They attempt to distinguish between human and bot submissions using non-interactive challenges based on telemetry and visitor behavior.

 Important

We recommend using Cloudflare Turnstile as reCAPTCHA v3 may not be compliant with local data protection regulations.

 Note

All pages using the Form, Newsletter Block, Newsletter Popup snippets, and the eCommerce Extra Step During Checkout form are protected by both tools.

 See also

Cloudflare Turnstile configuration

On Cloudflare

  • Create a Cloudflare account or use an existing one and log in.
  • On the dashboard navigation sidebar, click Turnstile.
  • On the Turnstile Sites page, click Add Site.
  • Add a Site name to identify it easily.
  • Enter or select the website’s Domain (e.g., example.com or subdomain.example.com).
  • Select a Widget Mode:
    • The Managed mode is recommended, as visitors can be prompted to check a box confirming they are human if deemed necessary by Turnstile.
    • For the Non-interactive and Invisible modes, visitors are never prompted to interact. In Non-interactive mode, a loading widget can be displayed to warn visitors that Turnstile protects the form; however, the widget is not supported by Odoo.
       Note
      If the Turnstile check fails, visitors are not able to submit the form, and the following error message is displayed:
  • Click Create.

The generated keys are then displayed. Leave the page open for convenience, as copying the keys in Odoo is required next.

On Odoo

  • From the database dashboard, click Settings. Under Integrations, enable Cloudflare Turnstile and click Save.
  • Open the Cloudflare Turnstile page, copy the Site Key, and paste it into the CF Site Key field in Odoo.
  • Open the Cloudflare Turnstile page, copy the Secret Key, and paste it into the CF Secret Key field in Odoo.
  • Click Save.

 Tip

Navigate to Turnstile on your Cloudflare account to view the solve rates and access more settings.

reCAPTCHA v3 configuration

 Warning

reCAPTCHA v3 may not be compliant with local data protection regulations.

On Google

Open the reCAPTCHA website registration page. Log in or create a Google account if necessary.

On the website registration page:

  • Give the website a Label.
  • Leave the reCAPTCHA type on Score based (v3).
  • Enter one or more Domains (e.g., example.com or subdomain.example.com).
  • Under Google Cloud Platform, a project is automatically selected if one was already created with the logged-in Google account. If not, one is automatically created. Click Google Cloud Platform to select a project yourself or rename the automatically created project.
  • Agree to the terms of service.
  • Click Submit.

A new page with the generated keys is then displayed. Leave it open for convenience, as copying the keys to Odoo is required next.

On Odoo

  • From the database dashboard, click Settings. Under Integrations, enable reCAPTCHA if needed.
     Warning
    Do not disable the reCAPTCHA feature or uninstall the Google reCAPTCHA integration module, as many other modules would also be removed.
  • Open the Google reCAPTCHA page, copy the Site key, and paste it into the Site Key field in Odoo.
  • Open the Google reCAPTCHA page, copy the Secret key, and paste it into the Secret Key field in Odoo.
  • Change the default Minimum score (0.70) if necessary, using a value between 1.00 and 0.00. The higher the threshold is, the more difficult it is to pass the reCAPTCHA, and vice versa. Out of the 11 levels, only the following four score levels are available by default: 0.1, 0.3, 0.7 and 0.9.
  • Click Save.

 See also

Interpret reCAPTCHA scores - Google documentation

You can notify visitors that reCAPTCHA protects a form. To do so, open the website editor and navigate to the form. Then, click somewhere on the form, and on the right sidebar’s Customize tab, toggle Show reCAPTCHA Policy found under the Form section.

 Note

If the reCAPTCHA check fails, the following error message is displayed:

 Tip

Analytics and additional settings are available on Google’s reCAPTCHA administration page. For example, you can receive email alerts if Google detects suspicious traffic on your website or view the percentage of suspicious requests, which could help you determine the right minimum score.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Set up a content delivery network (CDN)

Deploying with KeyCDN

A CDN or content distribution network, is a geographically distributed network of servers that provides high speed internet content. The CDN provides quick, high-quality content delivery for content-heavy websites.

This document will guide you through the setup of a KeyCDN account with an Odoo powered website.

Create a pull zone in the KeyCDN dashboard

On the KeyCDN dashboard, start by navigating to the Zones menu item on the left. On the form, give a value to the Zone Name, which will appear as part of the CDN’s URL. Then, set the Zone Status to active to engage the zone. For the Zone Type set the value to Pull, and then, finally, under the Pull Settings, enter the Origin URL— this address should be the full Odoo database URL.

 Example

Use https://yourdatabase.odoo.com and replace the yourdatabase subdomain prefix with the actual name of the database. A custom URL can be used, as well, in place of the Odoo subdomain that was provided to the database.

Under the General Settings heading below the zone form, click the Show all settings button to expand the zone options. This should be the last option on the page. After expanding the General Settings ensure that the CORS option is enabled.

Next, scroll to the bottom of the zone configuration page and Save the changes. KeyCDN will indicate that the new zone will be deployed. This can take about 10 minutes.

 Note

A new Zone URL has been generated for your Zone, in this example it is pulltest-xxxxx.kxcdn.com. This value will differ for each database.

Copy this Zone URL to a text editor for later, as it will be used in the next steps.

Configure the Odoo instance with the new zone

In the Odoo Website app, go to the Settings and then activate the Content Delivery Network (CDN) setting and copy/paste the Zone URL value from the earlier step into the CDN Base URL field. This field is only visible and configurable when the developer mode is activated.

 Note

Ensure that there are two forward slashes (//) before the CDN Base URL and one forward slash (/) after the CDN Base URL.

Save the settings when complete.

Now the website is using the CDN for the resources matching the CDN filters regular expressions.

In the HTML of the Odoo website, the CDN integration is evidenced as working properly by checking the URL of images. The CDN Base URL value can be seen by using your web browser’s Inspect feature on the Odoo website. Look for it’s record by searching within the Network tab inside of devtools.

Prevent security issues by activating cross-origin resource sharing (CORS)

A security restriction in some browsers (such as Mozilla Firefox and Google Chrome) prevents a remotely linked CSS file to fetch relative resources on this same external server.

If the CORS option isn’t enabled in the CDN Zone, the more obvious resulting problem on a standard Odoo website will be the lack of Font Awesome icons because the font file declared in the Font Awesome CSS won’t be loaded from the remote server.

When these cross-origin resource issues occur, a security error message similar to the output below will appear in the web browser’s developer console:

Font from origin 'http://pulltest-xxxxx.kxcdn.com' has been blocked from loading /shop:1 by Cross-Origin Resource Sharing policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://yourdatabase.odoo.com' is therefore not allowed access.

Enabling the CORS option in the CDN settings fixes this issue.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Website analytics

Website analytics helps website owners monitor how people use their site. It provides data on visitor demographics, behavior, and interactions, helping improve websites and marketing strategies.

You can track your Odoo website’s traffic using Plausible.io or Google Analytics. We recommend using Plausible.io as it is privacy-friendly, lightweight, and easy to use.

The Plausible analytics dashboard is also integrated into Odoo and can be accessed via Website ‣ Reporting ‣ Analytics.

Plausible.io

Odoo hosts its own Plausible.io server and provides a free and ready-to-work Plausible.io solution for Odoo Online databases. Odoo automatically creates and sets up your account. You can start using it by going to Website ‣ Reporting ‣ Analytics.

 Note

If you already have a Plausible.io account and you want to connect it to your Odoo Online database, you must create two ir.config.parameters to use Plausible.io’s servers. To do so, enable the developer mode and go to General Settings ‣ Technical – System Parameters. Click New and fill in the following Key and Value fields:

Key

Value

website.plausible_script

https://plausible.io/js/plausible.js

website.plausible_server

https://plausible.io

Then, follow the steps below to connect your existing account with Plausible.io servers.

If your database is hosted on Odoo.sh or On-premise, or if you wish to use your own Plausible.io account, proceed as follows:

  1. Create or sign in to a Plausible account using the following link: https://plausible.io/register.
  2. If you are creating a new account, go through the registration and activation steps. When asked to provide your website details, add its Domain without including www (e.g., example.odoo.com) and change the Reporting Timezone if necessary. Click Add snippet to proceed to the next step. Ignore the Add JavaScript snippet instructions and click Start collecting data.
  3. Once done, click the Plausible logo in the upper-left part of the page to access your list of websites, then click the gear icon next to the website.
  4. In the sidebar, select Visibility, then click + New link.
  5. Enter a Name, leave the Password field empty, as the Plausible analytics dashboard integration in Odoo doesn’t support it, then click Create shared link.
  6. Copy the shared link.
  7. In Odoo, go to Website ‣ Configuration ‣ Settings.
  8. In the SEO section, enable Plausible Analytics, then paste the Shared Link and click Save.

 Tip

If you have multiple websites, add your websites to your Plausible.io account by going to https://plausible.io/sites and clicking + Add website. In Odoo, in the Website settings, make sure to select the website in the Settings of Website field before pasting the Shared link.

 Note

Odoo automatically pushes two custom goals: Lead Generation and Shop.

 See also

Plausible Analytics documentation

Google Analytics

To follow your Odoo website’s traffic with Google Analytics:

  1. Create or sign in to a Google account using the following link: https://analytics.google.com.
    • If you are setting up Google Analytics for the first time, click Start measuring and go through the account creation step.
    • If you already have a Google Analytics account, sign in and click the gear icon in the bottom-left corner of the page to access the Admin page. Then, click + Create Property.
  2. Complete the next steps: property creation, business details, and business objectives.
  3. When you reach the Data collection step, choose the Web platform.
  4. Set up your data stream: Specify your Website URL and a Stream name, then click Create stream.
  5. Copy the Measurement ID.
  6. In Odoo, go to Website ‣ Configuration ‣ Settings.
  7. In the SEO section, enable Google Analytics, then paste the Measurement ID and click Save.

 Tip

If you have multiple websites with separate domains, it is recommended to create one property per domain. In Odoo, in the Website settings, make sure to select the website in the Settings of Website field before pasting the Measurement ID.

 See also

Google documentation on setting up Analytics for a website

Google Tag Manager

GTM is a tag management system that allows you to easily update measurement codes and related code fragments, collectively known as tags on your website or mobile app, directly through the code injector.

 Warning

  • Some GTM tags use data layers (e.g., advanced eCommerce tracking data layers) to retrieve variables and send them to Google Analytics. Data layers are currently not managed in Odoo.
  • Google Tag Manager may not be compliant with local data protection regulations.

To use GTM, proceed as follows:

  1. Create or sign in to a Google account by going to https://tagmanager.google.com/.
  2. In the Accounts tab, click Create account.
  3. Enter an Account Name and select the account’s Country.
  4. Enter your website’s URL in the Container name field and select the Target platform.
  5. Click Create and agree to the Terms of Service.
  6. Copy the <head> and <body> codes from the popup window. Then, go to your website, click Edit, go to the Themes tab, scroll down to the Website Settings section, then click <head> and </body> to paste the codes.

 Note

The data is collected in the marketing tools used to monitor the website (e.g., Google Analytics, Plausible, Facebook Pixel), not in Odoo.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Link tracker

The link tracker allow you to create tracked links to measure your marketing campaigns’ effectiveness. They let you determine which channels bring you the most visitors and make informed decisions.

Configuration

The Link Tracker module is not installed by default. You need to enable the Email Marketing option by going to Website ‣ Configuration ‣ Settings. Alternatively, you can install the Link Tracker module itself or one of the marketing apps.

Create a traceable URL

To create and manage tracked links, navigate to Website ‣ Site ‣ Link Tracker. Fill in the following information and click Get tracked link to generate a tracking URL.

  1. URL: The URL which is the target of the campaign. It is automatically populated with the URL from where you access the menu.
  2. Campaign: The specific campaign the link should be associated with. This parameter is used to distinguish the different campaigns.
  3. Medium: The medium describes the category or method through which the visitor arrives at your site, such as organic search, paid search, social media ad, email, etc.
  4. Source: The source identifies the precise platform or website that referred the visitor, such as a search engine, a newsletter, or a website.

The Campaign, Medium, and Source are called UTM parameters. They are incorporated in the tracked URL.

Website visibility

You can use the UTM parameters to hide or show building blocks for specific audiences. To achieve this, click the Edit button on your website, select a building block, go to the Customize tab, scroll down to Visibility, and click Conditionally.

For each parameter available in the Visibility section, you can choose Visible for or Hidden for and select the record you want from the dropdown list.

Tracked links overview

To get an overview of your tracked links, go to Website ‣ Site ‣ Link Tracker and scroll down to Your tracked links section.

Statistics

To measure the performance of tracked links, click the Stats button.

Scroll down to the Statistics section to get an overview of the number of clicks of your tracked links. You can display information for a specific period by clicking the All Time, Last Month, or Last Week options.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Mail groups

The mail groups feature allows website visitors to have a public discussion by email. They can join a group to receive emails from other group members (i.e., website users who have subscribed to the group) and send new ones to all group members.

To activate the feature, install the Website Mail Group (website_mail_group) module.

 Note

The mail groups feature is not to be confused with the Mailing lists in the Email Marketing app.

Configuring mail groups

To configure mail groups, proceed as follows:

  1. Configure a custom email alias domain by accessing the General settings, scrolling down to the Discuss section, enabling the Custom Email Server feature, and entering the Alias domain (e.g., @mycompany.com).
  2. Go to Website ‣ Configuration ‣ Mailing Lists, then click New.
  3. Specify a Group Name, the Email Alias, and a Description.
  4. Enable Moderate this group and specify the Moderators if you wish to moderate messages from this group. Alternatively, if the group is not moderated, you can define Responsible Users who can manage the messages in the group.
  5. In the Privacy tab, define who can subscribe to the mail group:
    • Everyone: to make the mail group public so anyone can subscribe to it;
    • Members only: to only allow users defined as members to subscribe to the mail group;
    • Selected group of users: to only allow users from the Authorized group to subscribe to the mail group.
  6. If the mail group is moderated, you can automatically notify authors when their message is pending moderation by enabling Automatic notification in the Notify Members tab and writing the Notification message.
  7. If you wish to send out guidelines to new subscribers, enable Send guidelines to new subscribers and write them in the Guidelines tab. This is particularly useful when the mail group is moderated.

Using mail groups

Subscribing/unsubscribing

Based on the configuration of the mail group, users can subscribe to and unsubscribe from mail groups from the website page (/groups by default).

Internal users can also do this from Website ‣ Configuration ‣ Mailing Lists, using the Join and Leave buttons.

Sending messages

To send messages to a mail group, website users can email the mail group’s email address. Internal users can also create messages directly from Odoo. To do so, go to Website ‣ Configuration ‣ Mailing Lists, select the mail group, click the Emails smart button, and click New. Then, fill in the fields and click Send.

 Tip

  • The list of messages can also be accessed by selecting the group from the /groups website page.
  • Group members can also unsubscribe from the group, access the mail group page, and send emails to the group using the URLs in the footer of any group email they have received.

Moderating mail group messages

If the Moderate this group feature has been enabled for the mail group, one of the Moderators must approve the group’s messages before they are dispatched to the other members.

To moderate messages, go to Website ‣ Configuration ‣ Mailing Lists, select the mail group, and click the To review smart button. You can moderate messages using the buttons at the end of the message line or select a message to view its content and moderate it accordingly.

The following actions are available:

  • Accept: to accept the email and send it to the mail group members.
  • Reject: to reject the email. In the pop-up window that opens, click Reject Silently to reject the email without notifying the author, or specify an explanation for rejecting the message, then click Send & Reject to reject the message and send the explanation to the author.
  • Whitelist: to whitelist the author, i.e. automatically accept all of their emails. As a result, a moderation rule is created for the author’s email address with the status Always allow.
  • Ban: to blacklist the author, i.e. automatically discard all their emails. In the pop-up window that opens, click Ban to ban the author without notifying them, or specify an explanation, then click Send & Ban to ban the author and send them the explanation. As a result, a moderation rule is created for the author’s email address with the status Permanent ban.

 Note

Messages can also be moderated from the group’s list of messages. Go to Website ‣ Groups ‣ Mailing List Groups, select the mail group and click the Emails smart button.

Whitelisting/Blacklisting authors

You can whitelist or blacklist an author either directly from a mail group message, or by creating a moderation rule. To do so, go to Website ‣ Configuration ‣ Moderation Rules and click New. Then, select the Group, specify the author’s Email and set the Status field.

 Tip

You can also access the mail group’s moderation rules by going to Website ‣ Configuration ‣ Mailing Lists, selecting the group, then clicking the Moderations smart button.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

eCommerce

Run a modern open-source online store with Odoo eCommerce. Learn how to sell online, promote products and increase your average cart sizes.

 Important

Odoo offers a free custom domain name to all Odoo Online databases for one year. Visitors can then access your website with an address such as www.example.com rather than the default example.odoo.com.

 See also

 Edit on GitHub

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Products

Odoo eCommerce allows you to add products and manage your product pages directly from the Website app. It also allows you to add product variants and digital filestranslating the product page content, managing stock, and enabling product comparisons.

Add products

Create products

To create a product from the frontend, click + New in the top-right corner, then Product. Enter the Product Name, Sales Price, the default Customer Taxes for local transactions, and Save. You can then update the product’s details, add an image, and customize the product page. When you Save, the product page is automatically published.

 Tip

  • You can also create a product from the backend by going to Website ‣ eCommerce ‣ Products and clicking New.
  • Products created from the frontend are automatically published, while products created from the backend are not. To publish a product, click the Go to Website smart button to access the product page, then toggle the switch from Unpublished to Published.

 See also

Create new products using the Barcode Lookup database.

Import products

To import product data using XLSX or CSV files, go to Website ‣ eCommerce ‣ Products, click the  (gear) icon, then Import records.

 Tip

To publish large batches of products, follow these steps:

  1. Go to Website ‣ eCommerce ‣ Products.
  2. Remove the Published filter and switch to the List view.
  3. Click the  (dropdown toggle) icon and enable Is published.
  4. Click the Is Published column to re-order it by published or unpublished products.
  5. Select the products to publish by ticking their box.
  6. In the Is Published column, tick the box for any of the selected products, then Confirm to publish them.

Shop page

To customize the layout of the main Shop page or modify its content, click Edit. Go to the Blocks tab to add building blocks or to the Customize tab to change the page layout or add features:

  • Layout: Select Grid or List.
    • Size: Set the number of products displayed per page and line.
    • Style: Select Default, Cards, Thumbnails, or Grid.
    • Image Size: Choose the aspect ratio for the product images: Landscape (4/3), Default (1/1), Portrait (4/5), or Vertical (2/3). You can also adjust the display by changing the Fill options to best fit your design preferences.
  • Search Bar: Toggle the switch to display a search bar at the top of the products
    page.
  • Prod. Desc.: Toggle the switch to display the product description below the product’s name.
  • Categories: display product categories on the Left, on the Top, or both. If Left is selected, you can enable Collapse Categories to make the category menu collapsible.
  • Datepicker: Toggle the switch to display a date range calendar to check the availability of rental products over a specific period. The Rental app must be installed to use this feature.
  • Attributes: Show product attributes on the Left and/or display a  (dropdown toggle) icon at the Top allowing customers to filter products based on their attributes.
    • Price Filter: Toggle the switch to display a Price Range bar, which allows customers to filter products according to a specific price range by dragging adjustable handles.
    • Product Tags: Toggle the switch to display the Product Template Tags on the product page and allow customers to filter products using those tags by going to the Tags section in the left column.
  • Top Bar: Select Sort By to display a dropdown list in the top bar for sorting products and/or Layout to allow customers to switch to the grid or list view using the related icons.
  • Default Sort: Choose how products are sorted by default: Featured, Newest Arrivals, Name (A-Z), Price - Low to High, or Price - High to Low.
  • Buttons:
    • Select the  (Shopping cart) option to display an  (Add to cart) icon on each product’s image, which takes the customer to the checkout page.
  • Select the  (Wishlist) option to display an  (Add to wishlist) icon on each product’s image allowing logged-in customers to save products to a wishlist.
  • Select the  (Compare) option to display the  (Compare) icon on each product’s image allowing customers to compare products based on their attributes.

 Tip

To feature a product, go to the product form and click the  (Favorite) icon next to the product’s name.

Product page

To access a product’s page, go to the Shop and click on the product. Click Edit to customize the page or edit its images.

To access the backend product form, click the  Product button in the top-right corner of the product page. Alternatively, navigate to Website ‣ eCommerce ‣ Products and select the product. You can configure the product page from the form by adding variantsdigital documents, or translating content.

 Tip

Click the Go to Website smart button to return to the frontend product’s page.

Customization

To customize a product page, click Edit. Go to the Blocks tab to add building blocks.

 Tip

  • When dragging and dropping a building block on the product page, placing it above or below the top or bottom blue lines makes it visible on all product pages.
  • You can edit any text on your website simply by clicking on it while in Edit mode.

Go to the Customize tab to modify the page layout or add features:

  • Terms and Conditions: Toggle the switch to display a link to your terms and conditions on the product page.
  • Customers:
    • Rating: Allow logged-in portal users to submit product reviews by clicking the stars below the product’s name and sharing their experience in the Customer Reviews section at the bottom. Reviews are visible from the product page using the  (plus) icon next to the Customer Reviews heading or from the product form’s chatter. To restrict visibility to internal employees, toggle the Public switch next to the review comment.
    • Share: Add social media and email icon buttons allowing customers to share the product through those channels.
  • Select Quantity: Toggle the switch to allow customers to select the product quantity they want to purchase.
  • Tax indication: Toggle the switch to indicate if the price is VAT included or excluded.
  • Variants: Show all possible product variants vertically as a Products List or horizontally as selectable Options to compose the variant yourself.
  • Product Tags: Toggle the switch to display the Product Template Tags on the product page and allow customers to filter products using those tags.
  • Cart:
    • Buy Now: Add a  Buy Now option to take the customer to the checkout page.
    • Wishlist: Add an  Add to wishlist option allowing logged-in customers to save products in a wishlist.
    • Compare: Add a  Compare option, allowing customers to compare products based on their attributes.
  • Specification: Select Bottom of Page to display a detailed list of the attributes and their values available for the product. This option only works for products with variants if the Product comparison tool is enabled in the Website Settings.

 Note

  • Variants,  Wishlist, and  Compare options must be enabled by going to Website ‣ Configuration ‣ Settings, in the Shop - Products section.
  • Enabled functions apply to all product pages.
  • Products with single values for their attributes do not generate variants but are still displayed in the Product Specifications.

Image customization

To customize the images available on the product page, go to the Customize tab:

  • Images Width: Changes the width of the product images displayed on the page.
  • Layout: The Carousel layout allows customers to navigate from one image to the next using the  (left arrow) or  (right arrow); whereas the Grid displays four images in a square layout.
  • Image Zoom: Select the zoom effect for product images: Magnifier on hover Pop-up on Click, Both, or None.
  • Thumbnails: Align thumbnails on the  (Left) or
    at the  (Bottom).
  • Main Image: Click Replace to change the product’s main image.
  • Extra Images: Add extra images or videos (including via URL) or Remove all product images.

 Note

Images must be in PNG or JPG format and with a minimum size of 1024x1024 to trigger the zoom.

Product variants

Product variants are different versions of the same product, such as various colors or materials, with potential differences in price and availability.

To configure product variants for a product:

  1. Go to Website ‣ Configuration ‣ Settings.
  2. Scroll down to the Shop - Products section and enable the Product Variants feature.
  3. Access the product forms and go to the Attributes & Variants tab, where you can add attributes and values, allowing customers to configure and select product variants on the product page. For multiple attributes, you can combine them to create specific variants.

To display or hide an attribute on the Shop page and allow visitors to filter them, go to Website ‣ eCommerce ‣ Attributes, click on the attribute, and select Visible or Hidden in the eCommerce Filter Visibility field.

 Tip

 Note

Two attribute values are needed to make the filter visible.

 See also

Product variants

Digital files

You can link digital files like certificates, eBooks, or user manuals to the products. These documents are available before payment on the product page or in the customer portal after checkout.

To link a digital file to a product, go to the product form and click the Documents smart button. Then, click Upload to upload a file directly, or for additional options, click New, then Upload your file.

 Tip

  • You can link a URL instead of a digital file. To do so, click New, go to the Type field, and select URL.
  • To edit an existing file, click the  (dropdown menu) in the top-right corner of the document card and click Edit.

Digital files available before payment

To make the file available on the product page (before payment), leave the Visibility field blank and toggle the Show on product page switch.

Digital files available after payment

To make the file available (after payment), set the Visibility field to Confirmed order and turn off the Show on product page switch.

Translation

If multiple languages are available on your website, you can translate a product’s information directly on the product form. Fields that support multiple languages are identifiable by their abbreviation language (e.g., EN) next to their field.

The eCommerce-related fields to translate are:

  • Product name.
  • Out-of-Stock Message (under the Sales tab).
  • Sales Description (under the Sales tab).

 Note

  • Having untranslated content on a web page may be detrimental to the user experience and SEO. You can use the Translate feature to translate the page’s content.
  • To check the language(s) of your website, go to Website ‣ Configuration ‣ Settings and go to the Website Info section.

Website availability

To set the product’s website availability, navigate to the product form, go to the Sales tab, and in the eCommerce shop section, select the Website you wish the product to be available on. Leave the field blank to make the product available on all websites.

 Note

You can make a product available on either one website or all websites, but selecting only some websites is not possible.

Stock management

To enable and configure inventory management options, go to Website ‣ Configuration ‣ Settings, scroll down to the Shop - Products section and the Inventory Defaults sub-section.

 Important

  • The Inventory app must be installed to see the inventory management options.
  • To display the stock level on the product page, the Product Type field must be set to Storable in the product form.

Inventory

In the Inventory Defaults sub-section, fill in those fields:

  • Warehouse.
  • Out-of-Stock: Enable Continue Selling to allow customers to place orders even when the product is out of stock. Leave the box unchecked to prevent orders.
  • Show Available Qty: Displays the available quantity left under a specified threshold on the product page. The available quantity is calculated based on the On hand quantity minus the quantity already reserved for outgoing transfers.

Product comparison

To allow website visitors to compare products based on their attributes, go to Website ‣ Configuration ‣ Settings, scroll down to the Shop - Products section, and enable Product Comparison Tool.

The  (Compare) icon is now available on each product card on the main shop page when customers hover their mouse over it. To compare products, customers can click the  (Compare) option on the products they want to compare, then click  Compare in the pop-up window at the bottom of the page to reach the comparison summary.

 Note

  • The Product Comparison Tool is only available for products with attributes.
  • Selecting the  (Compare) option from a product page is also possible.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Catalog

The eCommerce catalog is the equivalent of your physical store shelves: it allows customers to see what you have to offer. Clear categories, available options, sorting, and navigation threads help you structure it efficiently.

 Tip

Go to Website ‣ Configuration ‣ Settings, scroll down to the Privacy section to restrict Ecommerce Access to logged-in users and/or enable Shared Customer Accounts to allow access to all websites with a single account.

Categorize the product catalog

In Odoo, there is a specific category model for your eCommerce. Using eCommerce categories for your products allows you to add a navigation menu on your eCommerce page. Visitors can then use it to view all products under the category they select.

To do so, go to Website ‣ eCommerce ‣ Products, select the product you wish to modify, click on the Sales tab, and select the Categories you want under eCommerce Shop.

 Note

A single product can appear under multiple eCommerce categories.

When your product’s categories are configured, go to your main shop page and click on Edit ‣ Customize tab. In the Categories option, you can either enable a menu on the Left, on the Top, or both. If you select the Left category, the option Collapsable Category Recursive appears and allows to render the Left category menu collapsable.

 See also

Products

Browsing

The eCommerce category is the first tool to organize and split your products. However, if you need an extra level of categorization in your catalog, you can activate various filters such as attributes or sort-by search.

Attributes

Attributes refer to characteristics of a product, such as color or material, whereas variants are the different combinations of attributes. Attributes and Variants can be found under Website ‣ eCommerce ‣ Products, select your product, and Attributes & Variants tab.

 See also

To enable attribute filtering, go to your main shop page, click on Edit ‣ Customize tab and select either Left, Top, or both. Additionally, you can also enable Price Filtering to enable price filters.

 Note

Price Filter works independently from attributes and, therefore, can be enabled on its own if desired.

 Tip

You can use attribute filters even if you do not work with product variants. When adding attributes to your products, make sure only to specify one value per attribute. Odoo does not create variants if no combination is possible.

Sort-by search

It is possible to allow the user to manually sort the catalog using the search bar. From your main shop page, click on Edit ‣ Customize tab; you can enable or disable the Sort-By option as well as the Layout button. You can also select the Default Sort of the Sort-By button. The default sort applies to all categories.

The sorting options are:

  • Featured
  • Newest Arrivals
  • Name (A-Z)
  • Price - Low to High
  • Price - High to Low

In addition, you can manually edit the catalog’s order of a product by going to the main shop page and clicking on the product. Under the Product section of the Customize section, you can rearrange the order by clicking on the arrows. << >> move the product to the extreme right or left, and < > move the product by one row to the right or left. It is also possible to change the catalog’s order of products in Website ‣ eCommerce ‣ Products and drag-and-dropping the products within the list.

Page design

Category page

You can customize the layout of the category page using the website builder.

 Important

Editing the layout of the category page is global; editing one category layout affects all category pages.

To do so, go on to your Category page ‣ Edit ‣ Customize. Here, you can choose the layout, the number of columns to display the products, etc. The Product Description button makes the product description visible from the category page, underneath the product picture.

 Tip

You can choose the size of the grid, but be aware that displaying too many products may affect performance and page loading speed.

Product highlight

You can highlight products to make them more visible on the category or product page. On the page of your choice, go to Edit ‣ Customize and click on the product to highlight. In the Product section, you can choose the size of the product image by clicking on the grid, and you can also add a ribbon or Badge. This displays a banner across the product’s image, such as:

  • Sale;
  • Sold out;
  • Out of stock;
  • New.

Alternatively, you can activate the developer mode on the product’s template, and under the Sales tab, change or create the ribbon from the Ribbon field.

 Note

The developer mode is only intended for experienced users who wish to have access to advanced tools. Using the developer mode is not recommended for regular users.

Additional features

You can access and enable additional feature buttons such as add to cartcomparison list, or a wishlist. To do so, go to your main shop page, and at the end of the Products Page category, click on the feature buttons you wish to use. All three buttons appear when hovering the mouse over a product’s image.

  • Add to Cart: adds a button to add the product to the cart;
  • Comparison List: adds a button to compare products based on their price, variant, etc.;
  • Wishlist Button: adds a button to wishlist the product.

Add content

You can use building blocks to add content on the category page, with a variety of blocks ranging from Structure to Dynamic Content. Specific areas are defined to use blocks are defined and highlighted on the page when dragging-and-dropping a block.

  • If you drop a building block on top of the product list, it creates a new category header specific to that category.
  • If you drop a building on the top or bottom of the page, it becomes visible on all category pages.

 Tip

Adding content to an eCommerce category page is beneficial in terms of SEO strategy. Using keywords linked to the products or the eCommerce categories improves organic traffic. Additionally, each category has its own specific URL that can be pointed to and is indexed by search engines.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Price management

Odoo offers multiple options to select the price displayed on your website, as well as condition-specific prices based on set criteria.

Taxes

Tax configuration

To add a tax on a product, you can either set a tax in the Customer Taxes field of the product template or use fiscal positions.

 See also

Tax display

Choosing the displayed price tax usually depends on a country’s regulations or the type of customers (B2B vs. B2C). To select the type of price displayed, go to Website ‣ Configuration ‣ Settings, scroll down to the Shop - Products category, and select Tax Excluded or Tax Included.

  • Tax Excluded: the price displayed on the website is tax-excluded, and the tax is computed at the cart-review step;
  • Tax Included: the price displayed on the website is tax-included.

 Note

This setting is global, and the tax-display type is the same for (all of) your website(s). It is, therefore, not possible to select different tax displays for different websites. This may be a significant point of consideration when implementing a database with multiple ecommerce websites aimed at varying customer types (i.e., B2B and B2C).

You can choose to display the type of pricing next to the product price by going to Website ‣ Site ‣ Homepage ‣ Shop, selecting a product, and then Edit ‣ Customize tab and enabling Tax Indication.

 See also

B2B (tax excluded) and B2C (tax included) pricing

Price per unit

It is possible to display a price per unit on the product page. To do that, go to Website ‣ Configuration ‣ Settings and enable Product Reference Price under the Shop - Products section. When enabled, ensure an amount is set in the Base Unit Count field of the product template, and in the Sales Price.

The price per unit of measure can be found above the Add to Cart button on the product page.

 Note

Pay attention that having the price per unit may be mandatory in some countries.

 See also

Units of measure

Price configuration: pricelists

Pricelists are the primary tool to manage prices on your eCommerce. They allow you to define website-specific prices - different from the price on the product template - based on the country groupcurrencyminimum quantityperiod, or variant. You can create as many pricelists as needed, but it is mandatory to have at least one pricelist configured per website. If no custom pricelists are added, Odoo defaults to the Public Pricelist for all websites.

 See also

Pricelists

Configuration

Pricelists can be found under Website ‣ eCommerce ‣ Pricelists, but must first be activated. For that, head to Website ‣ Configuration ‣ Settings and scroll down to the Shop - Products section. There, you can find two options:

  • Multiple prices per product;
  • Advanced price rules (discounts, formulas).

The first option allows you to set different prices per customer segment, i.e., registered customers, gold customers, regular customers, etc. The second option allows you to set price change rules such as discountsmarginsroundings, etc.

Foreign currency

If you are selling in multiple currencies and have pricelists in foreign currencies, customers can select their corresponding pricelist anywhere on the Shop page from the drop-down menu next to the search bar.

 See also

Permanent discount

If you have permanently reduced the price of a product, a popular means to attract customers is the strikethrough strategy. The strategy consists in displaying the previous price crossed out and the new discounted price next to it.

To display a ‘striked’ price, enable the Comparison Price option under Website ‣ Configuration ‣ Settings ‣ Shop - Products category. Then, head to the product’s template (Website ‣ eCommerce ‣ Products), and in the Compare to Price field, enter the new price.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Cross-selling and upselling

Cross-selling and upselling are sales techniques designed to encourage customers to purchase additional or higher-priced products and services from your Catalog.

Cross-selling

Cross-selling can be achieved by suggesting optional products when items are added to the cart or by recommending accessory products on the checkout page.

Optional products

Optional products are suggested when the customer selects a product and clicks Add to cart.

To enable optional products, go to Website ‣ eCommerce ‣ Products, select a product, go to the Sales tab, and enter the products you wish to feature in the Optional Products field.

Accessory products

Accessory products are showcased in the Suggested Accessories section during the Review Order step, just before proceeding to checkout.

To enable accessory products, go to Website ‣ eCommerce ‣ Products, select a product, go to the Sales tab, and enter the products you wish to feature in the Accessory Products field.

Upselling

You can display alternative products at the bottom of the product page as an upselling technique, encouraging customers to consider a more expensive variant or product than their initial choice by presenting appealing alternatives.

To enable alternative products, navigate to Website ‣ eCommerce ‣ Products, select the desired product, and go to the Sales tab. In the Alternative Products field, add the products you want to feature.

Click Go to Website to view the alternative products displayed at the bottom of the product page.

To adjust the settings, click Edit and select the related building block. In the Customize tab, scroll to the Alternative Products section and modify the settings as needed to tailor the display to your preferences.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Add to cart

The Add to Cart button can be customized in multiple ways. You can:

  • Choose on which page customers go after clicking the ‘Add to Cart’ button;
  • Hide the ‘Add to Cart’ button to prevent sales;
  • Add a ‘Buy Now’ button to skip the cart step and lead customers straight to checkout;
  • Create additional ‘Add to Cart / Buy Now’ buttons;
  • Add an ‘Order Again’ button to the customer portal.

 See also

Checkout

‘Add to Cart’ action customization

When customers click on the Add to Cart button, the product is added to their cart, and customers remain by default on the product’s page. However, customers can either immediately be redirected to their cart, or given the choice on what to do through a dialog box.

To change the default behavior, go to Website ‣ Configuration ‣ Settings. Under the Shop - Checkout Process section, look for Add to Cart and select one of the options.

 Note

If a product has optional products, the dialog box will always appear.

 See also

Catalog

Replace ‘Add to Cart’ button by ‘Contact Us’ button

You can replace the ‘Add to Cart’ button with a ‘Contact Us’ button which redirects users to the URL of your choice.

 Note

Hiding the Add to Cart button is often used by B2B eCommerces that need to restrict purchases only to customers with an account, but still want to display an online product catalog for those without.

To do so, go to Website ‣ Configuration ‣ Settings ‣ Shop - Products and tick Prevent Sale of Zero Priced Product. This creates a new Button url field where you can enter the redirect URL to be used. Then, set the price of the product to 0.00 either from the product’s template, or from a pricelist.

 Note

The ‘Contact Us’ button and ‘Not Available For Sale’ text can both be modified using the website builder on the product’s page (Edit ‣ Customize) by clicking on them.

Customizable ‘Add to Cart’ button

You can also create a customizable ‘Add to Cart’ button and link it to a specific product. The customized button can be added on any page of the website as an inner content building block, and is an additional button to the regular Add to Cart button.

To add it, go on the Shop page of your choice, click Edit ‣ Blocks and place the building block. Once placed, you have the following options:

  • Product: select the product to link the button with. Selecting a product renders the Action field available;
  • Action: choose if the button should Add to Cart or Buy Now (instant checkout).

‘Buy Now’ button

You can enable the Buy Now button to take customers directly to the review order step instead of adding the product to the cart. This button is an additional option and does not replace the Add to Cart button. To do so, go to Website ‣ Configuration ‣ Settings, scroll to the Shop—Checkout Process section, enable Buy Now, and Save.

 Tip

Alternatively, you can enable the Buy Now button directly from a product page by clicking Edit and navigating to the Customize tab.

Re-order from portal

Customers have the possibility to re-order items from previous sales orders on the customer portal. To do so, go to Website ‣ Configuration ‣ Settings ‣ Shop - Checkout Process and enable Re-order From Portal. Customers can find the Order Again button on their sales order from the customer portal.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Checkout

Once customers have added their desired products to the cart, they can access it by clicking the  button in the header to start the checkout process. In Odoo eCommerce, this process consists of sequential steps, some of which support additional features. The related checkout pages can be customized using the website editor.

Checkout policy

To allow customers to checkout as guests or force them to sign in/create an account, go to Website ‣ Configuration ‣ Settings, scroll down to the Shop - Checkout Process section, and configure the Sign in/up at checkout setting. The following options are available:

  • Optional: Customers can check out as guests and register later via the order confirmation email to track their order.
  • Disabled (buy as guest): Customers can checkout as guests without creating an account.
  • Mandatory (no guest checkout): Customers must sign in or create an account at the Review Order step to complete their purchase.

B2B access management

To restrict checkout to selected B2B customers, follow these steps:

  1. Go to Website ‣ Configuration ‣ Settings, and in the Shop - Checkout Process section, enable the Mandatory (no guest checkout) option.
  2. Scroll down to the Privacy section, go to Customer Account, and select On invitation.
  3. Go to Website ‣ eCommerce ‣ Customers, switch to the List view, and select the customers you wish to grant access to your portal.
  4. Click the  Actions button, then Grant portal access.
  5. Review the selected customers in the Portal Access Management pop-up and click Grant Access.

Once done, the relevant customers receive an email confirming their account creation, including instructions on setting a password and activating their account.

 Note

  • You can revoke access or re-invite a customer using the related buttons in the Portal Access Management pop-up.
  • Users can only have one portal access per email.
  • Settings are website-specific, so you could set up a B2C website that allows guest checkout and B2B website with mandatory sign-in.

 See also

Checkout steps

During the checkout process, customers are taken through the following steps:

Each step can be customized using the website editor: Click Edit to add building blocks from the Blocks tab or open to the Customize tab to enable various checkout options.

 Note

Content added through building blocks is specific to each step.

Review order

The Review Order step allows customers to see the items they added to their cart, adjust quantities, or Remove products. Information related to the product prices and taxes applied are also displayed. Customers can then click the Checkout button to continue to the Delivery step.

Open the website editor to enable checkout options such as:

  • Suggested Accessories: to showcase accessory products;
  • Promo Code: to allow customers to redeem gift cards or apply discount codes;
  • Add to Wishlist: To allow signed-in users to remove a product from their cart and add it to their wishlist, go to Website ‣ Configuration ‣ Settings, scroll to the Shop - Products section, and enable Wishlists. The Add to Wishlist option is then enabled by default in the website editor.

 Note

  • If a fiscal position is detected automatically, the product tax is determined based on the customer’s IP address.
  • If the installed payment provider supports express checkout, a dedicated button is displayed, allowing customers to go straight from the cart to the confirmation page without filling out the contact form.

Delivery

Once they have reviewed their order:

  • Unsigned-in customers are prompted to Sign in or enter their Email address, along with their delivery address and phone details;
  • Signed-in customers can select the appropriate Delivery address.

They can then choose a delivery method, select or enter their Billing Address (or toggle the Same as delivery address switch if the billing and delivery addresses are identical), and click Confirm to proceed to the next step.

 Tip

For B2B customers, you can also enable optional VAT and Company name fields by toggling the Show B2B Fields option in the website editor.

Extra info

You can add an Extra Info step in the checkout process to collect additional customer information through an online form, which is then included in the sales order. To do so enable the Extra Step option in the website editor. The form can be customized as needed.

 Tip

Alternatively, go to Website ‣ Configuration ‣ Settings, scroll to the Shop - Checkout Process section, enable Extra Step During Checkout, and click Save. Click  Configure Form to customize the form.

Payment

At the Payment step, customers Choose a payment method, enter their payment details, and click Pay now.

You can require customers to agree to your terms and conditions before payment. To enable this option, go to the website editor and toggle the Accept Terms & Conditions feature.

 Tip

Enable the developer mode and click the  bug icon to display an availability report for payment providers and payment methods, which helps diagnose potential availability issues on the payment form.

Order confirmation

The final step of the checkout process is the Order confirmation, which provides a summary of the customer’s purchase details.

 See also

Order handling

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Payment providers

Odoo supports a multitude of online payment providers for your website, allowing your customers to pay with their preferred payment methods.

 See also

Configuration

To set up payment providers on the eCommerce app, go to Website ‣ Configuration ‣ Payment Providers. From here, Activate the payment providers you wish to have available on your shop, and configure them according to your needs.

Alternatively, you can access payment providers via Website ‣ Configuration ‣ Settings. In the Shop - Payment section, you can Configure SEPA Direct Debit if you wish to use it, as well as View other providers. If you use the Authorize.net payment provider, the Payment Capture Method can be configured in that same menu.

If you are using PayPal, you can also enable and configure it here.

Checkout payment options

Once activated, customers can choose the payment provider of their choice during the checkout process, at the Confirm Order step.

eWallets and gift cards

When checking out, customers can pay with an eWallet or gift cards. To enable these, go to Website ‣ Configuration ‣ Settings, and in the Shop-Products section, enable Discounts, Loyalty & Gift Card.

Once enabled, customers can enter their gift card code or pay with their eWallet at the checkout step.

 See also

Use eWallets and gift cards

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Delivery

Odoo eCommerce allows you to configure various delivery methods, enabling customers to choose their preferred option at checkout. These methods include external providerscustom options such as flat-rate or free shipping, local carriers via Sendcloud or Based on Rules, and in-store pickupSendcloud or Based on Rules, and in-store pickup.

External provider integration

To handle product delivery, you can connect your database to third-party shipping carriers like FedExUPS, or DHL. A shipping connector links to these providers, automating tracking labels and shipping processes.

To enable a third-party delivery provider, go to Website ‣ Configuration ‣ Settings, scroll to the Delivery section, select the desired delivery provider(s), and Save.

Go to Website ‣ Configuration ‣ Delivery Methods and select the delivery method in the list to configure it.

 See also

Third-party shipping carriers

 Important

The field used to define additional fees must be filled in your third-party delivery provider account, even if you do not plan to charge customers any additional fee. If you do not want to apply a fee, enter 0. If the field is left empty, the delivery price cannot be calculated, and an error message prompts the customer to select an alternative delivery method.

Margin on delivery rate

To add an additional fee to the base shipping rate (e.g., to cover extra costs), log into your carrier account and set the desired fee in the related field. The shipping connector retrieves this fee and includes it in the final price at checkout. Contact your carrier for further assistance with this configuration.

Alternatively, enter 0 in your third-party shipping provider account, then set the fee in Odoo. To do so, access the desired shipping method’s form and enter the fee in the Margin on Rate field to add a percentage to the shipping costs and/or the Additional margin field to add a fixed amount.

 Important

The field used to define additional fees cannot be left empty in your third-party shipping provider account.

Custom delivery method

Custom delivery methods must be created, for example:

  • to integrate delivery carriers through Sendcloud;
  • to configure specific rules (e.g., to offer free shipping for orders above a specific amount) for a specific provider;
  • to configure Fixed Price shipping, or shipping Based on Rules.

To create a custom delivery method, go to Website ‣ Configuration ‣ Delivery Methods, click New, and fill in the fields.

In the Provider field, select Based on Rules or Fixed Price.

 Tip

Upon configuring a delivery method, you can:

  • Restrict it to a specific website by selecting it in the Website field.
  • Click the Test Environment smart button to switch to the Production Environment. Then, click Unpublished to Publish the delivery method and make it available to website visitors.
  • Use the Availability tab to define conditions for the delivery method based on the order’s content or destination.

Click & Collect

To allow customers to reserve products online and pay for/collect them in-store, follow these steps:

  1. Go to Website ‣ Configuration ‣ Settings.
  2. Scroll to the Delivery section, enable Click & Collect, and Save.
  3. Click  Configure Pickup Locations to configure the delivery method and ensure the Provider field is set to Pick up in store.
  4. In the Stores tab, click Add a line and select the warehouse(s) where customers can collect their orders.
  5. Once your setup is complete, click the Unpublish button to change the status to Publish and make the delivery method available to customers.

 Note

  • When the product is in stock, a location selector is displayed on the product and checkout pages. Customers cannot select a pickup location if the product is out of stock at that location. The Continue selling option for out-of-stock products is not supported.
  • If the Show Available Qty option is enabled for a product, customers can view the stock quantity available for each warehouse in the location selector on the product page.
  • Each warehouse must have a complete address to ensure its location is accurately displayed to customers. Incomplete addresses prevent the warehouse from being shown.
  • The Click & Collect option is not available for services.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Order handling

When a customer orders on your eCommerce, there are three record types required to be handle in Odoo:

Sales orders

Order and payment status

The first step when a customer adds a product to his cart is the creation of a quotation. Orders can be managed either from the Website or Sales app. eCommerce orders can automatically be assigned to a specific sales team by going to Website ‣ Configuration ‣ Settings. In the Shop - Checkout Process section, select a Sales Team or Salesperson to handle eCommerce orders.

Orders can be found under Website ‣ eCommerce ‣ Orders/Unpaid Orders. Each order goes through a different status:

  • Quotation: a new product is added to the cart, but the customer has not gone through the checkout process yet;
  • Quotation sent: the customer has gone through the checkout process and confirmed the order, but the payment is not yet confirmed;
  • Order: the customer has gone through the checkout process, confirmed the order, and the payment is received.

Abandoned cart

An abandoned cart represents an order for which the customer did not finish the checkout confirmation process. For these orders, it is possible to send an email reminder to the customer automatically. To enable that feature, go to Website ‣ Configuration ‣ Settings and in the Email & Marketing section, enable Automatically send abandoned checkout emails. Once enabled, you can set the time-lapse after which the email is sent and customize the email template used.

 Note

For abandoned cart emails, the customer must either have entered their contact details during the checkout process; or be logged-in when they added the product to their cart.

Delivery orders

Delivery flow

Once a quotation has been confirmed, a delivery order is automatically created. The next step is to process this delivery.

Packing eCommerce orders usually requires picking the product, preparing the packaging, printing the shipping label(s) and shipping to the customer. Depending on the number of orders, strategy, or resources, those steps can be considered as one or multiple actions in Odoo.

An automatic email can be sent to the customer when the transfer status in Odoo is “done”. To do so, enable the feature in the settings of the Inventory app.

 Note

If customers are allowed to pay when picking up their order in stores or by wire transfer, the quotation is not be confirmed and the stock is not be reserved. Orders must be confirmed manually to reserve products in stock.

 See also

Returns and refunds

Customers can only return an order through an online form. It may not be possible to return products depending on the return strategy or type of product.

Full refunds can be directly sent to customers from within the order interface. A refund-compatible payment provider needs to be enabled first.

 See also

Invoice and legal requirements

The final step of an ecommerce order is to generate the invoice and send it to the customer. Depending on the type of business (B2B or B2C), an invoice can either be generated automatically (B2B) or on demand of the customer (B2C). This process can be automated if (and when) the online payment is confirmed.

To automate invoicing, go to Website ‣ Configuration ‣ Settings and in the Invoicing section, enable Automatic Invoice.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Customer accounts

Having customer accounts on an eCommerce allows customers to access all their documents from a single place. To access their account, customers must be logged-in on the eCommerce website, click on their username in the top-right corner of the screen, and click My Account. From there, customers can access their quotations, orders, invoices, etc.

 Note

Customers can only have an account if the sign in/up at checkout option allows for account creation.

 Tip

Similarly to the rest of the website, the customer account page can be customized with content blocks and other features through the website builder.

 See also

Portal access

Access restriction

It is possible to allow or restrict the documents to which customers have access through the website builder. Log in your own account with your Odoo database credentials, and go to Edit ‣ Customize. From the website builder menu, enable or disable the documents customers can have access to.

Multi-website account

If you own multiple websites, you can make customer accounts available across all websites. Then, the customer only needs one account. To do so, go to Website ‣ Configuration ‣ Settings ‣ Privacy section, and enable Shared Customer Accounts.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Performance management

Odoo integrates a variety of tools to analyze and improve the performance of your eCommerce website.

Data monitoring

Website allows monitoring and analysis of the sales performance of your eCommerce. To access the reporting view, go to Website ‣ Reporting ‣ eCommerce. This dashboard helps you monitor everything related to sales, such as sales performance per product, category, day, etc.

By clicking Measures, you can select the type of measurement used, such as:

  • Margin;
  • Qty Invoiced;
  • Untaxed Total;
  • Volume;

Other options include multiple views (Pivot, etc.), comparison by periods or years, and directly insert in spreadsheet, etc.

Analytics

It is possible to link your Odoo website with Plausible.io and Google Analytics.

Email queue optimization

For websites handling flash sales (e.g., event ticket sales) or experiencing high traffic spikes, order confirmation emails can become a performance bottleneck, potentially slowing down the checkout process for other customers.

To improve performance, these emails can be queued and processed separately from the order confirmation flow. This is managed by the Sales: Send pending emails scheduled action, which sends queued emails as soon as possible.

To enable asynchronous email sending:

  1. Enable the developer mode.
  2. Go to Apps, remove the Apps filter, and install the Sales - Async Emails module.
  3. Go to Settings ‣ Technical ‣ System Parameters and set the sale.async_emails system parameter to True.
  4. Go to Settings ‣ Technical ‣ Scheduled Actions and ensure that the Sales: Send pending emails scheduled action is enabled.

 Caution

Enabling this feature may delay order confirmation and invoice emails by a few minutes. It is recommended only for high-traffic websites, as it can introduce unnecessary delays for e-commerce websites with moderate traffic.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

eLearning

The eLearning app allows you to easily upload content, define learning objectives, manage attendees, assess students’ progress, and even set up rewards. Engaging participants in a meaningful learning experience enhances their attentiveness and fosters heightened productivity.

 Important

You can manage your eLearning content on the front end or the back end. The front end allows you to create content quickly from your website, while the back end provides additional options and allows collaboration. This documentation focuses on using the back end to create your content.

 See also

Odoo Tutorials: eLearning

Courses

By going to eLearning ‣ Courses ‣ Courses, you can get an overview of all your courses.

Click on a course title to edit your course on the back end. Click on View course to access your course on the front end.

Course creation

Click New to create a new course. When the page pops up, you can add your Course Title and one or more Tags to describe your course. You can add an image to illustrate your course by hovering your mouse on the camera placeholder image and clicking on the edit icon. Four tabs allow you to edit your course further: ContentDescriptionOptions, and Karma.

Content tab

This tab allows you to manage your course content. Click on Add Section to divide your course into different sections. Click on Add Content to create content. Click on Add Certification to assess the level of understanding of your attendees, certify their skills, and motivate them. Certification is part of the Surveys app.

Description tab

You can add a short description or information related to your course in the Description tab. It appears under your course title on your website.

Options tab

In the Options tab, different configurations are available: CourseCommunicationAccess rights, and Display.

Course

Assign a Responsible user for your course. If you have multiple websites, use the Website field to only display the course on the selected website.

Communication
  • Allow Reviews: tick the box to allow attendees to like and comment on your content and to submit reviews on your course;
  • Forum: add a dedicated forum to your course (only shown if the Forum feature is enabled in the app’s settings);
  • New Content Notification: select an email template sent to your attendees when you upload new content. Click on the internal link button (➜) to have access to the email template editor;
  • Completion Notification: select an email template sent to your attendees once they reach the end of your course. Click on the internal link button (➜) to access the email template editor;
Access rights
  • Prerequisites: set one or more courses that users are advised to complete before
    accessing your course;
  • Show course to: define who can access your course and their content between Everyone, Signed In or Course Attendees;
  • Enroll Policy: define how people enroll in your course. Select:
    • Open: if you want your course to be available to anyone;
    • On Invitation: if only people who received an invitation can enroll to your course. If selected, fill in the Enroll Message explaining the course’s enrollment process. This message appears on your website under the course title;
    • On Payment: if only people who bought your course can attend it. The Paid Courses feature must be enabled to get this option. If you select On Payment, you must add a Product for your course.

       Note

      Only products set up with Course as their Product Type are displayed.

Display
  • Training: the course content appears as a training program, and the courses must be taken in the proposed order.
  • Documentation: the content is available in any order. If you choose this option, you can choose which page should be promoted on the course homepage by using the Featured Content field.

Karma tab

This tab is about gamification to make eLearning fun and interactive.

In the Rewards section, choose how many karma points you want to grant your students when they Review or Finish a course.

In the Access Rights section, define the karma needed to Add Review, Add Comment, or Vote on the course.

 Note

From your course, click the Contact Attendees button to reach people who are enrolled in the course.

Course groups

Use the Course Groups to inform users and allow them to filter the courses from the All Courses dashboard.

You can manage them by going to Configuration ‣ Course Groups. Click New to create a new course group. Add the Course Group Name, tick the Menu Entry box to allow users to search by course group on the website, and add tags in the Tag Name column. For each tag, you can select a corresponding color.

Settings

You can enable different features to customize your courses by going to eLearning ‣ Configuration ‣ Settings:

  • Certifications: to evaluate the knowledge of your attendees and certify their skills;
  • Paid courses: to sell access to your courses on your website and track revenues;
  • Mailing: to update all your attendees at once through mass mailings;
  • Forum: to create a community and let attendees answer each other’s questions.

Content

Manage your content by going to eLearning ‣ Courses ‣ Contents. Click New to create content. Add your Content Title, and if you want Tags, then fill in the related information among the different tabs.

Document tab

  • Course: select the course your content belongs to;
  • Content Type: select the type of your content;
  • Responsible: add a responsible person for your content;
  • Duration: indicate the time required to complete the course;
  • Allow Download: allow users to download the content of the slide. This option is only visible when the content is a document;
  • Allow Preview: the course is accessible by anyone.
  • # of Public Views: displays the number of views from non-enrolled participants;
  • # Total Views: displays the total number of views (non-enrolled and enrolled participants).

Description tab

You can add a description of your content that appears front end in the About section of your course content.

Additional Resources tab

Click Add a line to add a link or a file that supports your participants’ learning. It appears in the course content on your website.

Quiz tab

From this tab you can create a quiz to assess your students at the end of the course.

The Points Rewards section lets you give a specific number of karma points depending on how many tries they need to correctly answer the question. Then, create your questions and the possible answers by clicking on Add a line. A new window pops up, add the question by filling in the Question Name and add multiple answers by clicking on Add a line. Tick the Is correct answer to mark one or more answers as correct. You can also fill in the Comment field to display additional information when the answer is chosen by the participant.

Content Tags

The Content Tags help users to classify the content from the Contents dashboard.

You can manage them by going to eLearning ‣ Configuration ‣ Content Tags. Click New to create a new tag.

Publish your content

Everything created on the back end needs to be published from the front end. Unpublished content is always visible from your website but still needs to be published to be available to your audience.

You must be on your website’s front end to publish your content. To do so, click on the Go To Website smart button, and tick the Publish option available in the right-hand corner.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Forum

Odoo Forum is a question-and-answer forum designed with providing customer support in mind. Adding a forum to a website enables you to build a community, encourage engagement, and share knowledge.

Create a forum

To create or edit a forum, go to Website ‣ Configuration ‣ Forum: Forums. Click New or select an existing forum and configure the following elements.

Forum Name: add the name of the forum.

Mode: select Questions to enable marking an answer as best, meaning questions then appear as solved, or Discussions if the feature is not needed.

 Note

Regardless of the selected mode, only one answer per user is allowed on a single post. Commenting multiple times is allowed, however.

Default Sort: choose how questions are sorted by default.

  • Newest: by latest question posting date
  • Last Updated: by latest posting activity date (answers and comments included)
  • Most Voted: by highest vote tally
  • Relevance: by post relevancy (determined by a formula)
  • Answered: by likelihood to be answered (determined by a formula)

 Note

Users have several sorting options (total replies, total views, last activity) on the forum front end.

Privacy: select Public to let anyone view the forum, Signed In to make it visible only for signed-in users, or Some users to make it visible only for a specific user access group by selecting one Authorized Group.

Next, configure the karma gains and the karma-related rights.

Karma points

Karma points can be given to users based on different forum interactions. They can be used to determine which forum functionalities users can access, from being able to vote on posts to having moderator rights. They are also used to set user ranks.

 Important

  • A user’s karma points are shared across all forums, courses, etc., of a single Odoo website.
  • eLearning users can earn karma points through different course interactions and by completing quizzes.

Karma gains

Several forum interactions can give or remove karma points.

Interaction

Description

Default karma gain

Asking a question

You post a question.

2

Question upvoted

Another user votes for a question you posted.

5

Question downvoted

Another user votes against a question you posted.

-2

Answer upvoted

Another user votes for an answer you posted.

10

Answer downvoted

Another user votes against an answer you posted.

-2

Accepting an answer

You mark an answer posted by another user as best.

2

Answer accepted

Another user marks an answer you posted as best.

15

Answer flagged

A question or an answer you posted is marked as offensive.

-100

 Note

New users receive three points upon validating their email address.

To modify the default values, go to Website ‣ Configuration ‣ Forum: Forums, select the forum, and go to the Karma Gains tab. Select a value to edit it.

If the value is positive (e.g., 5), the number of points will be added to the user’s tally each time the interaction happens on the selected forum. Conversely, if the value is negative (e.g., -5), the number of points will be deducted. Use 0 if an interaction should not impact a user’s tally.

Karma-related rights

To configure how many karma points are required to access the different forum functionalities, go to Website ‣ Configuration ‣ Forum: Forums, select the forum, and go to the Karma Related Rights tab. Select a value to edit it.

 Warning

Some functionalities, such as Edit all posts, Close all posts, Delete all posts, Moderate posts, and Unlink all comments, are rather sensitive. Make sure to understand the consequences of giving any user reaching the set karma requirements access to such functionalities.

Functionality

Description

Default karma requirement

Ask questions

Post questions.

3

Answer questions

Post answers to questions.

3

Upvote

Vote for questions or answers.

5

Downvote

Vote against questions or answers.

50

Edit own posts

Edit questions or answers you posted.

1

Edit all posts

Edit any question or answer.

300

Close own posts

Close questions or answers you posted.

100

Close all posts

Close any question or answer.

500

Delete own posts

Delete questions or answers you posted.

500

Delete all posts

Delete any question or answer.

1,000

Nofollow links

If you are under the karma threshold, a nofollow attribute tells search engines to ignore links you post.

500

Accept an answer on own questions

Mark an answer as best on questions you posted.

20

Accept an answer to all questions

Mark an answer as best on any question.

500

Editor Features: image and links

Add links and images to your posts.

30

Comment own posts

Post comments under questions or answers you created.

1

Comment all posts

Post comments under any question or answer.

1

Convert own answers to comments and vice versa

Convert comments you posted as answers.

50

Convert all answers to comments and vice versa

Convert any comment as answer.

500

Unlink own comments

Delete comments you posted.

50

Unlink all comments

Delete any comment.

500

Ask questions without validation

Questions you post do not require to be validated first.

100

Flag a post as offensive

Flag a question or answer as offensive.

500

Moderate posts

Access all moderation tools.

1,000

Change question tags

Change posted questions’ tags (if you have the right to edit them).

75

Create new tags

Create new tags when posting questions.

30

Display detailed user biography

When a user hovers their mouse on your avatar or username, a popover box showcases your karma points, biography, and number of badges per level.

750

 Tip

Track all karma-related activity and add or remove karma manually by enabling developer mode and going to Settings ‣ Gamification Tools ‣ Karma Tracking.

Gamification

Ranks and badges can be used to encourage participation. Ranks are based on the total karma points, while badges can be granted manually or automatically by completing challenges.

Ranks

To create new ranks or modify the default ones, go to Website ‣ Configuration ‣ Forum: Ranks and click New or select an existing rank.

Add the Rank Name, the Required Karma points to reach it, its Description, a Motivational message to encourage users to reach it, and an image.

Badges

To create new badges or modify the default ones, go to Website ‣ Configuration ‣ Forum: Badges and click New or select an existing badge.

Enter the badge name and description, add an image, and configure it.

Assign manually

If the badge should be granted manually, select which users can grant them by selecting one of the following Allowance to Grant options:

  • Everyone: all non-portal users (since badges are granted from the backend).
  • A selected list of users: users selected under Authorized Users.
  • People having some badges: users who have been granted the badges selected under Required Badges.

It is possible to restrict how many times per month each user can grant the badge by enabling Monthly Limited Sending and entering a Limitation Number.

Assign automatically

If the badge should be granted automatically when certain conditions are met, select No one, assigned through challenges under Allowance to Grant.

Next, determine how the badge should be granted by clicking Add under the Rewards for challenges section. Select a challenge to add it or create one by clicking New.

 Tip

It is possible to give the badge a Forum Badge Level (Bronze, Silver, Gold) to give it more or less importance.

Tags

Users can use tags to filter forum posts.

To manage tags, go to Website ‣ Configuration ‣ Forum: Tags. Click New to create a tag and select the related Forum.

 Tip

  • Use the Tags section on the forum’s sidebar to filter all questions assigned to the selected tag. Click View all to display all tags.
  • New tags can be created when posting a new message, provided the user has enough karma points.

Use a forum

 Note

Access to many functionalities depends on a user’s karma points.

Post questions

To create a new post, access the forum’s front end, click New Post, and fill in the following:

  • Title: add the question or the topic of the post.
  • Description: add a description for the question.
  • Tags: add up to five tags.

Click Post Your Question.

Interact with posts

Different actions are possible on a post.

  • Mark a question as favorite by clicking the star button (☆).
  • Follow a post and get notifications (by email or within Odoo) when it is answered by clicking the bell button (🔔).
  • Vote for (up arrow ▲) or against (down arrow ▼) a question or answer.
  • Mark an answer as best by clicking the check mark button (✔). This option is only available if the Forum Mode is set to Questions.
  • Answer a question.
  • Comment on a question or answer by clicking the speech bubble button (💬).
  • Share a question on Facebook, Twitter, or LinkedIn by clicking the share nodes button.

Click the ellipsis button (…) to:

  • Edit a question or answer.
  • Close a question.
  • Delete a question, answer, or comment. It is possible to Undelete questions afterward.
  • Flag a question or answer as offensive.
  • Convert a comment into an answer.
  • View the related Helpdesk ticket, if any.

 Note

By default, 150 karma points are required to view another user’s profile. This value can be configured when creating a new website.

Moderate a forum

On the forum’s front end, the sidebar’s Moderation tools section gathers the essential moderator functionalities.

To Validate: access all questions and answers waiting for validation before being displayed to non-moderator users.

 Note

A question is pending if a user does not have the required karma. The user is not able to post questions or answers while awaiting validation. Only one pending question per user is allowed per forum.

Flagged: access all questions and answers that have been flagged as offensive. Click Accept to remove the offensive flag or Offensive to confirm it, then select a reason and click Mark as offensive. The post is then hidden from users without moderation rights, and 100 karma points are deducted from the offending user’s tally.

Closed: access all questions that have been closed. It is possible to Delete or Reopen them. To close a question, open it, click the ellipsis button (…), then Close, select a Close Reason, and click Close post. The post is then hidden from users without moderation rights.

 Note

When selecting Spam or advertising or Contains offensive or malicious remarks as the reason, 100 karma points are deducted from the poster’s tally.

 Tip

  • Create and edit close reasons by going to Website ‣ Configuration ‣ Forum: Close Reasons. Select Basic as Reason Type if the reason should be used when closing a question, and Offensive if it should be used for flagged posts.
  • Manage all posts by going to Website ‣ Configuration ‣ Forum: Forums, selecting the forum, and clicking the Posts smart button. By clicking the Actions button, it is possible to Export, Archive, Unarchive, or Delete one or multiple posts.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Blog

Odoo Blog allows you to create and manage blog posts on your website to engage your audience and build a community.

 Tip

If the Blog module is not yet installed, click +New on the website builder, select Blog Post, and click Install.

Creating a blog

To create or edit a blog, go to Website ‣ Configuration ‣ Blogs: Blogs. Click New, and enter the Blog Name and the Blog Subtitle.

The Blog menu item is added to your website’s menu the first time you create a blog and gathers all your blogs.

Adding a blog post

Go to your website, click +New in the top-right corner, and select Blog Post. In the pop-up, select the blog where the post should appear, write the post’s Title, and Save. You can then write the post’s content and customize the page using the website builder.

 Tip

  • Illustrate your articles with copyright-free images from Unsplash.
  • Type / in the text editor to format and add elements to your text.

 Important

Don’t forget to toggle the Unpublished switch in the top-right corner to publish your post.

Using tags

Tags let visitors filter all posts sharing the same tag. By default, they are displayed at the bottom of posts, but can also be displayed on the blog’s main page. To do so, click Edit ‣ Customize and enable the Sidebar. By default, the sidebar’s Tags List is enabled.

To create a tag, go to Website ‣ Configuration ‣ Blogs: Tags and click New. Fill in the:

  • Name
  • Category: tag categories let you group tags displayed on the sidebar by theme.
  • Used in: to apply the tag to existing blog posts, click Add a line, select the posts, and click Select.

You can add and create tags directly from posts by clicking Edit ‣ Customize and select the post’s cover. Under Tags, click Choose a record…, and select or create a tag.

 Note

To manage tag categories, go to Website ‣ Configuration ‣ Blogs: Tag Categories.

Customizing blog homepages

Customize the content of blog homepages by opening a blog homepage and clicking Edit ‣ Customize.

 Note

Settings apply to all blogs homepages.

Top Banner: Name/Latest Post displays the title of the latest post on the top banner, while Drop Zone for Building Blocks removes the top banner and lets you use any building block instead.

Layout: organizes posts as a Grid or List.

  • Cards: adds a card effect.
  • Increase Readability: improves the text’s readability.

Sidebar: displays a sidebar containing an About us section.

  • Archives: allows visitors to select a month and filter all posts created during that month.
  • Follow Us: displays links to your social media networks. They can be configured using the Social Media building block somewhere on your website.
  • Tags List: displays all tags related to a blog. Visitors can select a tag to filter all related posts.

Posts List: Cover displays the posts’ images, and No Cover hides them.

  • Author: displays the posts’ authors.
  • Comments/Views Stats: displays the posts’ number of comments and views.
  • Teaser & Tags: displays the posts’ first sentences and tags.

Customizing blog posts

Customize posts by opening a blog post and clicking Edit ‣ Customize.

 Note

Settings apply to all posts.

Layout: Title Inside Cover displays the title inside the cover image, and Title above Cover displays it above.

  • Increase Readability: increases the text’s readability.

Sidebar: displays the Sidebar and additional options:

  • Archive: allows visitors to select a month and filter all posts created during that month.
  • Author: displays the post’s author and creation date.
  • Blog List: displays links to all your blogs.
  • Share Links: displays share buttons to several social networks.
  • Tags: displays the post’s tags.

Breadcrumb: displays the path to the post.

Bottom: Next Article displays the next post at the bottom, and Comments enable visitors to comment on the post.

Select To Tweet: visitors are offered to tweet the text they select.

 Tip

Use Plausible to keep track of the traffic on your blog.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Live Chat

Odoo Live Chat allows users to communicate with website visitors in real-time. With Live Chat, leads can be qualified for their sales potential, support questions can be answered quickly, and issues can be directed to the appropriate team for further investigation or follow up. Live Chat also provides the opportunity for instant feedback from customers.

Enable Live Chat

The Live Chat application can be installed multiple ways:

  • Go to Apps application, search Live Chat, and click Install.
  • Go to the Helpdesk app ‣ Configuration ‣ Helpdesk Teams list view, select a team, and on the team’s settings page, click the checkbox next to Live Chat, under the Channels section.
  • In the Website app, go to Configuration ‣ Settings, scroll to the Email & Marketing section, check the box next to Livechat, and click Save.

 Note

After the Live Chat application is installed, a live chat Channel is created, by default.

Create live chat channels

To create a new live chat Channel, go to Main Odoo Dashboard ‣ Live Chat app ‣ New. This opens a blank channel detail form. Enter the name of the new channel in the Channel Name field.

To configure the remaining tabs on the channel detail form (OperatorsOptionsChannel Rules, and Widget), follow the steps below.

 Tip

The channel detail form for any channel can be accessed by navigating back to the Website Live Chat Channels dashboard, via the breadcrumbs. Find the Kanban card for the appropriate live chat channel, hover over it, and then click on the  (vertical ellipsis) icon to open the drop-down menu. Click Configure Channel to open the channel detail form.

Operators tab

Operators are the users who act as agents and respond to live chat requests from customers. When a user is added as an operator in a live chat channel, they can receive chats from website visitors wherever they are in the database. Chat windows open in the bottom-right corner of the screen.

On the channel detail form, click the Operators tab. The user who originally created the live chat channel has been added as an operator by default.

 Note

Current operators can be edited, or removed, by clicking on their respective boxes in the Operators tab, which reveals a separate Open: Operators modal. In that modal, adjust any information, as needed. Then, click Save, or click Remove to remove that operator from the channel.

Click Add to reveal an Add: Operators pop-up window.

In the pop-up window, scroll to find the desired users, or enter their name in the search bar. Then, tick the checkbox next to the users to be added, and click Select.

New operators can be created and added to the list directly from this pop-up window, as well, by clicking New, and filling out the Create Operators form. When the form is complete, click Save & Close, or Save & New for multiple record creations.

 Danger

Creating a new user can impact the status of an Odoo subscription, as the total number of users in a database counts towards the billing rate. Proceed with caution before creating a new user. If a user already exists, adding them as an operator will not alter the subscription or billing rate for a database.

Options tab

The Options tab on the live chat channel detail form contains the visual and text settings for the live chat window.

Livechat button

The Livechat Button is the icon that appears in the bottom-right corner of the website.

Change the text in the Notification text field to update the greeting displayed in the text bubble when the live chat button appears on the website.

The Livechat Button Color alters the color of the live chat button as it appears on the website. To change the color, click on a color bubble to open the color selection window, then click and drag the circle along the color gradient. Click out of the selection window once complete. Click the  (refresh) icon to the right of the color bubbles to reset the colors to the default selection.

 Tip

Color selection, for the button or header, can be made manually using a slider or through RGB, HSL, or HEX color code entries from the pop-up color selection window that appears when either of the color bubbles are clicked. Different options are available, depending on the operating system.

Livechat Window

The Livechat Window is the space where the live chat conversation with website visitors takes place.

Edit the Welcome Message to change the message a visitor sees when they open a new chat session. This message appears as though it is sent by a live chat operator, and acts as both a greeting and an invitation to continue the conversation.

Edit the Chat Input Placeholder to alter the text that appears in the box where visitors type their replies. This message prompts the visitor to initiate the chat.

The Channel Header is the colored bar at the top of the chat window. The Channel Header Color can be changed following the same steps as the Livechat button.

The live chat window with a purple channel header and placeholder text that reads, “Say Something…”

Channel Rules tab

To configure which website user actions open the live chat window, go to the Channel Rules tab on the live chat channel detail form.

To create a new channel rule, click Add a line. This opens the Create Rules pop-up window.

Create new rules

Fill out the fields on the Create Rules pop-up window as instructed below, then click Save & Close.

Live Chat ButtonChatbotURL RegexOpen automatically timerCountry

The Livechat Button is the icon that appears in the bottom-right corner of the website. Select from one of the following display options:

  • Show: displays the chat button on the page.
  • Show with notification: displays the chat button, as well as a floating text bubble next to the button.
  • Open automatically: displays the button, and automatically opens the chat window after a specified amount of time (designated in the Open automatically timer field, that appears when this option is selected).
  • Hide: hides the chat button on the page.

 Note

In order to track the geographical location of visitors, GeoIP must be installed on the database. While this feature is installed by default on Odoo Online databases, On-Premise databases require additional setup steps.

Widget tab

The Widget tab on the live chat channel detail form provides the code for a website widget. This code can be added to a website to provide access to a live chat window.

 Tip

The live chat widget can be added to websites created through Odoo by navigating to Website app ‣ Configuration ‣ Settings. Then, scroll to the Email & Marketing section. In the Channel field, select the channel to add to the site. Click Save to apply.

To add the widget to a website created on a third-party platform, click the first COPY button on the Widget tab, and paste the code into the <head> tag on the site.

Likewise, to send a live chat session to a customer, click the second COPY button on the Widget tab. This link can be sent directly to a customer. When they click the link, they are redirected to a new chat window.

 See also

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Ratings

At the end of a Live Chat conversation, customers have the opportunity to rate the quality of support they received from the live chat operator. Customers provide ratings as soon as they close the conversation. This allows operators to receive immediate feedback on their performance. It also allows customers the chance to share any final comments before leaving the chat window.

Rate live chat conversations

Customers end a live chat conversation by clicking the X in the upper right-hand corner of the chat window. They are then prompted to select an icon that reflects their level of satisfaction. The icons represent the following ratings:

  • Satisfied - green smiling face
  • Okay - yellow neutral face
  • Dissatisfied - red frowning face

 Note

When customers end a conversation, a field marked Receive a copy of this conversation appears under the ratings icons. Customers can enter their email either before or after they submit a rating.

If the customer selects Satisfied (smile) icon, they are presented with a thank you message and a Close Conversation link.

If the customer selects either Okay (neutral) icon or Dissatisfied (frown) icon, a text box will appear. Customers can add comments in this text box to explain why they chose this rating. This message will be sent to the live chat operator, along with the rating icon.

Publish customer ratings

To publish a channel’s ratings on the website, first navigate to a live chat channel’s record by going to the Live Chat app and clicking on the kanban card for that team. Then click on the Go to Website smart button. This will open the Live Chat Channel Statistics page.

In the upper right corner of the page, click the red Unpublished slider. The slider changes from Unpublished to Published.

 Note

The customer notes that are submitted with the rating will not be published on the website. These are kept internal. Only a statistical overview of the operators’ performance for the channel appears on the website.

Add ratings page to site

Once the rating page has been published, it has to be manually added to the website. To do this, go to the main Odoo dashboard and open the Website application. Website app‣ Site ‣ Content ‣ Pages, then click New.

This will open a New Page pop-up window. In the Page Title field, enter livechat. This acts as the URL for the published webpage.

 Important

The URL must be named livechat in order for the database to recognize and connect the ratings page. After the page has been published, the page title can be changed later under the Menu Editor.

Click Create, and the newly created webpage will open. The Webpage Editor appears in the right panel.

The page lists the names of the Live Chat Channels whose ratings pages have been published. On the left side of the channel name is a speech bubble icon, which users can click on to go to the ratings’ page for the respective channel.

Make any desired changes or additions to this page, then click Save in the top right of the webpage editor. The website editor side panel closes, and the webpage remains on the screen.

To publish the livechat webpage, return to the list of webpages by navigating to Site ‣ Content ‣ Pages. Click the checkbox to the left of livechat in the list of pages to select the page and highlight the line. Then, click the checkbox under the column labeled Is Published. The field with the checkbox is highlighted in white. Click the checkbox a second time to activate the Is Published box. The webpage is now published.

Once the page has been added to the site, ratings are set to be published by default. However, individual ratings can be manually selected to be hidden from the public. The rating will still be included in internal reports, and can still be viewed by internal teams. However, public website visitors and portal users will not have access.

See Hide individual ratings for more information.

Customer ratings report

The Customer Ratings report (Live Chat ‣ Report ‣ Customer Ratings) displays an overview of the ratings received on individual support tickets, as well as any additional comments submitted with the rating.

The report defaults to a kanban view, with each rating represented by a different card. To switch to a different view, click on one of the icons in the upper-right corner of the screen. The report is available in list view, pivot view, and graph view.

Click on an individual rating to see additional details about the conversation, and the rating.

Hide individual ratings

Ratings are set to be published by default. However, individual ratings can be manually selected to be hidden from the public. The rating will still be included in internal reports, and can still be viewed by internal teams. However, public website visitors and portal users will not have access.

To hide a rating, go to Live Chat app ‣ Reports ‣ Customer Ratings. Click on the kanban card for the rating to be hidden. On the individual rating’s detail page, check the box labeled Visible Internally Only.

 See also

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Commands and canned responses

In the Odoo Live Chat application, commands allow the user to perform specific actions both inside the chat window, and through other Odoo applications. The Live Chat app also includes canned responses. These are customized, preconfigured substitutions that allow users to replace shortcut entries in place of longer, well-thought out responses to some of the most common questions and comments.

Both commands and canned responses save time, and allow users to maintain a level of consistency throughout their conversations.

Execute a command

Live chat commands are keywords that trigger preconfigured actions. When a live chat operator is participating in a conversation with a customer or website visitor, they can execute a command by typing /, followed by the command.

Commands, and the resulting actions, are only visible in the conversation window for the live chat operator. A customer does not see any commands that an operator uses in a conversation from their view of the chat.

 Example

During a conversation with a customer, a live chat operator executes the command to create a ticket. After entering the command, /ticket, the system automatically creates a ticket with the information from the conversation. It also includes a link to the new ticket, so the operator can go there directly to add any additional information, if necessary.

More information about each available command can be found below.

Help

If an operator types /help in the chat window, an informative message that includes the potential entry types an operator can make is displayed.

  • Type @username to mention a user in the conversation. A notification will be sent to that user’s inbox or email, depending on their notification settings.
  • Type /command to execute a command.
  • Type :shortcut to insert a canned response.

 See also

Ticket & search tickets

The /ticket and /search_tickets commands allow operators to create helpdesk tickets directly from a conversation, and search through existing tickets by keyword or ticket number.

 Important

The /ticket and /search_tickets commands can only be used if the Helpdesk app has been installed, and Live Chat has been activated on a Helpdesk team. To activate Live Chat, go to Helpdesk app ‣ Configuration ‣ Helpdesk Teams, and select a team. Scroll to the Channels section, and check the box labeled, Live Chat.

Create a ticket from a live chat

If an operator types /ticket in the chat window, the conversation is used to create a Helpdesk ticket.

After entering the /ticket command, type a title for the ticket into the chat window, then press Enter.

The newly created ticket will be added to the Helpdesk team that has live chat enabled. If more than one team has live chat enabled, the ticket will automatically be assigned based on the team’s priority.

The transcript from the conversation will be added to the new ticket, under the Description tab.

To access the new ticket, click on the link in the chat window, or go to the Helpdesk app and click the Tickets button on the Kanban card for the appropriate team.

Search for a ticket from a live chat

If an operator types /search_tickets in the chat window, they can search through Helpdesk tickets, either by ticket number or keyword.

After entering the /search_tickets command, type a keyword or ticket number, then press Enter. If one or more related tickets are found, a list of links is generated in the conversation window.

 Note

Results from the search command will only be seen by the operator, not the customer.

History

If an operator types /history in the chat window, it generates a list of the most recent pages the visitor has viewed on the website (up to 15).

Lead

By typing /lead in the chat window, an operator can create a lead in the CRM application.

 Important

The /lead command can only be used if the CRM app has been installed.

After typing /lead, create a title for this new lead, then press Enter. A link with the lead title appears. Click the link, or navigate to the CRM app to view the Pipeline.

 Note

The link to the new lead can only be seen and accessed by the operator, not the customer.

The transcript of that specific live chat conversation (where the lead was created) is added to the Internal Notes tab of the lead form.

On the Extra Information tab of the lead form, the Source will be listed as Livechat.

Leave

If an operator types /leave in the chat window, they can automatically exit the conversation. This command does not cause the customer to be removed from the conversation, nor does it automatically end the conversation.

 See also

Canned responses

Canned responses are customizable inputs where a shortcut stands in for a longer response. An operator will enter the shortcut, and it is automatically replaced by the expanded substitution response in the conversation.

Create canned responses

To create a new canned response, go to Live Chat app ‣ Configuration ‣ Canned Responses ‣ New.

Type a shortcut command in the Shortcut field. Next, click the Substitution field, and type the message that should replace the shortcut.

 Tip

Try to connect the shortcut to the topic of the substitution. The easier it is for the operators to remember, the easier it is to use the canned responses in conversations.

Authorized groups

When a new canned response is created, it can only be utilized by the operator that created it. To allow the response to be used by other operators, select one or more groups from the Authorized Groups drop-down list.

Use canned responses in a live chat conversation

To use a canned response in a conversation, click the  (plus) icon in the message window. Then, click Insert a Canned Response. This opens a list of available canned responses. Either select a response from the list, or type the appropriate shortcut, then click the  (send) icon or hit Enter.

 Tip

Typing :: into a chat window on its own generates a list of available canned responses. Responses can be manually selected from the list, in addition to the use of shortcuts.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 

 docs

Try Odoo for FREE

EN 

Odoo 18 

Chatbots

Chatbot is a program designed to mimic a conversation with a live human. Chatbots are assigned a script of pre-written steps to follow. The scripts are designed to anticipate a visitor’s potential response, and lead them through a series of questions and answers the same way a live team member would.

Chatbots can be customized to fill various roles, from customer support, to creating leads, to collecting contact information. The goal of each chatbot can vary based on several criteria, including the webpage where it is located, and the information it captures.

Build a chatbot

Before creating a new chatbot, the Live Chat application must first be installed on the database. This can be done directly from the Apps application, by searching for Live Chat in the Search… bar, and clicking Install.

Once the Live Chat application has been installed on the database, go to Live Chat app ‣ Configuration ‣ Chatbots.

 Note

When the Live Chat app is installed, a sample chatbot is created, named Welcome Bot. This chatbot has a preconfigured script that walks through a few basic steps, including asking for a visitor’s email address, and forwarding the conversation to an operator.

Welcome Bot can be used as a starting point. The existing steps can be edited or removed, and new steps can be added to customize the script, as needed.

Welcome Bot can be deleted or archived, if necessary.

To create a new chatbot, navigate to the Chatbot page (Live Chat app ‣ Configuration ‣ Chatbots) and click New. This opens a blank chatbot details page.

On the blank chatbot details page, enter a name in the Chatbot Name field and click on the Edit Image icon in the upper right corner of the form to add a photo.

Chatbot scripts

After the new chatbot has been created and named, the next step is to create a script. Chatbot conversations follow an accompanying script. These scripts are comprised of lines of dialog, each designed to deliver or capture information.

To create a chatbot script, click Add a Line in the Script tab of the chatbot detail page, and a Create Script Steps modal appears.

This form must be filled out for each line of text (dialog) that the chatbot could deliver during the conversation.

First, enter the content of the message in the Message field. Then, select an option from the Step Type and Only If drop-down menus.

Step types

The Step Type selected depends on the intended purpose of the message. The available options in the Step Type drop-down menu are detailed below:

Text

This step is used for messages where no answer is expected or necessary. Text steps can be used for greetings, to offer resources, such as documentation, or provide links to specific web pages.

 Important

Text step types are only intended to deliver information, and do not allow for any visitor input. As such, they must be followed by additional steps to continue the conversation.

Question

This step asks a question and provides a set of answers. The visitor clicks on one answer, which either leads to a new step in the conversation, or can lead to an optional link to a new webpage.

Enter the question in the Message field. Then, under the Answer heading, click Add a Line to create a blank answer line.

Proceed to enter the answer as it should appear to the visitor. To turn the answer into a link that redirects the visitor when selected, add the URL to the answer line under the Optional Link heading.

Repeat these steps for every answer to be included for the question.

Click Save & Close or Save & New.

 Tip

It is helpful to add a catchall answer to question steps (e.g: Something else). This helps visitors continue the conversation, even if their needs do not exactly fit with any of the other answers.

Email

This step prompts visitors to provide their email address, which is stored and can be used by team members later to follow up with additional information.

The only accepted inputs for this step type are email addresses that are in a valid format. If a visitor attempts to enter anything other than a valid email address, the chatbot responds with a message stating it does not recognize the information submitted.

Phone

Similar to email, this step type prompts the visitor to enter their phone number, which can be used to follow up with additional information, schedule demos, and more.

 Warning

Due to the vast number of formats used for phone numbers worldwide, responses to this step type are not validated for formatting, and can include both numbers and special characters.

Forward to Operator

This step forwards the conversation to an active live chat operator, so they can continue assisting the visitor. As the conversation transcript is passed on to the operator, they can pick up where the chatbot left off. This not only saves time for all parties involved, it can also help qualify conversations before they reach live operators.

 Note

If no active operator is available on the channel, the chatbot continues the conversation with the visitor. Therefore, additional steps should be added after this one to ensure there is no abrupt end to the conversation. The additional steps can both inform visitors about the lack of available operators (e.g. Uh-oh, it looks like none of our operators are available) and continue the conversation (e.g. Would you like to leave your email address?).

Free Input/Multi-Line

The free input step allows visitors to respond to questions without providing pre-written responses. Information provided in these responses is stored in the chat transcripts.

Choose between Free Input and Free Input (Multi-Line) depending on the type and amount of information the visitor is asked to provide.

Create Lead

This step creates a lead in the CRM application. Select an option from the Sales Team drop-down field that appears to assign the created lead to a specific team.

 Note

This step is only available if the CRM application is installed on the database.

Create Ticket

This step creates a ticket in the Helpdesk application. Select an option from the Helpdesk Team drop-down field that appears to assign the created ticket to a specific team.

 Note

This step is only available if the Helpdesk application is installed on the database.

Only if

Chatbot scripts operate on an if/then basis, which means the next question presented to the visitor is determined by the answer provided to the previous question.

To continue the progression of the conversation, the Create Script Steps form for a new step contains a field labeled Only If. This field is where the progression of questions is defined.

If a step is intended to follow all of the previous messages, this field can be left empty. However, if a message should only be sent conditionally, based on a previous response, or several previous responses, those responses must be added to this field.

 Important

If any selections are made in the Only If field, they must all be selected during the conversation before this step will be included. Only include selections in this field if they are necessary for this step to be displayed.

 Example

In the Welcome Bot script, a visitor can ask about pricing information. If the visitor selects this response, a step is included to forward the conversation to an operator. The chatbot first sends a message informing the visitor that it is checking to see if an operator is available to chat.

However, this message should only be delivered if the visitor requests pricing information. In that situation, the conversation would proceed as below:

  • Welcome Bot: “What are you looking for?
  • Visitor: “I have a pricing question.
  • Welcome Bot: “Hmmm, let me check if I can find someone that could help you with that…

In the details form for the Text step, the I have a pricing question response has been selected in the Only If field. As such, this step is only shown in conversations where that response has been selected.

Script testing

To ensure all visitors have a satisfactory experience with the chatbot, each message needs to lead to a natural conclusion. Chatbot scripts should be tested to confirm there are no dead-ends, and to understand what the visitor sees when they interact with the chatbot.

 Important

If the visitor provides an answer, or input, that is not assigned a corresponding follow-up response, the conversation stops (dead-ends). Since the visitor cannot re-engage the chatbot, they must restart the conversation by refreshing the chat window, or their browser.

To test the performance of a chatbot, first click on the Test button at the top-left of the chatbot script page. Then, upon being redirected to the testing screen, answer the chatbot prompts the same way a potential site visitor would.

When the script has reached an end-point, the message Conversation ended…Restart appears at the bottom of the chat window. To begin the conversation at the beginning of the script, click on Restart. To return to the script page, click Back to edit mode at the top of the page.

Add chatbot to a channel

After a chatbot has been created and tested, it needs to be added to a live chat channel.

First, open the Live Chat application, find the Kanban card for the appropriate live chat channel, hover over it, and click the ⋮ (three dots) icon to open the drop-down menu. Click Configure Channel to open the channel detail form.

 Note

To create a new live chat channel, open the Live Chat app and click New. See Live Chat for more information.

Click on the Channel Rules tab. Then, open an existing rule, or create a new one by clicking Add a line.

On the Create Rules modal, choose the appropriate chatbot in the Chatbot field.

If the chatbot should only be active if there are no live chat operators available, check the box labeled Enabled only if no operator.

 See also

Live chat channel rules

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Reports

Odoo Live Chat includes several reports that allow for the monitoring of operator performance and the identification of trends in customer conversations.

Available reports

The following reports are included in the Live Chat app:

 Note

The Live Chat Ratings Report can also be accessed through the Report menu. For more information on this report, and on the Live Chat rating process, see Live Chat Ratings.

To access a drop-down menu of all the available reports, navigate to Live Chat app ‣ Report.

Sessions History

The Sessions History report displays an overview of live chat sessions, including session dates, participant name and country, session duration, the number of messages, and the rating. It also provides access to the complete transcripts of live chat sessions.

To access this report, navigate to Live Chat app ‣ Report ‣ Sessions History.

The information in this report can be exported, or inserted into a spreadsheet.

Click the ⚙️ (gear) icon to the right of the History page title, in the top-left corner. Doing so reveals a drop-down menu.

From the drop-down menu, click Export All to export all sessions to a spreadsheet, or Insert list in spreadsheet to insert the information in a new, or existing, spreadsheet.

To only export select sessions, first select the desired sessions to be exported from the list, by clicking the checkbox to the left of each individual session. With the sessions selected, click the ⚙️ (gear) Actions icon in the top-center of the page, and click Export or Insert list in spreadsheet.

To view the transcript of an individual conversation, click anywhere on the entry line. This opens the Discuss thread for the conversation.

In the Discuss thread, the conversation view displays the entire transcript of the conversation. At the top of the conversation, there is a list of the web pages the visitor browsed before beginning their chat session, along with corresponding time stamps. If the visitor left a rating, it is included at the end of the transcript.

Session Statistics

The Session Statistics report provides a statistical overview of live chat sessions. The default view for this report displays sessions grouped by the date of creation.

To access this report, navigate to Live Chat app ‣ Reports ‣ Session Statistics.

The stacked bar graph view of the Session Statistics report, with results grouped by Creation Date (hour), then by rating.

To view a different measure, click the Measures drop-down menu at the top-left of the report. The measures available for this report include:

  • # of speakers: number of participants in the conversation.
  • Days of activity: number of days since the operator’s first session.
  • Duration of Session (min): the duration of a conversation, in minutes.
  • Is visitor anonymous: denotes whether the conversation participant is anonymous.
  • Messages per session: the total number of messages sent in a conversation. This measure is included in the default view.
  • Rating: the rating received by an operator at the end of a session, if one was provided.
  • Session not rated: denotes if a session did not receive a rating at the end of the conversation.
  • Time to answer (sec): the average time, in seconds, before an operator responds to a chat request.
  • Visitor is Happy: denotes whether a positive rating was provided. If the visitor gave either a negative or neutral rating, they are considered unhappy.
  • Count: the total number of sessions.

Operator Analysis

The Operator Analysis report is used to monitor the performance of individual live chat operators.

To access the report, navigate to Live Chat app ‣ Reports ‣ Operator Analysis.

The default view for this report is a bar chart, which only displays conversations from the current month, as indicated by the This Month default search filter. Conversations are grouped by operator.

To view a different measure, click the Measures drop-down menu at the top-left of the report. The measures available for this report include:

  • # of Sessions: the number of sessions an operator participated in. This measure is included by default.
  • Average duration: the average duration of a conversation, in seconds.
  • Average rating: the average rating received by the operator.
  • Time to answer: the average amount of time before the operator responds to a chat request, in seconds.
  • Count: the total number of sessions.

View and filter options

On any Odoo report, the view and filter options vary, depending on what data is being analyzed, measured, and grouped. See below for additional information on the available views for the Live Chat reports.

 Note

The Sessions History report is only available in list view.

Pivot view

The pivot view presents data in an interactive manner. The Session Statistics and Operator Analysis reports are available in pivot view.

The pivot view can be accessed on a report by selecting the grid icon at the top-right of the screen.

To add a group to a row or column, click the ➕ (plus sign) icon next to Total, and then select one of the groups from the drop-down menu that appears. To remove one, click the ➖ (minus sign) icon, and de-select the appropriate option.

Graph view

The graph view presents data in either a barline, or pie chart. The Session Statistics and Operator Analysis reports are available in graph view.

Switch to the graph view by selecting the line chart icon at the top-right of the screen. To switch between the different charts, select the desired view’s corresponding icon at the top-left of the chart, while in graph view.

 Tip

Both the bar chart and line chart can utilize the stacked view option. This presents two or more groups of data on top of each other, instead of next to each other, making it easier to compare data.

Save and share a favorite search

The Favorites feature found on reports allows users to save their most commonly used filters, without having to reconstruct them every time they are needed.

To create and save a filter to the Favorites section on the search bar drop-down menu, follow the steps below:

  1. Set the necessary parameters using the Filters and Group By options available in the Search… bar drop-down menu and the Measures drop-down menu at the top-left of the report.
  2. Click the 🔻(triangle pointed down) icon next to the Search… bar to open the drop-down menu.
  3. Under the Favorites heading, click Save current search.
  4. Rename the search.
  5. Select Default filter to have these filter settings automatically displayed when the report is opened. Otherwise, leave it blank.
  6. Select Shared to make this filter available to all other database users. If this box is not checked, the filter is only available to the user who creates it.
  7. Click Save to preserve the configuration for future use.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Participate in live chat

Operators are the users who respond to live chat requests from customers and website visitors. The information below outlines the necessary steps for operators participating in live chat conversations on an Odoo database.

Set an online chat name

Before participating in a live chat, operators may choose to update their Online Chat Name. This is the name displayed to site visitors in the live chat conversation.

To update the Online Chat Name, click on the user avatar in the top-right corner of any page in the database. Select My Profile from the drop-down menu to open the profile page. On the right side of the Preferences tab, locate the Online Chat Name field, and enter a preferred name.

If a user’s Online Chat Name is not set, the name displayed defaults to the user’s name that is designated on their profile page.

 Example

A user has their full name as their User Name, but they do not want to include their last name in a live chat conversation. They would then set their Online Chat Name to include only their first name.

Set online chat languages

If an operator speaks multiple languages, they can add this information to their user profile. This information can then be used to determine which conversations the operator is assigned. A visitor’s language is determined via their browser’s language settings.

 Note

Conversations are assigned to operators based on a number of criteria, including availability and the number of ongoing conversations. While the operator’s main language and additional languages are taken into consideration, they do not supersede all other criteria.

To add Online Chat Languages, click on the user avatar in the top-right corner of any page in the database. Select My Profile from the drop-down menu to open the profile page. On the right side of the Preferences tab, click into the Online Chat Language field, and select one or more languages from the drop-down menu.

 Important

Only languages that are enabled on the database can be selected in the Online Chat Language field.

Join or leave a channel

To join a live chat channel, go to the Live Chat app ‣ Channels, and click the Join button on the Kanban card for the appropriate channel.

Any channel where the user is currently active shows a Leave button. Click this button to disconnect from the channel.

 Important

Operators that do not show any activity in Odoo for more than thirty minutes are considered disconnected, and subsequently removed from the channel.

Manage live chat requests

When an operator is active in a channel, chat windows open in the bottom-right corner of the screen, no matter where they are in the database. This allows them to access other pages and apps, while still participating in the conversation.

 Tip

Conversations can also be accessed by clicking the  (messages) icon in the menu bar.

Live chat conversations can also be viewed by navigating to the Discuss app. New conversations appear in bold under the LIVECHAT heading, located along the left panel.

Click on a conversation in the left panel to select it. This opens the conversation. From this view, an operator can participate in the chat the same as they would in the normal chat window.

 See also

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Inventory

Odoo Inventory is both an inventory application and a warehouse management system. The app allows users to easily manage lead times, automate replenishment, configure advanced routes, and more.

 See also

 Edit on GitHub

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Configure product

A group of products in Odoo can be further defined using:

  • Units of measure (UoM): a standard quantity for specifying product amounts (e.g., meters, yards, kilograms). Enables automatic conversion between measurement systems in Odoo, such as centimeters to feet.
    • Ex: Purchasing fabric measured in meters but receiving it in yards from a vendor.
  • Packages: A physical container used to group products together, regardless of whether they are the same or different.
    • Ex: A box containing assorted items for delivery, or a storage box of two hundred buttons on a shelf.
  • Packaging: groups the same products together to receive or sell them in specified quantities.
    • Ex: Cans of soda sold in packs of six, twelve, or twenty-four.

Comparison

This table provides a detailed comparison of units of measure, packages, and packaging to help businesses evaluate which best suits their requirements.

Feature

Unit of measure

Packages

Packaging

Purpose

Standardized measurement for product units (e.g., cm, lb, L)

Tracks the specific physical container and its contents

Groups a fixed number of items together for easier management (e.g., packs of 6, 12 or 24)

Product uniformity

Defined per product; saved as one UoM in the database

Allows mixed products

Same products only

Flexible

Converts between vendor/customer UoMs and database UoM

Items can be added or removed from the container

Quantities are fixed (e.g., always packs of 6, 12 or 24)

Complexity

Simplest for unit conversions

More complex due to container-level inventory tracking

Simpler; suitable for uniform product groupings

Inventory tracking

Tracks product quantities within the warehouse in the specific UoM defined in the product form

Tracks package location and contents within the warehouse

Tracks grouped quantities but not individual items’ locations

Smooth barcode operations

Not available

Requires scanning both the package and individual items for reception. (even if there are 30 items in a package). Can enable the Move Entire Packages feature to update the package’s contained items’ locations, when moving the package

Scanning a packaging barcode automatically records all included units. (e.g. 1 pack = 12 units)

Product lookup

Not available

Scanning a product’s barcode identifies its typical storage location in the Odoo database

Barcode identifies grouped quantity, not storage location

Unique barcodes

Not available

Unique barcodes for individual packages (e.g. Pallet #12)

Barcodes set at the packaging type level (e.g. for a pack of 6)

Reusability

Not applicable

Can be disposable or reusable, configured via the Package Use field

Disposable only

Container weight

Not applicable

Weight of the container itself is included in the Shipping Weight field of a package (Inventory app ‣ Products ‣ Packages)

Weight of the container is defined in the Package Type settings

Lot/serial number tracking

Requires manual adjustments to track UoMs via lots (See use case for details)

Applies only to contained products

Applies to both contained products and the container

Custom routes

Cannot be set

Cannot be set

Routes can define specific warehouse paths for a particular packaging type

Use cases

After comparing the various features, consider how these businesses, with various inventory management and logistics workflows, came to their decision.

Pallets of items using packaging

A warehouse receives shipments of soap organized on physical pallets, each containing 96 bars. These pallets are used for internal transfers and are also sold as standalone units. For logistical purposes, the pallet’s weight must be included in the total shipping weight for certain deliveries. Additionally, the pallet requires a barcode to facilitate tracking, and the number of individual bars of soap must be included in the stock count when the pallet is received.

After evaluating various options, product packaging was the most suitable solution. Packaging enables assigning a barcode to a pallet, identifying it as a “pallet type” containing 96 soap bars. This barcode streamlines operations by automatically registering the grouped quantity. Key distinctions include:

  • Warehouse tracking limitations: Odoo tracks only the total quantity, not the number of packagings. For instance, if a pallet with 12 and 24 quantities is received, Odoo records 36 quantities, not the pallet details.
  • Packaging barcodes are type-specific, not unique: Barcodes represent packaging types (e.g., “pallet of 96 soap bars”) but do not uniquely identify individual pallets, such as Pallet #1 or Pallet #2.

Capture product information using barcode

An Odoo user expects the Barcode app to display the typical storage location of a product by scanning a barcode for a container.

Packages was the most suitable. When the appropriate setting is enabled, scanning a package barcode displays its contents in the Barcode app.

Packages represent physical containers, enabling detailed tracking of the items they hold. Scanning a package provides visibility into its contents and facilitates operations, like inventory moves.

Track different units of measure in storage

A fruit juice distributor tracks multiple UoMs for their operations:

  • Fruits are purchased in tons.
  • Juice is produced and stored in kilograms.
  • Small samples are stored in grams for recipe testing.

Unit of Measure was most suitable. Odoo automatically converts tons to kilograms during receipts. However, since Odoo tracks only one UoM per product in the database, the company uses lot numbers to differentiate UoMs:

  • LOT1: Grams (g)
  • LOT2: Kilograms (kg)

Manual inventory adjustments are required to convert between lots, such as subtracting 1 kg from LOT2 to add 1,000 g to LOT1. While functional, this workaround can be time-consuming and prone to errors.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Product type

In Odoo, goods and services are both set up as products. When setting up a new product, there are several fields that should be carefully chosen, as they determine how to invoice and track a business’ goods or services.

To configure an existing product, go to Inventory app ‣ Products ‣ Products, and select the desired product from the list. Alternatively, from the Products menu, click New to create a new product.

 See also

Odoo Tutorials: Product Type

For sale vs. purchase

Goods and services can be designated as those that can be bought, sold, or both. On the product form, tick the Sales checkbox if a product can be sold to a customer (e.g. finished goods). Tick Purchase if the product can be purchased (e.g. raw materials).

 Example

If a resale clothing shop buys discounted denim jackets and sells them at a higher cost to the end consumer, the Jacket product form might have both the Sales and Purchase checkbox ticked.

On the other hand, say the store occasionally sews new jackets using denim and thread as raw materials. In the Denim and Thread product forms, only Purchase should be ticked, whereas the Handmade Jacket product form would only tick Sales.

Goods vs. services

When configuring a product, a Product Type needs to be selected on the General Information tab of a product form. Each product type impacts different operations in other Odoo applications, such as Sales and Purchase, and should be chosen carefully.

  • Goods: a tangible, material object (e.g. anything from a hamburger to a house)
  • Service: an intangible, immaterial offering (e.g., a repair, a haircut, call center assistance)
  • Combo: any mix of goods and services (e.g. a new car (good) with an oil change included (service))

 Note

Due to their immaterial nature, services are not trackable in Odoo’s Inventory application.

Configure goods

Selecting Goods as the Product Type automatically triggers the appearance of a few fields and tabs in the product form:

  • Inventory tab: From here, purchasing and manufacturing routes and product logistics, such as product weight and customer lead time, can be specified.
  • Invoicing Policy field: This field determines at what point in the sales process a customer is invoiced.
     Important
    The Invoicing Policy field only appears if the Sales app is installed.
  • Track Inventory field: This checkbox determines whether Odoo tracks inventory for this product.
  • Smart buttons: Some smart buttons appear above the form when Goods is selected; others show upon selecting a Track Inventory method. For example, On Hand and Forecasted display when Track Inventory is ticked. In general, most smart buttons on a product form link to inventory operations.

Invoicing policy

The Invoicing policy field only shows on the product form if a product is for sale (in other words, if Sales is ticked, and the Sales app is installed).

When configuring a product for sale, it is necessary to choose an invoicing policy. When an invoicing policy of Ordered quantities is selected, customers are invoiced once the sales order is confirmed. When Delivered quantities is selected, customers are invoiced once the delivery is completed.

Tracked vs. untracked goods

The Track Inventory field on the product form determines a lot of Odoo’s Inventory operations.

Tracked products are those for which stock and inventory are maintained. Examples include finished goods and, often, the raw materials or components needed to make them.

When Track Inventory is ticked, a drop-down menu appears, offering for inventory to be tracked one of three ways: By Unique Serial Number, By Lots, or By Quantity.

Untracked products (sometimes referred to as non-inventory products) are typically consumed in a short period of time, meaning that stock/inventory does not need to be maintained. Non-inventory products are often essential, but exact counts are unnecessary. Examples include: office supplies, packaging materials, or items used in production that do not need to be individually tracked.

 Tip

Tick the Track Inventory checkbox if it is necessary to track a product’s stock at various locations, for inventory valuation, with lots and/or serial numbers, or when using reordering rules.

 See also

Tracking storable products using lot and serial numbers

Inventory operations by product type

Whether a good is tracked or untracked affects common Inventory operations, like transfers and reordering rules.

The table below summarizes which operations (and smart buttons) are enabled for tracked vs. untracked goods. Click highlighted chart items to navigate to detailed sections and related documents.

Inventory operation

Tracked

Untracked

Show on-hand quantity

Yes

No

Show forecasted quantity

Yes

No

Use reordering rules

Yes

No

Can be included in a purchase order

Yes

Yes

Use putaway rules

Yes

No

Can be manufactured, subcontracted, or used in another good’s BoM

Yes

Yes

Use inventory adjustments

Yes

No

Use inventory valuation

Yes

No

Create transfer

Yes

Yes

Use lot/serial number tracking

Yes

No

Can be placed in a kit

Yes

Yes

Can be placed in a package

Yes

Yes

Appears on inventory reports

Yes

No

Inventory

On-hand and forecasted quantities

A tracked product’s on-hand and forecasted quantities, based on incoming and outgoing orders, are reflected on the product form with two smart buttons:

  •  On-Hand Quantity: This represents the number of units currently available in inventory. Click the button to view or add stock levels for a tracked product.
  •  Forecasted: This represents the number of units expected to be available in inventory after all orders are taken into account. In other words, forecasted=on hand quantity+incoming shipments−outgoing shipments. Click the button to view the Forecasted Report.

On the other hand, untracked products are regarded as always available. Consequently, On-Hand Quantity is not tracked, and there is no Forecasted quantity available.

Putaway rules and storage

Both tracked and untracked goods can optimize storage using:

  •  Putaway Rules: This represents putaway rules that apply to a good, such as where to store it when a new shipment arrives.
  •  Storage Capacities: This represents any storage capacity limitations specified for this good. For example, a warehouse may require that only ten (or less) sofas be stored there at any given time, due to their large size.
Replenishment
Reordering rules

Only tracked products can trigger reordering rules to generate purchase orders. Untracked goods cannot be managed using reordering rules.

Reordering rules can be configured directly on the product form via the  (refresh) icon.

 Note

If reordering rules already exist on a product, Odoo re-labels this button to Min / Max, to show the minimum and maximum number of units that must be in stock.

Create purchase orders

Both tracked and untracked products can be included in a request for quotation in the Purchase app. However, when receiving untracked products, their on-hand quantity does not change upon validating the receipt (WH/IN).

Replenish smart button

The Replenish smart button allows all goods to be restocked directly from the product form, according to the Preferred Route.

 See also

Replenishment Odoo Tutorials: Replenishment Methods for Manufacturing

Manufacturing

Both tracked and untracked products can be manufactured, subcontracted, or included in another product’s bill of materials (BoM).

On the product form for a tracked or untracked good, there are several smart buttons that may appear for manufacturing operations:

  •  Bill of Materials: This shows the BoMs used to make this product.
  •  Used In: This shows other goods that include this product in their BoM.

Transfer goods

Transfers are warehouse operations that involve the movement of goods. Examples of transfers include deliveries and receipts, as well as internal transfers between warehouses.

When creating a transfer for tracked products in the Inventory app, transfers modify the on-hand quantity at each location. For example, transferring five units from the internal location WH/Stock to WH/Packing Zone decreases the recorded quantity at WH/Stock and increases it at WH/Packing Zone.

For untracked products, transfers can be created, but exact quantities at each storage location are not tracked.

Packages

Both tracked and untracked (non-inventory), products can be placed in packages.

However, for non-inventory products, the quantity is not tracked, and the product is not listed in the package’s Contents (which can be accessed by going to Inventory app ‣ Products ‣ Packages, and selecting the desired package).

An untracked product was placed in the package, but the Content section does not list it.

Additionally, if the Move Entire Packages feature is enabled, moving a package updates the location of the contained tracked products but not the contained untracked products. To enable this feature, navigate to Inventory app ‣ Configuration ‣ Operations Types, select any operation, and tick the Move Entire Packages checkbox.

Inventory reports

Only tracked products appear on the following reports.

 Important

These reports are only available to users with administrator access.

  • Stock report: This report provides a comprehensive list of all on-hand, unreserved, incoming, and outgoing tracked inventory. To access the report, go to Inventory app ‣ Reporting ‣ Stock.
  • Location report: This report shows a breakdown of which tracked products are held at each location (internal, external, or virtual). The report is only available with the Storage Location feature activated (Inventory app ‣ Configuration ‣ Settings). To access it, go to Inventory app ‣ Reporting ‣ Locations.
  • Moves History report: This report summarizes where and when this good has moved in/out of stock. To access the report, go to Inventory app ‣ Reporting ‣ Moves History. Alternatively, click the  In / Out smart button on a product form to filter the report on that product’s specific moves history.
  • Moves Analysis: This report provides a pivot table view of inventory transfers by operation type.
  • Stock Valuation report: A detailed record of the monetary value of all tracked inventory.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Units of measure

In some cases, handling products in different units of measure is necessary. For example, a business can buy products from a country that uses the metric system, and then sell those products in a country that uses the imperial system. In that case, the business needs to convert the units.

Another case for unit conversion is when a business buys products in a big pack from a supplier, and then sells those products in individual units.

Odoo can be set up to use different units of measure (UoM) for one product.

Configuration

To use different units of measure in Odoo, first go to Inventory app ‣ Configuration ‣ Settings, and under the Products section, activate the Units of Measure setting. Then, click Save.

Units of measure categories

After enabling the Units of Measure setting, view the default units of measure categories in Inventory app ‣ Configuration ‣ UoM Categories. The category is important for unit conversion; Odoo can convert a product’s units from one unit to another only if both units belong to the same category.

Each units of measure category has a reference unit. The reference unit is highlighted in blue in the Uom column of the Units of Measure Categories page. Odoo uses the reference unit as a base for any new units.

To create a new unit, first select the correct category from the Units of Measure Categories page. For example, to sell a product in a box of six units, click the Unit category line. Then, on the category page that appears, click Add a line in the Units of Measure tab. Then, in the Unit of Measure field, title the new unit, such as Box of 6, then in the Type field, select the appropriate size reference, such as Bigger than the reference Unit of Measure.

If applicable, enter a UNSPSC Category, which is a globally recognized code managed by GS1, that must be purchased in order to use.

In the Ratio field, enter how many individual units are in the new UoM, such as 6.00000 when using the example of the 6-Pack (since a box of six is six times bigger than the reference unit, 1.00000).

Specify a product’s units of measure

To set units of measure on a product, first go to Inventory app ‣ Products ‣ Products and select a product to open its product form page.

In the General Information tab, edit the Unit of Measure field to specify the unit of measure that the product is sold in. The specified unit is also the unit used to keep track of the product’s inventory and internal transfers.

Edit the Purchase UoM field to specify the unit of measure that the product is purchased in.

Unit conversion

Odoo automatically converts unit measurements when products have different UoMs and purchase UoMs.

This occurs in various scenarios, including:

  1. Vendor orders: purchase UoM on purchase orders (POs) converts to UoM on internal warehouse documents
  2. Automatic replenishment: generates POs when the stock levels of a product (tracked in UoM) dips below a certain level. But, the POs are created using the purchase UoM
  3. Sell products: if a different UoM is used on the sales order (SO), the quantity is converted to the warehouse’s preferred UoM on the delivery order

Buy products in the purchase UoM

When creating a new request for quotation (RFQ) in the Purchase app, Odoo automatically uses the product’s specified purchase unit of measure. If needed, manually edit the UoM value on the RFQ.

After the RFQ is confirmed into a PO, click the Receipt smart button at the top of the PO.

Odoo automatically converts the purchase unit of measure into the product’s sales/inventory unit of measure, so the Demand column of the delivery receipt shows the converted quantity.

 Example

When the product’s purchase UoM is Box of 6, and its sales/inventory unit of measure is Units, the PO shows the quantity in boxes of six, and the receipt (and other internal warehouse documents) shows the quantity in units.

An order of three quantities is placed using the purchase “UoM”: Box of 6.

Upon warehouse receipt, the recorded quantities are in the internal “Unit of Measure”: Units.

Replenishment

A request for quotation for a product can also be generated directly from the product form using the Replenish button.

After clicking Replenish, a replenish assistant box pops up. The purchase unit of measure can be manually edited in the Quantity field, if needed. Then, click Confirm to create the RFQ.

 Important

A PO can only be automatically generated if at least one vendor is listed in the product form’s Purchase tab.

Navigate to the created PO by clicking the Forecasted smart button on the product form. Scroll down to the Forecasted Inventory section, and in the Requests for quotation line, click the RFQ reference number to open the draft RFQ. If necessary, the purchase UoM can be edited directly on the PO.

Sell in a different UoM

When creating a new quotation in the Sales app, Odoo automatically uses the product’s specified unit of measure. If needed, the UoM can be manually edited on the quotation.

After the quotation is sent to the customer, and confirmed into a sales order (SO), click the Delivery smart button at the top of the SO. Odoo automatically converts the unit of measure into the product’s inventory unit of measure, so the Demand column of the delivery shows the converted quantity.

For example, if the product’s UoM on the SO was changed to Box of 6, but its inventory unit of measure is Units, the SO shows the quantity in boxes of six, and the delivery shows the quantity in units.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Packages

package is a physical container holding one or more products. Packages can also be used to store items in bulk.

Packages are commonly used for the following purposes:

  1. Grouping products to move them in bulk.
  2. Shipping to customers: configure package types to align with shipping carriers’ size and weight requirements, streamlining the packing process, and ensuring compliance with carrier shipping specifications.
  3. Storing items in bulk.

Package use is a field on the package form in Odoo that is only visible by enabling the Batch Transfers and Packages features (Inventory app ‣ Configuration ‣ Settings).

By default, the Package Use field on a packages form is set to Disposable Box. Change this field to Reusable Box only when configuring packages for cluster pickings.

Package type is an optional feature used for calculating shipping cost, based on real shipping weight. Create package types to include the weight of the package itself (e.g. boxes, pallets, other shipping containers) in shipping cost calculations.

 Note

While packages are commonly used in the three-step delivery route, they can be used in any workflow involving storable products.

Configuration

To use packages, first go to Inventory app ‣ Configuration ‣ Settings. Under the Operations heading, activate the Packages feature. Then, click Save.

When moving packages internally, the Move Entire Packages feature can be enabled on an operation type to update a package’s contained item’s location upon updating the package’s location.

To do that, go to Inventory app ‣ Configuration ‣ Operations Types and select the desired operation this feature will apply to (may have to set it for multiple).

On the operation type page, in the Packages section, tick the Move Entire Packages checkbox.

Pack items

Products can be added to packages in any transfer by:

  1. Clicking each Detailed Operations icon on the product line.
  2. Using the Put in Pack button to place everything in the transfer into a package.

Detailed operations

On any warehouse transfer (e.g. receipt, delivery order), add a product to a package by clicking the ⦙≣ (bulleted list) icon in the Operations tab.

Doing so opens the Detailed Operations pop-up window for the Product.

To put the Product in a package, click Add a line, and assign the product to a Destination Package. Select an existing package, or create a new one by typing the name of the new package, then select Create….

Twelve units of Acoustic Bloc Screen are placed in PACK0000001.

Then, specify the quantity of items to go into the package in the Done column. Repeat the above steps to place the Product in different packages. Once finished, click Confirm to close the window.

 See also

Ship one order in multiple packages

Put in pack

Alternatively, click the Put in Pack button on any warehouse transfer to create a new package, and place all the items in the transfer in that newly-created package.

 Important

The Put in Pack button appears on receipts, delivery orders, and other transfer forms with the Packages feature enabled in Inventory app ‣ Configuration ‣ Settings.

In batch transfer BATCH/00003, the Put in Pack button was clicked to create a new package, PACK0000002, and assign all items to it in the Destination Package field.

Package type

Create package types by navigating to Inventory app ‣ Configuration ‣ Package Types, in order to set custom dimensions and weight limits. This feature is mainly used to calculate package weights for shipping costs.

 See also

On the Package Types list, clicking New opens a blank package type form. The fields of the form are as follows:

  • Package Type (required): define the package type’s name.
  • Size: define the dimensions of the package in millimeters (mm). The fields, from left to right, define the Length, Width, and Height.
  • Weight: weight of an empty package (e.g. an empty box, pallet).

 Note

Odoo calculates the package’s weight by adding the weight of the empty package plus the weight of the item(s), which can be found in the Weight field, in the Inventory tab, of each product form.

  • Max Weight: maximum shipping weight allowed in the package.
  • Barcode: define a barcode to identify the package type from a scan.
  • Company: specify a company to make the package type available only at the selected company. Leave the field blank if it is available at all companies.
  • Carrier: specify the intended shipping carrier for this package type.
  • Carrier Code: define a code that is linked to the package type.

Cluster packages

To use cluster packages, first navigate to Inventory app ‣ Configuration ‣ Settings, and activate the Batch Transfers feature, located in the Operations section. Doing so makes the Package Use field become visible on a package form.

Add new packages by going to Inventory app ‣ Products ‣ Packages. Then, click New, or select an existing package. Doing so opens the package form, which contains the following fields:

  • Package Reference (required): name of the package.
  • Package Type: used for configuring shipping boxes to ship to the customer.
     Note
    Package Type is unnecessary for configuring packages for cluster pickings.
  • Shipping Weight: used to input the weight of the package after measuring it on a scale.
  • Company: specify a company to make the package available only at the selected company. Leave the field blank if the package is available at all companies.
  • Location: current location of the package.
  • Pack Date: the date the package was created.
  • Package Use: choose Reusable for packages used for moving products within the warehouse; Disposable for packages used to ship products to customers.

 See also

Using cluster packages

View packages

To view all packages go to Inventory app ‣ Products ‣ Packages. By default, packages are shown in Kanban view, in their current storage location.

 Tip

Drag-and-drop packages to move them between internal locations.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Packaging

In Odoo Inventorypackaging refers to disposable containers holding multiple units of a specific product.

For example, different packages for cans of soda, such as a 6-pack, a 12-pack, or a case of 36, must be configured on the individual product form. This is because packagings are product specific, not generic.

 Tip

Packaging can be used in conjunction with Odoo Barcode. When receiving products from suppliers, scanning the packaging barcode automatically adds the number of units in the packaging to the internal count of the product.

Configuration

To use packagings, navigate to Inventory app ‣ Configuration ‣ Settings. Then, under the Products heading, enable the Product Packagings feature, and click Save.

Create packaging

Packagings can be created directly on the product form, or from the Product Packagings page.

From product form

Create packagings on a product form by going to Inventory app ‣ Products ‣ Products, and select the desired product.

Under the Inventory tab, scroll down to the Packaging section, and click Add a line. In the table, fill out the following fields:

  • Packaging (required): name of packaging that appears on sales/purchase orders as a packaging option for the product.
  • Contained quantity (required): amount of product in the packaging.
  • Unit of Measure (required): measurement unit for quantifying the product.
  • Sales: check this option for packagings intended for use on sales orders.
  • Purchase: check this option for packagings intended for use on purchase orders.

 Note

Access additional fields in the Packaging table below by clicking the  (additional options) icon to the far-right of the column titles in the Packaging section, and selecting the desired options from the drop-down menu that appears.

  • Barcode: identifier for tracing packaging in stock moves or pickings, using the Barcode app. Leave blank if not in use.
  • Company: indicates the packaging is only available at the selected company. Leave blank to make the packaging available across all companies.

 Example

To create a packaging type for six units of the product, Grape Soda, begin by clicking Add a line. In the line, name the Packaging 6-pack, and set the Contained quantity to 6. Repeat this process for additional packagings.

From product packagings page

To view all packagings that have been created, go to Inventory app ‣ Configuration ‣ Product Packagings. Doing so reveals the Product Packagings page with a complete list of all packagings that have been created for all products. Create new packagings by clicking New.

 Example

Two soda products, Grape Soda and Diet Coke, have three types of packagings configured. On the Product Packagings page, each product can be sold as a 6-Pack that contains 6 products, as a 12-Pack of 12 products, or as a Case of 32 products.

Partial reservation

After completing the packaging setup, packagings can be reserved in full or partial quantities for outgoing shipments. Partial packaging flexibility expedites order fulfillment by allowing the immediate shipment of available items, while awaiting the rest.

To configure packaging reservation methods, go to Inventory app ‣ Configuration ‣ Product Categories. Then, click New, or select the desired product category.

On the product category’s form, in the Logistics section, Reserve Packagings can be set to Reserve Only Full Packagings or Reserve Partial Packagings.

 Important

To see the Reserve Packaging field, the Product Packaging feature must be enabled. To enable this feature, go to Inventory app ‣ Configuration ‣ Settings, scroll to the Products section, tick the Product Packagings checkbox, and click Save.

 Example

To better evaluate the options based on business needs, consider the following example:

  • a product is sold in twelve units per packaging.
  • an order demands two packagings.
  • there are only twenty-two units in stock.

When Reserve Only Full Packagings is selected, only twelve units are reserved for the order.

Conversely, when Reserve Partial Packagings is selected, twenty-two units are reserved for the order.

Apply packagings

When creating a sales order in the Sales app, specify the packagings that should be used for the product. The chosen packaging is displayed on the SO under the Packaging field.

 Example

18 cans of the product, Grape Soda, is packed using three 6-pack packagings.

Routes for packaging

When receiving packagings, by default, they follow the warehouse’s configured reception route. To optionally set up a packaging-specific route, go to Inventory app ‣ Configuration ‣ Routes.

 Important

The Product PackagingsStorage Locations, and Multi-Step Routes features (found by going to Inventory app ‣ Configuration ‣ Settings) must be activated, and saved.

 See also

Routes and push/pull rules

Create route

On the Routes page, click New, or select a route that is not for a warehouse. Next, in the Applicable on section, tick the Packagings checkbox.

Route with “Packagings” selected, with “Products” and “Warehouses” not selected.

Apply route on packaging

Then, to apply the route, go to Inventory app ‣ Products ‣ Products, and select the product that uses packaging.

In the product form, switch to the Inventory tab. In the Packaging section that contains configured packagings, click the  (additional options) icon. Tick the Routes checkbox to make the column visible in the Packaging table.

In the Routes field, select the packaging-specific route. Repeat these steps for all packaging intended to use the route.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Product tracking

Lots and serial numbers are the two ways to identify and track products in Odoo. While there are similarities between the two traceability methods, there are also notable differences that affect receipts, deliveries, and inventory reports.

lot usually indicates a specific batch of an item that was received, is currently stored, or was shipped from a warehouse. However, it can also pertain to a batch of products manufactured in-house, as well.

serial number is a unique identifier assigned incrementally (or sequentially) to an item or product, used to distinguish it from other items or products.

 See also

Enable lots & serial numbers

To track products using lots and serial numbers, the Lots & Serial Numbers feature must be enabled.

To do that, go to the Inventory app ‣ Configuration ‣ Settings, scroll down to the Traceability section, and click the box next to Lots & Serial Numbers. Then, click the Save button to save changes.

When to use lots

Lots are useful for products that are manufactured or received in large quantities, such as clothes or food. Lots and can be used to trace a product back to a group, which is especially useful when managing product recalls or expiration dates.

 Example

Manufacturers assign lot numbers to groups of products that have common properties; this can lead to multiple goods sharing the same lot number. This helps identify a number of products in a single group, and allows for end-to-end traceability of these products through each step in their life cycles.

When to use serial numbers

The goal of assigning serial numbers to individual products is to make sure every item’s history is identifiable when it travels through the supply chain. This can be especially useful for manufacturers that provide after-sales services related to products they sell and deliver.

 Example

Serial numbers can contain many different types of characters: numbers, letters, typographical symbols, or a mixture of all three types.

Traceability

Manufacturers and companies can refer to traceability reports to see the entire life cycle of a product. These reports include vital information, like where it came from (and when), where it was stored, and to whom it was sent.

To see the full traceability of a product, or group products by lots and/or serial numbers, go to Inventory app ‣ Products ‣ Lots/Serial Numbers. Doing so reveals the Lots/Serial Numbers dashboard.

From here, products with lots or serial numbers assigned to them are listed by default. They can also be expanded to show what lots or serial numbers have been specifically assigned to them.

To group by lots or serial numbers, first remove any default filters from the search bar in the upper-right corner. Then, click Group By, and select Add Custom Group, which reveals a mini drop-down menu. From this mini drop-down menu, select Lot/Serial Number, and click Apply.

Doing so reveals all existing lots and serial numbers, and each can be expanded to show all product quantities with that assigned number. For unique serial numbers that are not reused, there should only be one product per serial number.

 Tip

For additional information regarding an individual lot number or serial number, click the line item for the lot or serial number to reveal that specific number’s Lot or Serial Number form. From this form, click the Location and Traceability smart buttons to see all stock on-hand using that serial number. Any operations made using that lot or serial number can be found here, as well.

 Edit on GitHub

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Serial numbers

Serial numbers are one of the two ways to identify and track products in Odoo, along with lots. A serial number is a unique identifier assigned to a product to distinguish it from other products in a series. Serial numbers can consist of several character types: they can contain numbers, letters, other typographical characters, or any mix of these character types.

The goal of assigning serial numbers allows for the tracking of individual products and their expiration dates and location throughout the supply chain. For instance, serial numbers can help manufacturers locate products to provide after-sales services or in the event of a recall.

 See also

Odoo Tutorials: Serial Numbers

Enable lots & serial numbers

To track products using serial numbers, two settings need to be enabled: the Lots & Serial Numbers traceability setting, and serial number usage by operation type.

Traceability setting

The Lots & Serial Numbers traceability feature must be enabled first to track products. To do so, go to Inventory app ‣ Configuration ‣ Settings, scroll down to the Traceability section, and tick the Lots & Serial Numbers checkbox. Remember to click the Save button to save changes.

By operation type

Next, specify whether the ability to create new or use existing serial numbers should be turned on for particular operation types (such as shipping or receiving goods). In other words, this setting allows for serial number tracking on warehouse receipts and delivery orders.

 Example

Enabling the Create New option for receipts allows new serial numbers to be assigned as items are received. However, for delivery orders, it is often disabled to prevent workers from accidentally assigning serial numbers that do not exist in inventory.

To enable the creation of new serial numbers on an operation, navigate to Inventory app ‣ Configuration ‣ Operations Types.

From the Operations Types page, select the desired operation type (e.g. Receipts, Delivery Orders, or Manufacturing), and select the Create New option in the Lots/Serial Numbers section of the operation type’s configuration page.

Configure serial number tracking on individual products

Once the Lots & Serial Numbers setting has been activated, individual products can now be tracked using serial numbers. To track a product, go to Inventory app ‣ Products ‣ Products, and select the desired product.

In the General Information tab on the product form, make sure the box next to Track Inventory is checked. Then, select By Unique Serial Number, and click Save to save the changes. Now, existing or new serial numbers can now be selected and assigned to newly-received or manufactured batches of this product.

Assign serial numbers

In Odoo, serial numbers can be assigned at several times and places:

Create new serial numbers for products already in stock

New serial numbers can be created for products already in stock with no assigned serial number. To do so, go to Inventory ‣ Products ‣ Lots/Serial Numbers, and click New. Doing so reveals a blank lot/serial number form. On this form, a new Lot/Serial Number is generated automatically.

 Tip

While Odoo automatically generates a new lot/serial number to follow the most recent number, it can be edited and changed to any desired number, by clicking the line under the Lot/Serial Number field, and changing the generated number.

Once the Lot/Serial Number is generated, click the blank field next to Product to reveal a drop-down menu. From this menu, select the product to which this new number will be assigned.

This form also provides the option to adjust the On Hand Quantity, to assign a unique Internal Reference number (for additional traceability), and to assign this specific lot/serial number configuration to a specific company in the Company field. A detailed description of this specific lot/serial number can also be added in the Description tab below.

 Tip

The Internal Reference number field is a space for manufacturers to input an additional unique number to allow for easier tracking. For instance, SKU values may be used here.

When all desired configurations are complete, click the Save button to save all changes.

After a new serial number has been created, assigned to the desired product, and saved, navigate back to the product form, by going to Inventory app ‣ Products ‣ Products, and selecting the product that this newly-created serial number was just assigned to.

On that product’s detail form, click the Lot/Serial Numbers smart button to view the new serial number.

Create serial numbers for incoming or outgoing products

Serial numbers can be assigned to both incoming and outgoing goods. The receipt and delivery order forms mirror one another; the instructions below can be followed to assign serial numbers in either form.

  • Incoming goods: Assign serial numbers directly on the receipt. Receipts can be accessed by navigating to Inventory app ‣ Operations ‣ Receipts.
  • Outgoing goods: Assign serial numbers directly on the delivery order. Receipts can be accessed by navigating to Inventory app ‣ Operations ‣ Deliveries.

 Important

Before assigning serial numbers on receipts or delivery orders, be sure that the ability to create new serial numbers by operations type is enabled.

Lots/serial number field

Serial numbers can be entered directly into the Serial Numbers field on a receipt or delivery order.

 Tip

To make the Serial Numbers field visible on a receipt or delivery order, click the  (Adjust Settings) icon, and in the drop-down menu, tick the Serial Numbers checkbox.

Example Serial Numbers field on a delivery order.

Stock move pop-up window

For various methods of assigning serial numbers individually or in bulk, click the  (list) icon in the product line of a receipt.

Add a line

In the Open: Stock move pop-up window, manually enter serial numbers in the Lot/Serial Number column. This method is best reserved for adding only one or a few serial numbers.

Generate Serials/Lots

Assign multiple serial numbers at once by clicking the Generate Serials/Lots button in the Open: Stock move pop-up window.

Doing so opens a new popup, Generate Serial numbers, which contains a few fields:

  • First SN: Input the first serial number that should start the sequence. From there, Odoo automatically detects what pattern should be followed to generate more serial numbers.
  • Number of SN: Specify the desired number of serial numbers to generate.
     Note
    The number of serials generated will be reflected in the Quantity field on a receipt or delivery order. Even if the number of serial numbers generated exceeds the Demand value, Odoo still allows the quantity (based on the serial numbers) to be delivered or received.
  • Keep current lines checkbox: Check this box to keep existing serial numbers that may have been previously added. To replace existing serial numbers in the list, leave the box unchecked.

After filling out these fields, click the Generate button. The newly generated serials now appear in the Open: Stock move window. By clicking  (Save), the Quantity and the Serial Numbers fields on the delivery order or receipt update automatically.

Import Serials/Lots

Another option for assigning multiple serial numbers at once is to click the Import Serials/Lots button in the Open: Stock move pop-up window.

 Important

If the import button is not visible, ensure the Create New box is checked in the receipt’s configuration page.

Doing so opens the Import Serials pop-up window. Enter each serial number on a separate line in the Lots/Serial numbers text field.

As when generating serials, check the Keep current lines box to keep existing serial numbers, or leave it unchecked to overwrite them.

 Tip

To expedite this process, copy/paste serial numbers from an existing spreadsheet and add them to the Lots/Serial numbers text field.

Finally, click Generate.

 Example

For a receipt with a Demand of 3.00 products, one product has already been assigned a serial number in the Open: Stock move pop-up window.

So, in the Import Lots pop-up window, two serial numbers, 124 and 125 are assigned to the remaining products by entering the following in the Lots/Serial numbers input field:

124
125

The Keep current lines option is selected to add these two serial numbers in addition to the serial number, 123, that has already been assigned.

Detailed operations

Accessible from both receipt and delivery order forms, the Detailed Operations page shows a detailed view of product movements, including information about serial numbers, exact locations, expiration dates, etc. This level of detail permits more precise tracking, for example, when handling perishable or regulated goods.

To access this page, first select a warehouse receipt or delivery order. Then, click on the  Moves smart button at the top of the page.

In the Lot/Serial Number column, manually type (or select from the drop-down menu) the desired serial numbers for each individual product.

When finished, click the receipt/delivery order’s breadcrumbs, and the assigned serial numbers are automatically saved.

Display serial numbers on delivery slips

When selling products tracked using serial numbers, it is possible to include the serial numbers on the delivery slips sent to customers. This can be helpful to customers in cases where serial numbers are needed, such as filing an RMA or repair request, or registering the product.

To include serial numbers on delivery slips, open the Inventory app, and navigate to Configuration ‣ Settings. Scroll down to the Traceability section, tick the Display Lots & Serial Numbers on Delivery Slips checkbox, and click Save.

After enabling the Display Lots & Serial Numbers on Delivery Slips setting, serial numbers are listed on delivery slips for products tracked by serial numbers, once the delivery order is validated.

To view serial numbers on delivery orders and delivery slips, navigate to the Inventory app, click on Delivery Orders, and select an order containing a product tracked using serial numbers.

To view the serial numbers of products included in the order, make sure the Operations tab is selected, then click the  (adjust) icon to the right of the tab. Ensure that the Serial Numbers checkbox is ticked, which causes a Serial Numbers column to appear. The serial number(s) for each product included in the order are displayed in this column.

When the order is ready to be processed, click Validate to confirm the delivery and add product information to the delivery slip.

At the top of the order’s form, click the  (Actions) button, and select Print ‣ Delivery Slip. The delivery slip is then downloaded. Open the delivery slip using the device’s browser or file manager. Serial numbers are listed next to their respective products in the Lot/Serial Number column.

Traceability & reporting

Manufacturers and companies can refer to the Lots/Serial Numbers dashboard and traceability reports to see the entire lifecycle of a product: when and where it originated, where it was stored, and who it was shipped to.

Lots/Serial Numbers dashboard

To see the full traceability of a product, or group by serial numbers, go to Inventory app ‣ Products ‣ Lots/Serial Numbers. Doing so reveals the Lots/Serial Numbers dashboard.

Reporting

On the Lots/Serial Numbers dashboard, products with serial numbers assigned to them are listed by default. Click the  (expand) icon to show which serial numbers are assigned to the chosen product.

To group by serial numbers (or lots), first remove any default filters from the search bar in the upper-right corner. Then, click the  (down arrow) icon and select Add Custom Group, which reveals a mini drop-down menu. From this mini drop-down menu, select Lot/Serial Number, and click Apply.

Doing so reveals all existing serial numbers and lots. Each row can be expanded to show all quantities of product assigned to that serial/lot number. For unique serial numbers that are not reused, there should be just one product per serial number.

 Tip

For additional information regarding an individual serial (or lot) number, click the line item for the serial number to reveal that specific Serial Number form. From this form, click the Location and Traceability smart buttons to see all stock on-hand using that serial number, and any operations made using that serial number.

 See also

Reassign

In addition to using the Lots/Serial Numbers dashboard, there are several other reporting templates that display the Lot/Serial Number field or the ability to filter by serial number. Go to Inventory app ‣ Reporting to access:

  • Locations report
  • Moves History report
  • Moves Analysis report

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Lot numbers

Lots are one of the two ways to identify and track products in Odoo. They typically represent a specific batch of products that were received, stored, shipped, or manufactured in-house.

Manufacturers assign lot numbers to groups of products sharing common properties, facilitating end-to-end traceability through their lifecycles.

Lots are useful for managing large quantities of manufactured or received products, aiding in tracing items back to their group, particularly for product recalls or expiration dates.

 See also

Serial numbers

Enable lots & serial numbers

To track products using lots, enable the Lots & Serial Numbers feature. Go to the Inventory app ‣ Configuration ‣ Settings, scroll down to the Traceability section, and tick the checkbox next to Lots & Serial Numbers. Then, click Save.

 See also

Track by lots

Once the Lots & Serial Numbers feature is activated, configure individual products to be tracked using lots. To do this, go to Inventory app ‣ Products ‣ Products, and choose a product to configure.

On the product form, go to the Inventory tab. In the Traceability section, select the By Lots option in the Tracking field. Now, new or existing lot numbers can be assigned to newly-received or manufactured batches of this product.

 See also

Expiration dates

 Important

If a product has stock on-hand prior to activating tracking by lots or serial numbers, a warning message appears. Use an inventory adjustment to assign lot numbers to existing products in stock.

Assign lots for shipping and receiving

Assign new lot numbers to incoming goods on the receipt form. When shipping outgoing goods, select products with specific lot numbers on the delivery order form.

On receipts

Assigning new or existing lot numbers to incoming goods can be done directly on receipts.

To begin, go to the Purchase app to create and confirm a PO for products tracked by lot numbers. Then, click the Receipt smart button that appears at the top of the page to navigate to the warehouse receipt form.

 Note

Alternatively, navigate to an existing receipt by going to the Inventory app, clicking the Receipts Kanban card, and choosing the desired receipt.

 Important

Clicking Validate before assigning a lot number triggers an error, indicating that a lot number must be assigned before validating the receipt.

On the receipt form, on the product line in the Operations tab, select the  (list) icon to the right of the product that is tracked by lot numbers.

Doing so opens the Open: Stock move pop-up window, where the Lot/Serial Number and Quantity are assigned.

The two ways to assign lot numbers: manually and importing.

Manual assignment

To manually assign lot numbers, click Add a line. Input the Lot/Serial Number, Store To location for the lot, Quantity, and Destination Package, if any.

 Note

To assign multiple lot numbers, or store to multiple locations, click Add a line, and type a new Lot/Serial Number for additional quantities. Repeat until the total in the Quantity column matches the Demand at the top.

Import lots

In the Open: Stock move pop-up window, click Import Serials/Lots, then paste the bulk lot numbers, in the Lots/Serial numbers field.

List of lot numbers copied on Google spreadsheets.

Lot numbers pasted to the “Lots/Serial numbers” field, in the Import Lots pop-up window.

Tick the Keep current lines checkbox to generate additional lot numbers in the Open: Stock move pop-up window. To replace the lot numbers in the list, leave the Keep current lines option unticked.

Finally, click Generate.

Once all product quantities have been assigned a lot number, click Save to close the pop-up window. Then, click Validate on the receipt form.

 See also

Traceability report for lot numbers

On delivery orders

Odoo makes it possible to specify which lot numbers for a product are chosen for outgoing shipment on a delivery order form.

To begin, create or select an existing quotation from the Sales app. After confirming the SO, the Delivery smart button becomes available. Click the Delivery smart button to view the warehouse receipt form for that specific SO.

 Note

Alternatively, navigate to delivery orders by going to the Inventory app, and clicking the Delivery Orders kanban card.

Clicking the Delivery smart button opens the the delivery order form, where lot numbers are picked for delivery. In the Operations tab, click the  (list) icon to the right of the product that is tracked by lot numbers. Clicking that icon reveals a Open: Stock move pop-up window.

In the pop-up window, the chosen lot number and its storage location is displayed in the Pick From column, with the with the full Quantity taken from that specific lot (if there is enough stock in that particular lot).

If there is insufficient stock in that lot, or if partial quantities of the Demand should be taken from multiple lots, change the Quantity directly.

 Note

The lot automatically chosen for delivery orders varies, depending on the selected removal strategy (FIFO, LIFO, or FEFO). It also depends on the ordered quantity, and whether the lot’s on-hand quantity is enough to fulfill the order.

 See also

Removal strategies

Repeat the above steps to select enough lots to fulfill the Demand, and click Save to close the pop-up window. Lastly, click the Validate button on the DO to deliver the products.

 See also

Traceability report for lot numbers

Lot management

Manage and view existing lot numbers for products in the Lot/Serial Numbers dashboard by going to Inventory app ‣ Products ‣ Lots/Serial Numbers.

By default, lot numbers are grouped by product, and selecting the drop-down menu for each product displays the existing lot numbers. Select a lot number to modify or add details linked to the lot. Lot numbers can also be created from this page, by clicking the New button.

Display lot numbers, grouped by products, on the Lot/Serial Number dashboard.

Modify lot

Clicking a lot from the Lot/Serial Number dashboard reveals a separate page where additional information can be provided about the lot.

 Tip

Odoo automatically generates a new Lot/Serial Number to follow the most recent number. However, it can be edited, by clicking the line under the Lot/Serial Number field, and changing the generated number to any desired one.

On the lot number form, the following fields can be modified:

  • Lot/Serial Number: change the lot number linked to the Product
  • Internal Reference: records an alternative lot/serial number used within the warehouse that differs from the one used by the supplier manufacturer.
  • Company: specify the company where the lot number is available.
  • Description: add extra details about the lot or serial number in this text field.

 Important

On existing lots, the Product and On Hand Quantity fields cannot be modified, as the lot numbers are linked with existing stock moves.

 See also

Set expiration dates for lots

Add property

To add custom fields to lots for enhanced traceability, there are two methods of adding properties on a lot number form:

  1. Click the  (cog) icon at the top-left of the page, then select  Add Properties from the drop-down menu.
  2. Click the  Add a Property button, located below the existing fields.

Name and configure the new field. Once finished, enter the property value in the new field.

 Example

The new property, Wood type, is added. The value is recorded as Cherry wood.

 See also

Configuring custom properties

Reserve lot number for a product

To create a lot number for a product, begin by going to Inventory app ‣ Products ‣ Lot/Serial Numbers, and click New.

 Important

Creating a lot number reserves it for a product but does not assign it. To assign lot numbers, refer to the section on assigning lot numbers on receipts.

 Tip

While Odoo automatically generates a new Lot/Serial Number to follow the most recent number, it can be edited and changed to any desired number, by clicking the line under the Lot/Serial Number field on the lot form, and changing the generated number.

Once the new Lot/Serial Number is generated, click the blank field next to Product to reveal a drop-down menu. From this menu, select the product to which this new number will be assigned.

 Example

The lot number, 000001, is created for the product, Drawer Black.

After a new lot number has been created, saved, and assigned to the desired product, the lot number is saved as an existing lot number linked to the product, and can be selected when assigning lot numbers to products on a receipt, or when making an inventory adjustment.

 Example

After creating the lot number, 000001 appears as an option for Drawer Black when assigning lot numbers on the Inventory Adjustment page.

Manage lots for different operations types

By default, new lots can only be created when receiving products, and existing lot numbers cannot be used. For sales orders, only existing lot numbers can be utilized, and new ones cannot be created on the delivery order.

To change the ability to use new (or existing) lot numbers on any operation type, go to the Inventory app ‣ Configuration ‣ Operations Types, and select the desired operation type.

On the operation type form, under the Lots/Serial Numbers section, tick the Create New checkbox to enable new lot numbers to be created during this operation type. Choose Use Existing ones if only existing lot numbers can be selected.

 Tip

For inter-warehouse transfers involving products tracked by lots, it can be useful to enable the Use Existing Lots/Serial Numbers option for warehouse receipts.

Display lots on delivery slips

When selling products tracked with lots, it is possible to include the lot numbers on the delivery slips sent to customers. This can be helpful to customers in cases where lot numbers are needed, such as filing an RMA or repair request, or registering the product.

To include lot numbers on delivery slips, open the Inventory app, and navigate to Configuration ‣ Settings. Scroll down to the Traceability section, tick the Display Lots & Serial Numbers on Delivery Slips checkbox, and click Save.

After enabling the Display Lots & Serial Numbers on Delivery Slips setting, lot numbers are listed on delivery slips for products tracked by lots, once the delivery order is validated.

To view lot numbers on delivery orders and delivery slips, navigate to the Inventory app, click on Delivery Orders, and select an order containing a product tracked using lots.

To view the lot numbers of products included in the order, make sure the Operations tab is selected, then click the  (adjust) button to the right of the tab. Ensure that the Serial Numbers checkbox is ticked, which causes a Serial Numbers column to appear. The lot number(s) for each product included in the order are displayed in this column.

When the order is ready to be processed, click Validate to confirm the delivery and add product information to the delivery slip.

At the top of the order’s form, click the  (Actions) button, and select Print –> Delivery Slip. The delivery slip is then downloaded. Open the delivery slip using the device’s browser or file manager. Lot numbers are listed next to their respective products in the Lot/Serial Number column.

Traceability

Manufacturers and companies can refer to traceability reports to see the entire lifecycle of a product: where it came from, when it arrived, where it was stored, who it went to (and when).

To see the full traceability of a product, or group by lots, go to the Inventory app ‣ Products ‣ Lots/Serial Numbers. Doing so reveals the Lots/Serial Numbers dashboard.

From here, products with lot numbers assigned to them will be listed by default, and can be expanded to show the lot numbers those products have assigned to them.

To group by lots, begin by removing any filters in the Search… bar. Then, click the  (caret down) icon to open a drop-down menu of Filters, Group By options, and Favorites. Under the Group By section, click the Add Custom Group option, and select Lot/Serial Number from the drop-down menu.

Doing so reorganizes all the records on the page to display all existing lots and serial numbers, and can be expanded to show all quantities of products with that assigned number.

Traceability report

To view a full stock moves report for a lot number, select the lot number line from the Lots/Serial Number dashboard. On the lot number form, click the Traceability smart button.

 See also

Product tracking

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Reassign lot/serial numbers

Changing a product’s tracking settings to use lots or serial numbers, after storing products in Odoo without them, can lead to inconsistent records. Follow this documentation to learn how to use an inventory adjustment to assign lot or serial numbers to products that were not originally assigned lots.

 Note

This document outlines the process of using two inventory adjustments: one to remove incorrect records without lot numbers, and another to save the quantities with the lot numbers.

 See also

Change on-hand quantity to zero

To change the product’s settings to track by lots or serial numbers, begin by navigating to Inventory app ‣ Products ‣ Products, and select the intended product.

Next, click the product’s On Hand smart button to open the Update Quantity page. In the On Hand Quantity column, change the value to zero.

 Note

If the product is stored in multiple locations, make sure the total on hand quantity at all locations is zero.

Change traceability setting

Return to the product form (Inventory app ‣ Products ‣ Products), and switch to the Inventory tab. In the Traceability section, change the Tracking option from No Tracking to By Lots or By Unique Serial Number.

 See also

Expiration dates

Restore on-hand quantity

After manually changing the on-hand quantity to zero and changing the Tracking setting to lots or serial numbers, restore the quantities by clicking the On Hand smart button from the desired product form.

On the Update Quantity page, because the on-hand quantity had been previously changed to zero, a No Stock On Hand warning appears on the page. From here, click the New button in the top-left corner. Doing so reveals a new, modifiable line on the Update Quantity page. Then, input a desired lot number in the Lot/Serial Number field, and adjust the On Hand Quantity to its original value.

 See also

Inventory adjustments

 Tip

To find the original quantity, and adjust the On Hand Quantity accordingly, after assigning a new lot or serial number, click the  (pencil) icon in the On Hand Quantity column. Then, click the  History button on the far-right.

The inventory adjustment that changed the on-hand quantity to zero is displayed in the Quantity field.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Expiration dates

In Odoo, expiration dates can be used to manage and track the lifecycles of perishable products, from purchase to sale. Using expiration dates reduces product loss due to unexpected expiry, and helps to avoid sending expired products to customers.

In Odoo, only products that are tracked using lots and serial numbers can be assigned expiration information. Once a lot or serial number has been assigned, an expiration date can be set. This is especially helpful for companies (such as food manufacturers) that consistently, or exclusively, buy and sell perishable products.

 See also

Enable expiration dates

To enable the use of expiration dates, go to Inventory app ‣ Configuration ‣ Settings, and scroll down to the Traceability section. Then, click the checkbox to enable the Lots & Serial Numbers feature.

Once that feature is activated, a new option will appear to enable Expiration Dates. Click that checkbox to enable the feature, and be sure to Save changes.

 Tip

Once the Lots & Serial Numbers feature is activated, an additional feature appears to Display Lots & Serial Numbers on Delivery Slips. Activating these features helps with end-to-end traceability, making it easier to manage product recalls, identify batches of faulty products, and more.

Configure expiration dates on products

Once the Lots & Serial Numbers and Expiration Dates features have been enabled in the Inventory app settings, expiration information can be configured on individual products.

To do so, go to Inventory app ‣ Products ‣ Products, and select a product to edit. Selecting a product reveals the product form for that particular item.

 Important

To be tracked using lots or serial numbers, or to configure expiration information, products must have their Product Type set as Goods under the General Information tab. Then, in the Track Inventory field, select either By Unique Serial Number or By Lots.

Then, click the Inventory tab, and scroll down to the Traceability section. Tick the Expiration Date checkbox.

 Note

If a product has stock on-hand prior to activating tracking by lots or serial numbers, an inventory adjustment might need to be performed in order to assign lot numbers to the existing stock.

 Tip

For processing large quantities of products on receipts or deliveries, it is recommended to track using lots, so multiple products can be traced back to the same lot, if any issues arise.

Under the Dates section, there are four categories of expiration information to configure for the product:

  • Expiration Time: the number of days after receiving products (either from a vendor or in stock after production) in which goods may become dangerous and should not be used or consumed.
  • Best Before Time: the number of days before the expiration date in which the goods start deteriorating, without being dangerous yet.
  • Removal Time: the number of days before the expiration date in which the goods should be removed from stock.
  • Alert Time: the number of days before the expiration date in which an alert should be raised on goods in a particular lot or containing a particular serial number.

 Note

The values entered into these fields automatically compute the expiration date for goods entered into stock, whether purchased from a vendor or manufactured in-house.

 Tip

If the Dates field is not populated with any values for expiration information, dates (and lots) can be manually assigned upon receipts and deliveries in and out of the warehouse. Even when assigned, they can still be overwritten and changed manually if needed, as well.

Set expiration dates on receipts with lots & serial numbers

Generating expiration dates for incoming goods can be done directly on the Receipt. Navigate to Inventory app ‣ Operations ‣ Receipts, then click on a line to open the Receipt record.

 Important

Clicking Validate before assigning a serial number to the ordered product quantities causes a User Error popup to appear. The popup requires entry of a lot or serial number for the ordered products. The receipt cannot be validated without an assigned lot or serial number.

From here, click the  (Details) icon located on the of the product line. When clicked, a Detailed Operations pop-up will appear.

In the pop-up, the Expiration Date automatically populates, based on the configuration on the product form. Click the Lot/Serial Number field on the appropriate line, then enter the lot or serial number.

 Tip

If the Dates field on the product form has not been configured, the Expiration Date can be manually entered.

Click Save when finished to close the pop-up. Finally, click Validate.

A Traceability smart button will appear upon validating the receipt. Click the Traceability smart button to see the updated Traceability Report, which includes: a Reference document; the Product being traced; the Lot/Serial #; and more.

Set expiration dates on manufactured products

Expiration dates can also be generated for products manufactured in-house. To assign expiration dates to manufactured products, a manufacturing order (MO) needs to be completed.

To create a MO, go to Manufacturing app ‣ Operations ‣ Manufacturing Orders, and click New. Choose a product to manufacture from the Product field drop-down menu, then select the Quantity to produce.

 Note

To manufacture a product, there must be materials to consume in the lines in the Product column. This can be achieved either by creating a Bill of Material for the Product, or manually adding materials to consume by clicking Add a line.

Once ready, click Confirm.

The appropriate number of Lots/Serial Numbers automatically populated in the field. Click the  (Details) icon to reveal additional information for those specific numbers. On that pop-up, all expiration information that was previously configured for the product is displayed.

Sell products with expiration dates

Selling perishable products with expiration dates is done the same as any other type of product. The first step in selling perishable products is to create a sales order.

To do that, go to Sales app ‣ New to create a new quotation, and fill out the information on the sales order form.

Add a Customer, then click Add a product to add the desired products to the Product lines, and set a Quantity for the products.

Then, click the Other Info tab. Under the Delivery section, change the Delivery Date to a date after the expected date, and click Apply to confirm the date. Finally, click Confirm to confirm the sales order.

 Important

If the products are delivered before the Alert Date set on the product form, then no alerts are created.

Next, click the Delivery smart button at the top of the sales order to see the warehouse receipt form.

On the warehouse receipt form, click Validate, and then Apply in the accompanying pop-up window, to automatically process all Done quantities, and deliver the products to the customer.

 Important

To sell perishable products with expiration dates, the Removal Strategy for the Location the products are stored in must be set to FEFO. If there is not enough stock of perishable products in one lot, Odoo will automatically take the remaining quantity required from a second lot with the next-soonest expiration date. Removal strategies can also be set on Product Categories.

 See also

Removal strategies

View expiration dates for lots & serial numbers

To view (and/or group) all products with expiration dates by lot number, go to Inventory app ‣ Products ‣ Lots/Serial Numbers.

Once there, remove any default search filters from the search bar. Then, click Group By, choose Add Custom Group, and select the Expiration Date parameter from the drop-down menu. Doing so breaks down all perishable products, their expiration dates, and the assigned lot number.

 Tip

Customers can also view the expiration date alert in their customer portal.

Expiration alerts

To see expiration alerts, go to Inventory app ‣ Products ‣ Lots/Serial Numbers.

Then, click into a Lot/Serial Number with perishable products. Doing so reveals the serial number detail form.

 Tip

To view expiration date information in the list view, click the  (adjust settings) icon at the top of the list of records, then tick the Expiration Date checkbox.

On the Lot/Serial Number detail form, the Dates lists all expiration information related to the products.

If the expiration date for a lot/serial number has passed, the form displays a red Expiration Alert at the top of the page to indicate that the products in this lot are either expired or expiring soon.

From here, click back to the Lots/Serial Numbers page (via the breadcrumbs).

To see the new expiration alert, or any expiration alerts for products that are expired (or will expire soon), click back to the Lots/Serial Numbers page via the breadcrumbs. Remove all of the search filters from the search bar on the Lots/Serial Numbers dashboard.

Then, click Filters, and choose Expiration Alerts.

Expiration notifications

Users can be notified when the expiration date for a product has passed. This can help keep specific employees up to date on the status of items under their purview.

To configure a notification, navigate to Inventory app ‣ Products ‣ Products. Select a product configured with lot/serial numbers and expiration date tracking. Navigate to the Inventory tab. Under the Logistics section, select a user in the Responsible field.

When the expiation date passes for a lot/serial number for this product, a notification is sent to the user in this field.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Automatic inventory valuation

All of a company’s stock on-hand contributes to the valuation of its inventory. That value should be reflected in the company’s accounting records to accurately show the value of the company and all of its assets.

By default, Odoo uses a periodic inventory valuation (also known as manual inventory valuation). This method implies that the accounting team manually posts journal entries, based on the physical inventory of the company, and warehouse employees take the time to count the stock. In Odoo, each product category reflects this, with the Costing Method set to Standard Price, and the Inventory Valuation (not visible by default) set to Manual.

Alternatively, perpetual (automatic) inventory valuation creates real-time journal entries in the Accounting app whenever stock enters or leaves the company’s warehouse.

This document is focused on the proper setup of automatic inventory valuation, which is an integrated valuation method that ensures journal entries in the Accounting app match stock valuation updates in the Inventory app. For an introduction of inventory valuation in Odoo, refer to the Using inventory valuation documentation.

 Warning

Switching from manual to automatic inventory valuation may cause discrepancies between stock valuation and accounting journals.

One successful strategy for switching to automated valuation:

  1. Clear existing stock (possibly with an inventory adjustment)
  2. Change the inventory valuation method to Automatic
  3. Return the existing stock, with the original monetary value (using an inventory adjustment)

Once the existing stock is recovered, the Odoo Accounting app automatically generates the journal entries to corresponding stock valuation records.

Configuration

To properly set up automatic inventory valuation, follow these steps in Odoo:

  1. Install Accounting app and enable specific settings
  2. Set Automatic inventory valuation on product categories
  3. Set costing method

Accounting setup

To use automatic inventory valuation, install the Accounting app. Next, go to Accounting app ‣ Configuration ‣ Settings, and in the Stock Valuation section, tick the Automatic Accounting checkbox. Then, click Save.

 Note

Enabling Automatic Accounting shows the previously invisible Inventory Valuation field on a product category.

Refer to the Expense and Stock input/output sections of documentation for details on configuring the accounting journals shown.

Product category setup

After enabling inventory valuation, the next step is to set the product category to use automatic inventory valuation.

Go to Inventory app ‣ Configuration ‣ Product Categories, and select the desired product category. In the Inventory Valuation section, set the Inventory Valuation field to Automated. Repeat this step for every product category intending to use automatic inventory valuation.

 Note

After enabling automatic accounting, each new stock move layer (SVL), that is created during inventory valuation updates, generates a journal entry.

Costing method

After enabling inventory valuation, the costing method for calculating and recording inventory costs is defined on the product category in Odoo.

Go to Inventory app ‣ Configuration ‣ Product Categories and select the desired product category. In the Inventory Valuation section, select the appropriate Costing Method:

Standard PriceAverage Cost (AVCO)First In First Out (FIFO)

The default costing method in Odoo. The cost of the product is manually defined on the product form, and this cost is used to compute the valuation. Even if the purchase price on a purchase order differs, the valuation is the cost defined on the product form.

Operation

Unit Cost

Qty On Hand

Incoming Value

Inventory Value

$10

0

$0

Receive 8 products for $10/unit

$10

8

8 * $10

$80

Receive 4 products for $16/unit

$10

12

4 * $10

$120

Deliver 10 products

$10

2

-10 * $10

$20

Receive 2 products for $9/unit

$10

4

2 * $10

$40

 Warning

Changing the costing method greatly impacts inventory valuation. It is highly recommended to consult an accountant first before making any adjustments here.

 See also

Using inventory valuation

When the Costing Method is changed, products already in stock that were using the Standard costing method do not change value; rather, the existing units keep their value, and any product moves from then on affect the average cost, and the cost of the product will change. If the value in the Cost field on a product form is changed manually, Odoo generates a corresponding record in the Inventory Valuation report.

 Note

It is possible to use different valuation settings for different product categories.

Types of accounting

With automated inventory valuation set up, the generated journal entries depend on the chosen accounting mode: Continental or Anglo-Saxon.

 Tip

Verify the accounting mode by activating the Developer mode (debug mode), and navigating to Accounting app ‣ Configuration ‣ Settings.

Then, in the Search… bar, look for Anglo-Saxon Accounting, to see if the feature is enabled. If it is not enabled, Continental accounting mode is in use.

In Anglo-Saxon accounting, the costs of goods sold (COGS) are reported when products are sold or delivered. This means the cost of a good is only recorded as an expense when a customer is invoiced for a product.

So, for manual valuation method, set the Expense Account to Stock Valuation for the current asset type; for automatic valuation method, set the Expense Account to an Expenses or a Cost of Revenue type (e.g. Cost of ProductionCost of Goods Sold, etc.).

In Continental accounting, the cost of a good is reported as soon as a product is received into stock. Because of this, the Expense Account can be set to either Expenses or a Cost of Revenue type, however, it is more commonly set to an Expenses account.

Refer to the Expense and Stock input/output sections for details on configuring each account type.

Expense account

To configure the expense account, which is used in both manual and automatic inventory valuation, go to the Account Properties section of the intended product category (Inventory app ‣ Configuration ‣ Product Categories). Then, choose an existing account from the Expense Account drop-down menu.

To ensure the chosen account is the correct Type, click the  (right arrow) icon to the right of the account. Then, set the account type based on the information below.

Anglo-SaxonContinental

AutomatedManual

In Anglo-Saxon accounting for automated inventory valuation, set the Expense Account to the Expenses account. Then, click the  (right arrow) icon to the right of the account.

In the pop-up window, choose Expenses or Cost of Revenue from the Type drop-down menu.

Stock input/output (automated only)

To configure the Stock Input Account and Stock Output Account, go to Inventory app ‣ Configuration ‣ Product Categories and select the desired product category.

In the Inventory Valuation field, select Automated. Doing so makes the Account Stock Properties section appear. These accounts are defined as follows:

  • Stock Valuation Account: when automated inventory valuation is enabled on a product, this account will hold the current value of the products.
  • Stock Journal: accounting journal where entries are automatically posted when a product’s inventory valuation changes.
  • Stock Input Account: counterpart journal items for all incoming stock moves will be posted in this account, unless there is a specific valuation account set on the source location. This is the default value for all products in a given category, and can also be set directly on each product.
  • Stock Output Account: counterpart journal items for all outgoing stock moves will be posted in this account, unless there is a specific valuation account set on the destination location. This is the default value for all products in a given category, and can also be set directly on each product.

Anglo-SaxonContinental

In Anglo-Saxon accounting, the Stock Input Account and Stock Output Account are set to different Current Assets accounts. This way, delivering products and invoicing the customer balance the Stock Output account, while receiving products and billing vendors balance the Stock Input account.

To modify the account type, go to the click the  (right arrow) icon to the right of the stock input/output account. In the pop-up window, choose Current Assets from the Type drop-down menu.

The Stock Input account is set to Stock Interim (Received), a Current Asset account type.

Inventory valuation reporting

To start, go to Accounting app ‣ Reporting ‣ Balance Sheet. Click the Current Assets line item to unfold the drop-down menu, and look for the nested Stock Valuation, Stock Interim (Received), and Stock Interim (Delivered) lines.

 Tip

At the top of the dashboard, click the As of [date] button to display accounting records up to a specified date.

 See also

Access more specific information by clicking the  (ellipsis) icon to the right of the desired journal. Select General Ledger to see a list of all of the journal entries, where each line item’s  (ellipsis) icon can be clicked to reveal the View Journal Entry option to open the individualized journal entry.

Additionally, annotations to the Balance Sheet can be added by choosing Annotate, filling in the text box, and clicking Save.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Using inventory valuation

Inventory valuation is a quintessential accounting procedure that calculates the value of on-hand stock. Once determined, the inventory valuation amount is then incorporated into a company’s overall value.

In Odoo, this process can be conducted manually— by warehouse employees physically counting the products— or automatically through the database.

Automatic inventory valuation

To use Odoo to automatically generate a trail of inventory valuation entries, first navigate to the Product Categories list by going to Inventory app ‣ Configuration ‣ Product Categories and select the desired product category. On the form, set the Inventory Valuation as Automated and the Costing Method to any of the three options.

 See also

Set up inventory valuation

In order to understand how moving products in and out of stock affects the company’s overall value, consider the following product and stock moves scenario below.

Receive a product

To track the value of incoming products, such as a simple table, configure the product category on the the product itself. To get there, navigate to Inventory app ‣ Products ‣ Products and click the desired product. On the product form, click the ➡️ (right arrow) icon beside the Product Category field, which opens an internal link to edit the product category. Next, set the Costing Method as First In First Out (FIFO) and Inventory Valuation as Automated.

 Tip

Alternatively access the Product Categories dashboard by navigating to Inventory app ‣ Configuration ‣ Product Categories and select the desired product category.

Next, assume 10 tables are purchased at a price of $10.00, each. The PO for those tables will show the subtotal of the purchase as $100, plus any additional costs or taxes.

After selecting Validate on the PO, the Valuation smart button is enabled. Clicking on this button displays a report showing how the inventory valuation for the table was affected by this purchase.

 Important

Developer mode must be turned on to see the Valuation smart button.

 Tip

The consignment feature allows ownership to items in stock. Thus, products owned by other companies are not accounted for in the host company’s inventory valuation.

For a comprehensive dashboard that includes the inventory valuation of all product shipments, inventory adjustments, and warehouse operations, refer to the stock valuation report.

Deliver a product

In the same logic, when a table is shipped to a customer and leaves the warehouse, the stock valuation decreases. The Valuation smart button on the DO, likewise, displays the stock valuation record as it does on a PO.

Inventory valuation report

To view the current value of all products in the warehouse, first turn on Developer mode and navigate to Inventory app ‣ Reporting ‣ Valuation. The Stock Valuation dashboard displays detailed records of products with the Date, Quantity, Unit Value, and Total Value of the inventory.

 Important

Developer mode must be enabled to see the Valuation option under Reporting.

The Valuation At Date button, located in the top-left corner of the Stock Valuation page, reveals a pop-up window. In this pop-up, the inventory valuation of products available during a prior specified date can be seen and selected.

 Tip

View a detailed record of a product’s inventory value, stock move, and on-hand stock by selecting the teal ➡️ (right arrow) button to the right of the Reference column value.

Update product unit price

For any company: lead times, supply chain failures, and other risk factors can contribute to invisible costs. Although Odoo attempts to accurately represent the stock value, manual valuation serves as an additional tool to update the unit price of products.

 Important

Manual valuation is intended for products that can be purchased and received for a cost greater than 0, or have product categories set with Costing Method set as either Average Cost (AVCO) or First In First Out (FIFO).

Create manual valuation entries on the Stock Valuation dashboard by first navigating to Inventory app ‣ Reporting ‣ Valuation. Next, to enable the product revaluation feature, select Group by ‣ Product to organize all the records by product. Click on the gray ▶️ (drop-down triangle) icon to reveal stock valuation line items below, as well as a teal ➕ (plus) button on the right.

Click the teal + (plus) button to open up the Product Revaluation form. Here, the inventory valuation for a product can be recalculated, by increasing or decreasing the unit price of each product.

 Note

The ▶️ (drop-down triangle) and ➕ (plus) buttons are only visible after grouping entries by product.

Inventory valuation journal entries

In Odoo, automatic inventory valuation records are also recorded in the Accounting app ‣ Accounting ‣ Journal Entries dashboard. On this comprehensive list of accounting entries, inventory valuation records are identified by checking values in the Journal column, or looking for the Reference column value which matches the warehouse operation reference (e.g. WH/IN/00014 for receipts).

Clicking on an inventory valuation journal entry opens a double-entry accounting record. These records are generated by Odoo to track the change of value in inventory valuation as products are moved in and out of the warehouse.

 Example

To view the inventory valuation of 10 tables, costing $10.00 each, upon reception from the vendor, go to the Journal Entries page found in Accounting app ‣ Accounting ‣ Journal Entries. Here, click the journal line where the Reference column value matches the reference on the receipt, WH/IN/00014.

Stock interim is a holding account for money intended to pay vendors for the product. The stock valuation account stores the value of all on-hand stock.

 See also

Odoo Tutorial: Inventory Valuation

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Landed costs

When shipping products to customers, the landed cost is the total price of a product or shipment, including all expenses associated with shipping the product.

In Odoo, the Landed Costs feature is used to take additional costs into account when calculating the valuation of a product. This includes the cost of shipment, insurance, customs duties, taxes, and other fees.

Configuration

To add landed costs to products, the Landed Costs feature must first be enabled. To enable this feature, navigate to Inventory app ‣ Configuration ‣ Settings, and scroll to the Valuation section.

Tick the checkbox next to the Landed Costs option, and click Save to save changes.

Once the page refreshes, a new Default Journal field appears below the Landed Costs feature in the Valuation section.

Click the Default Journal drop-down menu to reveal a list of accounting journals. Select a journal for which all accounting entries related to landed costs should be recorded.

Create landed cost product

For charges that are consistently added as landed costs, a landed cost product can be created in Odoo. This way, a landed cost product can be quickly added to a vendor bill as an invoice line, instead of having to be manually entered every time a new vendor bill is created.

To do this, create a new product by going to Inventory app ‣ Products ‣ Products, and clicking New.

Assign a name to the landed cost product in the Product Name field (i.e. International Shipping). In the Product Type field, click the drop-down menu, and select Service as the Product Type.

 Important

Landed cost products must have their Product Type set to Service.

Click the Purchase tab, and tick the checkbox next to Is a Landed Cost in the Vendor Bills section. Once ticked, a new Default Split Method field appears below it, prompting a selection. Clicking that drop-down menu reveals the following options:

  • Equal: splits the cost equally across each product included in the receipt, regardless of the quantity of each.
  • By Quantity: splits the cost across each unit of all products in the receipt.
  • By Current Cost: splits the cost according to the cost of each product unit, so a product with a higher cost receives a greater share of the landed cost.
  • By Weight: splits the cost, according to the weight of the products in the receipt.
  • By Volume: splits the cost, according to the volume of the products in the receipt.

When creating new vendor bills, this product can be added as an invoice line as a landed cost.

 Important

To apply a landed cost on a vendor bill, products in the original PO must belong to a Product Category with a Costing Method of either AVCO or FIFO, and the valuation method can be manual or automatic.

Create purchase order

Navigate to Purchase app ‣ New to create a new request for quotation (RfQ). In the Vendor field, add a vendor to order products from. Then, click Add a product, under the Products tab, to add products to the RfQ.

Once ready, click Confirm Order to confirm the order. Then, click Receive Products once the products have been received, followed by Validate.

Create vendor bill

Once the vendor fulfills the PO and sends a bill, a vendor bill can be created from the PO in Odoo.

Navigate to the Purchase app, and click into the PO for which a vendor bill should be created. Then, click Create Bill. This opens a new Vendor Bill in the Draft stage.

In the Bill Date field, click the line to open a calendar popover menu, and select the date on which this draft bill should be billed.

Then, under the Invoice Lines tab, click Add a line, and click the drop-down menu in the Product column to select the previously-created landed cost product. Click the  (cloud with arrow) icon to manually save and update the draft bill.

In the Landed Costs column, the product ordered from the vendor does not have its checkbox ticked, while the landed cost product’s checkbox is ticked. This differentiates landed costs from all other costs displayed on the bill.

Additionally, at the top of the form, a Create Landed Costs button appears.

Add landed cost

Once a landed cost is added to the vendor bill, click Create Landed Costs at the top of the vendor bill.

Doing so automatically creates a landed cost record, with a set landed cost pre-filled in the product line in the Additional Costs tab.

From the Landed Cost form, click the Transfers drop-down menu, and select which transfer the landed cost belongs to.

 Tip

In addition to creating landed costs directly from a vendor bill, landed cost records can also be created by navigating to Inventory app ‣ Operations ‣ Landed Costs, and clicking New.

After setting the picking from the Transfers drop-down menu, click Compute (at the bottom of the form, under the Total: cost).

Click the Valuation Adjustments tab to see the impact of the landed costs. The Original Value column lists the original price of the PO, the Additional Landed Cost column displays the landed cost, and the New Value displays the sum of the two, for the total cost of the PO.

Once ready, click Validate to post the landed cost entry to the accounting journal.

This causes a Valuation smart button to appear at the top of the form. Click the Valuation smart button to open a Stock Valuation page, with the product’s updated valuation listed.

 Note

For a Valuation smart button to appear upon validation, the product’s Product Type must be set to Storable.

To view the valuation of every product, including landed costs, navigate to Inventory app ‣ Reporting ‣ Valuation.

 Note

Each journal entry created for a landed cost on a vendor bill can be viewed in the Accounting app.

To locate these journal entries, navigate to Accounting app ‣ Accounting ‣ Journal Entries, and locate the correct entry, by number (i.e. PBNK1/2024/XXXXX).

Click into the journal entry to view the Journal Items, and other information about the entry.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community

 docs

Try Odoo for FREE

EN 

Odoo 18 

Valuation by lots/serial numbers

Track inventory valuation by lots or serial numbers to:

  1. Compare and differentiate purchasing cost, based on lot or serial numbers.
  2. Track the actual cost of manufactured products, based on the real cost of each tracked component used.
  3. Depreciate specific lot or serial numbers when they sit in stock for too long.

 Important

Please read this introduction to inventory valuation before setting up valuation by lot/serial numbers.

Configuration

To enable valuation by lots or serial numbers, begin by enabling the Lots and Serial Numbers feature. After that, go to Inventory app ‣ Products ‣ Products, and select the desired product, or create a new product, by clicking New.

On the product form, in the Category field, choose a product category. Ensure the product category’s Costing Method is set to First In First Out (FIFO) or Average Cost (AVCO).

 Tip

To check the costing method set on the product category, hover over the Category field, and click the  (Internal Link) icon.

 See also

Costing methods

Next, activate the product to be tracked by lots or serial numbers by ticking the Track Inventory checkbox. Then, click the adjacent field that appears, and choose either By Lots or By Unique Serial Number from the resulting drop-down menu.

Doing so makes the Valuation by Lot/Serial number checkbox appear below it. Tick that checkbox, and the configuration to track valuation by lot or serial numbers is complete.

Product form showing the Valuation by Lot or Serial Number feature

Valuation layers

To understand how valuation by lots and serial numbers works, consider these scenarios:

  1. Purchase and sell products: cost is calculated based on the product category’s costing method.
  2. Create new lot/serial numbers using an inventory adjustment: value of the new lot/serial number is assigned to the cost from the product form.
  3. Inventory adjustment to update quantities for an existing lot/serial number: value is assigned based on the most recent cost for that lot/serial number.

For both AVCO and FIFO methods, the Cost field on the product form is calculated using this formula:

Avg Cost=Total ValueTotal Qty

Purchase products

Consider how purchasing products affect the inventory valuation, in the table below.

Quantity

Lot number

Math

Average cost on product form

Empty stock

0.00

$0

Day 1: Receive one product at $10/unit

1.00

LOT 1

101

$10

Day 2: Receive another product at $20/unit

1.00

LOT 2

10+202

$15

As a result, the product form displays an average cost of $15 in the Cost field.

Create new lot/serial number

Creating a new lot/serial number through an inventory adjustment assigns the same value as the cost on the product form.

To make an inventory adjustment, and assign a lot number, go to Inventory app ‣ Operations ‣ Physical Inventory. Then, click New.

In the new inventory adjustment line that appears, set the Product, create the Lot/Serial Number, set the Counted Quantity, and click  Apply.

To view the valuation layer, go to Inventory app ‣ Reporting ‣ Valuation. The Total Value per unit matches the Cost on the product form.

 Example

Continuing the example in the table above, when the product cost is $15, the valuation for a newly-created LOT3 is also be $15.

Existing lot/serial number

When adjusting the quantity of an existing lot/serial number, the value is based on the most recent valuation layer for that specific lot/serial number.

 Example

Continuing the example in the table above, the value for LOT 1 is $10.

So, when the quantity is updated from 1.00 to 2.00, the additional quantity is also valued at $10, reflecting the latest valuation layer for LOT 1.

The inventory adjustment (top line) is valued the same as LOT 1 (bottom line).

View valuation

To find the average cost of a specific lot/serial number, go to Inventory app ‣ Products ‣ Lots/Serial Numbers, and select the desired record.

Both the Cost and Average Cost fields show a unit’s average cost. The Total Value reflects the total on-hand value for that lot/serial number.

 Important

Ensure the costing method is set to First In First Out (FIFO) or Average Cost (AVCO) to display the cost on this page.

Lot form, displaying Cost field. The Valuation smart button is in the top-right.

Valuation layers of a lot/serial number can be viewed through the valuation report, or by clicking the lot/serial number’s Valuation smart button. These detailed, line-by-line records can help determine how each inventory move of the specific lot/serial number affects its valuation.

Valuation report

Display the valuation of lots and serial numbers in the database by going to Inventory app ‣ Reporting ‣ Valuation.

On the resulting Stock Valuation report, click the search bar, and in the  Group By section of the resulting drop-down menu, select Lot/Serial number.

 Tip

Click the  (plus) icon to the right of a collapsed lot number line to manually modify the cost.

This is useful for adjusting individual lot prices when a purchase order or bill includes multiple lots/serial numbers, as initial prices are identical upon reception.

Valuation smart button

To access a filtered part of the Stock Valuation report, specific to a lot or serial number, go to Inventory app ‣ Products ‣ Lots/Serial Numbers, and select the desired item.

On the Lot/Serial Numbers page, click the Valuation smart button.

All stock moves that affect the valuation of LOT 1.

 Edit on GitHub

On this page

Get Help

Contact Support Ask the Odoo Community