Skip to main content

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

Live on Odoo 18 EnterpriseRetail and POS workflowsConversation attached to the recordConsent and opt-out built in

Clients

Businesses that run on what we built

  • Ladder Logix
  • Avasar Agency
  • Aria Jewellers
  • Freiburger Bund
  • Jo Ann's
  • Opsio
  • LittleQ

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.

Which System Owns What
ObjectSystem of recordDirectionConflict rule
Customer identity and phone numberOdooOdoo to the platformOne partner record, one number, in a format that is validated before anything is sent
Consent and opt-outOdooBothAn opt-out anywhere stops sending everywhere, immediately and permanently
Message templatesPlatform, approvedPlatform to OdooOdoo stores the approved template and its variables, never free text pretending to be a template
Business event that triggers a messageOdooOdoo onlyThe ERP decides what is worth a message. The messaging tool does not invent reasons
Delivery statusPlatformPlatform to OdooSent, delivered, read or failed belongs on the record, or nobody knows what the customer saw
Inbound repliesPlatform, stored in OdooPlatform to OdooThe reply lands on the partner or order thread, not in a private inbox
Conversation window rulesPlatformPlatform decidesThe 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.

  1. 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
  2. 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
  3. Step 03

    Template selected

    An approved template is chosen and its variables filled from the record. Language follows the customer, not the sender.

    • Template
  4. 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
  5. 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
  6. 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
  7. 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
  8. 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.

Native App, Community Module, Provider Connector or Custom?
Your situationApproachWhy
Enterprise, standard notifications, supported versionOdoo's own WhatsApp integrationConfiguration and template approval, not a development project
Community editionProvider connector or customCheck what a module actually does on failure before trusting it with customer messages
Messages must fire on your own custom eventsCustomWhat Zealous needed: the ERP workflows are customised, so the triggers are too
Replies must land on the order or ticketCustom routingMatching an inbound number to a partner and an open document is where the value is
Several numbers, brands or countriesCustom, with routing rulesSender selection and language belong in rules you can change without a developer
Marketing campaigns at volumeScope separately, carefullyConsent, 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

  1. 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.

  2. 02

    Platform credentials and webhook secrets live in the server environment, never in the database, a module or a repository.

  3. 03

    Inbound webhooks are signature-verified and rate-limited, and they do one thing: enqueue a verified message.

  4. 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.

  5. 05

    Access follows Odoo record rules: whoever can see the customer can see the conversation, and nobody else.

  6. 06

    The business account, the number and the templates stay yours. We ask for the least access that lets us build and debug.

  7. 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

  1. Assessment

    Odoo version and edition, which events deserve a message, who answers replies, volumes, languages, countries and how consent is captured today.

  2. Provider and account setup

    Business account, number and provider confirmed against current platform documentation, with template categories chosen before anything is written.

  3. 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.

  4. Notifications, then conversations

    Outbound event messages go live first. Inbound routing onto the partner and order thread follows once the send path is stable.

  5. Controlled go-live

    One workflow and a small cohort first, with delivery status watched, before the rest of the events are switched on.

  6. 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.

WhatsApp and Odoo in Production
ProjectIndustryOdooKey capabilitiesTechnology
ZealousFashion retail & eCommerceOdoo 18 EnterpriseZealous Custom Module · Payment (Credit Card) Module · Cash on Delivery (COD) Payment Module · Website Phone ValidationOdoo 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

Request the assessment

What clients say

In Their Words

Questions

WhatsApp and Odoo Questions, Answered Directly

Bhavesh Selarka

COO & Co-Founder, Heliconia Solutions

Not answered here? Ask Bhavesh directly, the person who reviewed this page, not a sales queue. Odoo 16 Functional Certification.

Ask a question

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.

Read the project

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.