Conversion tracking for Odoo Appointments
Odoo Appointments publishes bookable appointment types on your Odoo Website, either against a person (a sales demo, an interview) or a resource such as a room or a table. The advantage nobody uses is that the booking, the CRM opportunity and the eventual invoice all live in the same database. The weakness is that Odoo documents no booking event for ad platforms, so what fires on the website side has to be checked on your own instance before anything is built.
Free30 minutesNo obligation
Odoo Appointments · what breaks
What goes wrong on Odoo Appointments
- 01
No documented booking event
Website tracking usually stops at the page view, so ads learn nothing from bookings.
- 02
Manual confirmation hides the real outcome
A request awaiting approval and a confirmed slot look the same to a pixel.
- 03
User and resource bookings blended
A demo with a salesperson and a meeting-room rental are different businesses.
- 04
Revenue sits in Accounting, not on the booking
The invoice that proves the ad paid off is two models away from the appointment.
Odoo Appointments · the fix
What changes — Odoo Appointments
Confirmed bookings as the conversion
Requests that are declined or never confirmed stay out.
Appointment type carried on every event
So demo, consultation and resource bookings are optimized separately.
Won opportunities and invoices sent back
From Odoo's own records, through the server container.
Odoo Appointments · architecture
What Odoo Appointments actually lets you do
Odoo's documentation covers the booking setup well and says nothing about ad tracking, so half of this list is what we test first.
- 1
User- or resource-based appointment types
Documented. Each type has its own duration, schedule and assignment method, which is the natural value split.
- 2
Opportunities created from bookings
Documented, with the CRM app installed: each booking can create an opportunity assigned to the responsible user.
- 3
Custom questions and a confirmation message
Documented. Check whether a question can be prefilled or hidden to carry a click identifier.
- 4
Check whether the confirmation step has its own URL
If it does, it is a clean browser trigger; if not, the event has to come from the server side.
- 5
Check whether UTM or source data reaches the opportunity
Not covered in the appointments documentation, so confirm on a real booking before reporting by campaign.
Odoo Appointments · diagnose
Where Odoo Appointments tracking breaks, in diagnostic order
Odoo is one database, so most failures are about which record nobody is reading.
- 01
Book a test appointment and look for any ad event
On many instances nothing fires beyond the page view.
- 02
Check whether the booking carries the campaign source
Open the resulting opportunity and look for source, medium and campaign.
- 03
Separate confirmed from pending bookings
With manual confirmation on, unconfirmed requests inflate the count.
- 04
Split user-based from resource-based types
A blended conversion hides which one the ads are actually selling.
- 05
Trace one booking to its invoice
If the link breaks between opportunity and sale, revenue cannot be attributed.
Odoo Appointments · prove
The QA evidence — Odoo Appointments
Run on your own Odoo instance with a live appointment type, not on a demo database.
Source of truth
Odoo's calendar events from Appointments, linked to CRM opportunities and posted invoices
- A real booking on the published Odoo page, traced to its calendar event and opportunity.
- The click identifier or campaign source confirmed on that record.
- A manually confirmed booking and a declined one confirmed to behave differently.
- A cancellation confirmed to reverse at every destination.
- User-based and resource-based types confirmed reporting separately.
- Won opportunities or posted invoices reconciled against offline conversions over a closed window.
- Re-checked 30 days later, and after any Odoo version upgrade.
Odoo Appointments · free audit
What we check in the free audit
- Book a test appointment and look for any ad event
- Check whether the booking carries the campaign source
- Separate confirmed from pending bookings
- Split user-based from resource-based types
- Trace one booking to its invoice
Checked against
Odoo's calendar events from Appointments, linked to CRM opportunities and posted invoices
Free30 minutesNo obligation
Odoo Appointments · when not to buy
When you don't need this on Odoo Appointments
Odoo users tend to over-build; here is where we would say stop.
- If appointments come from existing customers and email rather than paid ads, there is nothing for an ad platform to learn.
- If you only run one appointment type and book a few a week, a manual monthly match of opportunities to campaigns may be enough.
- If your Odoo partner already maintains custom modules, a simple outbound call on booking may be cheaper from them than from us.
- If the money is not invoiced in Odoo, fix that link first; tracking cannot attribute revenue the system does not hold.
Odoo Appointments · what we deliver
The event map on Odoo Appointments
Appointment page viewed
Per appointment type, on the published website page.
Appointment booked
With the type and the assigned user or resource.
Appointment confirmed
Only relevant where manual confirmation is switched on.
Appointment cancelled
Reversed, including cancellations before the cutoff.
Opportunity created
Where the CRM app is installed and Create Opportunities is enabled.
Opportunity won or invoice posted
The revenue conversion, at the amount Odoo records.
Written guarantee
95%+ tracking accuracy
Measured against Odoo's calendar events from Appointments, linked to CRM opportunities and posted invoices. Miss it and we keep working at no cost.
From $400 · See packages
FAQ
Odoo Appointments questions, answered
Odoo's appointments documentation describes none. Treat it as a booking system with no ad integration until your own instance proves otherwise.
Yes, and it is often better than the booking. With Create Opportunities enabled, every booking becomes an opportunity you can follow to won or lost and send back offline.
Track them as their own conversion with their own value. Capacity-limited resource bookings behave nothing like a sales demo and should not share a target.
Not necessarily. Many setups can read Odoo's records from outside on a schedule. Whether a module is worth it depends on your hosting and version, which we check first.
The more it relies on Odoo's standard records rather than template edits, the better it survives. We re-verify after any version change.
More on Odoo Appointments
- Birdeye AppointmentsConversion tracking for Birdeye Appointments
- Easy!AppointmentsConversion tracking for self-hosted Easy!Appointments
- GoDaddy Online AppointmentsConversion tracking for GoDaddy Online Appointments
RELATED GUIDES
Booking tools beside Odoo Appointments, and what their bookings feed
- Agile CRMConversion tracking for Agile CRM's Online Calendar
- vcitaConversion tracking for vcita online scheduling
- Nutshell SchedulerConversion tracking for Nutshell Scheduler meetings
- Meta · Wedding servicesMeta Ads conversion tracking for wedding vendors
- Google Ads · PhotographyGoogle Ads conversion tracking for photography businesses
- Google Ads × Invoicing SystemHow to reconcile Google Ads against your invoicing system
- Meta · Booked call → closed wonHow to track booked call to closed won for Meta Ads
- PhotographyConversion tracking for photographers, measured in booked shoots
Free · 30 min
Get Odoo Appointments tracking done properly
Free30 minutesNo obligation
