Skip to Content

Booking appointments without Calendly: your availability, your domain

A public booking page connected to your real calendar, with no per-employee subscription and no data sleeping on US servers

TL;DR: our Appointments module publishes a booking page on your own website, fed by your real availability. Your clients pick a time slot, receive confirmations and reminders in your colours, and can reschedule or cancel on their own. Their personal information stays on your server, and there's no monthly per-employee subscription.

"Tuesday at 10, does that work?" "I'm out of town Tuesday, Wednesday?" "Wednesday I already have two meetings, Thursday afternoon?" Three days and seven emails later, the meeting still isn't booked. Multiply that by the number of new clients, follow-ups and team meetings in a month, and email ping-pong becomes a real expense line, just a well-hidden one.

That's exactly the problem Calendly solved more than ten years ago: you share a link, the client picks a free slot, everyone moves on. The idea is excellent. It's the rest that deserves a second look.

What Calendly solves, and what it introduces

First, the price. Calendly charges per user, every month: $10 USD per person for the Standard plan, $16 USD for Teams on annual billing. For a team of eight taking appointments, that's between $1,300 and $2,100 CAD per year, forever, just for scheduling.

Then, the data. When a client books, they leave their name, email, phone number and often the context of their request. That's personal information under Law 25, and it's collected and stored by an American provider, on its servers. It's not illegal, but it's one more responsibility in your registry: an additional subcontractor, one more contract to document, more data outside your walls.

Finally, the storefront. Your client books on calendly.com, in Calendly's interface, with Calendly's branding. For a business that takes care of its image, it's an odd detour: your whole site breathes your brand, except the precise moment the client commits to meeting you.

Cal.com, the alternative born in open source, long fixed part of the picture. Since April 2026, the main product has gone closed-source: a self-hostable community version remains, Cal.diy, under the MIT licence, but without the team features, precisely the ones an SMB needs, which are reserved for the commercial offering at $12 USD per user per month on annual billing.

Our Appointments module, in a nutshell

We built an Odoo module that does the job end to end, on your own domain. Each type of meeting you offer, first consultation, monthly follow-up, support call, gets its own public booking page, in your colours, on your site.

The availability shown is the real thing: it comes from the calendar your team already uses (for us, that's Nextcloud). No double entry, no phantom time slots. The client sees the slots in their own time zone, picks one, and answers a short intake form you define along the way: reason for the meeting, context, whatever you want to know to show up prepared.

From there, everything runs on its own. The client receives a confirmation in your branding, then an automatic reminder before the meeting, at the lead time you choose, say 24 hours ahead. If something comes up, they reschedule or cancel themselves from the link they received, without writing to you. And on your side, the booking can automatically create a task in the right project, so preparation starts without anyone lifting a finger.

One detail we're particularly fond of: consent to the collection of personal information is declared right at booking time. Compliance isn't an afterthought, it's built into the form.

The real numbers

  Calendly (Teams) Cal.com (Teams) Appointments module
Licence cost $16 USD/user/month (annual) $12 USD/user/month (annual) $0 (open-source LGPL licence)
Your data The provider's servers (US) Cloud, or partially self-hosted Your server
Booking page calendly.com cal.com or a linked domain Your site, your colours
Connection to your projects and clients Through third-party integrations Through third-party integrations Native: it lives in your Odoo

Of course, "$0 in licences" doesn't mean free: you need an Odoo running somewhere and someone to set up the meeting types at the start. The difference is that you pay once to set things up, not forever per head.

What it doesn't solve

The module doesn't take payment at booking time. If your model requires a credit card to reserve, like a yoga studio, this isn't the tool for you today. It also doesn't handle group workshops with 20 sign-ups on the same slot: it's designed for meetings one person at a time, or one team at a time.

And it has the same requirement as every scheduling tool: a calendar that's kept up to date. If your agenda doesn't reflect reality, the public page will promise time you don't have. The tool automates the logistics, not the discipline.

The Appointments module is part of our suite of open-source Odoo modules, installed and configured in our all-inclusive hosting plans.

In practice at Blue Fox

We're not selling you a theory: all of our own client meetings have gone through these booking pages, on our site, for months. First consultation, mandate follow-up, support call: each type has its page, its intake questions and its reminders. The automatic reminders have practically eliminated forgotten appointments, and the intake form means we show up prepared instead of spending the first ten minutes getting up to speed.

And since the booking lives in the same system as everything else, what follows is natural: the meeting gets prepared with an agenda and wrapped up with minutes in our Meetings module, and the team's shared calendar stays in your Nextcloud, under your control.

If email ping-pong is eating your weeks, or if the Calendly invoice annoys you a little more at every renewal, let's talk about your appointments.

Sources

Phishing: train your employees (and clean out the mailboxes) in Odoo
We built our own KnowBe4 inside Odoo: simulations, training, reporting, and pulling a real malicious email out of every mailbox.