WhatsApp Business API with Odoo Community: what works, what doesn't, and the 24-hour rule
TechnoVision
24 September 2026 · 8 min read
In Egypt, WhatsApp is where customers ask "did my order ship?" and "how much is left on my invoice?". Odoo has an official WhatsApp app, but its documentation is explicit: it is an Odoo Enterprise-only application that does not work in Odoo Community edition. So what can a Community user actually do?
This article separates the three things people mean when they say "WhatsApp integration", explains Meta's 24-hour customer service window (the rule that decides whether a message is free and even whether it can be sent at all), and flags a pricing change that takes effect on October 1, 2026.
Three very different "WhatsApp integrations"
| Approach | What it is | Needs Meta API? | Cost | Works on Community? |
|---|---|---|---|---|
| 1. Click-to-chat link | A button that opens wa.me/<number> in WhatsApp | No | Free | Yes |
| 2. Cloud API, outbound | Odoo sends messages through Meta's WhatsApp Business Platform | Yes | Per message, by category | Yes, with a module |
| 3. Cloud API, two-way | Odoo receives customer messages via webhook and replies | Yes | Free inside the window today; charged from Oct 2026 | Yes, with a module |
Most businesses need approach 1 on day one and approach 3 eventually. Approach 2 alone (blasting notifications) is where most of the money and most of the compliance risk sits.
Approach 1: the free click-to-chat button
A wa.me link needs the phone number in international format without +, spaces or leading zeros. For an Egyptian mobile stored as 010 1234 5678, the link is https://wa.me/201012345678. Nothing is sent until a person clicks; there is no API, no token and no cost.
A good button implementation should:
- Normalise the number: strip spaces, dashes and brackets; convert
00and+prefixes; apply the contact's country code if the number is local. - Refuse to render if the number is not valid, so nobody messages the wrong person.
- Prefer the mobile field, fall back to phone.
This covers sales reps who want to open a chat from a contact or a quotation. It does not put the conversation into Odoo.
Approach 2 and 3: Meta's WhatsApp Cloud API
To send or receive messages programmatically you need, from Meta:
- A Meta Business account and a developer app.
- A WhatsApp Business Account (WABA) and a phone number ID for a number not registered on the consumer app.
- A permanent access token (system user token), the app secret, and a webhook URL with a verify token that Odoo exposes over HTTPS.
Any module claiming to work without these is either using the click-to-chat link (approach 1) or automating the consumer WhatsApp Web client, which violates WhatsApp's terms and gets numbers banned.
The 24-hour customer service window
This is the rule that shapes everything. When a customer messages your business number, Meta opens a customer service window that stays open for 24 hours from the customer's last message. Inside the window you can send free-form messages (text, documents, images) without pre-approval.
Outside the window, you can only send template messages: messages whose wording Meta has approved in advance, with placeholders for names, amounts and dates. Templates fall into three categories:
| Category | Example | Charged? |
|---|---|---|
| Marketing | "Eid offer: 15% off this week" | Always charged when delivered |
| Utility | "Your order SO/2026/0142 has shipped" | Free inside the window until Sep 30, 2026; charged otherwise |
| Authentication | "Your login code is 482913" | Charged, with volume discounts |
Since July 1, 2025, Meta charges per message delivered, not per conversation, at rates that vary by template category and the recipient's country code. We do not quote EGP or USD rates here because they change; check Meta's pricing page for the Egypt row.
What changes on October 1, 2026
Two changes Meta has announced on its developer site matter for Odoo users:
- Service messages will be charged. Free-form replies inside the 24-hour window have been free since November 1, 2024. From October 1, 2026 Meta will charge them per message, "consistent with how Meta charges for template messages".
- Utility templates inside the window will be charged from the same date. They have been free inside the window since July 1, 2025.
What stays free: replies within the 72-hour free entry point window opened when a customer contacts you from a Click-to-WhatsApp ad or a Facebook call-to-action button.
Practical meaning: an automation that answers every "hi" with three separate messages will cost three times more than one that answers with a single, complete message. Design your replies accordingly.
What works well on Odoo Community
With a properly built module and Meta credentials, these are realistic on Community:
- Customer-initiated lookups. A customer sends "order status" and Odoo answers with the state of their latest sales order, matched by phone number. This lives inside the window, so it needs no template.
- Outstanding invoice and payment link. "Balance" returns the open invoices and a payment link. Same window logic.
- Handover to a human. A keyword or an unrecognised message creates a task or a Discuss notification for an agent, who replies from Odoo while the window is open.
- After-hours auto-reply, once per closed period, so customers know when someone will answer.
- Opt-out handling. "STOP" marks the contact as opted out and the module refuses to send further messages. This is required by Meta's policies and by common sense.
- Outbound queue with retries, so a Meta outage does not lose messages or send duplicates.
What does not work, or should not
- Sending the first message freely. Outside a window you must use an approved template. A module that lets you type any text to any contact will fail silently or get your number rate-limited.
- Bulk marketing without opt-in. Meta requires prior consent for marketing templates; numbers with high block rates lose messaging tiers.
- Chatbots that pretend to be a person. Meta requires businesses to make it clear when a customer is talking to automation.
- Media interpretation. Photos and voice notes arrive as files. A sensible module stores them for a human; it does not guess.
- Odoo's built-in WhatsApp app. On Community it is simply not there. Do not expect the Discuss integration, template sync or "Send by WhatsApp" buttons from the Enterprise docs.
Setting up the Cloud API for Odoo: the steps
- Create the Meta app in the developer console and add the WhatsApp product.
- Add a phone number to the WABA. It must not be active on the WhatsApp consumer app. Complete business verification so you can message more than the five test recipients.
- Create a system user in Business Manager, assign the app and WABA, and generate a permanent token with
whatsapp_business_messagingandwhatsapp_business_managementpermissions. - Expose a webhook from Odoo over HTTPS (a valid certificate is mandatory). Set the callback URL and verify token in the Meta app, and subscribe to
messages. - Store credentials in Odoo as system parameters or in the module's settings; never in code.
- Test with the test number first; Meta allows a small number of recipients before verification.
- Submit templates (if you need outbound notifications) and wait for approval before using them.
- Decide the window policy: which keywords trigger automatic answers, when to hand over, and what happens after hours.
Limit who can send WhatsApp templates using Odoo groups.
A note on Egyptian phone numbers
Egyptian mobiles are 01X XXXX XXXX. In E.164 they become +201XXXXXXXXX. Common Odoo data problems: numbers stored with a leading 2 and no +, numbers with Arabic-Indic digits (٠١٢٣), and landlines in the mobile field. Any matching logic (finding the contact for an incoming message) must normalise both sides before comparing, otherwise the customer is treated as unknown.
Cost planning in one paragraph
Until October 1, 2026: customer-initiated conversations answered within 24 hours cost nothing; outbound templates cost per message. After October 1, 2026: every message costs something except those in a 72-hour free entry point window. Keep replies short and complete, avoid multi-message chains, and use templates only for events customers actually want (shipment, payment received). Check Meta's pricing page for current Egypt rates before budgeting.
Frequently asked questions
Does Odoo Community have a WhatsApp app?
No. Odoo's own WhatsApp app is Enterprise-only. Community users need a third-party module or a custom integration with Meta's Cloud API, or a simple click-to-chat button.
What is the WhatsApp 24-hour window?
After a customer messages you, you have 24 hours from their last message to reply with free-form messages. Outside that window you can only send Meta-approved template messages.
Are WhatsApp replies to customers free?
Inside the 24-hour window they have been free since November 1, 2024. Meta has announced that from October 1, 2026 service messages will be charged per message. Replies within a 72-hour free entry point window (from a Click-to-WhatsApp ad) remain free.
Can I use WhatsApp Web automation instead of the API?
It violates WhatsApp's terms and numbers get banned. Use the Cloud API for automation, or a click-to-chat button for manual chats.
If you'd rather not build this yourself