It is Sunday evening, and someone with a sore shoulder finally decides to do something about it. They find your website, like what they read, and tap “Book now”. A new page opens on a different address with a different look. They pick a service, pick a physiotherapist, and land on a calendar where every day looks equally open. They tap Tuesday: nothing. Wednesday: nothing. Thursday has one time, at 7:30 in the morning. By Friday they have closed the tab and decided to call on Monday, if they remember.
Two things went wrong there, and neither was the patient's fault. Your website, the page you paid for and keep up to date, could only send them somewhere else. And the calendar made them guess. We have just fixed both.
A calendar that answers before anyone clicks
On the “Pick a date and time” step of your booking page, every day of the month is now coloured before the patient chooses one. Green means there are times open. Amber means three or fewer are left. A day with nothing to book is greyed out and struck through, and it cannot be picked at all.
A small legend under the calendar explains the colours, and hovering over an amber day says exactly how many times are left. If a whole month is booked out, the calendar says so and offers a “Check next month” link, instead of leaving the patient to flip through it day by day.
The colours are only useful if they are right, so they are worked out from the same rules as the list of times the patient sees next. That means the provider's working hours, their days off and custom-hours days, the buffer between appointments, their daily cap, how far ahead patients may book, and any weekdays you have closed to online booking. A green day won't open onto an empty list. Times that have already started do not count, and “today” is today in your practice's time zone, not the patient's.
The colours are worked out for the service and provider the patient has chosen, so a 90-minute assessment and a 30-minute follow-up can colour the same day differently. If the colours ever fail to load, every future day simply shows as plain and pickable, the way it did before. Booking never depends on them.
Your website can take the booking itself
The second fix is for the dead end. The booking widget puts your whole booking flow on your own website, in the middle of whatever page you choose: your home page, a treatments page, a page for one physiotherapist. The patient never leaves your site.
genko:booked { paymentRequired: false }
It is the same flow as your patient portal, with the same five steps: service, provider, date and time, details, and confirm. It carries the same accent colour and the same coloured calendar. Each step is a different height, so the widget resizes itself as the patient moves through it. There is no inner scrollbar and no blank gap at the bottom of your page.
You can also preselect a service, a provider or both. Choose both and the widget opens straight on the calendar, which is ideal for a page about one treatment or a button on one provider's profile. Choose only a service and the patient starts by picking a provider.
Two parts of the flow open in a new tab on purpose. Signing in to an existing patient account happens on your portal, not inside your website. And if a service needs payment upfront, the widget holds the time and opens the secure payment page in a new tab, because payment pages refuse to load inside another site. The appointment is confirmed once it is paid.
The widget always runs signed out. Even if a visitor is signed in to your portal in another tab, the widget never acts with that login, so nobody can trick a signed-in patient into booking from a page they did not mean to use.
A book button for everywhere else
Not every place you reach patients can hold a booking flow. An email signature can't. A link-in-bio page can't. Some website builders will only let you add a button. For those, there is the book button: a styled link that opens your booking page in a new tab.
You choose the text, the button colour and the text colour, a solid or outline style, a square, rounded or pill shape, and three sizes. You also choose whether it opens the English or the Spanish version of your booking page, which is handy if you write to some patients in each language. The colour starts as your portal's accent, so it matches from the first click.
The button is a single <a> link with its styles written into it. There is no script and no stylesheet to load, which is why it looks the same wherever you paste it. If you only need the address, the direct link is there too, ready for a text message, a QR code or a social profile.
Built from one panel, with a live preview
All three are set up in Settings → Integrations → Scheduling → Online booking. Pick any service or provider to preselect at the top, then switch between the booking widget, the book button and the direct link. Whatever you preselect applies to all three.
The button preview is drawn from the exact code you copy, so what you see is what you get. The widget tab shows the real booking flow running live. That means appointments made in the preview are real, so use a test patient if you want to try it end to end. When you are happy, copy the snippet and paste it into your site:
<div data-genko-book="lakeside-physio"></div>
<script src="https://www.getgenko.com/book.js" async></script>
// optional: count bookings in your analytics
<script>
document.querySelector('[data-genko-book]')
.addEventListener('genko:booked', () => {
window.dataLayer?.push({ event: 'genko_booked' })
})
</script>That is the whole installation. Every time a patient books, the widget fires a genko:booked event on its container, which you can forward to your analytics if you want to know which page brings in bookings. The event carries no patient information, only whether payment is still due.
Some website builders strip out scripts from anything you paste. For those, tick “My website builder removes script tags” and you get a plain iframe instead. It works the same way, but it has a fixed height and does not fire the booking event. The booking widget guide has the details for both.
What you need, and what to expect
Online booking from your own website is included from the Solo plan up. The widget, the button and the link all open your patient portal's booking flow, so the portal has to be turned on. If it isn't, the panel tells you and links straight to the portal settings. Owners and admins can see the panel.
The widget shows exactly what your public portal already shows: your services, your providers and your open times. Nothing more is exposed by putting it on your website. On Solo and Starter, the widget carries a small “Scheduling by Genkō” line at the bottom; from Group up you can hide it, just as on the portal.
Check pricing for what each plan includes.
Let patients book on your website, and show them when you're free.
The coloured calendar is on every Genkō booking page. The booking widget, the book button and the direct link take a few minutes to set up from Settings → Integrations, on the Solo plan and up.
Read the booking widget guide →