We use optional, privacy-safe analytics to understand which pages help visitors. Nothing optional runs until you choose. Privacy policy

Skip to content
API Integration GuideWorkflow + HTTP Request

Add managed messaging to Odoo CRM

Odoo CRM is part of the open-source Odoo suite, where server actions and automated actions run Python directly on the application server — the most direct integration surface any CRM offers.

An Odoo automated action on crm.lead or a stage change runs a few lines of Python: requests.post to the SendiMessage API with the key from ir.config_parameter or environment variables. A controller route (type='json') receives delivery and reply webhooks and posts them to the record's chatter with message_post, keeping the full conversation in Odoo's native timeline.

Connect SendiMessage to Odoo CRM using the SendiMessage REST API, CRM workflow automation, server-side functions, or webhooks. There is no native Odoo CRM marketplace application today — the methods below are what actually works, labeled honestly.

Request This SetupBook an Integration Review

What this integration enables

Lead follow-up
Message a new lead shortly after capture, while interest is warm and consent is fresh.
Appointment reminders
Remind contacts before meetings and bookings created in the CRM.
Sales notifications
Confirm quotes, proposals, and next steps as deals progress.
Customer support updates
Keep customers informed as cases and tickets move forward.
Renewal and payment reminders
Nudge customers ahead of renewals or due invoices.
Two-way conversations
Incoming replies return through webhooks and can be written back to the record timeline.

Implementation options

Odoo automated actions (server-side Python) + HTTP request
Use Odoo automated actions (server-side Python) to call POST /send-message directly when a record changes. Fastest path when your plan supports outbound HTTP calls.
Middleware integration
A small backend service sits between Odoo CRM and SendiMessage: it receives CRM events, applies your consent and formatting rules, sends the message, and writes delivery events back to the record.
Automation platform
Zapier, Make, n8n, or Power Automate can bridge Odoo CRM triggers to SendiMessage HTTP actions without custom code.
Webhook-based synchronization
SendiMessage posts outbound and receive events to your endpoint; correlate them with the stored message_handle (or ids embedded in your status_callback URL) to update the Odoo CRM timeline.

Architecture

How it fits together: Odoo CRM event, then Workflow or backend, then SendiMessage API, then Managed messaging line, then SMS or supported iMessage, then Customer, then Delivery or reply event, then Signed webhook, then Odoo CRM timeline update.
  1. Odoo CRM eventA record changes, a stage moves, or a workflow fires
  2. Workflow or backendOdoo CRM automation or your middleware prepares the request
  3. SendiMessage APIPOST /send-message — the message is validated and queued
  4. Managed messaging lineYour dedicated line sends the message
  5. SMS or supported iMessageChannel routing picks iMessage where supported, SMS otherwise
  6. CustomerThe message arrives; the customer can reply
  7. Delivery or reply eventSendiMessage records what actually happened
  8. Signed webhookYour endpoint receives outbound or receive
  9. Odoo CRM timeline updateYour handler writes the event back as activity

Example request

Workflow payload
{
"number": "{{contact.phone}}",
"content": "Hi {{contact.first_name}}, your appointment is tomorrow at 10:00 AM."
}

Template variables like {{contact.phone}} are illustrative — replace them with your platform's own merge syntax or values resolved by your middleware. Correlate delivery events by storing the returned message_handle on your own record.

Delivery events and incoming replies

Correlate delivery events with the message_handle you stored at send time (or with ids embedded in your per-message status_callback URL); replies carry the contact's number and conversation, which your middleware maps to the right Odoo CRM record. Automatic Odoo CRM synchronization is not built in — your handler (or automation platform) performs the write-back.

webhook event
// "outbound" event → your odoo_crm endpoint
// Verify the SendiMessage-Signature header (t={timestamp},v1=HMAC-SHA256 of
// "{timestamp}.{raw body}", keyed with your webhook secret), then use
// GET /v2/messages/{message_handle} for authoritative state and match it to
// your contact_id in odoo_crm.

Limitations and honest notes

  • iMessage delivery is available on supported messaging lines and destinations. Recipients without iMessage receive SMS when fallback is configured — never assume universal iMessage availability.
  • Messages are accepted asynchronously — the API returns status QUEUED and final status arrives via webhook or the message endpoints.
  • No official SDK for this ecosystem yet — the example uses plain HTTP against the REST API. Official SDKs are published for JavaScript/TypeScript (npm: sendimessage), Python (PyPI: sendimessage), PHP (Composer: sendimessage/sdk), and Go (github.com/sendimessage/sendimessage-go). Every SDK is dependency-free and covers the full public API surface.
  • A native Odoo CRM marketplace application is not available today. The integration methods on this page are API-based.
  • Send messages only to recipients who expect them. Transactional and operational messaging is the primary use case — unsolicited bulk marketing is not.

Security considerations

  • Store the SendiMessage API key in Odoo CRM's credential store, your middleware's secret manager, or your automation platform's connection vault — never in front-end scripts or record fields.
  • Verify the signature header on every webhook before writing anything back to the CRM.
  • Send only the fields the message needs (phone, first name); keep full CRM records out of message payloads and logs.

Frequently asked questions

Does SendiMessage have a native Odoo CRM application?
Not today. Odoo CRM connects through the SendiMessage REST API — via Odoo automated actions (server-side Python), middleware, or an automation platform. This page is an API integration guide, and statuses on this site only say "native" when a native app has actually shipped.
Can Odoo CRM workflows send SMS through SendiMessage?
Yes — any Odoo CRM automation that can make an outbound HTTP request (directly or via middleware) can call POST /send-message. The response confirms the message is queued; delivery status follows on your webhook.
Can Odoo CRM trigger iMessage?
Delivery uses iMessage on supported messaging lines and destinations, with SMS fallback when configured. Not every contact supports iMessage, so treat it as an upgrade, not a guarantee.
Can customer replies return to the CRM?
Yes. Incoming replies arrive as receive webhook events carrying the contact's number and conversation. Your middleware or automation platform matches that to the Odoo CRM record and creates timeline activity or a task.
Do I need middleware?
Only if Odoo automated actions (server-side Python) can't make the HTTP calls you need, or you want central consent logic and retry handling. Many teams start with workflow + HTTP or an automation platform and add middleware as volume grows.
Where should API credentials be stored?
Server-side only: the CRM's credential store, your middleware's secrets manager, or the automation platform's connection vault. Never in client-side scripts, record fields, or shared documents.
How is pricing calculated?
Per active messaging line, billed monthly, with usage according to your agreement. The team confirms per-line pricing for your countries and volume during onboarding.
Does this work on Odoo Online (SaaS)?
Odoo Online restricts arbitrary server code; use Studio-created automations where allowed, or route through an automation platform or middleware. Odoo.sh and self-hosted installations can run the Python automated action directly.

Ready to connect Odoo CRM?

Request a messaging line and a SendiMessage integration specialist will review your Odoo CRM workflow and guide the setup.