How to Set Up Mass Mailing in Odoo 19: Complete Tutorial
Mass Mailing in Odoo 19 is the platform's built-in email marketing solution for sending bulk email and SMS campaigns directly from your ERP without any third-party tool. This complete tutorial is a beginner guide and step by step walkthrough of everything you need: how to install the Email Marketing module, configure outgoing mail and GDPR settings, build and import mailing lists, compose and design campaign emails using the drag-and-drop builder or HTML editor, run A/B split tests to find the best-performing variant, and read the campaign analytics dashboard to measure open rates, click rates, and unsubscribes. By the end of this step by step guide, you will have a fully configured mass mailing pipeline ready to run your first campaign in Odoo 19.
What You'll Learn:
- How to install the Email Marketing module and its SMS sub-module in Odoo 19
- How to configure dedicated outgoing mail servers, daily send limits, and GDPR unsubscribe links
- How to create and manage mailing lists with contacts, tags, and CSV bulk import
- How to create a mailing and select recipients from lists, CRM leads, customers, or custom domains
- How to design professional emails using the drag-and-drop builder, pre-built templates, and dynamic variables
- How to configure and evaluate A/B split tests with custom winning criteria and timing
- How to interpret the campaign analytics dashboard — delivered rate, open rate, click rate, bounces, and unsubscribes
- How to manage the blacklist for GDPR compliance and reduce bounce rates
What Is Mass Mailing in Odoo 19?
Odoo 19 Mass Mailing is an integrated email marketing module that lives inside your ERP alongside CRM, Sales, and Events. Because it shares the same contact database as the rest of Odoo, you can target mailing lists built from real customer records, CRM leads, or event registrants without any CSV export or synchronisation step. The module installs two sub-modules automatically: mass_mailing for email campaigns and mass_mailing_sms for SMS campaigns. Both are accessible from the Email Marketing top-level menu after installation.
Key advantages of the built-in solution over standalone email platforms include real-time recipient data (no stale exports), native A/B testing, one-click GDPR unsubscribe links enforced at the server level, blacklist management synced across all modules, and campaign attribution directly tied to CRM leads and sales orders. The analytics are also contextual — you can click through from a campaign to the individual records that opened or clicked, which is not possible in a disconnected tool.
Drag & Drop Builder
Design responsive email templates visually by dragging text blocks, image sections, buttons, dividers, and social icon rows into place. Each block is independently styled. Preview the result on desktop, tablet, and mobile viewports before sending. Pre-built templates for promotions, newsletters, and events provide a professional starting point that can be customised in minutes without writing any HTML.
A/B Testing
Create two or more variants of a mailing and split your recipient list by percentage. Set the winning criterion to Open Rate, Click Rate, or Reply Rate, and choose when Odoo should automatically declare a winner — after 24 hours, 48 hours, or a custom duration. The winning variant is then sent to the remaining portion of the list, maximising campaign effectiveness without manual monitoring.
Campaign Analytics
The analytics dashboard shows seven campaign health metrics for every mailing: Sent, Delivered percentage, Opened percentage, Clicked percentage, Replied percentage, Bounced count, and Unsubscribed count. Three dashboard views — List, Kanban, and Calendar — let you track campaign status through the Draft to Sent pipeline and compare performance across multiple campaigns at a glance.
Blacklist & GDPR
The Blacklist Management feature automatically excludes opted-out email addresses from all future mailings. Every mass email includes a one-click unsubscribe link enforced at the server level — recipients are added to the blacklist immediately and cannot be accidentally re-added by a CSV import. The blacklist is shared across all Odoo modules including CRM, Sales, and Events, ensuring organisation-wide GDPR compliance.
Step by Step Guide: Setting Up Mass Mailing in Odoo 19
This step by step guide walks through the full setup process in sequence. Each step builds on the previous one, starting with module installation and ending with reading campaign analytics after your first send. Complete all six steps the first time you set up mass mailing in a new Odoo 19 instance.
Install the Email Marketing Module
Navigate to the Main Menu and open Apps. In the search bar, type Email Marketing and press Enter. Locate the Email Marketing app card in the results — it is published by Odoo SA and covers bulk email campaigns. Click Install. Odoo will automatically install two sub-modules alongside it: mass_mailing (email campaigns) and mass_mailing_sms (SMS campaigns). After installation completes, a new top-level menu item labelled Email Marketing appears in the main navigation bar. If you only need email and want to skip SMS, you can uninstall the SMS sub-module separately later — but it is harmless to leave it installed. The installation typically takes under two minutes on a standard Odoo.sh or on-premise instance.
Configure Email Marketing Settings
Go to Email Marketing > Configuration > Settings. Review and enable each option that applies to your environment. Dedicated Server: toggle ON and select (or configure) a separate outgoing mail server specifically for mass emails — this keeps your transactional email reputation separate from campaign reputation. Unsubscribe Links: always enable this; it is mandatory for GDPR and CAN-SPAM compliance and adds a one-click unsubscribe footer to every campaign email. Daily Limit: set the maximum number of emails Odoo will dispatch per day to avoid triggering spam filters at your mail server or ESP. A common starting value is 500 per day for a new sending domain, scaling up as your sending reputation improves. Tracking: enable open and click monitoring — Odoo inserts a 1x1 tracking pixel for opens and rewrites links with tracking URLs for clicks. Blacklist Management: enable to automatically exclude opted-out addresses from all campaigns. Save settings before proceeding.
Create a Mailing List
Go to Email Marketing > Mailing Lists and click New. Enter a descriptive Mailing List Name such as "Monthly Newsletter" or "Product Launch - June 2026". Toggle Show in Preferences to ON if you want recipients to be able to manage their own subscription through the unsubscribe preference centre — this is recommended for regular newsletters but optional for one-time campaigns. To add contacts individually, click the Contacts smart button and then New: fill in Name, Email, Company, Country, and Tags for each contact, and set their subscription status per list (Subscribed, Unsubscribed, or Bounced). For bulk import, click the Import button (or use the Action menu's Import option) and upload a CSV file with columns mapped to Name, Email, Company, Country, and Tags. Odoo will de-duplicate against existing contacts and skip blacklisted addresses automatically during import. A mailing list is ready to use as soon as it has at least one subscribed contact.
Create a New Mailing
Go to Email Marketing > Mailings and click New. Fill in the mailing header fields. Subject: the email subject line that recipients see in their inbox — make it concise and specific (under 60 characters is recommended for mobile preview). Recipients: choose the record type to target. Options include Mailing List (uses the lists you created in Step 3), Contacts (Odoo res.partner records), Leads/Opportunities (CRM pipeline records), Customers (invoiced partners), or any custom model registered in your system. When you select Mailing List, a Mailing List field appears — select one or more lists. Send From: the sender email address and display name. Reply To: the address that receives replies (can differ from Send From). Schedule: choose Send Now to dispatch immediately when you click Send, or Schedule to set a future date and time — Odoo will queue the mailing and dispatch it at the specified time even if no user is logged in. Campaign: optionally assign the mailing to a campaign to group related mailings for aggregate reporting.
Design the Email Body
In the Mail Body tab, choose your design method. Drag & Drop Builder: the default visual editor. Drag blocks from the left panel — text, image, button, divider, social icons, columns — into the canvas. Click any block to edit content, padding, font, and colour. Odoo's builder generates responsive HTML automatically; the result looks correct on desktop, tablet, and mobile without any manual media query work. Pre-built Templates: click the template picker to browse categorised layouts for Promotions, Events, and Newsletters. Select a template and customise the placeholder content. HTML Editor: toggle to the code view (the "<>" button in the toolbar) to write or paste custom HTML markup directly. This is useful when migrating templates from another platform or implementing complex custom layouts. Dynamic Variables: personalise content by inserting merge tags anywhere in the subject line or body: {{object.name}} inserts the recipient's name, {{object.company}} inserts their company name, and any other field on the recipient model is accessible using the same dot-notation. Always click the Preview button after designing to check the rendering on desktop, tablet, and mobile viewports before scheduling or sending.
Track Campaign Analytics
After sending, return to Email Marketing > Mailings to monitor results. In List View, each row shows Date, Subject, Responsible, Sent count, Delivery%, Open%, Click%, Reply%, and Status. In Kanban View, cards move through a pipeline: Draft > In Queue > Sending > Sent. In Calendar View, scheduled mailings appear on a timeline so you can plan send frequency and avoid overlapping campaigns to the same audience. Click any mailing to open its analytics detail: the seven campaign health metrics are displayed as smart buttons at the top — Sent, Delivered, Opened, Clicked, Replied, Bounced, and Unsubscribed. Click each smart button to drill into the individual records (which contacts opened, which links were clicked, which addresses bounced). Bounced addresses are automatically flagged in the mailing list and can be added to the blacklist with one click. Use these metrics to refine subject lines, send times, and content for future campaigns. Industry average open rates for B2B email marketing are 20–30%; a rate below 15% typically signals a subject line, sender reputation, or list hygiene issue.
A/B Testing Your Mailings
A/B testing in Odoo 19 Mass Mailing allows you to send two or more variants of a campaign to a subset of your list, let the system measure which performs best, and then automatically send the winner to the remaining recipients. This is built directly into the mailing form — no separate tool or integration required.
To enable A/B testing, open a mailing in Draft status and toggle the A/B Test switch ON in the mailing header. A percentage field appears — set the share of your total recipient list that this variant should receive (for example, 20%). Create a second mailing pointing to the same mailing list, also with A/B Test ON, and set its percentage to another 20%. The two percentages together define your test group; the remaining 60% will receive the winner automatically after the test window closes.
In the A/B Test configuration section, select the Winning Criteria: choose Open Rate if the goal is visibility, Click Rate if the goal is engagement with a specific CTA, or Reply Rate if the goal is direct conversation. Set the Winner Selection timing: 24 hours after the first send is appropriate for time-sensitive promotions, 48 hours gives slower-opening segments (like B2B audiences) more time to engage, and Custom lets you pick any duration. When the timer expires, Odoo evaluates both variants against the winning criterion and sends the better-performing version to the remainder of the list automatically — or notifies you to choose manually if the difference is below a statistical significance threshold.
Subject line personalisation:
Hi {{object.name}}, your exclusive offer is ready
Body personalisation — recipient name:
Dear {{object.name}},
Body personalisation — company:
On behalf of {{object.company}}, we are pleased to invite you...
Body personalisation — field from linked model:
Your account manager is {{object.user_id.name}}.
Fallback value (if field is empty):
Hi {{object.name or 'Valued Customer'}},
Email Marketing Settings Reference
The following table describes every configurable option in Email Marketing > Configuration > Settings and when to enable each one.
| Setting | Purpose | Recommended Action |
|---|---|---|
| Dedicated Server | Route mass emails through a separate outgoing mail server to protect transactional email reputation from campaign bounces | Enable — configure a separate SMTP server or ESP (SendGrid, Mailgun, Postmark) for campaigns |
| Unsubscribe Links | Appends a one-click unsubscribe footer to every mass email; clicking it adds the address to the blacklist immediately | Always enable — required for GDPR (EU), CAN-SPAM (US), and CASL (Canada) compliance |
| Daily Limit | Sets the maximum number of campaign emails Odoo will dispatch per calendar day to prevent spam-filter flagging | Enable — start at 500/day for new domains, increase gradually as sending reputation builds |
| Tracking | Inserts a tracking pixel for open detection and rewrites links with tracking URLs to record individual clicks | Enable — required to see Open%, Click%, and Reply% metrics in campaign analytics |
| Blacklist Management | Maintains a global opt-out list; blacklisted addresses are automatically excluded from all future campaigns and from CSV imports | Always enable — ensures GDPR compliance and protects sender reputation from hard bounces |
Always Enable the Daily Limit and Unsubscribe Link
Skipping the Daily Limit on a new sending domain will cause bulk dispatches to trigger spam filters at major mail providers (Gmail, Outlook, Yahoo), resulting in deliverability damage that can take weeks to recover from. Skipping Unsubscribe Links is a direct violation of GDPR Article 7 and CAN-SPAM Section 5 — regulators can issue fines even for a single non-compliant campaign. Both options must be enabled before your first production send. Do not test on live recipient lists without these safeguards in place.
Campaign Analytics Metrics Explained
After a mailing is sent, Odoo 19 provides seven health metrics that together give a complete picture of campaign performance. Understanding what each metric measures — and what a problematic value looks like — is essential for improving future campaigns.
| Metric | What It Measures | Healthy Range (B2B) |
|---|---|---|
| Sent | Total number of emails dispatched from Odoo's queue — includes all recipients before any delivery filtering | Matches your expected list size |
| Delivered (%) | Percentage of sent emails that were accepted by the recipient's mail server without a bounce response | Above 95% — below 90% signals list hygiene issues |
| Opened (%) | Percentage of delivered emails where the tracking pixel was loaded, indicating the recipient opened the message | 20–35% — below 15% indicates subject line or sender reputation issues |
| Clicked (%) | Percentage of delivered emails where at least one tracked link was clicked — reflects engagement with the email's CTA | 2–5% — highly campaign-type dependent |
| Replied (%) | Percentage of delivered emails where the recipient replied directly to the message — indicates strong personal engagement | Under 1% is typical; higher is always better |
| Bounced | Count of emails that could not be delivered — includes hard bounces (invalid addresses) and soft bounces (full mailbox, temporary server errors) | Below 2% — above 5% risks sender domain blacklisting |
| Unsubscribed | Count of recipients who clicked the one-click unsubscribe link; they are added to the blacklist and excluded from all future mailings | Below 0.5% — above 1% signals relevance or frequency issues |
Dashboard Views: List, Kanban, and Calendar
The Email Marketing module provides three different views of your mailings, each suited to a different workflow need. You can switch between views using the view toggle buttons in the top-right corner of the Mailings page.
List View is the default analytics view. Each row shows the mailing's Date, Subject, Responsible user, Sent count, Delivery%, Open%, Click%, Reply%, and Status. This view is best for comparing performance across multiple campaigns side by side and for quickly identifying which mailings are underperforming.
Kanban View displays mailings as cards in a pipeline with columns representing status stages: Draft, In Queue, Sending, and Sent. This view is best for a team workflow where multiple people are preparing campaigns concurrently — you can see at a glance which mailings are being drafted, which are queued for sending, and which have completed. Drag a card to move it between stages, or click it to open the full mailing form.
Calendar View shows scheduled mailings on a monthly or weekly calendar timeline. This view is essential for planning send frequency — you can see whether two campaigns to overlapping audiences are scheduled on the same day, or whether there are large gaps in your editorial calendar. Click any calendar event to open the mailing and adjust its schedule.
Blacklist Management and GDPR Compliance
The blacklist in Odoo 19 is a global list of email addresses that have opted out of all communications. It is accessible at Email Marketing > Configuration > Blacklist. The list is automatically populated when a recipient clicks the unsubscribe link in any campaign email. It is also shared across all Odoo modules — a contact blacklisted via an Email Marketing campaign is also excluded from automated emails sent by CRM, Sales pipeline automation, and Events registration confirmations.
To manually add an address to the blacklist, open the Blacklist page and click New, then enter the email address and a reason. To bulk-import a list of opted-out addresses (for example, when migrating from another platform), use the Import button on the Blacklist page and upload a CSV file with an Email column. To remove an address from the blacklist (for example, when a recipient contacts you to re-subscribe), locate the record, click Unblacklist, and enter a reason for audit purposes.
Hard bounce addresses should also be added to the blacklist to prevent future send attempts to known-invalid addresses. After a campaign, review the Bounced smart button on the mailing analytics page and use the bulk action to add all hard-bounced addresses to the blacklist in one step. This reduces bounce rates on subsequent campaigns and protects your sender domain reputation over time.
Integrations with CRM, Sales, and Events
One of the strongest advantages of Odoo 19 Mass Mailing over a standalone email platform is its native integration with other modules in your Odoo instance. These integrations eliminate data silos and allow campaigns to be targeted directly at live operational data without any export or synchronisation step.
CRM Integration: When creating a mailing, select Leads/Opportunities as the Recipients type. You can add domain filters to target, for example, all leads in a specific stage, from a particular country, or assigned to a specific salesperson. Campaign clicks can be linked back to lead activity records, and a campaign-to-lead attribution report shows which email campaigns generated pipeline value.
Sales Integration: Select Customers (res.partner with at least one invoice) as the Recipients type to target existing customers only. Filter by customer rank, salesperson, or product category for targeted upsell or cross-sell campaigns. Customer responses (clicks and replies) are logged in the chatter on the partner record, giving your sales team full visibility of email engagement history in the same place they manage the relationship.
Events Integration: If the Odoo Events module is installed, you can send a mailing to all registrants of a specific event by selecting Event Registrations as the Recipients type and filtering by event name or date. This is useful for pre-event reminders, post-event follow-ups, and survey requests — all sent directly from the campaign tool without exporting an attendee list.
Key Insight: Your Sending Reputation Needs a Warm-Up Period
When sending from a new domain or IP address for the first time, major email providers (Gmail, Outlook, Yahoo) apply stricter filtering until your domain establishes a sending history with high engagement and low bounces. Start with your Daily Limit set to 200–500 emails per day, send only to your most engaged and recently verified contacts first, and increase the limit by 50% each week as long as your Delivered% stays above 95% and your Bounced rate stays below 2%. This "warm-up" process typically takes 4–6 weeks before you can send at full volume reliably. Using a Dedicated Server configured with proper SPF, DKIM, and DMARC DNS records is mandatory — without these, even a warmed-up domain will see inconsistent deliverability.
Frequently Asked Questions
Does Odoo 19 Mass Mailing include SMS campaigns as well as email?
Yes. Installing the Email Marketing module automatically installs the mass_mailing_sms sub-module alongside the core email campaign module. SMS campaigns appear in the same Mailings list and use the same recipient, scheduling, and analytics infrastructure as email campaigns. SMS delivery requires a compatible SMS gateway configured under Technical > Outgoing SMS servers — Odoo supports OVH and other providers via IAP credits or a self-configured gateway.
Can I import a contact list from another email platform into Odoo 19 mailing lists?
Yes. From Email Marketing > Mailing Lists, open the target list and click the Contacts smart button, then use the Import action to upload a CSV file. Required column is Email; optional columns are Name, Company, Country, and Tags. Odoo will deduplicate against existing contacts and automatically skip any address already present on the blacklist. Export your existing platform's subscriber list with unsubscribes first so you can also import that CSV into the Blacklist to maintain compliance.
What is the difference between Sent and Delivered in Odoo campaign analytics?
Sent is the number of emails that Odoo successfully dispatched from its internal queue to the outgoing mail server — it counts every email that left Odoo. Delivered is the subset that the recipient's mail server accepted without issuing a bounce notification — it excludes hard bounces (invalid addresses), soft bounces (temporary server errors), and any messages blocked by spam filters before delivery. A healthy campaign should show Delivered at 95% or above of Sent.
How do A/B test winner criteria work in Odoo 19 Mass Mailing?
When the A/B test timer expires, Odoo compares the selected metric — Open Rate, Click Rate, or Reply Rate — across all variants and designates the highest-performing one as the winner. The winner is then automatically sent to the remaining portion of the mailing list (those who did not receive either test variant). If the difference between variants is below a statistical threshold, Odoo notifies the responsible user to choose the winner manually rather than selecting automatically on a marginal difference.
Is the Odoo 19 mailing blacklist shared across all modules or just Email Marketing?
The blacklist is global — it is shared across all Odoo 19 modules that send bulk or automated email. A contact blacklisted through an Email Marketing campaign unsubscribe link is also excluded from CRM pipeline automated emails, Sales quotation follow-ups, and Events registration reminder emails. This organisation-wide enforcement ensures GDPR compliance regardless of which module a communication originates from, and prevents inadvertently contacting opted-out addresses through a different workflow.
Need Help Setting Up Mass Mailing in Odoo?
Our certified Odoo consultants can configure your Email Marketing module from scratch — dedicated mail server setup, GDPR compliance, mailing list migration, and campaign templates — so your first send goes out correctly and lands in the inbox.
About the author
Founder & Odoo Practice Lead, Braincuber Technologies
Founder of Braincuber. Has scoped and shipped 500+ Odoo implementations for US mid-market and global brands. Takes every founder call personally — no SDR layer between buyers and the people building the system.
