ErpSimple Webhooks
Push invoice, delivery, and sale order changes to your ERP in real time
One-click install for Odoo 19 on Odoo.sh or on-premise. No dashboard hacks, no manual automation setup.
Real-time events
Fires when payment_state, picking state,
or sale order state changes. Works from UI, API, and
background jobs.
Authenticated HTTPS
Every POST carries your shared secret in the
X-Odoo-Secret header. 10-second timeout so your
backend can enqueue work and return quickly.
Ready on install
Ships three Automation Rules and a shared HTTP client. Set two system parameters and you are live.
How it works
Odoo detects a tracked field change, builds a compact JSON payload
with an idempotent event_key, and POSTs to your
configured backend URL.
Events covered
| Business event | Odoo model | Trigger field | Filter |
|---|---|---|---|
| Invoice payment status | account.move |
payment_state |
Posted customer invoices |
| Delivery status | stock.picking |
state |
Outgoing transfers only |
| Sale order status | sale.order |
state |
All sales orders |
Payload sent per event
- Remote Odoo record id
- Status field value
event_keyfor idempotent processingoccurred_attimestamppaid_amounton invoice events
Webhooks are skipped (logged only) until both system parameters are set. Odoo writes are never blocked by webhook failures.
Installed automatically
- Model
erpsimple.webhook.client - Automation rule: payment state to ERP
- Automation rule: picking state to ERP
- Automation rule: sale order state to ERP
- Empty system parameters (you fill in values)
Configuration
Open Settings → Technical → Parameters → System Parameters and set:
| Key | Value |
|---|---|
erpsimple.base_url |
Public HTTPS URL of your ErpSimple backend (no trailing slash) |
erpsimple.webhook_secret |
Shared secret matching your backend odoo.webhook_secret |
Requests are sent to
{base_url}/manageapi/integrations/odoo/import/{topic}
with topics payment-status, delivery-status,
and sale-order-status.
Install on Odoo.sh
- Deploy this module to your Odoo.sh project (Git repo or Deploy on Odoo.sh from this store page).
- Wait for the build to finish, then open your database.
- Enable developer mode and run Apps → Update Apps List.
- Clear the Apps filter and search ErpSimple Webhooks.
- Install, set the two system parameters, and confirm three active automation rules.
Odoo Online does not support custom Python modules. This app targets Odoo.sh and on-premise only.
Why this module?
| Approach | Works on Odoo.sh? | Notes |
|---|---|---|
| This module | Yes | Python in addon code, 10s timeout, custom JSON and auth header |
| Dashboard Execute Code + import | No | IMPORT_NAME blocked in server-action sandbox |
| Send Webhook Notification | Partial | 1s timeout, no custom headers, fixed payload shape |
Data privacy
When configured, Odoo sends HTTP POST requests to the URL you specify. Payloads include Odoo record identifiers, status values, timestamps, and (for invoices) paid amounts. No data is transmitted until you set both parameters. You control the destination server and shared secret.
Requires an ErpSimple (or compatible) backend with the Odoo integration module enabled to receive and process events.
Dependencies
- Automation Rules (
base_automation) - Invoicing (
account) - Sales and Inventory (
sale_stock)
Support
Free module under LGPL-3. Questions or issues: alkhayal.devs@gmail.com
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Invoicing (account)
• Discuss (mail) • Inventory (stock) |
| Lines of code | 133 |
| Technical Name |
erpsimple_reverse_webhook |
| License | LGPL-3 |
| Website | https://github.com/al5ayal/odoo_dev |
Please log in to comment on this module