---
title: "How we score calendar booking tools | Calendar Booking Lab"
url: https://calendarbookinglab.com/methodology
---

# How we score

Every tool is scored on the same 100-point rubric (version 0.2 (2026-10-29, pre-launch)), computed in code from published prices and documented features. Each tool also gets the same short functional check, and anything that doesn't work takes points off. Affiliate links never affect scores or order. Prices are re-checked weekly.

## Fairness rules

1.  **Rubric fixed before scoring.** Weights are the same for every tool. A change to the rubric re-scores every tool at once and is logged on the [changelog](/changelog).
2.  **Affiliate links never affect scores, order or "best for" picks.** Default order is score, then name.
3.  **Same link treatment.** Every tool gets one equally prominent link to its website. Where we have an affiliate link, that link is the affiliate one. Affiliate links are labelled and marked `rel="sponsored"`.
4.  **Affiliate programmes declared.** Every affiliate programme we belong to is listed on the [disclosure page](/disclosure).
5.  **Evidence for every claim.** Each price or limit links to the vendor page it came from, with the date checked and an archived copy where one exists. Every problem found in a functional check has evidence too.
6.  **Public corrections.** Anyone can [submit a correction](/corrections). Every submission and its outcome is logged publicly. Scores change only on evidence.
7.  **Stale data is flagged.** Any price or functional check not verified in the last 6 months shows "needs re-check".

## The rubric

| Category | Points | Measures | What earns the points |
| --- | --- | --- | --- |
| Price for value | 24 | Monthly cost for three fixed team setups. | 
<table class="m-0 w-full text-sm"><tbody><tr><td class="py-1 pl-0">Solo: 1 user with 3 event types and 2 connected calendars, 40 bookings a month and a video link</td><td class="num py-1 pr-0">up to 8</td></tr><tr><td class="py-1 pl-0">Small team: 5 users with 5 event types and 2 connected calendars each, 200 bookings a month, a video link and round robin</td><td class="num py-1 pr-0">up to 8</td></tr><tr><td class="py-1 pl-0">Sales team: 20 users with 10 event types and 2 connected calendars each, 1,000 bookings a month, a video link, round robin, routing forms and CRM sync (HubSpot or Salesforce)</td><td class="num py-1 pr-0">up to 8</td></tr></tbody></table>

 For each setup we take the cheapest plan that covers it: price per user × users (at least the plan's minimum seats), or the flat price; billed monthly, or yearly ÷ 12 when no monthly price is published, or a one-time price ÷ 36 (three years) when that is the only price. Points = (cheapest tool + $5) ÷ (this tool + $5) × the points for that setup. No plan fits, or custom pricing only: 0. A plan that does not state a limit is assumed not to have one, and the assumption is shown.  |
| Free plan | 12 | What one person can do at $0. | 

<table class="m-0 w-full text-sm"><tbody><tr><td class="py-1 pl-0">Has a free plan (half if it is for personal, non-commercial use only)</td><td class="num py-1 pr-0">5</td></tr><tr><td class="py-1 pl-0">Event types at $0 (log scale; 10 or more earns the full points)</td><td class="num py-1 pr-0">3</td></tr><tr><td class="py-1 pl-0">Calendars checked for conflicts at $0 (2 or more earns the full points)</td><td class="num py-1 pr-0">2</td></tr><tr><td class="py-1 pl-0">Bookings a month at $0 (log scale; 100 or more, or no cap, earns the full points)</td><td class="num py-1 pr-0">2</td></tr></tbody></table>

 An unstated event-type or calendar limit earns nothing on its row; an unstated booking cap counts as no cap only when the vendor lists the free plan's other limits.  |
| Scheduling features | 18 | Booking rules, team scheduling, reminders, payments and branding. | 

<table class="m-0 w-full text-sm"><tbody><tr><td class="py-1 pl-0">Buffer time before or after meetings</td><td class="num py-1 pr-0">1</td></tr><tr><td class="py-1 pl-0">Minimum scheduling notice</td><td class="num py-1 pr-0">1</td></tr><tr><td class="py-1 pl-0">Limit on bookings per day or week</td><td class="num py-1 pr-0">1</td></tr><tr><td class="py-1 pl-0">Group events (several invitees in one slot)</td><td class="num py-1 pr-0">2</td></tr><tr><td class="py-1 pl-0">Round robin across hosts</td><td class="num py-1 pr-0">3</td></tr><tr><td class="py-1 pl-0">Collective events (all hosts must be free)</td><td class="num py-1 pr-0">2</td></tr><tr><td class="py-1 pl-0">Routing forms</td><td class="num py-1 pr-0">3</td></tr><tr><td class="py-1 pl-0">Reminder and follow-up emails or texts you can edit</td><td class="num py-1 pr-0">2</td></tr><tr><td class="py-1 pl-0">Payment at booking</td><td class="num py-1 pr-0">2</td></tr><tr><td class="py-1 pl-0">"Powered by" branding can be removed</td><td class="num py-1 pr-0">1</td></tr></tbody></table>

 |
| Calendars & integrations | 14 | Calendars it checks, video links it creates, CRMs and automation tools it connects to natively. | 

<table class="m-0 w-full text-sm"><tbody><tr><td class="py-1 pl-0">Google Calendar</td><td class="num py-1 pr-0">2</td></tr><tr><td class="py-1 pl-0">Outlook / Microsoft 365</td><td class="num py-1 pr-0">2</td></tr><tr><td class="py-1 pl-0">iCloud or CalDAV</td><td class="num py-1 pr-0">1</td></tr><tr><td class="py-1 pl-0">Zoom</td><td class="num py-1 pr-0">2</td></tr><tr><td class="py-1 pl-0">Google Meet</td><td class="num py-1 pr-0">1</td></tr><tr><td class="py-1 pl-0">Microsoft Teams</td><td class="num py-1 pr-0">1</td></tr><tr><td class="py-1 pl-0">HubSpot (native)</td><td class="num py-1 pr-0">1</td></tr><tr><td class="py-1 pl-0">Salesforce (native)</td><td class="num py-1 pr-0">1</td></tr><tr><td class="py-1 pl-0">Zapier</td><td class="num py-1 pr-0">2</td></tr><tr><td class="py-1 pl-0">Make</td><td class="num py-1 pr-0">1</td></tr></tbody></table>

 |
| Developer & openness | 10 | Documented API, webhooks, embedding, and whether you can read or run the code. | 

<table class="m-0 w-full text-sm"><tbody><tr><td class="py-1 pl-0">Documented API</td><td class="num py-1 pr-0">4</td></tr><tr><td class="py-1 pl-0">Webhooks</td><td class="num py-1 pr-0">2</td></tr><tr><td class="py-1 pl-0">Embed the booking page on your site</td><td class="num py-1 pr-0">2</td></tr><tr><td class="py-1 pl-0">Source code under an open-source licence</td><td class="num py-1 pr-0">1</td></tr><tr><td class="py-1 pl-0">Can be self-hosted</td><td class="num py-1 pr-0">1</td></tr></tbody></table>

 Half points for an API or webhooks that are only on custom-pricing plans.  |
| Reliability & privacy | 16 | Track record, published status, independent audit and privacy commitments. | 

<table class="m-0 w-full text-sm"><tbody><tr><td class="py-1 pl-0">Public status page</td><td class="num py-1 pr-0">2</td></tr><tr><td class="py-1 pl-0">Running 10 years or more (counting earlier names)</td><td class="num py-1 pr-0">4</td></tr><tr><td class="py-1 pl-0">Running 5 to 9 years</td><td class="num py-1 pr-0">2</td></tr><tr><td class="py-1 pl-0">Independent security audit of the vendor (SOC 2 or ISO 27001)</td><td class="num py-1 pr-0">4</td></tr><tr><td class="py-1 pl-0">Audit report anyone can download (for example a SOC 3 report)</td><td class="num py-1 pr-0">1</td></tr><tr><td class="py-1 pl-0">GDPR statement</td><td class="num py-1 pr-0">1</td></tr><tr><td class="py-1 pl-0">Data processing agreement offered</td><td class="num py-1 pr-0">1</td></tr><tr><td class="py-1 pl-0">Data location stated</td><td class="num py-1 pr-0">1</td></tr><tr><td class="py-1 pl-0">HIPAA option with a business associate agreement</td><td class="num py-1 pr-0">2</td></tr></tbody></table>

 Only one age row applies. Hosting on audited infrastructure ("SOC 2 hosted") does not count as an audit of the vendor.  |
| Help & docs | 6 | Public help content. | 

<table class="m-0 w-full text-sm"><tbody><tr><td class="py-1 pl-0">Public help center or documentation</td><td class="num py-1 pr-0">4</td></tr><tr><td class="py-1 pl-0">Public changelog</td><td class="num py-1 pr-0">2</td></tr></tbody></table>

 |

The score is the points a tool earns divided by the points available, shown out of 100, minus any penalties. A category is left out only when the vendor doesn't document what it measures (for example, what happens at the plan limit). A "Pending tasks to resolve" badge means we still have open questions about that tool's data to settle with the vendor.

You can check every score yourself. [The scoring code](/data/scoring.js) is this rubric and its formulas, compiled to JavaScript from the files that build the site, and [the raw data](/data/tools.json) holds every plan, limit and feature we score. [This example script](/data/recalculate-scores.mjs) runs one on the other and compares the result with every published score.

## Do the weights decide the ranking?

Any choice of weights is a judgement, so we re-ran every score with each category counted double, and again with each category left out (14 other weightings). Cal.com ranks first under every weighting tested: the published one, each category counted double, and each category left out. Calendly, OnceHub, Koalendar, TidyCal, YouCanBookMe, Zoho Bookings, Zcal, HubSpot Meetings, Chili Piper, Doodle, Acuity Scheduling, SavvyCal, Setmore, Google Calendar appointment schedules and Microsoft Bookings move between 2nd and 16th place depending on the weights.

| Tool | Published | Best place | Worst place |
| --- | --- | --- | --- |
| [Cal.com](/tools/cal-com) | 1st (89) | Same | Same |
| [Calendly](/tools/calendly) | 2nd (78) | Same | 3rd, when reliability & privacy left out |
| [OnceHub](/tools/oncehub) | 3rd (75) | Same | 4th, when reliability & privacy left out |
| [Koalendar](/tools/koalendar) | 4th (70) | Same | 5th, under 5 of the 14 other weightings |
| [TidyCal](/tools/tidycal) | 5th (69) | 2nd, when reliability & privacy left out | 8th, when price for value left out |
| [YouCanBookMe](/tools/youcanbookme) | 6th (66) | 4th, when price for value left out | 7th, under 5 of the 14 other weightings |
| [Zoho Bookings](/tools/zoho-bookings) | 7th (64) | 6th, under 6 of the 14 other weightings | 8th, when reliability & privacy left out |
| [Zcal](/tools/zcal) | 8th (59) | 6th, when reliability & privacy left out | 12th, when reliability & privacy counts double; or free plan left out |
| [HubSpot Meetings](/tools/hubspot-meetings) | 9th (57) | 7th, when price for value left out | 12th, when price for value counts double |
| [Chili Piper](/tools/chili-piper) | 10th (55) | 8th, when reliability & privacy counts double; or free plan left out | 11th, under 4 of the 14 other weightings |
| [Doodle](/tools/doodle) | 11th (54) | 9th, when developer & openness left out | 13th, when developer & openness counts double; or free plan left out; or reliability & privacy left out |
| [Acuity Scheduling](/tools/acuity-scheduling) | 12th (52) | 9th, when price for value counts double; or free plan left out | Same |
| [SavvyCal](/tools/savvycal) | 13th (50) | 10th, when free plan left out; or reliability & privacy left out | 14th, when free plan counts double; or calendars & integrations left out |
| [Setmore](/tools/setmore) | 14th (44) | Same | 16th, when reliability & privacy counts double; or calendars & integrations left out |
| [Google Calendar appointment schedules](/tools/google-appointment-schedules) | 15th (42) | 13th, when free plan counts double; or calendars & integrations left out | 16th, when developer & openness counts double; or free plan left out |
| [Microsoft Bookings](/tools/microsoft-bookings) | 16th (39) | 15th, under 4 of the 14 other weightings | Same |

Full ranking under each weighting

Scroll sideways to see every place.

| Weighting | 1st | 2nd | 3rd | 4th | 5th | 6th | 7th | 8th | 9th | 10th | 11th | 12th | 13th | 14th | 15th | 16th |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Published weights | Cal.com 89 | Calendly 78 | OnceHub 75 | Koalendar 70 | TidyCal 69 | YouCanBookMe 66 | Zoho Bookings 64 | Zcal 59 | HubSpot Meetings 57 | Chili Piper 55 | Doodle 54 | Acuity Scheduling 52 | SavvyCal 50 | Setmore 44 | Google Calendar appointment schedules 42 | Microsoft Bookings 39 |
| Price for value counts double | Cal.com 86 | Calendly 71 | OnceHub 68 | TidyCal 68 | Koalendar 65 | Zoho Bookings 57 | YouCanBookMe 56 | Zcal 56 | Acuity Scheduling 46 | Chili Piper 46 | Doodle 46 | HubSpot Meetings 46 | SavvyCal 44 | Setmore 38 | Google Calendar appointment schedules 35 | Microsoft Bookings 34 |
| Free plan counts double | Cal.com 90 | Calendly 78 | OnceHub 75 | Koalendar 73 | TidyCal 71 | YouCanBookMe 67 | Zoho Bookings 65 | Zcal 64 | HubSpot Meetings 59 | Doodle 57 | Chili Piper 49 | Acuity Scheduling 47 | Google Calendar appointment schedules 45 | SavvyCal 45 | Setmore 44 | Microsoft Bookings 35 |
| Scheduling features counts double | Cal.com 90 | Calendly 81 | OnceHub 79 | Koalendar 72 | TidyCal 71 | Zoho Bookings 69 | YouCanBookMe 68 | Zcal 63 | HubSpot Meetings 61 | Chili Piper 58 | Doodle 57 | Acuity Scheduling 55 | SavvyCal 55 | Setmore 45 | Google Calendar appointment schedules 41 | Microsoft Bookings 40 |
| Calendars & integrations counts double | Cal.com 90 | Calendly 81 | OnceHub 78 | Koalendar 71 | TidyCal 71 | YouCanBookMe 69 | Zoho Bookings 65 | Zcal 62 | Chili Piper 59 | HubSpot Meetings 59 | Doodle 57 | Acuity Scheduling 55 | SavvyCal 55 | Setmore 49 | Google Calendar appointment schedules 39 | Microsoft Bookings 37 |
| Developer & openness counts double | Cal.com 88 | Calendly 78 | OnceHub 75 | TidyCal 70 | Koalendar 67 | YouCanBookMe 67 | Zoho Bookings 64 | Zcal 58 | Chili Piper 57 | HubSpot Meetings 57 | Acuity Scheduling 55 | SavvyCal 53 | Doodle 49 | Setmore 46 | Microsoft Bookings 41 | Google Calendar appointment schedules 40 |
| Reliability & privacy counts double | Cal.com 88 | Calendly 78 | OnceHub 74 | Koalendar 69 | YouCanBookMe 66 | Zoho Bookings 65 | TidyCal 61 | Chili Piper 59 | HubSpot Meetings 59 | Doodle 58 | Acuity Scheduling 54 | Zcal 54 | SavvyCal 48 | Google Calendar appointment schedules 47 | Microsoft Bookings 45 | Setmore 44 |
| Help & docs counts double | Cal.com 89 | Calendly 79 | OnceHub 76 | Koalendar 71 | TidyCal 71 | YouCanBookMe 68 | Zoho Bookings 64 | Zcal 60 | HubSpot Meetings 59 | Chili Piper 57 | Doodle 55 | Acuity Scheduling 53 | SavvyCal 53 | Setmore 46 | Google Calendar appointment schedules 45 | Microsoft Bookings 42 |
| Price for value left out | Cal.com 93 | Calendly 89 | OnceHub 87 | YouCanBookMe 81 | Koalendar 78 | Zoho Bookings 76 | HubSpot Meetings 75 | TidyCal 71 | Chili Piper 70 | Doodle 67 | Zcal 64 | Acuity Scheduling 62 | SavvyCal 61 | Setmore 55 | Google Calendar appointment schedules 53 | Microsoft Bookings 47 |
| Free plan left out | Cal.com 87 | Calendly 79 | OnceHub 75 | TidyCal 66 | Koalendar 65 | YouCanBookMe 64 | Zoho Bookings 63 | Chili Piper 62 | Acuity Scheduling 59 | SavvyCal 57 | HubSpot Meetings 55 | Zcal 54 | Doodle 50 | Setmore 45 | Microsoft Bookings 44 | Google Calendar appointment schedules 37 |
| Scheduling features left out | Cal.com 86 | Calendly 73 | OnceHub 70 | Koalendar 66 | TidyCal 66 | YouCanBookMe 62 | Zoho Bookings 56 | Zcal 54 | HubSpot Meetings 51 | Chili Piper 50 | Doodle 50 | Acuity Scheduling 48 | SavvyCal 43 | Setmore 43 | Google Calendar appointment schedules 42 | Microsoft Bookings 38 |
| Calendars & integrations left out | Cal.com 87 | Calendly 74 | OnceHub 71 | Koalendar 68 | TidyCal 66 | Zoho Bookings 63 | YouCanBookMe 61 | Zcal 56 | HubSpot Meetings 55 | Chili Piper 50 | Doodle 50 | Acuity Scheduling 48 | Google Calendar appointment schedules 45 | SavvyCal 45 | Microsoft Bookings 42 | Setmore 39 |
| Developer & openness left out | Cal.com 90 | Calendly 78 | OnceHub 74 | Koalendar 73 | TidyCal 68 | YouCanBookMe 64 | Zoho Bookings 64 | Zcal 62 | Doodle 60 | HubSpot Meetings 57 | Chili Piper 52 | Acuity Scheduling 49 | SavvyCal 47 | Google Calendar appointment schedules 44 | Setmore 43 | Microsoft Bookings 37 |
| Reliability & privacy left out | Cal.com 90 | TidyCal 80 | Calendly 77 | OnceHub 76 | Koalendar 70 | Zcal 67 | YouCanBookMe 65 | Zoho Bookings 63 | HubSpot Meetings 55 | SavvyCal 54 | Chili Piper 50 | Acuity Scheduling 49 | Doodle 49 | Setmore 45 | Google Calendar appointment schedules 34 | Microsoft Bookings 31 |
| Help & docs left out | Cal.com 88 | Calendly 77 | OnceHub 73 | Koalendar 68 | TidyCal 67 | Zoho Bookings 64 | YouCanBookMe 63 | Zcal 59 | HubSpot Meetings 54 | Doodle 53 | Chili Piper 52 | Acuity Scheduling 51 | SavvyCal 47 | Setmore 43 | Google Calendar appointment schedules 38 | Microsoft Bookings 35 |

Ties are ordered by name, as in the main ranking. Penalties from functional checks apply the same way under every weighting.

### Try your own weights

Change how much each category counts. The ranking below is recalculated with the same formula as the published scores, and the page address updates so you can share the result.

 [These weights as text or JSON](/api/weights)

| Place | Tool | Score | Published |
| --- | --- | --- | --- |
| 1 | Cal.com | 89 | 89 |
| 2 | Calendly | 78 | 78 |
| 3 | OnceHub | 75 | 75 |
| 4 | Koalendar | 70 | 70 |
| 5 | TidyCal | 69 | 69 |
| 6 | YouCanBookMe | 66 | 66 |
| 7 | Zoho Bookings | 64 | 64 |
| 8 | Zcal | 59 | 59 |
| 9 | HubSpot Meetings | 57 | 57 |
| 10 | Chili Piper | 55 | 55 |
| 11 | Doodle | 54 | 54 |
| 12 | Acuity Scheduling | 52 | 52 |
| 13 | SavvyCal | 50 | 50 |
| 14 | Setmore | 44 | 44 |
| 15 | Google Calendar appointment schedules | 42 | 42 |
| 16 | Microsoft Bookings | 39 | 39 |

### Without JavaScript: for scripts and AI assistants

The same calculation runs at [`https://calendarbookinglab.com/api/weights`](https://calendarbookinglab.com/api/weights?price=2). Give a multiplier from 0 (leave the category out) to 10 for any category, using the keys below. Categories you don't name stay at 1. It returns the new ranking as a Markdown table, or JSON with `&format=json`. For example, [`https://calendarbookinglab.com/api/weights?price=2&freePlan=0`](https://calendarbookinglab.com/api/weights?price=2&freePlan=0) counts price double and leaves the free plan out.

Or work it out from the points below. Multiply each category's points and its maximum by the weight you want, add them up, divide points by maximum, multiply by 100, round, and subtract the penalty. A dash means the category isn't scored for that tool and is left out of both sums.

Scroll sideways to see every category.

| Tool | Price for value `price`, max 24  | Free plan `freePlan`, max 12  | Scheduling features `scheduling`, max 18  | Calendars & integrations `integrations`, max 14  | Developer & openness `developer`, max 10  | Reliability & privacy `trust`, max 16  | Help & docs `support`, max 6  | Penalty | Score |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Cal.com | 17.6 | 12 | 18 | 14 | 8 | 13 | 6 | 0 | 89 |
| Calendly | 10.1 | 8.9 | 18 | 14 | 8 | 13 | 6 | 0 | 78 |
| OnceHub | 9.1 | 8.9 | 18 | 14 | 8 | 11 | 6 | 0 | 75 |
| Koalendar | 10.5 | 12 | 15 | 11 | 4 | 11 | 6 | 0 | 70 |
| TidyCal | 14.9 | 11 | 15 | 12 | 8 | 2 | 6 | 0 | 69 |
| YouCanBookMe | 3.7 | 8.9 | 15 | 13 | 8 | 11 | 6 | 0 | 66 |
| Zoho Bookings | 6.1 | 8.9 | 18 | 10 | 6 | 11 | 4 | 0 | 64 |
| Zcal | 10.4 | 12 | 15 | 11 | 4 | 3 | 4 | 0 | 59 |
| HubSpot Meetings | 0 | 8.9 | 15 | 10 | 6 | 11 | 6 | 0 | 57 |
| Chili Piper | 1.9 | 0 | 14 | 12 | 8 | 13 | 6 | 0 | 55 |
| Doodle | 3.2 | 9.9 | 13 | 11 | 0 | 13 | 4 | 0 | 54 |
| Acuity Scheduling | 5.1 | 0 | 13 | 11 | 8 | 11 | 4 | 0 | 52 |
| SavvyCal | 4.4 | 0 | 15 | 12 | 8 | 5 | 6 | 0 | 50 |
| Setmore | 2.4 | 5 | 9 | 11 | 6 | 7 | 4 | 0 | 44 |
| Google Calendar appointment schedules | 1.8 | 8.9 | 7 | 3 | 2 | 13 | 6 | 0 | 42 |
| Microsoft Bookings | 3 | 0 | 8 | 3 | 6 | 13 | 6 | 0 | 39 |

## How sure we are of each feature

Every feature on a review carries one of three labels, so you can tell what we have seen for ourselves from what a vendor says. The labels don't change scores: the rubric measures whether a feature is available, and we don't pay for every plan to test it. If a check shows an advertised feature doesn't exist, that is a penalty (see below).

-   **Verified:** We checked this ourselves in our own account. (0 of 448 feature claims across the ranked tools.)
-   **Vendor docs:** Stated on the vendor's own pricing page, docs or help center. We haven't tested it ourselves. (300 of 448 feature claims across the ranked tools.)
-   **Unclear:** Advertised but not documented, or the vendor's pages disagree. See the note. (148 of 448 feature claims across the ranked tools.)

## Functional checks and penalties

We don't score tools on our own impressions. Instead, every ranked tool gets the same short check, and a pass changes nothing:

-   Sign up on the free plan, or start a trial where there is no free plan, and connect a Google and an Outlook calendar.
-   Create a 30-minute event type with the host in New York time and a video link, and put a busy event in the Outlook calendar.
-   Book it from a browser set to London time in a week when US and UK clocks change on different dates, then check the time in both calendars and in the confirmation email, and that the busy slot couldn't be booked.
-   Reschedule and then cancel as the invitee, and check that both calendars follow.

All 0 ranked tools checked so far put the test event in every calendar with the right time, blocked the busy slot and passed on the reschedule and cancellation. That is the expected result for mature tools, so when several of them pass we report that rather than invent a difference between them. A pass shows the basics work. It doesn't show long-term uptime, behaviour under load, or every calendar app and edge case.

Each problem found takes points off the final score, up to 20 points in total. Problems are listed on the tool's page with the date and evidence, and the penalty is removed once a re-check shows it fixed. If sign-up or login doesn't work at all, the tool is not ranked until it does.

| Problem | Penalty |
| --- | --- |
| Booking lands at the wrong time in a calendar or the confirmation email | −5 |
| A busy time in a connected calendar can still be booked | −5 |
| A reschedule or cancellation does not reach the calendars | −5 |
| The video link is missing from the invite | −3 |
| An advertised feature does not exist (each) | −3 |
| Sign-up or login doesn't work | Not ranked |

Readers and vendors can report a problem through the [corrections form](/corrections). We confirm it ourselves before applying a penalty.

## Team cost setups

Most scheduling tools charge per user, so pricing is compared like for like for three fixed team setups. For each, we take the cheapest plan that covers it and multiply the per-user price by the number of users (at least the plan's minimum), billed monthly, or the yearly price ÷ 12 when no monthly price is published. A plan sold only for a one-time payment (a lifetime deal) counts as that payment spread over 36 months, a three-year horizon; whether a lifetime deal stays available, and what it leaves out, is stated on the tool's page.

-   **Solo:** 1 user, 3 event types, 2 calendars, 40 bookings/month, video link
-   **Small team:** 5 users, 5 event types, 2 calendars each, 200 bookings/month, video link, round robin
-   **Sales team:** 20 users, 10 event types, 2 calendars each, 1,000 bookings/month, video link, round robin, routing forms, CRM sync

A need such as "a video link" is met when the plan includes any of the integrations that provide it (Zoom, Google Meet or Teams; HubSpot or Salesforce for CRM sync). Where a vendor doesn't publish an event-type, calendar or booking limit, we assume no cap and say so next to the result. A flat-priced plan only counts for a team when the vendor states how many users it allows. Suites (scheduling that comes with Microsoft 365, Google Workspace or a CRM) are priced at the cheapest plan of the suite that includes the needed features; what else that plan includes is stated on each tool page.

## "Best for" picks

-   [Best free scheduling tool](/best/free): Has a $0 plan. Ranked by our Free plan score (event types, connected calendars and bookings at $0). Tools level on this measure are shown as joint picks.
-   [Best scheduling tool for freelancers](/best/freelancers): Cheapest plan that covers 1 user with 3 event types and 2 connected calendars, 40 bookings a month and a video link. Tools level on this measure are shown as joint picks.
-   [Best scheduling tool for small teams](/best/small-teams): Cheapest plan that covers 5 users with 5 event types and 2 connected calendars each, 200 bookings a month, a video link and round robin. Tools level on this measure are shown as joint picks.
-   [Best scheduling tool for sales teams](/best/sales-teams): Cheapest plan that covers 20 users with 10 event types and 2 connected calendars each, 1,000 bookings a month, a video link, round robin, routing forms and CRM sync (HubSpot or Salesforce). Tools level on this measure are shown as joint picks.
-   [Best scheduling tool for taking payments](/best/payments): Can take payment at booking. Ranked by the monthly price for one user of the cheapest plan that includes payments. Tools level on this measure are shown as joint picks.
-   [Best HIPAA-ready scheduling tool](/best/healthcare): Offers a HIPAA option with a business associate agreement. Ranked by our Reliability & privacy score. Tools level on this measure are shown as joint picks.
-   [Best scheduling tool for developers](/best/developers): Has a documented API. Ranked by our Developer & openness score (API, webhooks, embedding, open source, self-hosting). Tools level on this measure are shown as joint picks.
-   [Most established scheduling vendor](/best/established-vendors): Has an independent security audit of the vendor (SOC 2 or ISO 27001) first, then the most years in operation, counting earlier names. Tools level on this measure are shown as joint picks.

## Update schedule

-   **Weekly:** an automated job reads every pricing page and flags any change. A person confirms each change before it goes live, and it's logged on the changelog.
-   **Every 6 months:** the functional check is repeated for every tool, or sooner when a vendor ships a major change or someone reports a problem.
