Table of Contents
Why Connect Odoo + WhatsApp?
Odoo is a powerful ERP system that manages your sales, inventory, invoices, and operations. WhatsApp is where your customers actually are. Connecting them together creates magic: when an order is placed in Odoo, your customer instantly receives a WhatsApp confirmation. When payment is due, they get a reminder. When their shipment leaves the warehouse, they know exactly when to expect it.
Without this integration, someone must manually send messages or rely on email (which customers often ignore). The integration makes your business more professional, responsive, and customer-centric—all while saving hours of manual work.
Prerequisites: What You'll Need
Before diving into the setup, ensure you have these in place:
- Odoo Instance: Odoo 14, 15, 16, or 17 (self-hosted or Odoo Online). You need API access and preferably admin rights.
- WhatsApp Business API Access: Applied and approved through an official Business Solution Provider (BSP). You'll need your Business Account ID and API token.
- Automation Platform: One of the three methods below (n8n, Make.com, or direct API). Each has different requirements.
- Webhooks/HTTP Access: Odoo must be able to send outgoing HTTP requests. For Odoo Online, this is enabled by default. For self-hosted Odoo, ensure network policies allow outgoing requests.
Method 1: Using n8n (Free, Self-Hosted)
n8n is an open-source automation platform that's essentially free if you self-host it. It's excellent for technical teams and offers unlimited workflows.
Step 1: Install n8n
If you don't have n8n yet, install it using Docker (easiest):
Then access n8n at http://localhost:5678. Create your account and log in.
Step 2: Create a New Workflow
In n8n, click "New" to create a new workflow. Name it "Odoo to WhatsApp Order Notification" or similar. This is your automation.
Step 3: Add the Webhook Trigger
Click the "+" button and search for "Webhook". Select "Webhook" as the trigger. This creates a unique URL that Odoo will send data to when orders are created.
Copy the webhook URL (it looks like https://your-domain.com/webhook/abc123xyz). We'll use this in Odoo.
Step 4: Set Up Odoo to Send Data to the Webhook
In Odoo, go to Automation → Automated Actions. Create a new automated action:
- Name: Send Order to WhatsApp
- Model: Sales Order
- Trigger: On Creation (when a new order is created)
- Action Type: Execute Python Code
In the Python code section, add code that makes an HTTP POST request to your n8n webhook:
Step 5: Process the Data in n8n
Back in n8n, after the webhook, add a "Format" node to structure the data nicely. Then add the "WhatsApp" node (search for it in the nodes directory).
Configure the WhatsApp node:
- Authentication: Add your WhatsApp API token
- Phone Number: Select the customer_phone from Odoo data
- Message: Format something like: "Hi {{customer_name}}, your order {{order_id}} for AED {{amount}} has been confirmed. You'll receive updates soon."
Step 6: Deploy and Test
Click "Activate" in n8n to turn on the workflow. Create a test order in Odoo and verify that the customer receives a WhatsApp message. If they don't, check the execution logs in n8n to see what went wrong.
Method 2: Using Make.com (Visual, Cloud-Based)
Make.com (formerly Integromat) is more user-friendly and cloud-based, so no installation required. The downside is it's not free, but the pricing is reasonable for small to medium businesses.
Step 1: Create a Make.com Account
Sign up at make.com, create a team, and start a new scenario.
Step 2: Add Odoo Trigger
Search for "Odoo" and select it as a trigger. Choose "Watch Records" and configure it to watch for new Sales Orders. Set the polling frequency (how often Make checks Odoo) to every 5 or 10 minutes.
Step 3: Add WhatsApp Module
Add another module and search for "WhatsApp". You may need to use the HTTP module if WhatsApp doesn't have a native connector. Select "Send Message" and authenticate with your WhatsApp API token.
Step 4: Map Fields
Connect Odoo fields to WhatsApp fields. For example:
- Odoo "partner_id.mobile" → WhatsApp "phone_number"
- Odoo "amount_total" → WhatsApp message body (formatted)
Step 5: Test the Scenario
Click "Run once" to test. Make will pull the latest order from Odoo and send a WhatsApp message. If successful, turn on the scenario.
Method 3: Direct API Integration (For Developers)
If your team has Python developers, you can build a custom integration directly between Odoo and WhatsApp without a third-party platform.
Create an Odoo Module
In your Odoo installation, create a custom module that hooks into the Sales Order creation. When an order is created, it calls the WhatsApp API directly.
Common Workflows to Build
Workflow 1: New Order Confirmation
Trigger: Order created in Odoo → Action: Send WhatsApp confirmation to customer
This is the most basic workflow. Every new order immediately triggers a WhatsApp message to the customer's phone number in Odoo.
Workflow 2: Invoice Payment Reminder
Trigger: Invoice created AND payment due date is approaching → Action: Send WhatsApp reminder
Use a scheduled action in Odoo (daily or weekly) to find invoices due in the next 3 days and send payment reminders via WhatsApp.
Workflow 3: Delivery Status Update
Trigger: Delivery/Shipment marked as done → Action: Send WhatsApp notification with tracking details
When products leave the warehouse, notify the customer: "Your order is on its way! Track it here: [link]"
Workflow 4: Customer Feedback Request
Trigger: Delivery marked complete (7 days later) → Action: Send WhatsApp feedback request
Automatically ask customers for feedback a week after delivery. This is non-intrusive and timing is perfect.
Troubleshooting Common Issues
WhatsApp Messages Not Sending
Possible Causes:
- Invalid phone number: WhatsApp requires numbers in international format (+971XXXXXXXXX). Check that Odoo is storing numbers correctly.
- API token expired: WhatsApp tokens sometimes expire. Generate a new one and update your automation platform.
- Number not approved: The recipient's WhatsApp number must be registered with your WhatsApp Business Account. Unregistered numbers won't receive messages.
Odoo Not Sending Webhooks
Check:
- Is the automated action enabled in Odoo? (Go to Automation → Automated Actions)
- Is the webhook URL correct? Copy-paste it again to avoid typos.
- Is the firewall allowing outgoing HTTP requests? For self-hosted Odoo, verify network rules.
Message Template Issues
WhatsApp now requires pre-approved message templates for business messages in some regions. If you get an error about templates, go to your WhatsApp Business Manager and create an approved template for order confirmations, payment reminders, etc.
Frequently Asked Questions
Which method is cheapest?
n8n self-hosted is essentially free (you only pay for server costs). Make.com has a free tier but limited executions. If you don't want to manage servers, Make.com is worth the small cost.
Can I send rich media (images, PDFs) via WhatsApp?
Yes! All three methods support media. You can send invoice PDFs, product images, etc. Just reference the file URL in your message.
What if a customer's phone number is missing in Odoo?
Your automation should handle this gracefully. Add a condition: "Only send if phone number exists." Otherwise, the message will fail silently or cause an error.
Can I reply to customer messages automatically?
Yes, but use caution. Set up a rule like: "If customer says 'status', reply with order status." But for complex questions, route to a human agent. Automation works best for common, predictable inquiries.
How do I track whether customers read the message?
WhatsApp provides read receipts. The automation platforms have the ability to log these. Store delivery and read status in Odoo for analytics.
Need Help Setting Up Odoo + WhatsApp Integration?
Our team specializes in Odoo integrations and WhatsApp automation for UAE businesses. We can set this up for you in days, not weeks.
Book a Free Consultation