Odoo integration
Connect WhatsApp to Odoo Customer Workflows
Customers answer WhatsApp and ignore email. The integration problem is making that conversation part of the order record instead of a phone on someone’s desk that nobody else can see.
- Templates
- Order notifications
- Conversations in the ERP
- Consent
- Audit trail
Reviewed by Bhavesh Selarka, COO & Co-Founder, Heliconia Solutions · Odoo 16 Functional Certification · Odoo Partner · Updated
Proof
Clients
Businesses that run on what we built
The short answer
What Does a WhatsApp and Odoo Integration Cover?
Odoo owns the customer, the order and the reason to send a message. The WhatsApp Business Platform, through whichever provider you use, owns delivery, template approval and the rules about when you may message someone. The integration sends the right message at the right business event, brings replies back onto the record, and keeps a consent and audit trail you can defend.
There are two jobs here and they get confused constantly. One is notification: order confirmed, payment received, invoice ready, parcel out for delivery. The other is conversation: a customer replies, and somebody has to answer with the order in front of them. If you don't separate them, you end up buying a tool for one and expecting the other.
Zealous do this inside their Odoo 18 Enterprise retail system, where customer communication over WhatsApp runs beside POS, invoicing and the rest of the ERP rather than in a separate tool.
What makes it worth building is the second half. A notification tool is easy. Getting the reply back onto the customer record, visible to the next person who opens it, is what stops the conversation living on one salesperson’s phone.
The first decision
Which System Owns What
Messaging integrations go wrong on consent and identity before they go wrong on delivery. Settle these rows first.
| Object | System of record | Direction | Conflict rule |
|---|---|---|---|
| Customer identity and phone number | Odoo | Odoo to the platform | One partner record, one number, in a format that is validated before anything is sent |
| Consent and opt-out | Odoo | Both | An opt-out anywhere stops sending everywhere, immediately and permanently |
| Message templates | Platform, approved | Platform to Odoo | Odoo stores the approved template and its variables, never free text pretending to be a template |
| Business event that triggers a message | Odoo | Odoo only | The ERP decides what is worth a message. The messaging tool does not invent reasons |
| Delivery status | Platform | Platform to Odoo | Sent, delivered, read or failed belongs on the record, or nobody knows what the customer saw |
| Inbound replies | Platform, stored in Odoo | Platform to Odoo | The reply lands on the partner or order thread, not in a private inbox |
| Conversation window rules | Platform | Platform decides | The platform sets when a template is required. Build to the rule, do not argue with it |
The second row is the one with legal weight. Consent must be recorded where you can produce it later, with a date and a source, and an opt-out has to be honoured by every future send without anyone remembering to check.
The lifecycle
From Business Event to Answered Conversation
Notification out, conversation back, both attached to the record.
Step 01
Consent captured
The customer opts in, at the counter, at checkout or in the portal, and Odoo records who consented, when and to what. Without this step the rest is a compliance problem waiting.
- Odoo
Step 02
Business event
Something real happens: an order is confirmed, a payment clears, an invoice is issued, a parcel ships, an appointment is tomorrow. Odoo knows first because Odoo is where it happened.
- Odoo
Step 03
Template selected
An approved template is chosen and its variables filled from the record. Language follows the customer, not the sender.
- Template
Step 04
Sent and queued
The message goes through the platform with rate limiting and retry. Failures are visible on the record rather than swallowed.
- Platform
Step 05
Delivery status back
Sent, delivered, read or failed is written onto the message log, so your team knows whether the customer actually got it before chasing them by phone.
- Webhook
Step 06
Customer replies
The reply arrives and is matched to the partner and, where possible, the order. It appears in the Odoo thread where the next person will look.
- Inbound
Step 07
Someone answers
With the order, the invoice and the history on the same screen. This is the part that changes how a team works, and the part a standalone messaging tool cannot give you.
- Odoo
Step 08
Opt-out honoured
A stop request updates the partner record and blocks every future send, including the automated ones nobody remembers configuring.
- Consent
Which pattern
Native App, Community Module, Provider Connector or Custom?
Odoo Enterprise ships WhatsApp messaging on recent versions. Check that first, then read down.
| Your situation | Approach | Why |
|---|---|---|
| Enterprise, standard notifications, supported version | Odoo's own WhatsApp integration | Configuration and template approval, not a development project |
| Community edition | Provider connector or custom | Check what a module actually does on failure before trusting it with customer messages |
| Messages must fire on your own custom events | Custom | What Zealous needed: the ERP workflows are customised, so the triggers are too |
| Replies must land on the order or ticket | Custom routing | Matching an inbound number to a partner and an open document is where the value is |
| Several numbers, brands or countries | Custom, with routing rules | Sender selection and language belong in rules you can change without a developer |
| Marketing campaigns at volume | Scope separately, carefully | Consent, frequency and template policy matter more than the send. Get this wrong and the number gets restricted |
Provider selection is part of the assessment rather than a preference we impose. Pricing, template categories and messaging windows are set by the platform and change, so we check them against current documentation at the time of the project instead of quoting numbers on a page that will age.
Failure handling
What Makes It Survive a Bad Day
- Idempotent sending keyed on the business event, so a retry or a re-saved record can’t message the same customer twice
- A queue with retry and backoff, and a dead letter path that a human reviews rather than a log nobody opens
- Rate limiting that respects the platform’s limits, because exceeding them affects your number rather than our code
- Phone number validation and normalisation at the source, since most delivery failures are bad numbers rather than bad integrations
- Delivery status written back to the record, so failed messages are visible to the team who needs to chase them
- Template versioning, so an approval change at the platform doesn’t silently break a workflow at three in the morning
- A consent check immediately before every send, not just at the point the automation was configured
- Alerting on failure rate and queue depth, addressed to a named person who owns customer communication
Security and compliance boundary
Consent, Data and What We Do Not Decide
- 01
Consent is recorded in Odoo with a date and a source, and an opt-out is honoured across every send path. This is the control that matters most and the one most often skipped.
- 02
Platform credentials and webhook secrets live in the server environment, never in the database, a module or a repository.
- 03
Inbound webhooks are signature-verified and rate-limited, and they do one thing: enqueue a verified message.
- 04
Message content and delivery status are stored on the customer record under your retention policy, so a conversation can be produced when a dispute needs it.
- 05
Access follows Odoo record rules: whoever can see the customer can see the conversation, and nobody else.
- 06
The business account, the number and the templates stay yours. We ask for the least access that lets us build and debug.
- 07
We do not advise on your marketing consent obligations or data-protection position. Your adviser sets the rule, we build to it and we make the trail auditable.
How we run it
Implementation Sequence
Assessment
Odoo version and edition, which events deserve a message, who answers replies, volumes, languages, countries and how consent is captured today.
Provider and account setup
Business account, number and provider confirmed against current platform documentation, with template categories chosen before anything is written.
Templates and consent first
Templates drafted and submitted for approval early, because approval takes time, and the consent model is agreed before the first send.
Notifications, then conversations
Outbound event messages go live first. Inbound routing onto the partner and order thread follows once the send path is stable.
Controlled go-live
One workflow and a small cohort first, with delivery status watched, before the rest of the events are switched on.
Review after a month
Failure rates, opt-outs and reply volume tell you which messages help and which ones annoy. We turn the annoying ones off.
Evidence
WhatsApp and Odoo in Production
A customised retail ERP where customer communication runs through WhatsApp inside Odoo, alongside POS, barcode and invoicing work.
| Project | Industry | Odoo | Key capabilities | Technology |
|---|---|---|---|---|
| Zealous | Fashion retail & eCommerce | Odoo 18 Enterprise | Zealous Custom Module · Payment (Credit Card) Module · Cash on Delivery (COD) Payment Module · Website Phone Validation | Odoo 18 Enterprise · Python · PostgreSQL · OWL |
Integration assessment
Request an Integration Assessment
Send your Odoo version and edition, the events you want customers told about, who will answer replies, your volumes and languages, and how you capture consent today. You get the ownership matrix, a template list worth submitting, and a straight answer on whether your Odoo version already does this.
- Data ownership matrix completed for your setup
- The events worth a message, and the ones that would just annoy people
- Template list and approval plan, with variables mapped to Odoo fields
- Consent and opt-out model, recorded where you can produce it later
- Inbound routing: which thread a reply lands on, and who owns it
What clients say
In Their Words
Heliconia transformed our business with Odoo. They implemented a dynamic website with e-commerce capabilities, enhancing our online presence significantly.
Sandesh ThummarBusiness Owner, Ladder Logix
Heliconia provided a unique canteen solution, saving us valuable ordering time. Their innovative approach has been invaluable to our operations.
Pradeep LakhaniBusiness Owner, Avasar Agency
Questions
WhatsApp and Odoo Questions, Answered Directly
Does Odoo have WhatsApp built in?
Recent Odoo Enterprise versions include WhatsApp messaging, and if your version supports it and your needs are standard notifications, that's configuration plus template approval rather than a project.
You need an integration when the triggers are your own custom workflows, when you are on Community, or when replies have to land on a specific record rather than a generic inbox.
Can customers reply, and where does the reply go?
Yes, and where it goes is the whole point. An inbound message is matched to the partner and, where possible, the open order or ticket, so it appears in the Odoo thread the next person will open. A reply that only reaches one salesperson’s phone is worse than no integration.
Can we message any customer at any time?
No. The platform requires an approved template outside a limited window after the customer’s own last message, and those rules and categories are set by the platform rather than by us or by Odoo. We build to the current rules and check them against the platform documentation at the time of the project.
Which provider do you use?
That is part of the assessment rather than a fixed answer. Provider choice depends on your country, volume, existing vendor relationships and whether you need conversation routing beyond Odoo. We will lay out the options with the trade-offs instead of steering you to one.
How is consent handled?
Recorded in Odoo with a date and a source, checked immediately before every send, and an opt-out blocks every future message across every workflow. We build the control, and we don't decide what consent you need in your market. Your adviser does.
What has Heliconia actually built?
Customer communication over WhatsApp inside a heavily customised Odoo 18 Enterprise retail system for Zealous, delivered alongside POS workflows, barcode and label printing, payment modules and invoice redesign.
Next step
Put the Conversation on the Customer Record
Tell us which events deserve a message and who answers when a customer replies. We will design the templates, the consent trail and the routing before anyone writes code.