One booking link for the project. Not one per person.

Scheduling tools attach the link to a human being. That is fine until the human being goes on holiday, changes team, or leaves — and then the link on your README books time with somebody who no longer works on the thing. Kontacts attaches the link to the project instead. The URL outlives whoever set it up.

The link is a project, so the project owns the availability

A booking page here is published under the project: the URL reads /book/your-project/intro-call, and it stays exactly that whatever happens to the people behind it. Availability is the team’s, not one person’s — you describe the hours the project can be reached and anyone on it can take the slot.

Put the link in the README, in the docs footer, in an email signature, on a conference slide. You will not be editing it again in six months.

Describe the hours once; the page does the arithmetic

A meeting type is the thing you publish. You give it a title, a duration and a URL name, then add windows to the week — Monday 09:00 to 12:00, Thursday 14:00 to 18:00, as many as you need. Four more numbers shape what the page offers:

  • a buffer after each meeting, so nothing lands back-to-back;
  • a minimum notice, so nobody books you for eleven minutes from now;
  • a horizon in days, so your calendar is not open until Christmas;
  • the time zone the hours are written in — and daylight saving is resolved instant by instant, not by adding an hour to everything and hoping.

Block a date range when the team is away and it disappears from the page, for one meeting type or for all of them. A meeting type stays private until you activate it, so you can build it in peace.

What the person booking actually does

They open the link. They see the days with something free on them, pick a time in their own time zone, and give a name, an email, and anything they want the host to know. That is the whole interaction — no account, no back-and-forth, no “does Tuesday work for you”.

They get a confirmation email with a calendar invite attached, so the meeting is in their calendar as soon as they close the tab. If the host added a meeting link — Google Meet, Zoom, or any URL — that link is in the confirmation and on the invite. The project gets its own notification of the booking, and both are recorded on the project’s mail history alongside everything else that came in.

If two people reach for the last slot at the same moment, the second one is told the slot just went and is shown what is left. Nobody gets double-booked.

When plans change

Every confirmation carries a private cancellation link, so the person who booked can drop the meeting without emailing anyone to ask. The project side can cancel too, from its own Calendar in the dashboard. Either way the other side is told, and a calendar cancellation goes out so the slot clears from their calendar as well as from yours.

What this is not

It is not a calendar application. Project weekly hours are the source of truth. You can optionally connect your Google Calendar so times you are already busy disappear from the public booking page — a mask, not a second calendar. If that connection fails or has never synced, the page keeps offering the project’s hours and Calendar settings says so. It will not tell you what your Tuesday looks like, and it is not a replacement for the calendar you already keep.

The other half is a mailbox

Kontacts gives a project two ways to be reached, and the booking page is the second one. The first is a real email address at your own domain, arriving in a shared project inbox. Turn routing on and mail to the addresses on your list opens a GitHub issue — or every address at the domain, with the optional catch-all on. Mail that fails sender authentication is held in the inbox and marked quarantined instead. Same project, same team, one place to look.

What it costs

Signing up puts you on Free: no card, and a booking page for each of your 2 projects, since the link belongs to the project rather than to a person. Indie Hacker raises that to 10 projects for $8 a month, billed per organisation rather than per seat. Nobody is moved onto a paid plan by silence.