Have you ever found yourself missing the Cc​ and Bcc​ fields when composing emails in Odoo? If so, the “Email CC and BCC” module by the Odoo Community Association (OCA) is exactly what you need.

Once installed, this module adds both Cc​ and Bcc​ fields to the email composer. It also lets you configure default Cc​ and Bcc​ emails per company, making it easy to include specific recipients in all outgoing emails automatically.

Key Features of the module:

  • Adds Cc​ and Bcc​ fields to the Email Composer
  • Enables default Cc​/Bcc​​ values at the company level
  • Introduces the Bcc​ field in Email Templates, allowing you to set Bcc recipients per template
  • Sends individual emails to each recipient in To(Recipients)​, Cc​, and Bcc​ while maintaining consistent headers
  • Includes a custom X-Odoo-Bcc​ header when Bcc​ is used

The default Cc​/Bcc values are only applied when using the Email Composer not when sending inline messages from Chatter.

If you're using Odoo and want more control over email recipients, this module is worth checking out!  The latest available version is 18.0.1.0.0.

Modules Review

Automating actions when users submit forms on your website can save time and improve efficiency—whether you're capturing leads, creating tasks, or managing email subscriptions.

However, not all website forms trigger automation actions. For example, a standard newsletter form won’t trigger automation rules. Instead, you should use the Form Block​, which offers greater flexibility in field customization, default values, and triggers automation rules.

In this post, we’ll continue with our email sequences automation example from How to Create Fully Automated Email Sequences article, focusing on how to trigger an email sequence immediately after a user subscribes, eliminating the need for scheduled actions.

Step 1: Setting Up the Subscription Form

To ensure automation triggers work, we’ll configure a Form Block​ instead of a basic newsletter block. Here’s how:

  1. Go to your website editor and select the Form Block.
  2. Set the action to "Subscribe to Newsletter."
  3. Customize your form layout.
  4. Define the form fields (e.g., Name and Email), ensuring they are mapped to the correct model fields.
  5. Add the Mailing List​ selection field, if it’s not already included in the form:
    • Set the default value to the list you want (e.g., AI Course).
    • Hide the field if you don’t want users to view or change the list.
  6. Add a specific tag for subscribers from this form:
    1. Add a new field to the form.
    2. Map the field to the Tags​ field in the Mailing Contact​ model.
    3. Set the default tag to be applied on submission (e.g., AI Course).
    4. Hide the field if you don’t want users to modify it.

Now, when users submit this form, they’ll be added to the specified mailing list and tagged with the correct tag.

Step 2: Creating the Automation Rule

Next, we’ll set up an automation rule that triggers when a new subscriber is tagged.

  1. Create a new Automation Rule and set the model to Mail Contact​.

  2. Set the trigger to When a tag is added​ (use the same tag from the form, e.g., "AI Course").

  3. Add additional filters to target the right subscribers—for example, 
    Mailing List Name = AI Course​.

  4. Add two Execute Code​ actions:

  • The first action adds the subscriber to the email sequence:
env["marketing.campaign"].search([
('state', '=', 'running'), ('title', '=', 'AI Mini Course')
]).sync_participants()
  •     The second action triggers the flow instantly:
env["marketing.campaign"].search([
('state', '=', 'running'), ('title', '=', 'AI Mini Course')
]).execute_activities()


Final Thoughts

With this setup a new subscribers are automatically added to your email sequence and the first email is triggered immediately—no waiting for scheduled jobs.

By using Form Blocks​ and automation rules, you can streamline workflows and ensure instant responses to user actions.

Functional Odoo 18 Website
Posts

Want to bring your company's branding into your Odoo interface? Or are you using multi-company mode and looking for a visual distinction between companies? Then the Web Company Color module is exactly what you need.

What does it do

Once installed, the module adds a Company Styles​ tab in the company’s form view, allowing you to customize:

  • Navbar Background Color
  • Navbar Background Color Hover
  • Navbar Text Color
  • Button Background Color
  • Button Background Color Hover
  • Button Text Color
  • Link Text Color
  • Link Text Color Hover

You can also use the Compute colors from logo​ feature to auto-generate the first three colors in the list using your company logo.

Once saved, the page refreshes automatically and applies your new styles.

A couple of notes:

  • Some elements, like buttons or links, may retain the default color in certain views.
  • The app name in the top-left corner uses the link color, which might not always match the rest of the navbar.

Still, this module is an excellent enhancement for anyone looking to personalize or improve multi-company UI in Odoo.

The module is maintained by the Odoo Community Association (OCA), with the latest version available: 18.0.1.0.0.

Functional Odoo 18
Modules Review

Want to send a sequence of emails to new subscribers? Or launch a mini email course with weekly lessons sent automatically?

With Odoo’s Marketing Automation module (available in the Enterprise version), you can do all of that in your ERP.

Here's how to set up a mini course that sends weekly emails after subscription, ending with an upsell offer automatically triggered when a user replies to the latest email from the sequence.

Email Sequence Setup
  1. Install the Marketing Automation Module
    • Install the Marketing Automation module from the Apps section.
  2. Create a New Campaign
    • From the dashboard, search for Marketing Automation.
    • Click Create to start a new campaign. Choose to build from scratch.
  3. Define Your Audience
    • Set the Target Model to Mailing Contact​. This ensures every new subscriber to your list (e.g., “AI Course”) enters the flow.
    • Under Unicity Based On​, choose Email to prevent duplicates.
    • Add a filter to include only subscribers from the specific mailing list, such as “AI Course”.
  4. Build the Email Sequence
    • Use Add New Activity​ to create each week’s email.
    • Set Activity Type​ to Email, choose or create an email template, and configure options like sender address, attachments, and reply-to.
    • For the first email, set it to send immediately after subscription (0 hours).
    • For subsequent emails, trigger them 1 week after the previous email is sent.
    • Use domain filters to exclude unsubscribed contacts or those who didn’t receive earlier emails.
  5. Upsell with Conditional Logic
    • Add a final email offering the full course.
    • Set it to send only to subscribers who replied to the previous email, using Add child activity​, triggered 1 hour after the reply.
  6. Test the Workflow
    • Use the Launch a Test​ feature to validate the sequence before going live.
  7. Launch the Campaign
    • Use the Star​t button to run the campaign.
Additional Configurations for a Complete Email Flow
  • Create a new mailing list (e.g. “AI Course”).

  • Add a subscription form on your website using this list.

  • Check the frequency of the following scheduled actions:

    • Marketing Automation: Sync Participants
    • Marketing Automation: Execute Activities

    If you want users to receive their emails as soon as they subscribe, these actions should run frequently, ideally every 5 or 10 minutes.

That is it! You now have a fully automated, seamless email campaign inside Odoo, no need for third-party tools, external integrations, or extra maintenance.

Functional Odoo 18
Posts

If you sell products on your website that are delivered directly from the vendor to the customer and already have a stable list of vendors, you can automate the entire process in Odoo. This allows you to oversee operations without manual intervention.

Key Processes
  1. A customer places an order on the website.
  2. Payment is received, and the order is confirmed.
  3. An invoice is auto-generated and sent to the customer.
  4. A purchase order is created, auto-confirmed, and sent to the vendor.
Required Settings for Dropshipping eShop
  1. Enable the Dropshipping option: Inventory > Configuration > Settings.
  2. Set the Dropship​ route for each product or at the category level to avoid manual assignment for each item.
  3. Assign vendors to products with accurate pricing.
  4. Ensure products are configured for sales and purchase and published on the website.
  5. Set up at least one shipping method to be available on the website.
  6. Configure at least one payment method that allows full payment processing.
Automation Settings for a Fully Autonomous Process
  1. Auto-generate invoices: Enable the Automatic Invoice​ option under Website > Configuration > Settings.
  2. Auto-create purchase orders: Ensure the Dropship​ Route is assigned to each product.
  3. Auto-confirm purchase orders: Set up an automation rule to update purchase orders with the Dropship delivery type from RFQ to Purchase Order when the total is between $10 and $10,000. The rule should also trigger an email notification to the vendor. 
    It is assumed that there are no products available for purchase that cost less than $10. 
    Additionally, for orders exceeding a certain amount, in this example, $10K, an automation rule can be set up to create a task for the manager to review the order.
Further Automation Possibilities

The next stage of automation can include:

  • Vendor Integration: Connecting with the vendor’s system via API or webhook to track order fulfillment and receive shipment updates.
  • Automated Picking Completion: Setting up rules to automatically mark the order as delivered once shipment confirmation is received.
  • Exception Handling: Setting up automation rules to notify you if there are unprocessed sales or purchase orders, ensuring all orders are processed on time.

With these configurations, Odoo can automate order processing, minimizing manual tasks and enhancing operational efficiency, allowing your dropshipping business to run seamlessly on autopilot.

eCommerce Functional Odoo 18
Posts

Automation plays a crucial role in optimizing business processes. It reduces manual effort, minimizes errors, and allows employees to focus on strategic tasks instead of repetitive ones.

Odoo provides powerful automation tools that let you streamline workflows, often without writing a single line of code. With a basic understanding of the system's structure, you can start creating effective automations.

Types of Automation in Odoo

There are two primary types of automation in Odoo:

  1. Automation Rules
    These are trigger-based rules. They run when a specific event happens (e.g., when a sales order is confirmed, a record’s status is changed, etc.).

    They can be configured entirely through the user interface without any coding, making them perfect for non-technical users.
  2. Scheduled Actions
    These are time-based actions that run at predefined intervals (daily, weekly, monthly, etc.).

    Scheduled actions typically execute Python code and are usually defined in the codebase.

    They are used for recurring tasks like fetching incoming emails, cleaning up data, or sending periodic reports.

In this post, we'll focus on Automation Rules.

How to Configure Automation Rules

To access automation options, activate Developer Mode and navigate to: Settings > Technical > Automation

If the Automation Rules​ menu is not visible, check whether the module is installed. You can find and install it via the Apps menu by searching for Automation Rules.

Step 1: Create a New Automation Rule

To create new automation rules, the following steps are required:

  1. Go to Settings > Technical > Automation > Automation Rules
  2. Click New and add a name for your rule.
  3. Select the model the rule applies to, e.g., Sales Order, Purchase Order, etc.

Tip: If you're unsure of the model name:

  • Open a record from the model you want to automate (e.g., Invoices).
  • Click on the Developer Tools​ icon at the top right (Developer Mode enabled).
  • Under the Interface​ section, you’ll see the model name (e.g., account.move for Invoices).
Step 2: Define Rule Conditions

Once you’ve selected the model, a few fields will appear that need configuration:

  • Trigger
    Define when the rule should run (e.g., when a sales order’s status changes to "Sales Order").

  • Before Update Domain
    Specify conditions based on the record's values before the trigger occurs.

    For example, consider only orders that had the state "Quotation" before changing to "Sales Order," and exclude those that moved from "Quotation Sent" to "Sales Order."

    This option is not available when the trigger is Time Condition​.

  • Apply On
    Specify conditions applied after the trigger occurs. For example, filter records where the state is "Sales Order."

If the trigger doesn’t influence the value checked in the condition, it makes no difference whether you place the condition in Before Update Domain​ or Apply On​.
For instance, if the Sales Team is "Website" both before and after the status change, it can be added in either condition group, the result will be the same.

Step 3: Set Up Actions

The next step is to define what the system should do when the conditions are met. This is configured under the Actions To Do​ tab. It is possible to configure multiple actions for a single rule. Available options include:

  • Update Record
  • Create Activity
  • Send Email
  • Send SMS
  • Add/Remove Followers
  • Create Records
  • Execute Code
  • Send Webhook Notification
  • Multi Actions

Depending on the action selected, different configuration fields will appear for each of them.

Practical Use Case

Scenario

An e-commerce company has an internal rule that all website orders with a value over $10,000 must be reviewed by the sales manager. Orders previously sent as quotations to customers don’t require review.

To support this rule, the system needs to automatically create an activity for the sales manager listing the necessary tasks for review.

Automation Rule Configuration

The configuration for the required rules that support the company's requirements is shown in the images below.

Automation Rule

Create Activity Action

Result

Every time a qualifying sales order is confirmed, an activity will be automatically created for the assigned sales manager to review.

Final Thoughts

Odoo’s built-in automation features offer a practical and accessible solution without the need for advanced technical knowledge.

By setting clear conditions and actions, you can significantly reduce manual work, improve accuracy, and ensure process consistency.

Automation Functional Odoo 18
Posts

In Odoo, you can attach multiple documents to a product and configure their visibility based on different settings, making them accessible across various applications.

The Documents view is available via the Document smart button on the product page. The visibility of each document can be adjusted using the following settings:

Company:

  • None selected: The document is visible to all companies.
  • Specific company: The document is available only for the selected company.

MRP Visibility:

  • Hidden: The document is invisible in the BoM view. It is the default value unless uploaded from the BoM view (Components section).
  • Bill of Materials: The document is available in the BoM when the product is used as a component.

Sale Visibility:

  • Hidden: Not available in sales.
  • On Quote: Included in the quotation.
  • On Confirmed Order: Available once the order is confirmed.
  • Inside Quote PDF: Included within the quote PDF when selected in the Quote Builder tab.

Publish on Website:

  • When enabled, the document becomes available for download on the website. This option is available only when documents are uploaded in the Product Template
Documents accessibility when using variants

If you use product variants, document availability depends on where it was initially uploaded:

  • Specific variant: The document is accessible only for that variant.
  • Product template: The document is accessible for all variants.
Final Thoughts

Document visibility and accessibility depend on both the upload location and the configured visibility settings. To ensure proper availability, upload the document to the appropriate location, such as:

  • Product Template: For general documents that should be accessible across all related variants.
  • Product Variant: For variant-specific documents that should be available only for a specific product variant.
  • BoM Components: For documents that should be accessible only in the Bill of Materials section.
Functional Odoo 18
Posts

In Odoo’s Manufacturing module, Work Order (WO) statuses within a Manufacturing Order (MO) can sometimes be unexpected.

The statuses primarily depend on component availability and the dependencies between Work Orders. The two key settings that influence them are:

  • Manufacturing Readiness
  • Operation Dependencies

Manufacturing Readiness

It primarily affects the Manufacturing Order Readiness Status in the Manufacturing Order. The two available options are:

  • When all components are available: Manufacturing Order is ready when all components are in stock.
  • When components for 1st operation are available: The Manufacturing Order is ready when the components for the first operation are available.

Odoo uses the MO Readiness status value to determine Work Order statuses. As a result, a Work Order can be marked as "Ready" even if not all components are available, only because the first required component is in stock.

Operation Dependencies

Operation Dependencies is the second setting that affects Work Order statuses. Depending on its value, Odoo applies different logic for dependencies between Work Orders:

  • Disabled: Dependencies between Work Orders are determined by their sorting order.
  • Enabled: The dependencies set on the operations are enforced.

What Does This Mean in Practice?

Let’s review the four possible cases based on the Manufacturing Readiness and Operation Dependencies settings.

In all cases, we start from a scenario where components are initially unavailable. Therefore, the first status represents the Work Order’s status before any components become available.

Case 1: Manufacturing Readiness is set to "When All Components Are Available," and Operation Dependency is not enabled.

In this case, the system will enforce operation dependency based on the order of operations. The first Work Order will have the status "Waiting for Components," while the other Work Orders will be "Waiting for Another WO."

Once all components are available, the first WO will change to "Ready," while the others will remain in "Waiting for Another WO."

The statuses will update sequentially to "Ready" as each preceding WO is completed.

Case 2: Manufacturing Readiness is set to "When All Components Are Available," and Operation Dependency is enabled.

In this case, all Work Orders that do not depend on another order will have the status "Waiting for Components," while dependent orders will have the status "Waiting for Another WO."

The status of independent WOs will change to "Ready" once all components are available. However, dependent WOs will remain in "Waiting for Another WO" until the Work Order they depend on is completed.

Case 3: Manufacturing Readiness is set to "When Components for the 1st Operation Are Available," and Operation Dependency is not enabled.

In this case, the first WO will have the status "Waiting for Components," while all other WOs will be in "Waiting for Another Operation."

Once the components for the first operation are available, its status will change to "Ready," while all other WOs will remain "Waiting for Another WO."

When the first WO is completed, the next WO will change to "Ready" even if its components are not available.

In this setup, Odoo does not check if the components for each individual WO are available. Instead, it relies on the Manufacturing Order Readiness Status, which is set to "Ready" once the components for the first WO are available.

Case 4: Manufacturing Readiness is set to "When Components for the 1st Operation Are Available," and Operation Dependency is enabled.

In this case all WOs without dependencies will have the status "Waiting for Components." While WOs with dependencies will have the status "Waiting for Another WO."

Once the components for the first operation are available, the status of independent WOs will change to "Ready", even if some components for certain operations are still missing.

However, WOs that depend on another WO will remain in "Waiting for Another WO" until the dependent operation is completed. Once completed, those WOs will also change to “Ready” or “Waiting for Components,” depending on whether the components for the first unfinished WO are available.

Final Thoughts

When determining Work Order statuses, Odoo does not take actual component availability into account. Instead, it relies on the general Manufacturing Order Readiness Status.

It would be beneficial if Odoo refined this logic in the future by considering component availability at the Work Order level rather than relying solely on the overall Manufacturing Order Readiness Status. This would result in more accurate and reliable Work Order statuses.

Functional Manufacturing Odoo 18
Posts

Setting up appropriate access rights for each user in Odoo is a crucial part of system configuration. However, access management can become challenging, especially when dealing with a large number of users. A module that replicates the company structure through roles can significantly simplify this process.

The User Roles module facilitates structured access management by allowing to define roles that align closely with the company's hierarchy. Each role is assigned specific access groups, ensuring that users with the role can navigate the system efficiently while maintaining access only to the necessary functionalities.

Configuration

Once installed, the module introduces a Roles​ sub-menu under Users & Companies​ in the Settings page. This section provides a list of all created roles. Selecting a role opens its detailed form view, which includes:

  • Role Name
  • Associated Access Groups
  • Users Assigned to the Role
  • Internal Notes

Creating a New Role

To create a new role, click the “New” button, which opens a form view. While the Name field is the only mandatory input, assigning appropriate Access Groups is necessary for the role to be functional. Once configured, the role can be assigned to users.

Roles can be assigned in two ways:

  1. From the User’s Form View: Navigate to the Roles​ tab and select the desired roles. Each assigned role can have a specified validity period with a start and end date.
  2. From the Role’s Form View: Use the Users​ tab to assign multiple users to a role.

Only users with the Administration: Access Rights​ privilege can manage roles.

How the Functionality Works

When a role is assigned to a user, the user automatically inherit all associated access groups. Additional access groups cannot be manually added to users who have assigned roles. This ensures strict adherence to the defined access structure.

If a user has multiple roles, the access group with the highest level of privileges takes precedence. For example, if:

  • Salesperson role includes Inventory: User​ access
  • Inventory Manager role includes Inventory: Administrator​ access

A user assigned both roles will have Inventory: Administrator​ access, as it holds a higher level of access.

To view the active access groups for a user, go to the Access Rights​ tab next to the Roles tab in the user's form view.

Company-Specific Roles

For organizations using multi-company mode, the User Roles by Company extension module can be useful, as it introduces role assignment per company.

The key feature for the module are:

  • Adds a Company field in the Roles tab of the Users view.
  • If no company is specified, the role applies to all companies the user has access to.
  • A Company can be assigned to a Role only if it is in the User’s Allowed Companies list.
  • When multiple companies are selected as active for the user, only roles applicable to all selected companies remain active.

Final Thoughts

By structuring user access management through roles, organizations can efficiently manage permissions across multiple users while maintaining clarity and control over access rights. This approach simplifies administration and ensures a clear overview of user privileges.

The User Roles module is actively maintained by the Odoo Community Association (OCA), with the latest available version being 18.0.1.0.2.


Functional Odoo 18
Modules Review


Odoo’s checkout process includes several predefined options that allow businesses to tailor the process based on their needs. By navigating to the checkout page and clicking the Edit​ button, you will find the following customization options under the Customize​ tab:

  • Extra Step – Adds an extra step in the checkout process, which can be used for different purposes based on your business needs.
  • Suggested Accessories – When enabled, this feature displays related accessories for products in the cart overview. To use this option, at least one product must have suggested accessories configured.
  • Promo Code – Adds a promo code field in the Order Summary, below the Total. This option only makes the field available; you will still need to set up discount codes using Odoo’s pricelist feature.
  • Accept Terms and Conditions – If this option is activated, customers must select the "Accept Terms and Conditions" checkbox before proceeding with payment. The Pay button remains disabled until this requirement is met.
  • Show B2B Fields – Adds Company and VAT fields to the checkout form, making it useful for B2B transactions. If your business serves both B2B and B2C customers, you may prefer to display only the Company field by default and reveal the VAT field when a company name is entered. However, this option is not yet available in Odoo’s settings.

By using these options, you can customize Odoo’s checkout process to better suit your business requirements.

eCommerce Functional Odoo 18
Posts