Odoo integration
Odoo attribution, plug and play, from first touch to won opportunity
Your Leads and Opportunities carry the full journey, and the opportunities you win go back to Meta, Google and LinkedIn.
- Live in 21 minutes
- 95%+ accuracy, first-party
- No developer required
Rated by the teams who connected their stack
How the data moves
- Touchpoints and spend flowing in
- Conversions and revenue going back
- Organic search
- Organic social
- AI search
AI Attribution Engine
LeadJourneyServer-side tracking, every channel in one journey- Server-side tracking of every visit
- Multi-touch attribution per lead
- Won deals sent back to the ad platforms
- Leads
- Opportunities
- Sales Orders
The loop closes in the ad account. Every opportunity Odoo marks as won goes back to the platform that created it, so bidding optimises on revenue instead of form fills.
Trusted by 100+ lead generation businesses, agencies and freelancers
Traffic channels
Connect your channels to Odoo
Every ad platform syncs its spend, campaigns and click IDs into the same journey Odoo records, so pipeline, won opportunities and confirmed orders are measured in one place.
Paid search
Connect Google Ads to Odoo
Every gclid is captured server-side and followed from the first ad click to the won opportunity, with spend pulled in for live ROAS.
View integrationSocial ads
Connect Meta Ads to Odoo
Facebook and Instagram campaigns are tracked past the pixel's limits, and won opportunities go back through the Conversions API with the revenue attached.
View integrationSocial ads
Connect LinkedIn Ads to Odoo
Paid and organic LinkedIn touches land on the lead, so B2B campaigns are judged on the opportunities they start rather than on form fills.
View integrationPaid search
Connect Microsoft Ads to Odoo
Clicks from Bing, Edge and Copilot are matched on msclkid and attributed to the Odoo revenue they produce.
View integration
The gap
Odoo knows the order was confirmed. It does not know which ad started it.
Pipeline analysis reports on the Source, Medium and Campaign stored on the opportunity. Getting the click, the campaign and the spend in, and the won opportunity back to the platform, is the part nobody ships for you.
Odoo attribution on its own
Accurate about the pipeline and the order, blind to how the lead arrived
- Source, Medium and Campaign on a lead come from the UTM cookies an Odoo website sets, or from a rep picking them by hand. A form on any other site leaves them empty unless an integration fills them.
- Only one source is kept per lead: the last visit that carried UTM parameters. An untagged click, an organic session or an AI search visit before or after it leaves no trace.
- Click IDs have no field on a lead or an opportunity. The gclid or fbclid is gone by the time the record exists, so nothing can be matched back to the platform later.
- No ad spend enters Odoo. Pipeline analysis groups expected and won revenue by source and campaign, but there is no cost to divide it by, so ROAS and cost per won opportunity are not on the report.
- Organic search, referral and AI search visits never reach Odoo. The first it hears of a person is when a form, a rep or an import creates the lead.
- Won revenue stays in Odoo. Nothing tells Meta or Google which of their clicks became a confirmed sales order, so bidding keeps optimising on form fills.
Odoo with LeadJourney
One journey per lead, joined to spend and to the confirmed order
- Every visit is tracked server-side as it happens, before a lead exists in Odoo, at 95%+ accuracy.
- The anonymous first click is stitched to the lead at form submit, on an Odoo website or any other, and source, campaign and ad land on the lead and the opportunity automatically.
- UTM parameters and click IDs are captured at click time and written onto the record, so every touchpoint keeps its place rather than only the last tagged one.
- Spend is pulled from your ad accounts automatically, so ROAS and cost per won opportunity are live per sales team, stage and campaign.
- Organic, direct, referral and AI search are tracked as first class channels next to paid, and the opportunity shows which one started it.
- Every opportunity Odoo marks won goes back to the platform that produced the click as an offline conversion, with the revenue attached.
Every touchpoint
The whole journey into Odoo, and the closed deal back to the ads
Marketing sees every touch before and after Odoo, sales sees the source on the record it already opens, and when the deal is won the amount goes back to the platform.
See every journey in LeadJourney
The dashboard marketing runs on
- Every touchpoint of every lead in one timeline, from the first anonymous click to the deal Odoo marks won.
- First touch, last touch and every model in between, so a LinkedIn first click and a Google brand-search close are one journey, not two leads.
- Filter any campaign, ad or landing page to the leads it produced and the pipeline stage each one reached.
- The same journey written onto the Lead and the Opportunity in Odoo, so your team sees where a lead came from before the first call.
Send it back to the ad platforms
Where the bidding learns from revenue
- A deal Odoo marks won becomes a conversion on Meta, Google Ads, LinkedIn and Microsoft, matched on the click ID captured at the first visit.
- The expected revenue travels with the event, so value based bidding optimises on revenue rather than on form fills.
- You choose which stages go back: qualified lead, opportunity, won, or all three.
- Sent server to server, so there is nothing for an ad blocker or a declined cookie banner to remove.
How it works
Odoo data in, attributed revenue back out
Both directions run on their own once connected. The first is what makes attribution across every channel possible at all. The second puts the answer on the opportunity your team already works in.
1 Pull your pipeline into LeadJourney
Your Odoo data meets the marketing data it was always missing.

LeadJourney reads your Leads, Opportunities and Sales Orders, with stage, expected revenue, sales team and the confirmed order total, as each record changes.
Ad clicks, spend, sessions, forms and click IDs are tracked server-side across paid, organic and AI search.
LeadJourney joins the two into one journey per lead, from the first anonymous click through to the order Odoo confirmed.
Influenced pipeline, attributed revenue, ROAS and cost per won opportunity, per channel, campaign and ad.
2 Write the Odoo attribution onto every lead and opportunity
So nobody opens a second tool to answer where an opportunity came from.
LeadJourney writes the finished attribution onto the Odoo record, only into the fields you mapped.

First touch, last touch, campaign, ad and click ID land as fields on the lead and the opportunity, next to Odoo's own Source, Medium and Campaign.
Pipeline analysis, filters and automated actions pick them up like any other field: group won revenue by channel, or route paid leads to the right sales team.
Sales sees where the lead came from on the opportunity they already work in, and marketing sees the order value against the ad.
The return path
Won Odoo opportunities, back in the ad account that earned them
A form fill is not a result. Once Odoo marks an opportunity won, or confirms the order behind it, the amount goes back to the platform that produced the click.
MetaConversions API
Opportunity created, stage reached and opportunity won, with value and currency
Google AdsOffline conversion import
Conversions matched on gclid, with the revenue for value based bidding
LinkedIn AdsConversions API
Stage changes and won revenue matched on li_fat_id
Microsoft AdsOffline conversions
Conversions matched on msclkid, with the revenue
TikTok AdsEvents API
Server-side lead and revenue events
You choose what counts as a conversion
Map any Odoo stage, or the confirmed sales order, to any platform event. Qualified, Proposition, Won, or the order itself.
Value based bidding gets the real order value
The expected revenue travels with the stage event and the order total with the confirmed order, so tROAS strategies optimise on real numbers instead of a flat lead value.
Sent server to server
No pixel to fire, nothing for an ad blocker or a declined cookie banner to remove.
Reporting
The questions Odoo's Pipeline analysis cannot answer yet
Every one of these is a report in LeadJourney rather than a custom field project. Odoo stays the source of truth for the opportunity and the order, and LeadJourney supplies the source that produced them.
Which campaign produced the opportunities we won last quarter, not just the leads?
What did a won opportunity actually cost us in ad spend, per channel?
Which channel starts our biggest orders, even when a different one closes them?
How much won revenue came from ChatGPT, Perplexity and Gemini last month?
Which landing page produces the leads that make it past Proposition?
Which campaigns buy leads that never become an opportunity?
LeadJourney and Odoo CRM reporting
Where Odoo CRM reporting ends and LeadJourney starts
Odoo's Pipeline analysis reports revenue by team, stage, salesperson and any field you fill, including Source and Campaign. It reports on what is in Odoo.
| Capability | With LeadJourney | |
|---|---|---|
| Where Odoo attribution gets its source | With LeadJourneyTracked server-side, every session and every channel, and written onto the lead and the opportunity automatically. | |
| The anonymous first click | With LeadJourneyCaptured server-side, then stitched to the lead when the form is submitted. | |
| Ad spend | With LeadJourneyPulled automatically from Meta, Google, LinkedIn and Microsoft Ads. | |
| ROAS and cost per won opportunity | With LeadJourneyLive per channel, campaign, ad set and creative. | |
| Attribution models | With LeadJourneyFirst click, last click, linear and position based, switchable without re-tracking anything. | |
| UTM parameters and click IDs | With LeadJourneyCaptured at click time, server-side, and written onto the record whatever site the form is on. | |
| Organic, direct, referral and AI search | With LeadJourneyFirst class channels, including ChatGPT, Perplexity, Claude and Gemini. | |
| First-party tracking and consent | With LeadJourneyServer-side and first-party by design. 95%+ accuracy, processed in the EU. | |
| Conversions back to the ad platforms | With LeadJourneyBuilt in per platform, with the revenue attached and matched on the click ID. | |
| What it is for | With LeadJourneyMeasuring where opportunities and revenue come from, then feeding that back into how you buy. |
It is not either or
Keep Odoo as the system of record and keep Pipeline analysis as the report your team opens on Monday. LeadJourney fills the source fields with measured data, adds the spend, and hands the won opportunities to the platforms where the budget is spent.
MCP server
Chat with your Odoo attribution data
The same journeys, spend and won revenue are also served over MCP. Ask in Claude or ChatGPT, and the answer comes from your own numbers.
LeadJourney MCP connected, try any tab
Which campaigns produced our closed revenue last month?
Based on your LeadJourney data, 3 campaigns produced 148,200 EUR of closed revenue last month:
- Google Ads, Brand
- 38 leads, 9 closed deals, 61,400 EUR. Shortest path to signature.
- LinkedIn, Retargeting
- 21 leads, 6 closed deals, 48,900 EUR. Seven touchpoints on average.
- Meta, Lookalike DACH
- 54 leads, 5 closed deals, 37,900 EUR. Cheapest qualified lead.
Want this as a weekly summary in Slack?
Ask anything about your lead journeys
Where did our three biggest deals this quarter come from?
Your 3 largest deals this quarter all started somewhere the last click never showed you:
- 42,000 EUR
- First touch LinkedIn Ads, closed 63 days later after a webinar signup.
- 28,500 EUR
- First touch Google organic, paid click on day 11, demo on day 19.
- 21,800 EUR
- First touch a Meta video view, form filled from email six weeks on.
Want the full touchpoint list for any of them?
Ask anything about your closed deals
Which landing pages turn LinkedIn traffic into qualified leads?
3 pages take your LinkedIn traffic, and the qualified rate between them runs from 4% to 18%:
- /demo/attribution
- 18% qualified from 214 visits. Highest intent page on the site.
- /guide/server-side
- 9% qualified from 612 visits. Most journeys stall after the download.
- /pricing
- 4% qualified from 488 visits. Second most traffic, lowest intent.
Want the same breakdown for Google Ads traffic?
Ask anything about your landing pages
What did each channel cost per qualified lead last week?
3 channels spent budget last week. Cost per qualified lead ran from 41 EUR to 187 EUR:
- LinkedIn Ads
- 41 EUR per qualified lead. 2,300 EUR spent, 56 qualified.
- Google Ads
- 88 EUR per qualified lead. 4,400 EUR spent, 50 qualified.
- Meta Ads
- 187 EUR per qualified lead. 3,740 EUR spent, 20 qualified.
Want an alert the moment a channel passes 120 EUR?
Ask anything about your cost per lead
What do the journeys that close have in common?
3 signals show up in most of your closed deals and in almost none of the lost ones:
- Pricing page, 2+ visits
- In 71% of closed deals. In 12% of the ones that never closed.
- Demo within 14 days
- In 64% of closed deals. Median 9 days from the first click.
- Second contact
- In 58% of closed deals. A colleague of the lead arrives on site.
Want these three scored onto every lead in your CRM?
Ask anything about your lead journeys
Setup
Connected to Odoo in about 21 minutes
No developer, no data warehouse and no implementation partner.
- 1About 5 minutes
Add a single line of code to your website
Paste the LeadJourney script into your site or your GTM container, on an Odoo website or any other. It starts recording sessions, click IDs and form fills immediately.
- 2About 10 minutes
Connect Odoo, then your ad accounts
Connect your Odoo database with its URL and an API key, pick the sales teams and fields in scope, then link Meta, Google, LinkedIn and Microsoft Ads. Spend and campaigns are imported for you, historic data included.
- 3Same day
Map stages to conversion events
Choose which stages in each pipeline count as a qualified lead and which count as revenue, or let the confirmed sales order count instead. From then on every won opportunity flows back to the platform that created it, with the revenue attached.
Original reviews
What our customers wrote, word for word
4.9 out of 5 across 11 public reviews. Quoted as they were left, shortened only by dropping whole sentences.
- 5 out of 5 starsGoogle
“Before LeadJourney, we had no reliable tracking concept for our five-figure ad spend. We were manually building spreadsheet and CRM reports, inaccurate and time-consuming. Within two days, everything was set up. For the first time, I know exactly what I pay per lead and which campaigns actually bring in the best-qualified prospects.”
Florian BuckCEO, Klickkraft GmbH “With LeadJourney we are able to track all our leads and connect them with sales and attribution data to make better decisions. In the first month of using it we scaled from 0 to 100k revenue from paid ads only.”
GetreachBacklinks Marketplace (SaaS)
- 5 out of 5 starsG2
“LeadJourney finally fixed my Marketing Analytics. It goes way beyond basic Ad Tracking Software. The Customer Journey Report saves hours of digging, and capturing everything from Offline Conversions to AI Search Tracking makes it the Best B2B Attribution Platform available.”
Sascha LenzMarketing Manager
- 5 out of 5 starsTrustpilot
“Connected LeadJourney for 2 clients, setup took literally 20 minutes each. The data became more accurate, the reports actually make sense. Now clients look at the dashboard and the 'why don't the numbers match?' questions are gone.”
Alexander SamarPerformance Marketing Agency - 5 out of 5 starsGoogle
“With LeadJourney, we have finally found a tool that provides us with the data we need to scale our performance marketing campaigns. The most important KPI is no longer lead price but cost per qualified lead.”
Steffen SiesingCEO, Bilanzmanufaktur GmbH
- 5 out of 5 starsG2
“The ability to track both online and offline conversions in one unified dashboard has given us insights we never had before. Our ROI has improved dramatically since we started integrating LeadJourney with our CRM. We're finally able to see the full customer journey, and it's been a game changer for our strategy.”
Andre WitzelFounder, Trading.de - 5 out of 5 starsTrustpilot
“The ability to seamlessly integrate data from multiple channels and see real-time insights has significantly improved our campaign results. We now focus on metrics that truly matter, like ROI and qualified leads.”
Nikita YatsunCEO, RLV Media GmbH
Read the reviews where they were left
FAQ
What Odoo administrators ask before connecting
If yours is not here, our team answers in the chat within a few minutes.
How is this different from Odoo's Pipeline analysis?
Pipeline analysis reports on the values in your fields, so an opportunity's source is whatever the UTM cookie held or a rep picked when the lead was created. LeadJourney fills that in from measurement: it tracks every visit server-side, joins the click to the lead at form submit, adds spend from every ad account, and writes source, campaign, ad and click ID onto the lead and the opportunity. Pipeline analysis then groups won revenue by a source that was measured rather than remembered.
Does Odoo attribution still depend on the UTM cookie of an Odoo website form?
Not any more. The source, campaign and ad are written onto the record automatically the moment the lead exists, and they update as the journey continues, so the organic visit before the tagged click and the AI search visit after it both keep their place. It works the same when your website is not built on Odoo: the script tracks the visit on WordPress, Webflow or anything else, and the lead is stitched to its journey when it appears in Odoo.
Which fields does LeadJourney write into Odoo?
On the lead: first and last touch channel, source and campaign, the ad, ad set and creative, every UTM parameter, the click ID from each platform, the landing page and referrer, and a link to the full journey. On the opportunity: the attributed channel and campaign, the credit each touchpoint earned under your active model, and the ad spend attributed to the opportunity. You choose which of those are in scope before anything is written.
Will it overwrite Source, Medium and Campaign on my existing leads?
No. Nothing is written to a field you have not mapped, and the direction of every mapping is yours to set. By default attribution goes to dedicated LeadJourney custom fields and Odoo's own Source, Medium and Campaign stay untouched, so historic reporting stays comparable. If you would rather have those three filled from measurement, map them and they are.
Can I send won opportunities and confirmed orders back to Meta and Google?
Yes, and it is the point of the integration. Won opportunities are sent to Meta through the Conversions API, to Google Ads as an offline conversion import matched on gclid, to LinkedIn through the Conversions API and to Microsoft Ads matched on msclkid, with the revenue attached so value based bidding has a real number to optimise against. If the order is the number you trust, map the confirmed sales order instead of the stage and the order total travels with the event. Every record event reaches LeadJourney as it happens rather than in a nightly batch, and Transparent Logs show each conversion that was sent and when.
Does it work with Odoo Online, Odoo.sh and self-hosted Odoo?
Yes. The connection is made through Odoo's external API with your database URL and an API key, so it works wherever your database runs as long as that API is reachable. Nothing is installed in your database and no module has to be maintained through upgrades.
Does it work with several sales teams, pipelines and companies?
Yes. The sync is mapped per record and per field, so it works with every sales team and its own stages, with custom fields on leads and opportunities, and with several companies and currencies in one database. You decide per sales team which stages count as conversions.
An order is confirmed months after the first click. Is it still attributed?
Yes. The journey in LeadJourney has no attribution window, so the opportunity is credited to the campaign and ad that started it however long the sales cycle takes, and the confirmed order lands on the same journey. The ad platforms apply their own windows to the events they receive, so a late order mainly improves their optimisation; the report that matches revenue to the ad lives in LeadJourney and on the Odoo record.
Do I need a developer or an Odoo administrator?
No developer. Connecting Odoo is a database URL, an API key and a field mapping screen, and most accounts are live in about 21 minutes. An administrator is useful for creating the API key and deciding which fields to expose, and our team will do the mapping with you on a call if you prefer.
Is the Odoo sync GDPR compliant?
Yes. Data is processed and stored in the EU, we sign a data processing agreement, and tracking runs first-party and server-side so it respects consent decisions rather than working around them. Financial, legal and other regulated industries are a core part of our customer base.
What does it cost?
The Odoo integration is part of the platform rather than a paid add on. Plans are priced on tracked events instead of seats, so your whole team and your agency can share one workspace, and every plan starts with a 14 day free trial without a credit card.
95%+ accuracy, in and out of Odoo
See which ads produce revenue in Odoo, with LeadJourney
Connect Odoo and watch your own won opportunities line up against the campaigns that created them, stage by stage.


