# Calendar and booking: appointments where the work already is

> A booking link that knows your real calendar, availability that survives daylight saving, and a confirmed appointment that lands in your calendar with a proper invite. On the same records your CRM and projects already use.

Source: https://www.cordango.com/calendar/
Language: en

CALENDAR & BOOKING

# Business is appointments. So the calendar is not an add-on.

A booking link people outside your company can use, availability that is actually correct, and a confirmed appointment that lands in your calendar with a proper invite. Running on the same people and companies every other app in the workspace uses.

[How availability works →](https://www.cordango.com/calendar/#availability) [Who can see your calendar →](https://www.cordango.com/calendar/#privacy)

/book/mara-intro The visitor’s page

 [![A Cordango booking page showing the host, the meeting description, a duration switch for 15, 30 and 60 minutes, a timezone selector set to Europe/Berlin, a month grid with bookable days marked, and the free times on the selected day.](https://www.cordango.com/assets/capabilities/calendar-booking-page.png)](https://www.cordango.com/assets/capabilities/calendar-booking-page.png)

## The booking tool knows nothing about your business.

— the problem

Scheduling is sold as its own product, so it arrives knowing your free time and nothing else. It has never heard of the customer, the deal, the project or the person who owns the relationship, and it cannot be told, because those live somewhere it has no reach into.

So the appointment happens and the record does not move. Somebody retypes it later, or nobody does.

-   SAME One people directory, one company list, one calendar
-   LINK A public booking page per person, on your own workspace
-   REAL Busy means busy, read from the calendar rather than guessed
-   OPEN Bring the calendar you already keep, one way, no account

Scheduling · as bought Per seat, per tool

\# booking a call with a customer, today 1 the booking link → a separate product, separate login 2 the customer → in the CRM, which the link cannot see 3 the appointment → in Outlook, which the CRM cannot see 4 the follow-up → in somebody’s head ✗ three subscriptions and nothing knows the other two

## Availability that survives the awkward cases.

— the engine

Mornings and afternoons on a weekday, a short Friday, nothing at the weekend, and the days you are closed. Two windows a day is the ordinary case and it is the one most tools make you fake with a second link.

A holiday is not the absence of a rule, it is a rule that says closed. That distinction is why exceptions exist here rather than being expressed as a gap you hope nobody books into.

-   WINDOWS Several bookable windows per day, not one block
-   CLOSED Dated exceptions, including closed all day
-   NOTICE A minimum notice and a horizon, both yours to set
-   LENGTH Offer 15, 30 and 60 minutes and let the visitor choose

## Four things that are easy to get wrong, and are not.

None of this is visible when it works, which is exactly why it is worth saying. Every one of these is a real defect in something you have used.

BUFFERS 

### A buffer protects your time, not the visitor’s

Ten minutes either side of a meeting means ten minutes kept clear around the existing one. It does not quietly shorten the half hour the visitor was offered, which is the naive implementation and the annoying one.

DAYLIGHT SAVING 

### A clock change costs you nothing

Days are walked in the page’s own timezone rather than by dividing the year into 24-hour blocks, so the day the clocks move neither gains nor loses an hour of availability. A time inside the spring gap is pushed out of it, and an ambiguous autumn time takes the first pass through the repeated hour.

ABUTTING 

### Ten o’clock is free at ten o’clock

A meeting that ends at 10:00 does not block 10:00. Touching is not overlapping, and treating it as such is how a calendar loses an hour a day to arithmetic.

THE QUERY STRING 

### Nobody books four hours

A requested length has to be one the page offers. Asking for one it does not is refused rather than clamped to the nearest, because a silent clamp is a booking neither side agreed to.

## The week you actually have.

— and what it blocks

Appointments carry how they show, and the booking page reads it. A focus block marked out of office closes the morning. A lunch marked free does not, because you are willing to move it.

Every confirmed booking becomes one of these. The visitor is added as an accepted guest, because they already answered by clicking, and cancelling the booking cancels the appointment without any code in between.

-   SHOW Busy, free, tentative or out of office, honoured by the booking page
-   WRITE A confirmed booking writes a real appointment, in the same transaction
-   GUEST The visitor lands on it as an accepted guest
-   SAFE A write-back that fails is recorded, never hidden behind a false confirmation

core\_calendar · my day Week

 [![A week in the Cordango calendar showing a standup, two customer meetings, a design review, a focus block marked out of office and a lunch marked free, colour-coded by how each shows.](https://www.cordango.com/assets/capabilities/calendar-week.png)](https://www.cordango.com/assets/capabilities/calendar-week.png)

## What happens when somebody books.

A stranger on the public internet is asking to put something in your calendar. Every step here exists because of that sentence.

1 

#### They pick a time

The page shows the owner’s hours in the visitor’s own timezone, changeable on the page, because somebody booking from a hotel room is not in their laptop’s zone.

2 

#### The slot is taken under a lock

A database lock on that page and that instant, re-checked inside the lock, with a unique constraint behind it. Two people clicking the same slot at the same moment get one booking and one honest refusal.

3 

#### They confirm by email

The link is single-use, hashed at rest and good for a day. This is the anti-abuse measure: it costs a spammer a working mailbox per booking, and it means typing somebody else’s address cannot put a meeting in their calendar.

4 

#### The appointment is created

In the calendar the page targets, or the owner’s default. Every confirmed booking lands somewhere rather than depending on a field somebody remembered to set.

5 

#### The invite arrives

A second mail carrying invite.ics as both a calendar part and an attachment, so Outlook and Gmail draw the accept buttons and every other client can still open it. Stable identifier, so a later change updates the entry instead of adding a second one.

The owner is deliberately not mailed. It is in their calendar, which is where they were going to look.

## Your calendar is yours.

— including from us

You see a calendar if you own it or its owner shared it with you. You see an appointment if you can see the calendar it is in, or you are a guest on it. Sharing is read-only by construction, so it cannot quietly become co-authoring.

There is no administrative bypass. Not for the workspace admin, not for platform staff, not for us. We should say what that costs rather than only what it buys: an admin cannot repair a colleague’s broken appointment, and nobody can answer “why is that slot blocked” on somebody else’s behalf.

It is enforced in the one place every read goes through, which is why a count cannot leak what a list would not show. A missing appointment answers not found rather than forbidden, because forbidden is an answer.

-   OWN Own it or be shared it. There is no third way in
-   GUEST A guest sees the appointment they are on, and nothing else
-   READ Shared means read. There is no flag that turns it into write
-   NONE No admin override exists, by design and at cost

## Bring the calendar you already keep.

— one way, on purpose

Subscribe to the published address of an Outlook, Google or Apple calendar and its appointments arrive as real busy time, so the booking page stops offering the hour of your Monday standup. It is polled every quarter of an hour, expanded in our own process, and no account is connected and nothing leaves the platform.

A calendar of birthdays and public holidays does not make you unbookable for a year, because a feed that marks its entries as free is read as free. And a feed too large to read whole is refused rather than truncated, because a short calendar looks like free time.

This is one way and says so. Writing back into somebody else’s calendar needs a connection, a credential and a different failure model, and that work is on the roadmap rather than half-done here.

-   ICAL Any published .ics address, no account and no cost
-   FRESH Polled every 15 minutes, with the error on the calendar row
-   FREE Entries marked transparent do not block you
-   WHOLE Too big to read whole is refused, never silently cut short

Microsoft 365 and Google, in both directions, are in build. [See the roadmap →](https://www.cordango.com/roadmap/)

## What it does not do yet.

Said here rather than discovered later. A page that lists only what works is a page you cannot plan against.

NO SYNC 

### It does not write to Outlook or Google

Feeds come in. Nothing goes out. A meeting link is a field you paste rather than one we mint, because a Meet link cannot exist without creating the Google event, and that is a connection we have not built yet.

NO RESCHEDULE 

### A visitor cannot move a booking

Once it is confirmed, changing it is a conversation. Cancelling and rescheduling from both sides is scoped and next, and until it ships this page will not pretend otherwise.

ONE OWNER 

### A page belongs to one person

Busy is computed from that person’s calendar. There is no round-robin, no team page and no collective availability, so a shared inbox for a support rota is not what this is.

MORE

## Further reading

-   [**Organizations** One record for every company you work with](https://www.cordango.com/organizations/)
-   [**People** One shared record for everyone you work with](https://www.cordango.com/people/)
-   [**Shared context** People and company data stay consistent](https://www.cordango.com/company-graph/)
-   [**Platform foundation** The company foundation underneath every app](https://www.cordango.com/platform/)

NEXT

## Put your booking link on your own workspace.

Bring the hours you actually work and the calendar you already keep, and we will set up a page you can send to a customer the same afternoon.

[See Cordango in action →](https://www.cordango.com/contact/) [How the company record works →](https://www.cordango.com/organizations/)

About 30 minutes, on a real company platform
