Meetings and booking
A normal CRM embeds a calendar. The page your prospect sees is the product.
Nobody outside your company will ever see your CRM. They will see one page: the one where they pick a time. So that page is themeable, it is public and rate-limited rather than hidden behind a login, and the availability it shows is computed from the rep’s own booking settings and the meetings already on their calendar — real times they can actually take, not a grid somebody keeps up to date by hand. Round robins put the meeting in front of the right rep rather than the first one alphabetically. And when a meeting has to move, it moves from wherever you are looking at it, with every move on the record.
How it works
What makes a booking page trustworthy
Where availability comes from, one way in, and a rule for who gets it.
Availability with one owner
Working days, working hours and meeting length come from the rep’s own booking settings, and the slots offered account for what is already scheduled. With Microsoft 365 switched on, the rep’s Outlook calendar is merged in as well. Every booking — the public page included — re-checks the slot at the moment it writes, because a calendar can accept something in that slot while somebody is still choosing.
A public page, themed
The booking page is open to the person you sent it to — no account, no login — and rate-limited so it cannot be hammered. Booking themes mean it carries your look rather than arriving as an unstyled form from a vendor they have never heard of.
Round robins and outcomes
Round robins assign a booking across a group so inbound interest does not queue behind one person’s calendar. Afterwards a meeting can be marked as a no-show, which matters more than it sounds: it is the difference between meetings booked and meetings held, and only one of those is a real number.
In the product
The only screen your prospect ever sees.
The mechanism
Where a free slot comes from, and how a booking is protected
Availability used to be answered in two places that had each walked working hours and checked conflicts slightly differently. Two implementations of “free” eventually disagree, and the disagreement is two people in the same half hour.
One rule, in one place, deliberately not one controller
The availability rule now lives in a single service that the internal path, the softphone path and the public booking page all ask. What was deliberately not merged is meeting creation: the web path writes a meeting with its attendees and redirects, the softphone path runs an intake process inside an idempotency ledger and returns JSON, and those are legitimately different jobs. The part that must never diverge is the definition of free, so that is the part that was shared, and the rest was left alone rather than collapsed into one signature for the sake of tidiness.
Working hours are wall-clock, and slots are half an hour
The grid is thirty-minute slots, and the rep’s working day is interpreted in the rep’s own timezone and then converted, rather than by adding hours to a date in UTC — which is the classic version of this bug, and it moves somebody’s whole day by an hour for half the year. With Microsoft 365 switched on, four Outlook states are treated as unbookable: busy, out of office, tentative, and working elsewhere. A tentative hold is somebody’s intention, and booking over it is how you find out.
It reads the calendar the narrow way, and admits when it could not
Availability is read with the rep’s own token against their own calendar view. There is an API call that would answer the same question more conveniently, and it is not used, because it requires a permission to read other people’s shared calendars — declining it keeps a whole scope off the consent screen your administrator has to approve. That is a real cost paid for a real reduction in what you are asked to grant.
If Microsoft cannot be reached at all — no connection, a dead grant, a throttled request — the result says the external calendar was not checked, with a reason, instead of returning slots that look verified and are not. An unverified slot presented as free is worse than an obvious gap in the information.
The public page re-checks at the moment somebody submits
Earlier versions of this page described a gap here, and it has been closed. When a prospect submits a time, the booking takes a lock on that rep’s calendar and asks two questions inside the same transaction that writes the meeting: is this a time we would have offered, and is it still free right now. Two prospects on the page at once can no longer both be told the same half hour worked; the database itself also refuses two active meetings for one calendar owner at one instant.
A refusal says which of two things happened, because they call for different fixes: “that is not a time we offer” or “that time has just gone”. Either way the prospect is shown alternatives instead of being sent back to the top of the page to guess again.
Rescheduling
Moving a meeting, without losing track of who was told
A booking tool that cannot move an appointment just pushes the move into somebody’s inbox. Here a move is a first-class action with a record behind it.
Move it from wherever you are looking at it
An appointment can be moved from about ten places: the deal, the contact, the company, the meeting itself, the meetings list and its edit form, the dashboard, the day view, the deal’s stage workspace and the BDR pipeline. They all go through one writer, so the rules are the same everywhere — including that the time is checked against the calendar of the person whose meeting it is, not the person moving it, so a BDR moving an account executive’s appointment cannot book over that executive’s afternoon.
Every move is recorded with the move
Each change of start time writes a history row in the same transaction as the change itself, so the record of when a meeting used to be and the meeting’s new time exist together or not at all. If one edit both cancels and changes the time, the cancellation wins; a meeting is only re-opened by an explicit reschedule, never as a side effect.
With Microsoft 365: asks before it tells the prospect
Where a workspace has switched Microsoft 365 on — it ships off — a moved meeting is updated on the prospect’s calendar too, and Outlook has no quiet way to do that: updating the event is the notification. So a move asks first, the way Outlook does — send the update to the prospect, or hold it — and the rep decides.
A cancellation written when nobody is signed in, on a meeting with somebody from outside your company on it, is held rather than sent, whatever the process that wrote it intended. And every screen that shows the meeting shows whether the prospect has actually been told, naming them where it can: changed here, not yet sent. Reminder emails sent through Outlook need Microsoft 365 mail switched on as well, which also ships off. Without Microsoft 365, MADDOX moves and records the meeting and does not contact the prospect at all.
Who it is for
For teams whose pipeline starts with a meeting
If the booking page is the first thing a prospect touches, it is a first impression, not a utility.
- A BDR team sending booking links all day.
- A business routing inbound interest across several reps fairly.
- Anyone whose set-to-held rate is worse than their booking rate and wants to see both.
- A brand-conscious team who would rather not send an unbranded scheduler.
Related
Questions
The things people actually ask.
Does my prospect need an account?
No. The booking page is public and rate-limited. Asking somebody to register before they can offer you thirty minutes is a good way to not have the meeting.
Does it sync with my Google or Outlook calendar?
Google: no, and we will not pretend otherwise. Microsoft 365: yes, if you switch it on — it ships off. With it on, your Outlook calendar is merged into the availability MADDOX computes, meetings booked here appear there, and a booking re-checks the slot against Outlook at the moment it writes. If Microsoft cannot be reached the result says so rather than dressing an unverified slot as free. With it off, availability is computed from meetings held in MADDOX and the rep’s own booking settings.
Will it create a video conference link?
Teams, yes — minted with the calendar event when Microsoft 365 is on, with the join link written back onto the meeting. Zoom and Google Meet, no. We would rather give you no link than a plausible one that joins nothing, which is exactly why the fabricated version of this was taken out.
Can the assistant book a meeting for me?
Not on its own. Ask Maddox can check availability and propose a meeting — who, when, how long and what about — after checking the slot, and nothing is booked until you approve it. If the time is already taken it says so with alternatives and offers nothing to approve, and if it could not check an Outlook calendar it says that too.
How are meetings assigned across a team?
Round robins distribute bookings across a group, and each rep’s own availability still governs which slots are offered.
Send yourself your own booking link.
It is the one page in this product a customer will judge you on.