Skip to main content

Memberships reserve visits, duplicating checks for a free slot, calendar invites in emails

· 8 min read
Venelin Iliev
Founder & CTO @ Reservation.Studio

Memberships reserve visits, duplicating checks for a free slot, calendar invites in emails

This update stops clients from booking more appointments than their membership covers, makes bulk duplicating of appointments safe, and adds a calendar invite to appointment emails. Plus support for a new fiscal printer and several fixes for everyday work.

✨ In short

  • A booking paid with a membership now reserves a visit at the moment of booking. The membership shows a yellow "1 reserved" / "2 reserved" tag.
  • During online booking the client sees "3 visits left (1 reserved)", and a membership with no free visits is no longer offered as a payment method.
  • "Duplicate by date" now checks every selected date for a free slot and offers ready "Different time" and "Different employee" options in one click.
  • Appointment emails to the client now carry a calendar invite — the client adds the appointment to their calendar, and the invite updates itself when the appointment is moved or cancelled.
  • Blocked time is no longer skipped during online booking when an employee has overlapping working-hour rows.
  • Client and employee photos are now cropped by you before upload, through "Crop photo".
  • The desktop application now works with Datecs cash registers too — DP-05, DP-25, DP-35, WP-50 and DP-150.
  • API keys can now give external systems access to appointments and clients.
  • Notification templates now have a variable with the employees' names, and dates in employee notifications are written in their own language.

🎟️ Memberships: visits reserved by upcoming bookings

Until now a membership visit was only counted at the sale. Between the booking and the payment the membership looked freer than it was, and a client could book more appointments than the membership covers.

Now the booking holds the visit from the moment it is made:

  • In the issued memberships list, in the membership itself and in the visits view you see a "1 reserved" / "2 reserved" tag with the explanation "Reserved by upcoming bookings, not yet charged".
  • The usage history shows "Reserved" rows with a button that opens the appointment holding the visit.
  • The hold is released on its own when the booking is cancelled, marked as a no-show, deleted or paid.

The counters for used visits do not change — reserved visits are shown separately, because they have not been charged yet.

You can see them in Issued memberships.

🛒 Online booking: how many visits are really left

During online booking the client now sees the exact availability before choosing how to pay:

  • the payment choice reads "3 visits left (1 reserved)";
  • a membership whose remaining visits are already reserved by upcoming bookings is not offered;
  • in the booking itself the client sees which membership will pay for it — "With membership ...".

This way a client cannot book against a membership that no longer has coverage.

🔁 "Duplicate by date" now checks for a free slot

Until now "Duplicate by date" created the new appointments with the same employees and resources, without checking whether they were free. Now every selected date is checked:

  • you pick the dates in a full month calendar where every date is coloured by its state — the legend shows "Original", "Conflict" and "Moved";
  • while the check runs you see "Checking availability…", and for a busy date — "No free time on this date";
  • a date with a conflict shows "Free options — apply with one click" with "Different time" and "Different employee" suggestions; pick one and the row is fixed;
  • if the suggestions do not suit you, open the full search for free slots;
  • after a change you can return to the initial choice with "Restore original";
  • if you pick the same date and time twice, the system shows "Another selected entry has the same date and time." and blocks creation;
  • you can duplicate to at most 31 dates at a time.

If availability changes while you are reviewing, on save you see "Availability changed. Review the warnings and try again." and confirm explicitly.

note

"Duplicate by date" now requires the permission to create appointments. An employee without it will not be able to duplicate.

The action itself is described in Appointment actions.

📅 Calendar invites in emails to clients

Appointment emails to the client now carry a calendar invite:

  • for a created, changed or confirmed appointment and for the reminder before the appointment, the client adds it straight into their own calendar;
  • when the appointment is moved, the entry in the client's calendar is updated instead of duplicated;
  • when the appointment is deleted or cancelled, the client receives a cancellation and it disappears from their calendar.

You do not need to change your notification templates — the invite is attached automatically.

⛔ Blocked time is no longer skipped during online booking

When an employee had overlapping or repeated rows in their working hours, blocked time could still show as a free slot during online booking and a client could book into it.

Now overlapping rows are merged before blocked time is applied, and it is respected everywhere — in the grid of free slots, when creating and when moving an appointment.

Check your settings in Blocked time.

🖼️ Photos: you choose what is visible

Until now the photo was cropped automatically in the middle, and on a portrait photo the face was often left out of frame.

Now, when adding a photo to a client, an employee or your own profile, you first choose "Add a photo" and then "Take a photo" or "Choose from gallery". "Crop photo" then opens with the hint "Drag the photo and zoom so the face fits inside the circle." — you move the photo, zoom with "Zoom in" and "Zoom out" or with the keyboard arrows, and upload exactly what you saw.

Uploaded photos are also shown more sharply than before.

🧾 Fiscal devices: now Datecs too

The desktop application now also works with Datecs cash registers, alongside the existing Daisy devices:

  • Datecs — DP-05, DP-25, DP-35, WP-50 and DP-150;
  • Daisy — the devices that work with the Daisy computer connection protocol, for example Compact M.

The device is detected automatically when you scan — the list shows the manufacturer and the model. Support was verified on a real Datecs DP-150 for reading the status, a non-fiscal receipt, a fiscal receipt with a discount and its storno.

To connect the device, switch it into computer connection mode. On Datecs, select the "PC connection" mode from the device menu. On the DP-150 each operator's password matches their number, and operator numbers run from 1 to 30.

The steps are described in Fiscal devices and fiscal printing.

🔌 API keys: access to appointments and clients

In "API keys" you can now grant an external system the rights to:

  • "View appointments list" and "View appointment";
  • "Reschedule appointments" and "Delete appointments";
  • "Change participant status (cancel / no-show)";
  • "View clients list" and "View client".

Every right has a short description of exactly what it allows. Existing keys keep working as before.

warning

The rights to reschedule, delete and change a participant's status modify appointments that already exist. Grant them only to systems you trust, and create a separate key with fewer rights when access should be limited.

The consequences of each of these rights are described in API keys and external system access.

✉️ Notifications: employee names and dates in the right language

  • Appointment notification templates now have an :appointment_employees_names variable — "Displays the names of the assigned Employees separated by commas". It is available in every appointment notification type and you can add it wherever you need it.
  • Dates in notifications to employees are now written in the employee's language. Until now they came out in English regardless of the selected language.

Existing template texts have not been changed. You can use the variable from Templates.

🛠️ Fixes

  • Typing a date with the keyboard in date and time fields now works correctly. With a day.month.year format, typing 14.05.2026 was saved as 14.05.1906.
  • The sale screen no longer stops working when a payment has no recorded collector.
  • Recurring appointments with a package now keep the package link. Until now the copies were created as standalone services and lost the package price.
  • The appointments report by referral source no longer counts deleted and hidden appointments in the totals.

✅ What to do

  1. Open Issued memberships and check the "reserved" tag on memberships with upcoming bookings.
  2. Next time you duplicate in bulk, use the free-slot check in "Duplicate by date" and review the suggestions on a conflict.
  3. Check that your employees have the permission to create appointments if you expect them to duplicate appointments.
  4. If you use a Datecs cash register, connect it following the steps in Fiscal devices and fiscal printing.
  5. Review the rights of your existing API keys in API keys before granting the new rights to an external system.