Skip to content

Odoo

Signals reads leads, opportunities, sales orders and invoices from Odoo on a schedule and sends the fields you mapped on to your ad platforms.

Odoo runs CRM and invoicing in one suite, so a won opportunity usually becomes a sales order and then an invoice. Leads and Opportunities carry the contact details and the sales outcome; Sales Orders and Invoices carry the amount.

  • A Odoo account holding the records you intend to sync, in the module you intend to read: Leads, Opportunities, Sales Orders or Invoices. The fields you intend to map must already exist.
  • Administrator access to your Odoo database, on a plan that includes external API access. You need it to create the user Signals connects as and to grant that user read access to the modules and records you map.
  • A single-select field on the module you sync holding each record’s stage, such as New, Contacted, Qualified, Won or Lost. Each value maps to a conversion event, so a record left on a stale stage reports the wrong one.

In Studio, open Sources, find the CRM category, and click the Odoo tile. This connector authenticates with credentials you add manually. Enter the following, then continue.

FieldWhere to find it
Your Odoo URLThe address you use to reach Odoo.
DatabaseThe database name for the instance, shown on the Odoo sign-in screen.
UsernameThe Odoo user you are connecting as.
PasswordSet when that user was created.

Odoo separates data by database, so the URL and the database name together decide which records are read. Confirm both before you connect, since one Odoo instance can host several databases.

Select the Integration Type based on where the data needs to be sent. The options are Offline Events, Audience, Meta CAPI CRM, Google Leads, TikTok Leads, Snapchat Leads and LinkedIn Leads. The choice decides which fields you are asked to map and which destinations the connection can feed, so settle it first. Then choose the Odoo module Signals reads from, one of Leads, Opportunities, Sales Orders or Invoices, and give the instance a name. Only modules the connection can see will appear in the list.

Map your Odoo fields onto the schema Signals expects. Each field is a dropdown of your own fields, so nothing has to be renamed in the CRM. What you are asked to map depends on the integration type.

GroupFields
ConfigurationEvent name, event time, last modified date, lead lifecycle stage.
Personal informationEmail, phone, first name, last name, city, state, country, postcode, gender, date of birth, Facebook click ID, Google click ID, OpenAI identifier, source URL.
ProductTotal value, currency, product type, name, category, ID, brand, price, quantity, transaction ID, number of items.

Click Test Connection before finishing. It checks both that the credentials still work and that the mapped fields actually contain data, so a mapping pointed at an empty field fails here rather than silently later.

One instance is configured for one module. To read another module, configure it on a new instance from the Manage existing instance table. To change an existing one, open it from the Manage existing instance table, click the edit option in the menu to the top right, update the fields and click Finish.

Only the fields you map are read. Personal identifiers are normalized and SHA-256 hashed before they are sent to any destination.

Email, phone, name and location are what destinations match on. Value, currency and product fields describe the conversion rather than the person, so they do not affect match rates.

  • If you map a platform lead ID such as the Meta Lead ID, keep that field as text. A numeric field truncates long IDs, which is the most common cause of lead conversions never matching.
  • Odoo Online, Odoo.sh and self-hosted instances all work, but a self-hosted instance has to be reachable from outside your network before the connection can be made.
  • Ensure the module holds personal information such as email address and phone number. Destinations weight these highest, so records without them match at a much lower rate.
  • Maintaining consistent formatting in Odoo helps match rates: email addresses in lowercase, phone numbers in E.164 format, and no trailing spaces.

Match rates are low. Map more identifiers and fix formatting at source. A hash only matches if both sides normalized the value the same way.