Your booking link is honest about one calendar. The problem is that you have two or three. If you want to stop double booking work and personal calendar conflicts, the fix is not another reminder to yourself. It is one link that reads every account you own before it offers anyone a time.
Most advice on this points at calendar settings. Turn on working hours. Block personal appointments by hand. Sync one calendar into the other and hope. That holds until the week you forget, and then a client takes 2:30 on a Tuesday that your dentist already owns.
Here are the four ways a slot actually gets sold twice, and a setup you can finish in one sitting.
Four ways a booking link double books you
1. A second account the link never sees
The common case is not a bug. It is a connection you never made, and tools differ a lot in how many accounts they will read.
Calendly Free includes one event type and one calendar connection. Calendly also keeps the choice at account level: connected calendars apply to all event types in your account, and you cannot assign different calendars to individual events. Cal.com goes the other way by default, checking for conflicts across all of a user's connected calendars when determining availability, with a per-link setting for people who want to keep personal and professional schedules separate. Google Calendar appointment schedules can look wider than your main calendar, but to check availability from secondary calendars you need an eligible Google Workspace or Google One plan.
None of that is dishonest. It does mean the question "which accounts does this link actually read?" gets a different answer in every tool, and that answer is the only thing deciding whether your personal Outlook can protect your work Tuesday.
2. An event the calendar marks free
Second failure: the event is right there on the grid and the link ignores it, because the link reads a flag, not pixels. In Google's appointment schedules, when you check other calendars for availability, appointment times during events on your calendar that are set to "Busy" don't show on the booking page, while unaccepted or tentative Google Calendar events do not block appointment availability. Calendly's own troubleshooting runs the same logic in reverse: to unblock a time, it tells you to delete the conflicting event or set its calendar status to free.
So the flight confirmation Gmail added for you, the all-day "WFH" banner, the lunch invite you never accepted: visible, and bookable.
3. A declined invite that still looks like a wall
Third failure is you misreading your own week. New Outlook can keep declined meetings on the grid: any event or meeting request that you decline will appear on your calendar, but your time will be shown as free, and that setting is only available for M365 work or school accounts. Google is consistent about the other side of it: if you RSVP "Yes" or "Maybe" to an event or have any busy event in a calendar that is reviewed for conflicts, that block of time doesn't appear as open on your booking page.
The tools are behaving correctly. You are the one glancing at a solid-looking Thursday and assuming the link is covered. If you declined an invitation but still plan to attend, put your own busy block on top of it. Nothing downstream can guess that for you.
4. The meeting that runs over
The fourth one is not technically a double booking. It feels exactly like one. A call ends at 3:00, the next starts at 3:00, and you are late to a person who booked you in good faith.
This is what buffers are for. Google's booked appointment settings exist so that to avoid back-to-back appointments, you can turn on and adjust buffer time. Calendly uses the full meeting and buffer window to determine which booking times are available, and connected calendars are checked for conflicts with both the meeting and the buffer time. Their worked example is clear about the cost: a 30-minute meeting with 15-minute buffers before and after needs 60 minutes of free time. Same tool, same calendar, half the slots.
Notice too that these tools ship opinionated defaults. Google's appointment schedules have a 4-hour minimum notice to schedule an appointment by default, which is why a brand new page can look empty for the rest of today.
The fix: one page, every account
The whole repair is four settings. Here it is with a real example: Dana, a consultant, has a work Google Workspace account and a personal Outlook.com account, and keeps getting booked over her own life.
Connect both accounts, not just the main one. A WhenNOT free booking page lives at whennot.com/m/your-name and reads Google Calendar and Microsoft 365 / Outlook, as many accounts as you connect, and each one is checked before a time is offered. Dana connects work Google and personal Outlook to the same page. The dentist in the personal account now blocks the work page, which is the entire point.
Let busy mean the calendar's own busy flag. Events marked as free and "working from home" entries are ignored unless you ask for free events to count as busy. Dana's all-day working-from-home entry does not wipe out her week.
Set your real hours. Set opening hours per weekday, with as many windows a day as you like, plus date overrides that close or open one specific day. Dana runs 9:00 to 12:30 and 13:30 to 17:00 on Tuesdays, so lunch stays lunch.
Add a buffer and a minimum notice. You get buffers around meetings, for the page or for each host, and a minimum notice, and how far ahead people can book. Dana sets a 15-minute buffer around meetings and 12 hours of notice.
If you are still deciding whether a link is the right instrument at all, what a booking page is and when to use a poll instead covers that choice, and how to share your availability has the email wording for the times you should not send a link.
What a guest sees on Tuesday, November 17
Dana's Tuesday, across two accounts:
- Work Google: client call 10:00 to 10:30, a declined all-hands 11:00 to 12:00, an all-day "working from home" entry
- Personal Outlook: dentist 14:30 to 15:30
A guest opening the page on Monday afternoon, looking for 30 minutes, is offered starts like 9:00, 10:45, 11:30, 13:30, 15:45, 16:15.
Read the gaps, because the gaps are the product:
- 9:30 and 10:00 are gone. The 10:00 client call plus the 15-minute buffer eats them.
- 11:30 is offered. The all-hands was declined, so that hour is genuinely free, whatever it looks like on screen.
- 14:00, 14:30 and 15:00 are gone. They are gone because of an appointment sitting on a personal Outlook account that the guest cannot see and never will.
- The working-from-home entry blocks nothing, because WhenNOT ignores "working from home" entries.
That last pair is the test. One of them is the double booking you were trying to stop; the other is the day you lose to an over-eager tool. Checking every account and trusting the busy flag gets both right at once.
When you want a free event to block anyway
Sometimes the calendar is wrong and you know it. A flight added automatically, a restaurant reservation, a tentative school run: marked free, but you will not be at your desk. For those, you can ask for free events to count as busy. It is a deliberate trade. You get fewer slots, and you stop explaining yourself.
The sharper version is to fix the entry instead. Mark the flight busy and leave the setting alone, and you keep a page that only blocks when you are actually blocked. Either way, decide once rather than per week.
When a booking stops being real
Double bookings also come from the opposite direction: a meeting that quietly died but still holds the slot. When the guest declines the invite, the booking is cancelled, the event comes off your calendar and the time goes back on your page. Delete it in Google or Outlook and the booking is cancelled too.
For the meetings you cannot make, you do not move the guest by force. Send the guest a request with a few times that work. They pick one, and the same invite moves for both of you. Reminders go out a day before, an hour before and ten minutes before, which handles the other half of the no-show problem. If you would rather handle it by hand anyway, scheduling link etiquette covers when a link is the wrong move.
If other people share your slots
One link, several humans, same risk. On a WhenNOT page you add hosts and choose whether any free host can take a booking or all of them must be free. That is a conflict rule, not rotation: it does not balance load between people, so if you want strict turn-taking this is not it. Named honestly so you can rule it out fast.
FAQ
Do I need a separate booking page for work and for personal bookings? No. One page can read both, since every Google and Microsoft account you connect is checked before a time is offered. Separate pages make sense for different meeting lengths or audiences, not for separating calendars.
What if my personal calendar is iCloud? Then a booking page cannot see it today. WhenNOT booking pages read Google Calendar and Microsoft 365 / Outlook accounts. If your personal life lives in iCloud, mirror the commitments you care about into a connected calendar, or accept that the page will not know about them.
Will guests see what is on my calendars? No. They see open times. Guests book from the link in any browser and get a confirmation with a reschedule and cancel link.
Does the invite include a video link? It depends on the account. Meet links need a Google Workspace calendar and Teams links a Microsoft 365 work or school one; on a personal Gmail or Outlook.com calendar the invite goes out without a video link.
Is any of this behind a plan? No. Booking pages, several hosts, every calendar connection, Meet and Teams links, reminders, custom questions, your own look and webhooks are all free. If you are weighing it against what you have now, the WhenNOT vs Calendly comparison lists the differences with sources.
Different situation? If you are trying to pick a date with a whole group rather than hand out your own time, a group scheduling poll where people cross out what they cannot make is the right tool.
Get a free booking page that checks every calendar you connect before it offers a time: set one up on WhenNOT.