All posts
General8 min read

No-Code Odoo Integration with Make.com and Zapier

Connect Odoo to hundreds of third-party apps using Make.com or Zapier without writing code - trigger workflows from new Odoo records, push data to CRMs and spreadsheets, and use Odoo webhooks and XML-RPC as the integration layer.

No-Code Odoo Integration with Make.com and Zapier#

Why Use Make.com or Zapier with Odoo?#

Odoo does not have native connectors for every tool your business uses. Make.com and Zapier let you bridge Odoo with apps like Slack, Google Sheets, HubSpot, Mailchimp, Typeform, and hundreds more - without custom development.

When to use no-code integration:

  • You need to sync data between Odoo and a tool that has no native Odoo module.
  • You want to automate notifications (e.g., Slack message when a sale order is confirmed).
  • You need a quick, low-risk connection before committing to a full integration.

Option A: Odoo Webhooks → Make.com / Zapier#

Step 1: Create a webhook in Make.com or Zapier

In Make.com:

  1. Create a new scenario.
  2. Add a Webhooks → Custom webhook trigger.
  3. Copy the generated webhook URL.

In Zapier:

  1. Create a new Zap.
  2. Choose Webhooks by Zapier → Catch Hook as the trigger.
  3. Copy the webhook URL.

Step 2: Configure the Odoo webhook

Settings → Technical → Automation → Automated Actions → New:

Name: Notify Make.com on Sale Order Confirm
Model: Sale Order (sale.order)
Trigger: When a Record is Updated
Before Update Filter: Status = Draft
Filter: Status = Sale Order
Action: Execute Python Code

Code:
import requests
webhook_url = env['ir.config_parameter'].sudo().get_param('make_webhook.sale_order_url')
record = records[0]
requests.post(webhook_url, json={
    'id': record.id,
    'name': record.name,
    'customer': record.partner_id.name,
    'amount': record.amount_total,
    'currency': record.currency_id.name,
    'date': str(record.date_order),
}, timeout=10)

Step 3: Map fields in Make.com

After Odoo sends the first test webhook, Make.com shows the JSON structure. Map fields to actions like:

  • Create a Google Sheets row
  • Post a Slack message
  • Create a HubSpot deal

Option B: Odoo XML-RPC via Make.com HTTP Module#

Make.com can call Odoo's XML-RPC API directly:

In Make.com: Add HTTP → Make a Request module:

URL: https://mycompany.odoo.com/xmlrpc/2/object
Method: POST
Headers: Content-Type: application/xml
Body (XML):
<?xml version="1.0"?>
<methodCall>
  <methodName>execute_kw</methodName>
  <params>
    <param><value><string>mydb</string></value></param>
    <param><value><int>{{user_id}}</int></value></param>
    <param><value><string>{{api_key}}</string></value></param>
    <param><value><string>res.partner</string></value></param>
    <param><value><string>search_read</string></value></param>
    <param><value><array><data>
      <value><array><data>
        <value><array><data>
          <value><string>email</string></value>
          <value><string>=</string></value>
          <value><string>{{email}}</string></value>
        </data></array></value>
      </data></array></value>
    </data></array></value>
    <param><value><struct>
      <member><name>fields</name><value><array><data>
        <value><string>id</string></value>
        <value><string>name</string></value>
      </data></array></value></member>
      <member><name>limit</name><value><int>1</int></value></member>
    </struct></value></param>
  </params>
</methodCall>

Simpler alternative: Use JSON-RPC:

json
URL: https://mycompany.odoo.com/web/dataset/call_kw
Method: POST
Headers: Content-Type: application/json
Body:
{
  "jsonrpc": "2.0",
  "method": "call",
  "params": {
    "model": "res.partner",
    "method": "search_read",
    "args": [[["email", "=", "{{email}}"]]],
    "kwargs": {"fields": ["id", "name"], "limit": 1}
  }
}

Note: JSON-RPC in Odoo requires authentication via session cookie - use the API key approach via XML-RPC for automation.

Option C: Zapier Odoo App (Third-Party)#

Search the Zapier app directory for "Odoo." Third-party Odoo connectors are available that provide:

  • Triggers: New Customer, New Sale Order, New Invoice
  • Actions: Create Record, Update Record, Search Record

These connectors use Odoo's external API under the hood. They require your Odoo URL, database name, username, and an API key.

Creating an Odoo API key:

Settings → Users → [Your User] → Account Security → API Keys → New Key

Common Use Case: Typeform → Odoo Lead#

  1. Typeform → Make.com trigger (Watch Responses).
  2. Odoo module (Create a record in crm.lead) or HTTP JSON-RPC call.
  3. Map Typeform fields to CRM lead fields (name, email, description).

Common Use Case: Odoo Invoice → QuickBooks#

  1. Odoo webhook on account.move (posted invoices).
  2. Make.com HTTP module → receive webhook data.
  3. QuickBooks module → create invoice in QuickBooks with matching data.

Security Considerations#

  • Use Odoo API keys (not passwords) for integration authentication.
  • Restrict the API user to the minimum required access rights.
  • Validate webhook payloads with a shared secret token.
  • Audit webhook logs in Make.com / Zapier to ensure no PII leakage.

Common Mistakes#

  • Using admin credentials in Make.com - create a dedicated integration user with only the required model access
  • No error handling in Make.com scenarios - add an error handler module to catch API failures and notify the team
  • Webhook not updating when record changes - Odoo automated actions only trigger on model events; make sure the trigger condition matches the correct state change
  • Rate limits - Make.com free tier limits scenario executions; heavy integrations may need a paid plan
  • Synchronization loops - if Odoo writes to Make.com and Make.com writes back to Odoo, you can create an infinite loop; use a flag field to prevent re-triggering

Try ERPeek on your own Odoo module - ask questions, scaffold tests, and explore your codebase in plain language.

Get started free