CRM

Odoo marketing attribution, read from confirmed orders

Most attribution tools treat a CRM stage as revenue. Odoo gives Attribi something better: a confirmed sales order, with a real total and a real currency, which is the same number your finance team reports. Attribi reads those orders on a schedule and uploads each one to every ad platform you have connected as a closed-won conversion. This connection runs one way only, so nothing is written back into Odoo and no Attribi fields appear on your records.

No credit card required · 5-minute setup

What Attribi does with Odoo

Confirmed sales order revenue

Imports

Attribi reads sales orders Odoo itself has moved to confirmed or done, using the order state rather than a label anyone can rename, and uploads the order total in the currency the order carries. Quotations are not revenue and are never counted.

Qualified from your CRM stages

Imports

Name the crm.lead stages that mean qualified for your team and each lead reaching one fires a qualified conversion. Odoo installs rename stages freely, so Attribi never assumes a default: leave the list unset and the qualified pass does not run at all.

No forecast is ever uploaded as revenue

Imports

Odoo carries an expected revenue figure on every CRM lead. Attribi does not read it, and a qualified conversion is sent with no value attached rather than a number nobody has been paid. Only a confirmed order puts money on a conversion.

Odoo Online, Odoo.sh, or self-hosted

Imports

Attribi connects over Odoo’s own API with a user API key rather than an OAuth app, so a self-hosted or Odoo.sh instance connects exactly like a hosted one. Nothing is installed into Odoo and no module has to be approved.

On the roadmap

Planned, not live today. Listed so you can see what this integration does not do yet, before you sign up.

Attribution fields written back into Odoo

Planned Sends

Writing the campaign, source and journey onto the Odoo record so your sales team sees them where they work, and pushing a new lead into Odoo when someone converts on your site. Neither exists today: Odoo is read-only, unlike the HubSpot, Salesforce, Zoho and Pipedrive connections.

Not yet available.

Setting up Odoo

  1. 1

    Check your Odoo plan first

    Odoo Online’s free single-app plan blocks external API access entirely, and no credentials will work on it. That is by far the most common reason a connection attempt fails, so rule it out before anything else. A paid Odoo Online plan, Odoo.sh, or a self-hosted instance all work.

  2. 2

    Create an API key and connect

    In Odoo, open your user record under Settings, Users and Companies, and create an API key from the Account Security tab. Odoo shows it once. Paste it into Attribi along with your Odoo URL, database name, and the login email of that user. Attribi validates the credentials live before saving.

  3. 3

    Grant the right reads, then name your stages

    The user needs read access to Sales Orders, CRM Leads, Contacts, and CRM Stages. Contacts is the one people miss: without it Attribi connects successfully and then matches nobody, because the buyer’s email lives on the linked contact. Then list the CRM stages that mean qualified.

Funnel stages

Stages Attribi supports for Odoo.

  • Qualified
  • Closed Won

Works with

Frequently asked questions

Does Attribi write anything into our Odoo?

No. This connection reads and nothing else. There are no Attribi custom fields on your contacts or leads, no lead is ever created in Odoo, and no record is modified. That is a genuine difference from the HubSpot, Salesforce, Zoho and Pipedrive connections, where campaign data is written onto the record for your reps to see. If in-Odoo attribution matters to you, it is on the roadmap and is not in the product today.

How does Attribi match an Odoo order back to a visitor?

By email address only. Attribi reads the contact linked to the sales order, takes the email from that contact record, and matches it against the person it already knows. Phone numbers are not used and neither is an ad click ID, because with no fields written into Odoo there is nowhere for a click ID to have been stored. That means match rates depend on your contacts carrying accurate email addresses, and installing the Attribi script is what adds click-level matching for Odoo customers.

Which Odoo records become which conversions?

A sales order that Odoo has moved to a confirmed or done state becomes a closed-won conversion carrying the order total and the order’s own currency. A CRM lead that enters one of the stages you nominated becomes a qualified conversion with no value on it. Quotations and draft orders are ignored entirely, and Odoo’s expected revenue field is never uploaded, because it is a forecast rather than money received.

What if we renamed our CRM stages?

Closed-won is unaffected, because it reads the order state rather than a stage name, so a renamed pipeline never stops revenue reporting. Qualified detection does use stage names, since that is how Odoo identifies CRM stages, so a rename there means updating the list in Attribi. Until you do, the qualified pass matches nothing rather than guessing at a replacement, which is deliberate: firing nothing is better than firing on the wrong stage.

How often does Attribi read from Odoo?

On a schedule, and you can also trigger a read from the Connections page after a big close. Attribi tracks where it left off and only asks Odoo for records modified since then. If a run cannot finish enumerating, it deliberately does not move that marker forward, so the next run re-reads the same window rather than skipping orders. Duplicate reads are safe: an order that has already been counted is never counted twice.

Updated

Connect Odoo to Attribi.

Sign up and connect it from the Connections page.

Start Free

No credit card · Free forever up to 1,000 visitors