Integration Recipe

Odoo WhatsApp integration, without the Business API

Via REST API + webhooks; Odoo automations or middlewareLast verified August 2026

Odoo ships its own WhatsApp connector, but it rides the Business API: dedicated number, template approvals, per-message Meta fees. If your business already lives on a normal WhatsApp number, there is a second lane: Spun connects to that number by QR code, and its REST API and outgoing webhooks connect to Odoo the way Odoo likes to talk, over HTTP.

Odoo's automation rules and server actions can call external endpoints directly (and Odoo 17 and later has first-class webhooks), so for many flows you do not even need middleware; Zapier, Make or n8n remain the low-code option.

1. Order, invoice and delivery updates on WhatsApp

Goal: an Odoo event, order confirmed, invoice posted, delivery scheduled, becomes a WhatsApp message from your real number.

  1. 1

    Create a Spun API key

    In Spun: Settings, then Webhooks, then Manage API Keys, then New Key, scoped to send messages. Store the wap_ key in Odoo's system parameters or your middleware credentials, never hardcoded in an action.

  2. 2

    Fire on the Odoo event

    Use an automation rule on the model you care about (sale.order state change, account.move posted) with a server action or webhook that performs the HTTP call, or route the same trigger through Zapier/Make/n8n if you prefer no code in Odoo.

  3. 3

    Call send-message

    POST /api/integrations/send-message with the customer's number from the record and your message text. If the WhatsApp channel is briefly offline, the message queues and sends on reconnect.

The HTTP call from an Odoo automation
POST https://api.spun.com/api/integrations/send-message
Authorization: Bearer wap_YOUR_KEY
Content-Type: application/json

{
  "to": "9715512345678",
  "text": "Your order S00042 is confirmed. We'll message you here when it ships."
}

Run check-phone (up to 20 numbers per call) on imported customer lists first, so automations never fire at numbers without WhatsApp.

2. WhatsApp leads into Odoo CRM

  1. 1

    Subscribe to Spun events

    Settings, then Webhooks, then Add Webhook, pointed at your middleware (or an Odoo 17+ inbound webhook that a server action processes). Select label-assigned, contact created, or incoming message.

  2. 2

    Gate on a label

    Let agents mark real prospects with a "New Lead" label in Spun; only those events create crm.lead records, keeping the pipeline clean.

  3. 3

    Create the lead

    Map phone, name and the message text into the new lead. Add the WhatsApp chat id into a custom field so future automation can reference the conversation.

What to know before you build

  • This is not an Odoo app-store module: authentication is a static API key in an HTTP call, and Spun webhook subscriptions are created in Spun's Settings UI.
  • Versus Odoo's own connector: that one is official and template-driven with Meta fees; this one is your existing number, no templates, no per-message costs, and full WhatsApp groups. Pick by which constraint hurts more.
  • Rate limit: 60 API requests per minute per key; batch phone checks up to 20 per call.

Related: WhatsApp + Zapier & Make (payload shapes and the full API) · WhatsApp + Google Sheets (native logging)

Frequently asked questions

Does Odoo have a native WhatsApp integration?

Yes, an official connector built on the WhatsApp Business API, with template approvals and per-message Meta fees. This recipe is the other lane: your existing number via Spun, connected to Odoo over HTTP with no templates or message fees.

Can Odoo send WhatsApp messages without the Business API?

Yes: an Odoo automation rule or server action (or Zapier/Make/n8n in between) calls Spun's send-message endpoint, and the message goes out from the WhatsApp number you already use.

Can WhatsApp conversations create Odoo leads?

Yes: Spun's outgoing webhooks fire on incoming messages, new contacts or label assignments, and your middleware or an Odoo inbound webhook turns them into crm.lead records. Label-gating keeps junk out of the pipeline.

Which Odoo versions does this work with?

Any version that can make an outbound HTTP call from an automation (server actions have done this for years; Odoo 17+ adds native webhooks), and any version at all if you bridge through Zapier, Make or n8n.

The WhatsApp side, handled

Spun runs your team's WhatsApp on the number you already have: shared inbox, AI replies, broadcasts, and the API this recipe uses. Flat pricing from $49/month, free trial.

Start Free Trial

See all integrations

More integration recipes

Google Sheets · HubSpot CRM · Zapier & Make · n8n · Salesforce · Zendesk · Slack · GoHighLevel