A booking system for your website, connected to your calendar.
A booking system on your website means customers pick a free slot right on your site, and the system puts it in your calendar, sends them an invitation and lets you know who's coming and why. Appointments get arranged without phone tag or emails going back and forth, even in the evening when nobody is picking up the phone.
I'm Patrik Krajňák, a full-stack developer from Košice, Slovakia. I built the call booking on this website myself: it shows free times from my Google Calendar, creates a Google Meet link for every call and makes sure two people can't take the same slot at once. I build similar systems for companies that schedule consultations, service visits or other appointments with their customers, including setups with several staff members and rooms.
Ing. Patrik Krajňák, Full-stack developer, Košice
Who a booking system is for: consulting, repairs and services
A booking system pays off for any company whose customers need time with a specific person or at a specific place. Today it often goes like this: a customer calls, you can't pick up, you call back an hour later, the time doesn't suit them and the rest gets sorted out by email. With online booking, customers see the free slots straight away and choose one themselves.
These businesses get the most out of it:
- Consulting: accounting and tax firms, advisers and trainers who arrange an introductory call or regular meetings with clients, in person or over video
- Repairs and servicing: car, boiler, air conditioning or computer repairs, where customers pick a slot at the workshop or a technician visit and describe the problem right away
- Services: photographers, personal trainers, therapists, or rental of rooms and equipment, where you book both the time and the space
- B2B sales: a salesperson who wants to show a new customer the product without arranging the meeting over email
How it works
From a click to a slot in your calendar
- 1
Pick a time
Customers on your website only see times when you're actually free.
- 2
Checks
The system makes sure a person is booking and nobody has taken the slot in the meantime.
- 3
Into your calendar
The appointment goes into your calendar along with a video call link.
- 4
Invitation
The customer gets an email invitation they can accept with one click.
- 5
Details for you
You get an email with the customer's details, and the contact can go into your CRM.
How call booking works on pkrajnak.sk
You'll find the booking calendar in the contact section at the bottom of this page, and you can look at the free times without booking anything. It's a 30-minute introductory call on Google Meet. I built it myself, and it runs on the same principles I would use in your system:
- Free times are calculated from my working hours and my Google Calendar. Anything already in the calendar, such as a client meeting or a doctor's appointment, shows up on the website as busy, yet nobody can see what's in my calendar.
- Most Slovak public holidays are left out automatically, and calls can only be booked with some notice, so nobody surprises me with a 7 a.m. call they booked at midnight.
- Weekends can't be booked. Anyone who clicks a Saturday or Sunday can send me an email suggesting a time with one button.
- If you open the calendar in a different time zone, you also see your local time for each slot.
- After choosing a time, the visitor fills in their name, email, company and the topic of the call, and answers the question “How did you hear about me?”.
- Google then sends them an invitation from my address with a Google Meet link. They accept it with one click and the call is in their calendar.
- I get an email with all the details, and when I reply, the reply goes straight to the visitor.
Protection against spam and fake bookings
Every booking means Google sends an invitation from my email address. If someone wrote a script that kept booking over and over, it would send strangers emails in my name and fill up my calendar. That's why the booking has several layers of protection that a normal visitor never notices:
- Along with the free times, the page receives a digitally signed pass that can't be forged. A booking without one, with a fake one, or sent faster than a person could manage never reaches the calendar.
- The server checks again that the chosen time falls within working hours and is actually on offer, since a request doesn't have to come from the calendar on the page.
- One email address can only have one upcoming call at a time. If someone tries to book another, the page reminds them when their call is.
- The number of bookings from one network, per day and in total is capped. Colleagues from the same office fit in, but a script that keeps booking hits the limit before it can send many invitations.
- The system strips links and unusual characters from the name and company, because those go into the invitation. Nobody can use my invitation to send someone ads or a scam link. The topic of the call, which is free text, only reaches me by email.
- A booking that looks suspicious still goes through, but it's flagged in my email so I can check it before the call.
- I never store the visitor's IP address. To count bookings from one network, a one-way fingerprint is enough, and the address can't be worked out from it.
What happens when two people want the same slot
When two people click the same free time at the same moment, both bookings can pass the first check, because there's nothing in the calendar yet. With a simple form, you end up with two invitations for one slot and have to call one of them to say their booking doesn't count.
That's why my booking works in two steps. First it creates the call in the calendar, Google Meet link included, but without the guest, so Google doesn't send anything yet. Then it checks whether another booking for the same time has appeared in the meantime and uses the time recorded in Google Calendar to decide which came first. The second one is deleted, its author is told that someone has just taken the slot, and their calendar reloads with the current free times. Only the person who was first gets an invitation from Google.
If someone impatiently clicks the button twice, the booking is created only once and both clicks end with the same confirmation.
Freeing up a slot that's no longer needed matters just as much. When a visitor declines the invitation, the call stays in my calendar as a note marked as declined, but the time shows up as free again and the next visitor can book it. No email goes out to anyone.
Several staff members, rooms and Outlook
My booking handles one person and one type of call. A company with more people needs more, and I can build a booking system with options like these:
- Each staff member has their own calendar, and the customer picks a specific person or whoever is free first.
- Rooms, vehicles or equipment have their own calendars, so a booking only goes through when both the person and the room are free.
- Services can have different lengths, with a break between appointments, for example so a technician can get to the next customer.
- For repairs, the customer fills in the address and describes the fault, and can attach a photo, before the visit.
- The day before the appointment, the customer gets an email reminder with a link to reschedule or cancel it themselves.
- Each branch has its own opening hours and days off.
- Companies that work in Outlook get a connection to their Microsoft 365 calendars, and the video call is created in Microsoft Teams instead of Google Meet.
Booking data in your CRM and the question “How did you hear about me?”
A booking is often the first contact with a new customer, so it shouldn't get lost in an inbox. With my booking, I get an email with the name, company, topic and the answer to “How did you hear about me?”. Pult, my own CRM that I use every day and that pulls data from Gmail and Google Calendar, reads from it where the person came from.
For a small company, the answer to this question is a simple way to measure marketing. After a few months, you can see whether your customers come from Google, AI assistants like ChatGPT, recommendations or social media, and you know where to put your time and money. I describe how to measure where website visitors come from in more detail under SEO and GEO audit.
In your system, a booking can go straight into your CRM: it creates a new contact or matches an existing one, adds a task for the salesperson and, after the meeting, reminds them to send a quote. How I build CRMs is on the custom CRM page, and how booking connects to a company's other systems is on the system integrations page.
When Calendly, Reservio or Google Calendar is enough, and when to build your own
If all you need is for people to book time with you, don't have a custom system built. Ready-made services do the job, and you can try them out in an afternoon.
Google Calendar has appointment schedules with their own booking page and the option to add Google Meet. You can create them with an ordinary personal Google account, and some features require a Google Workspace or Google One subscription.
Microsoft Bookings comes with Microsoft 365 Business Basic, Standard and Premium. Its booking page is connected to Outlook, it creates online meetings in Teams and you can add colleagues to it.
Calendly connects to Google Calendar, Outlook or Exchange, checks them for busy times and adds new meetings to them. On the free plan you can connect one calendar.
Reservio is a Czech booking system for service providers such as beauty salons, wellness and fitness centres, medical practices and instructors. It has a free version, while SMS reminders and advanced staff management come with the paid plans.
A custom booking system makes sense when something has to happen in your other systems after a booking, or when you have rules a ready-made service can't handle. Typically in these cases:
- The booking should become a job in your service system or a task in your CRM right away, including details from the customer's contract.
- Only your existing clients may book, possibly each with a different range of services.
- You need to book a person, a room and a piece of equipment at once, and the ready-made service can't combine them.
- You want customer and booking data in one place with the rest of your company's data, not in yet another separate service.
- Bookings are part of a larger system with stock, attendance or production planning, like the ones I describe on the custom ERP page.
How much a booking system costs and how we start
The first call is free. You show me how you arrange appointments today, which calendar you use and what should happen after a booking. After the call, you get a specific price and delivery date, with the quote split into parts so you can choose which ones to start with. A combination often makes sense too: keep bookings in a ready-made service and only build the connection that moves the data into your CRM, if the service allows it.
A simpler booking setup for one person and one type of appointment, similar to mine, comes close in price to automating a single process, which usually starts at €500. A booking system for several staff members and rooms, connected to your CRM or jobs, is a system your company runs on every day, and I price it by scope. Running costs, meaning hosting and backups, range from tens of euros to the low hundreds a month.
Once you approve the quote or some of its parts, I'll build a free prototype so you can check that the booking works with your calendar before you make a final decision. You pay 20% when you order and the rest after handover. By default, I run the system on my own accounts for a monthly fee that covers hosting, backups and updates, and I always fix its bugs for free. Bookings contain your customers' names and email addresses, so before launch we sign a data processing agreement under Article 28 of the GDPR. Everything else is described in how we work together.
The booking can be a standalone page you link to from your current website, your email signature or your Google Business Profile, or part of a new website. How I build websites is described under website redesign.
Common questions
Do I need Google Workspace for a booking system?
No, my booking runs on an ordinary Google account and still creates a Google Meet link for every call. If your company works in Outlook and Microsoft 365, I'll connect the booking to those calendars and the video call will be created in Microsoft Teams.
What happens when a customer cancels?
The slot is freed up and the next customer sees it as available. With my booking, the visitor just declines the invitation in their calendar, and the call stays in mine only as a note. In your system, customers can also cancel or reschedule through a link in the email.
How do you prevent fake bookings and spam?
With several checks a normal customer never notices: a signed pass the page receives along with the free times, a check on the server and a cap on the number of bookings. The system strips links from names and company names, so nobody can use your invitations to send ads. We set the limits based on how many bookings a day you expect.
Can the booking system handle several staff members or rooms?
Yes, each staff member, room or piece of equipment can have its own calendar, and the system only offers times when everything the appointment needs is free. Customers pick a specific person or whoever is free first. If a simpler solution is enough for you, Microsoft Bookings and Reservio's paid plans also handle several people.
How much does a booking system for a website cost?
A simpler booking setup for one person comes close in price to automating a single process, which usually starts at €500, and a system for several staff members and rooms connected to a CRM is priced by scope. Running costs range from tens of euros to the low hundreds a month. You get a specific price and delivery date after the first call, which is free.
Where can I try the booking?
Right on this website, in the contact section at the bottom of the page. You can look at the free times without booking anything, and if you do book a call, you get a free consultation with me.
More services and projects
- Service Website redesign UX-focused website redesign: audit, clickable prototype, mobile speed, accessibility, SEO, GEO and lead tracking. My own site: SEO 100 in Lighthouse.
- Service Custom CRM A custom CRM puts clients, quotes and contracts in one database. For the tax firm DAU, I wrote the CRM's security layer and rebuilt its client portal.
- Service System integration I connect your website, online store, CRM and inventory to Pohoda, Money, KROS or ABRA Flexi, with retries, logs and error alerts. Usually from €500.
- Service Custom software development Custom software from Košice: ERP, internal systems, web and mobile apps, integrations. Experience at U.S. Steel and GymBeam. Free prototype before you order.
Contact
Tell me what you still do by hand.
A few lines about the process that slows you down or the system you need are enough. Within eight hours I'll get back to you on whether and how it can be built, and if it makes sense, we'll set up a short call.
Prefer email or phone?
patrik.krajnak.dev@gmail.com +421 950 625 466
I reply within 8 hours. Based in Košice, Slovakia (CET), working remotely
Calls on Google Meet: Monday to Thursday 7:00 to 20:00, Friday until 18:00. Weekends by arrangement.
I use your details only to reply and to arrange the call. Privacy policy