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.
What this integration enables
Implementation options
Architecture
- Odoo CRM eventA record changes, a stage moves, or a workflow fires
- Workflow or backendOdoo CRM automation or your middleware prepares the request
- SendiMessage APIPOST /send-message — the message is validated and queued
- Managed messaging lineYour dedicated line sends the message
- SMS or supported iMessageChannel routing picks iMessage where supported, SMS otherwise
- CustomerThe message arrives; the customer can reply
- Delivery or reply eventSendiMessage records what actually happened
- Signed webhookYour endpoint receives outbound or receive
- Odoo CRM timeline updateYour handler writes the event back as activity
Example request
{"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.
// "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?
Can Odoo CRM workflows send SMS through SendiMessage?
Can Odoo CRM trigger iMessage?
Can customer replies return to the CRM?
Do I need middleware?
Where should API credentials be stored?
How is pricing calculated?
Does this work on Odoo Online (SaaS)?
Ready to connect Odoo CRM?
Request a messaging line and a SendiMessage integration specialist will review your Odoo CRM workflow and guide the setup.