Cart

← All guides

Booking module · User guide

Customers book their own appointments

The appointment finder lets your customers pick a free slot themselves instead of writing back and forth. You define which appointment types exist and when bookings are possible; each staff member decides for themselves whether they take such appointments and which calendar they land in.

Only genuinely free times are offered. A private appointment in a calendar blocks just as much as a customer appointment, and a customer never learns why a slot is missing.

The public appointment picker
The public appointment picker
Free times only busy slots are never offered
Two lines embedding it in your own website
Three places what, when and who — set separately
Into the mailbox every booking also becomes a ticket

Three places, three questions

The settings deliberately sit in three places, because they answer three different questions and belong to three different people:

PlaceQuestionWho decides
Manage → Appointment finderWhat is offeredan administrator
Settings → Office hoursWhen bookings are possiblean administrator
Your Profile → Appointment finderWho takes appointmentseach person, for themselves

The third is the important one. Which appointment types exist is set by the administration — whether you personally take them and which of your calendars a booking lands in is your decision. The same principle as the calendar sharing next to it.

On the same page you also find your own booking page: a sentence about yourself, the direct link and the two lines for your website. Photo and name come from your FreeScout profile; they are not kept a second time here.

Appointment types

An appointment type describes an occasion: name, description, duration, place. Plus three settings that leave the calendar alone:

Gap before and afterCounted as busy, but not written into the calendar. Your calendar should show the half hour that was agreed, not three quarters nobody promised.
Notice periodHow close to the appointment a booking is still allowed.
WindowHow far into the future the calendar is open at all.

Every appointment type gets its own public address under /termin/{name}. And you decide whether a specific person is responsible or whether the customer may choose «anyone» — who actually takes the appointment is then settled at booking time against a fresh availability check.

Office hours

The default is Monday to Friday, 08:00–11:45 and 13:15–17:30. A weekday you leave empty is a closed day.

Individual people can have their own hours. Where those exist, they replace the general hours for that weekday entirely — they do not add to them. That is the rule people otherwise get wrong.

What blocks a slot

Everything below is subtracted from the office hours before a single time is offered:

SourceEffect
An appointment in any of the person's calendarsthat time is busy
Travel time on an appointmentthe time before it is busy too
A recurring seriesevery occurrence in the window
All-day entriesthe whole day
Another booking through this modulethat time
Gap before and after on the appointment typecounts as busy
Public holiday from the HR modulethe whole day
Holiday request, approved or pendingthe whole range
Absence, approved or pendingthe whole range

That a pending request counts like an approved one is a decision, not a deduction: a customer appointment falling into a holiday approved a day later is harder to clean up than a slot that went unoffered while a request was open. A rejected request blocks nothing.

The customer learns none of this. A missing day is simply missing — whether a public holiday, a full calendar or somebody's absence is behind it is nobody's business from outside. An absence is a fact about a person, not about an offer.

Embedding it in your own website

Two lines, wherever the appointment finder should appear:

  • An empty element as the place, for example <div id="terminfinder"></div>
  • Plus the script widget.js from your installation, with data-type for the appointment type and data-target for the place

Leave out data-type and the visitor chooses from all public appointment types. Leave out data-target and the finder renders exactly where the script tag stands — then it is one line. The exact two lines for your installation are ready under Your Profile → Appointment finder.

It is not an iframe. The finder grows with its content, brings no second scrollbar and takes your site's colour through the CSS variable --latf-accent. Conversely nothing from your page can reach into it: font, size and spacing are all stated explicitly, because the finder cannot know where it lands.

Prices

An appointment type is either free of charge or points at a Bexio article. It carries no price of its own — that would be a second place for the same number, and the day someone edits the article the finder would go on promising the old price.

Free of charge has to be stated explicitly and is not deduced from no article being set. «No article configured» and «free of charge» are different statements: one is a gap in the setup, the other a decision.

If the article carries a tax rate, the gross price is shown and labelled as such. If it does not, the price is shown as it stands on the article — with no claim about whether tax is included. Anything else would be guesswork, and one does not guess at prices.

What a booking creates

In order, and each step guarded on its own:

  • The record in the database. First, because this is where the guard against double bookings sits: if two people click the same slot in the same instant, one gets the appointment and the other gets a message.
  • The calendar entry, in the calendar the staff member chose. Only after the record, because a calendar entry without a record would be an appointment nobody can cancel.
  • The kMeet room, if the type is a video meeting — under that person's Infomaniak account, because that is where the appointment happens.
  • A ticket, so the booking turns up in the normal workflow and not only in a calendar nobody watches.
  • The confirmation email, with the link, the price and a cancellation address that works without an account.

The last three steps never take the appointment down with them. A booking that failed because Infomaniak was unreachable would be the worse side of the mistake. If the room fails, the confirmation says so explicitly — otherwise someone waits at the agreed time for an address that never arrived.

Worth knowing

The Calendar module is required

Availability, the target calendar and the kMeet connection all come from there. Without the Calendar module the appointment finder cannot work.

HR, Bexio and the customer portal are optional

Without the HR module there are no public holidays, holidays and absences — then they simply block nothing, and nothing else changes. Without Bexio there are no chargeable appointment types. With the customer portal module the same appointment types are also offered to signed-in customers, from the same availability calculation and with their identity already known.

A cancellation cleans up in the right order

When cancelling, the Infomaniak entry is removed first and the appointment deleted after. The other way round the entry's identifier would be gone before anything could clean it up — and it would sit in that person's calendar forever.

Not getting anywhere with this? Support

Good to know

Frequent questions

Everything you should know about our modules, licences, updates and support before you buy.

Why does my purchased FreeScout module show an expiry date?

With your purchase you get the module plus twelve months of support, security updates and new features. The expiry date shown refers to those included services — not to your right to use the module at all.

What happens when my licence expires?

The module you have installed keeps working. Once the licence has expired, though, no new security or feature updates arrive and the included support can no longer be used.

You decide for yourself whether to renew the licence or to keep using the installed module without further updates, at your own responsibility.

Others promise lifetime updates. Why don’t you?

Technologies, security requirements and dependencies keep changing. What works reliably today can be outdated or unsupported tomorrow. Good software therefore needs continuous care, testing and development.

Rather than tie you to a permanent subscription, we leave you the choice: renew your licence, or keep using the installed module without further updates, at your own responsibility.

Do I need your LaStore module?

No, but the LaStore module connects your FreeScout instance with the modules you bought, and it brings several advantages:

  • installation with one click
  • automatic detection of available updates
  • easy updating right inside FreeScout
  • verification of the package signature
  • protection against module packages altered or tampered with unnoticed

Our modules do not use the normal update process, because it is not secure. The LaStore module verifies each of our modules before updating. An attacker therefore cannot deliver forged, dangerous updates. Without this module the verification is up to you, and it is a manual process.

without LaStorewith LaStore, autopilot offwith LaStore, autopilot on
learns about new versionsnoyes, dailyyes, daily
installsby hand from the portalat the press of a buttonovernight, without you
verifiedby you, via shasum -a 256yesyes
Do I really get the complete source code?

Yes. Our modules are provided under the AGPL-3.0 licence. The module as delivered contains the complete source code, which you can inspect and adapt within the terms of that licence.

On how many FreeScout instances may I use the module?

One licence covers one active FreeScout instance. Two free server moves are included on top of that.

If an old server is no longer in use, the system releases its activation automatically after 90 days. An instance that is unreachable or already deleted is therefore not counted against your licence for good.

Can I return a module I bought?

You have a 14-day right of return. It ends as soon as you activate the module — not already when the licence key is delivered to you.

So activate the module only once you have finally decided to use it. For consumers in the EEA, the statutory provisions on the right of withdrawal for digital content apply in addition.

Who issues my invoice?

Payment is handled by Paddle. Paddle acts as Merchant of Record and therefore as the seller. That is why Paddle appears as the issuer of the invoice, and possibly also as the payee on your card or bank statement.

Does a module need other FreeScout modules?

That depends on the product. Some modules work entirely on their own and offer additional features when other modules are present. Others have hard dependencies.

The slot finder, for example, strictly needs the Calendar module, because the available appointments are worked out from the calendars kept there.

Required and optional dependencies are stated on each product page.

What can I do if something doesn’t work?

We test our modules carefully. Even so, a feature may not behave as expected in a particular environment.

Every module comes with a detailed guide. If that does not get you any further, you can open a support ticket. Describe the problem briefly and the steps you have already taken — we are glad to help.

Pay securely, worldwideYour payment is handled securely by Paddle. You can pay from anywhere in the world, comfortably in your own currency — proper invoicing included.
Open, auditable, adaptableThanks to AGPL-3.0 you get the complete source code. You can audit the software, adapt it yourself and keep running it independently.
Two server moves includedYour FreeScout instance is moving? You can transfer your licence to a new server up to twice, free of charge, and keep using the module there.
Install once, stay current by itselfWith our LaStore module for FreeScout you install what you bought with a single click. Available updates are checked and installed automatically.

Play video

Playing establishes a connection to YouTube.

View image