Connect every Odoo opportunity to its complete marketing journey.
One connection adds this tool to your revenue journey—joined with your website, CRM and ad activity from first click to closed-won.
Sign in to install
Integration Details
Built by
Spectacle
Category
CRM
Setup Time
15 to 20 minutes
Sync Frequency
Real-time
Authentication
OAuth 2.0 on Odoo 19 or later; API key with polling on Odoo 18
Compatible With
Odoo CRM app with the Automation rules module installed. Odoo 19 or later connects over OAuth with webhooks; Odoo 18 is supported through polling. Odoo Online and self-hosted
Resources
Overview
Spectacle connects to Odoo in 15 to 20 minutes and attributes every contact created, company created, and opportunity stage change to the marketing touchpoints that preceded it. Odoo records that an opportunity moved to Proposition. Spectacle records the paid search click, the pricing page, and the second person from the same company who arrived through LinkedIn, and reports the opportunity value against what those touchpoints cost.
At a glance
- Category: CRM
- Setup time: 15 to 20 minutes
- Authentication: OAuth 2.0 on Odoo 19 or later; API key with polling on Odoo 18
- Odoo plan: Odoo CRM app with the Automation rules module installed. Odoo 19 or later connects over OAuth with webhooks; Odoo 18 is supported through polling. Odoo Online and self-hosted
- Spectacle plan: All Spectacle plans (Essential, Scale, Enterprise); company-level attribution on Scale and Enterprise
- Direction: Odoo → Spectacle. Audience and conversion syncs go Spectacle → ad platforms. Nothing is written back into Odoo
- Objects: Contacts, companies, CRM opportunities and their pipeline stages, contact-company associations
- Sync: Real time on Odoo 19 or later (webhooks); polling on Odoo 18
- Docs: /docs/odoo
- Marketplace: Odoo Apps store
The gap in Odoo's own reporting
Odoo's marketing attribution report is the Leads Analysis dashboard grouped by 3 UTM fields: Medium, Source, and Campaign. Those fields are written onto the lead once, from the UTMs on the visit that created it, and every report you can run in CRM ‣ Reporting ‣ Leads groups on that single set of values. The visits before the form, the visits by colleagues who never filled a form, and the ad spend that paid for any of it are not in the report. A lead with empty UTM fields, which is most leads created by hand, by email, or by phone, has no source at all.
Spectacle sits underneath: a first-party tracking snippet on your site, your ad accounts connected, and Odoo change events turned into attribution events on the same timeline.
What syncs
- Contacts (res.partner, person): Contact Created event, matched to the visitor's journey by email or your User Id field
- Companies (res.partner, company): Company Created event; contacts rolled up to the company for account-level journeys (Scale and Enterprise plans)
- Opportunities (crm.lead): Opportunity Created plus one event per pipeline stage, named after your own stage
- Opportunity properties: Stage, expected value, and currency synced to the contact and the company
- Contact-company associations: Opportunity value credited to every contact's touchpoints at that company
The full event list and every configuration option live in the Odoo docs. This page summarizes; Docs is the source of truth.
What you get
- A source for every opportunity, including the ones with empty UTM fields. The journey is already on the timeline when the opportunity is created, whoever created it.
- Expected and won value across 4 attribution models. Opportunity value distributed first-touch, last-touch, linear, or U-shaped, by channel, campaign, and keyword.
- Your stage names, tracked as they are. New, Qualified, Proposition, Won, or whatever you renamed them to, each becomes an event; renames survive.
- Cost per opportunity and per won opportunity by channel. Ad spend from Google, Meta, and LinkedIn joined to Odoo outcomes.
- Odoo milestones back to Google Ads. Send Opportunity Created or Won as conversions with value so Smart Bidding optimizes toward pipeline, and build Customer Match lists from Odoo-backed segments for exclusions and retargeting.
Pairs with
Odoo + Google Ads (conversion and audience sync) · Odoo + Meta Ads · Odoo + LinkedIn Ads · Odoo + Calendly · Other CRMs: HubSpot, Salesforce, Pipedrive
- Authorise Odoo, or create an API key. On Odoo 19 or later, connecting is an OAuth authorisation and changes arrive over webhooks. On Odoo 18, click your name → My Preferences → Security → Add API Key, choose Persistent, copy the key, and Spectacle polls for changes; use a dedicated integration user. On either version, make sure the Automation rules module is installed.
- Connect in Spectacle. Settings → Integrations → Odoo. Enter your instance URL (your-company.odoo.com) and authorise, or paste the key on Odoo 18. Optionally set the User Id Field on contacts and the Company Id Field on companies for identity stitching.
- Events arrive. Contact, company, and opportunity changes reach Spectacle and are stitched to the visits already recorded on your site.
Step by step with screenshots: Connect Odoo.
- A source for every opportunity, including the ones with empty UTM fields. The journey is already on the timeline when the opportunity is created, whoever created it.
- Expected and won value across 4 attribution models. Opportunity value distributed first-touch, last-touch, linear, or U-shaped, by channel, campaign, and keyword.
- Your stage names, tracked as they are. New, Qualified, Proposition, Won, or whatever you renamed them to, each becomes an event; renames survive.
- Cost per opportunity and per won opportunity by channel. Ad spend from Google, Meta, and LinkedIn joined to Odoo outcomes.
- Odoo milestones back to Google Ads. Send Opportunity Created or Won as conversions with value so Smart Bidding optimizes toward pipeline, and build Customer Match lists from Odoo-backed segments for exclusions and retargeting.
See the integration in practice
A B2B company connected its CRM to Spectacle and measured LinkedIn at company level rather than by form fills. LinkedIn had influenced about 43% of pipeline and about half of the revenue closed over 12 months, while the CRM's own source field credited it with a handful of leads. The same company-level view works on Odoo contacts, companies, and opportunities, with the Odoo stage names on the timeline. (Anonymized.)
Connect every Odoo opportunity to its complete marketing journey.
Understand how to connect your tools, improve attribution, and build better reporting across your revenue journey.
Build
Create integrations that connect your platform with Spectacle attribution and reporting workflows.
Learn more
Get listed
Publish your integration in the Spectacle directory and help teams discover new connected workflows.
Learn more
API & Docs
Explore Spectacle APIs, setup guides, and developer documentation to build custom workflows and integrations.
Learn more
FAQ
Does Spectacle integrate with Odoo?
Yes. Spectacle connects to Odoo CRM over OAuth on Odoo 19 or later, or with a persistent API key on Odoo 18, and turns contact creation, company creation, opportunity creation, and every pipeline stage change into attribution events on the customer journey. Setup takes 15 to 20 minutes and requires the Automation rules module.
Which Odoo version do I need?
Odoo 19 or later connects over OAuth with webhooks; Odoo 18 is supported through polling. Both need the Automation rules module, on Odoo Online or self-hosted. Ask us before the trial if you run an older instance.
Does Spectacle write attribution data back into Odoo?
No. Spectacle reads from Odoo and never writes back into it, unless you set that up yourself through an automation. Attribution lives in Spectacle's reports, and audiences and conversions sync from Spectacle to Google, Meta, LinkedIn, and other ad platforms.
Why doesn't Odoo's Leads Analysis match Spectacle?
Odoo groups leads by the Medium, Source, and Campaign captured when the lead was created, one set per lead, with no cost data. Spectacle records every visit from the first anonymous click, including colleagues at the same company, applies one journey window across channels, and joins ad spend to opportunity value.
Does Spectacle track Odoo sales orders and invoices?
Yes, when the order value is set as the opportunity's deal value in Odoo. Invoices and sales orders themselves are not consumed; Spectacle tracks the opportunity with its stage, expected value, and currency. Realised revenue can also come in from Stripe or from a tracked revenue event on your side.