---
title: Moving and cancelling visits
summary: A visit is confirmed, moved, cancelled with a reason, closed or deleted as a whole. A move is all or nothing, a cancellation keeps the visit in the client's history, and deleting asks twice.
tools: [talemo_confirm_visit, talemo_move_visit, talemo_cancel_visit, talemo_complete_visit, talemo_update_visit, talemo_delete_visit]
related: [visits, finding-times, visit-notices, resource-schedule]
search: [reschedule, cancel appointment, no-show]
---

# Moving and cancelling visits

Every change of a visit takes `dry_run` in the tools: the answer is the visit as it
would be, and nothing is saved. A change always applies to the whole visit.

## Confirm

**Confirm** turns a booked visit into a confirmed one. Confirming it again gives the
same result. It is a person's mark; it sends nothing to the client (see
[Visit notices](visit-notices.md)).

## Move

**Move** takes the visit to another start, and optionally to other resources, for
example another master. Everything the visit takes moves together. The new time goes
through the same checks as a booking: on the booking step, in the future, inside open
time and free. The master stays, and the table and the couch stay while they are free at the new time; taken ones are replaced by the finder by the same rule as a booking.

A move is all or nothing. If anything is taken meanwhile, the visit stays where it
was. A cancelled visit and a visit that took place cannot be moved. Confirmations
and reminders are recalculated for the new time (see [Visit notices](visit-notices.md)).

## Cancel with a reason

**Cancel with a reason** asks for a reason:

- **Client asked**;
- **Master can't** (the word follows the industry: specialist, trainer, artist,
  teacher);
- **Didn't come**;
- **Other**.

The time is freed at once for every resource the visit took, and the visit stays in
the client's history as cancelled. The reason is seen by the team only. A client
who simply did not come is recorded as a cancellation with the reason Didn't come;
there is no separate status for it. Cancelling again gives the same result, and a cancelled visit
cannot be confirmed or moved. A visit that took place cannot be cancelled.

Talemo itself writes "booking cancelled" to the client, unless the person says not to.
In the **Cancel with a reason** window the box **Message the client about the
cancellation** is ticked, and the person clears it if they will tell the client
themselves. For **Didn't come**, and for a visit whose time has passed, there is no box
and nothing is written. If Talemo cannot write to the client anyway — the client
replied STOP, the card says not to write, or the card has no WhatsApp number or
Instagram account the client wrote from — the window says so instead of the box and
asks to tell the client yourself. How the message goes and what it says is in
[Visit notices](visit-notices.md).

The online admin can ask to cancel a visit, for the client of its chat only. A person of
the business decides it in Waiting for you; the client is told that the business will
confirm.

## Close, change the price

**Close the visit** and **Change the price** are described in
[Visits](visits.md). Both stay available after the visit took place.

## Delete

**Delete the visit** removes it for good. It asks twice, and the second question
says what disappears: the visit leaves the grid and the client's card, the time is
freed, and the takings of the day become smaller. The log keeps who deleted it,
when, and what the visit was. If the details were wrong, **Change the visit** is
better, and a client who did not come is better cancelled.

## Who can do it

Confirming and changing prices is one right, moving another, cancelling another,
recording a fact another, and deleting another, all at branch level and all possible
to limit to own. The Administrator role has them.

## Tools and refusals

- Every tool below takes `dry_run`: the answer is the visit as it would be, and nothing is saved. A change always applies to the whole visit.
- `talemo_confirm_visit` marks that a person confirmed a booked visit. Confirming again returns it as it is; a cancelled visit is refused with status 409, code `visit.cancelled`, and one that took place with `visit.done`.
- `talemo_move_visit` takes `start` and optionally `resource_ids`: all the time moves or none of it. Another visit in the way is status 409, code `slot.overlap` with `params.resource_id`; time outside the open time is `visit.outside_schedule`; the past is `visit.past`; a visit that took place or was cancelled is `visit.done` or `visit.cancelled`. Find the new time with `talemo_find_times` first, passing `visit_id`.
- `talemo_cancel_visit` takes a `reason` and `tell_client`; the time is free again. `tell_client` says whether Talemo writes to the client that the visit is cancelled: it is required from a person, the assistant and a program: pass `true` unless the person said not to write to the client or that they will tell the client themselves; a call without it is refused with status 400, code `request.body_invalid` and `params.field` `tell_client`. With `no_show` it can only be `false`, and for a visit whose time has passed nothing is written either way. The online admin does not choose it: Talemo tells the client after its turn, unless the online admin said so itself. A client who did not come is cancelled with `no_show`. A cancelled visit comes back as it is; one that took place is refused with status 409, code `visit.done`.
- `talemo_complete_visit` records that a visit took place: when it really was, who did it, the services and prices. What is left out stays as booked. The real time is the master's, and a place and a device keep the time they were booked for. The record replaces the plan, and a done visit is corrected the same way. It ends no later than now, or it is refused with `visit.future`; time outside the open time is `visit.outside_schedule` unless `extend_schedule` opens it; a cancelled visit is `visit.cancelled`.
- `talemo_update_visit` changes the prices of the services of a visit, booked or done: all of them in order, `null` for no price. The price list does not change.
- `talemo_delete_visit` deletes a visit for good, and the history of the contact keeps a line about it. Ask the person first, and show the `dry_run`. A second call is `not_found`. To keep the history, cancel instead.
