Fresha automation
Reschedule or cancel a Fresha team member's appointments when they are out
A stylist texts at 7 am that they are ill, and their Fresha column is full for the day. Before the first client arrives, someone has to block the time, then go through every appointment and decide: same time with a colleague, another day, or a cancellation with the right reason.
Cotlet does it in your own Fresha account with list_team_members, list_appointments, find_available_slots, add_blocked_time, reschedule_appointment and cancel_appointment, called by your AI agent, an n8n workflow or a script.
Hosted · nothing to install or maintain
Official options
Can Fresha do this on its own?
Fresha has no public API for rescheduling or cancelling (checked 12 Oct 2026). Fresha's Dynamic Reassignment, announced in May 2026, moves online bookings made without a preferred professional to another suitable team member so in-demand slots can be sold; Fresha describes it for filling demand, not for covering an absence, and it never moves a booking where the client chose the team member.
By hand
How you do it in Fresha today
- Record the absence in Fresha under Team > Scheduled shifts: click Add, select Time off, choose the team member and Type of absence, set the dates, tick Approved and Save.
- Open Calendar in Day view, press and hold each of the absent team member's appointments and drag it to a colleague's column or a new time, then confirm in the window that shows schedule conflicts and client notification options.
- For a move to another day, open the appointment, select Actions (three dots) > Reschedule, browse the calendar for a slot and confirm.
- For clients who cannot be moved, open the appointment, choose Cancel from the Appointment status menu, pick a Cancellation reason, check the Payment policies, decide on the Notification and click Cancel appointment.
- The Fresha time off article does not say that adding time off touches the bookings already in the calendar, so every appointment is handled one by one, and a missed one is a client at the door with nobody to serve them.
With an agent
How to reschedule or cancel a Fresha team member's appointments when they are out
Prompt
Sam is sick tomorrow. Block his day, move his clients to another stylist at the same time where someone offers the service, and list the ones you could not place before cancelling anything. - 01
Close the gap first
The agent finds Sam with list_team_members and blocks his hours with add_blocked_time, titled with your absence type, so no new client books into the day while the agent works. Recording it as Time off under Team > Scheduled shifts stays a step for you in Fresha.
- 02
Build the list of affected visits
list_appointments for Sam and tomorrow returns the day. Appointments already Cancelled or marked No-show are skipped. Each remaining one is sorted by whether the services can go to a colleague at the same location, because Fresha cannot move an appointment to another location.
- 03
Same time with a colleague, else another day
For each client the agent runs find_available_slots for the same services without a team member filter and prefers a start at the original time. A same-time handover changes only the team member. If no colleague is free, it looks at Sam's next working days instead.
- 04
One plan, then one OK per change
Before any write the agent shows the full plan: who moves where, who goes to a later day, who cannot be placed. reschedule_appointment then runs per client after your OK, and a slot taken in the meantime sends the agent back to find_available_slots rather than retrying the same time.
- 05
Cancel last, with your reason
Only the clients you choose to cancel go to cancel_appointment, with a reason from your own Cancellation reasons list and notify_client on. For a repeating series the agent cancels this occurrence only unless you say otherwise.
What you get back
Example data
Blocked: Sam, Thu 15 Oct, 09:00 to 18:00 ("Sick leave")
8 appointments affected
Same time, new stylist: Anna Smith 10:00 Haircut to Priya, Leo Grant 11:30 Beard trim to Tom, Ruth Diaz 15:00 Blow dry to Priya
Moved to Sam, Sat 17 Oct (asked for Sam only): Ivy Chen 10:00 Colour, Omar Haddad 13:00 Haircut
Cancelled after your OK, reason "Team member unwell", client notified: Dan Mills 17:00 Balayage (no 3 h slot this week)
Not touched: Mark Ellis 12:00, already cancelled by the client Other ways to ask
- Priya is on holiday from 20 to 24 October. Move her bookings to Tom where he offers the service and give me the rest as a list.
- We close at 3 pm today for a staff meeting. Move every appointment after 3 pm to tomorrow, same team member.
- Sam is out Thursday. Do not change anything yet, just tell me which of his clients could go to a colleague at the same time.
- Cancel all of Sam's appointments on Thursday with the reason "Team member unwell" and notify the clients.
Before you automate it
What Fresha allows, and what to know first
- Fresha sends no client notification when a reschedule leaves the start date and time unchanged, so a same-time handover to a colleague reaches the client silently unless you tell them.
- Fresha cannot move an appointment to a different location; the help center says to cancel it and book again at the new location.
- Fresha keeps the payment policy attached to a rescheduled appointment, so a client who paid upfront does not pay again, while cancelling an upfront-paid appointment asks you whether to refund or keep the deposit.
- Fresha cancels only appointments dated today or later, and a past visit can only be marked as a no-show, which keeps its reports accurate.
- Fresha does not let a client cancel an upfront-paid appointment online, so that client has to contact you, while a card-confirmed client can cancel online and pay any applicable fee.
reschedule_appointment and cancel_appointment ask for your OK by default. To run it on a schedule without you, switch confirmation off for those tools in your dashboard.
Sources: Fresha Help Center: Reschedule appointments · Fresha Help Center: Cancel appointments · Fresha Help Center: Manage time off for your team · Fresha: AI-powered Intelligent Scheduling (Dynamic Reassignment)
REST
Call reschedule_appointment from a script
curl
curl https://cotlet.dev/api/v1/fresha/reschedule_appointment \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"appointment_id":"ap_90311301","start_at":"2026-10-15T10:00:00+01:00","team_member_id":"tm_5530"}' Example response
{
"appointment_id": "ap_90311301",
"status": "Booked",
"start_at": "2026-10-16T10:00:00+01:00",
"end_at": "2026-10-16T10:45:00+01:00",
"team_member": "Sam"
} MCP: add https://cotlet.dev/mcp/v1 with the same key; the tool is fresha_reschedule_appointment. Example data.
Schedule it in n8n, Make, Zapier or cronTools
Fresha tools this automation uses
| Tool | Parameters |
|---|---|
| list_team_members | location_id |
| list_appointments | from, to, status, team_member_id, client_id, location_id, cursor |
| find_available_slots | service_ids, date, team_member_id, location_id |
| add_blocked_time | team_member_id, start_at, end_at, title, description |
| reschedule_appointment | appointment_id, start_at, team_member_id |
| cancel_appointment | appointment_id, reason, notify_client, scope |
Frequently asked questions
Does Fresha warn me when a new time is outside a colleague's working hours?
Yes. Fresha shows a warning when the new time falls outside the team member's availability or a resource is already in use, and staff can override it. The agent treats that warning as a reason to ask you first.
Give your agent access to Fresha.
Free 7-day trial with 5,000 credits, no card needed. Cotlet is independent and not affiliated with Fresha.