Letting customers cancel or reschedule

Give customers a self-service way to cancel or reschedule their own appointment or reservation from the link in their confirmation email — within the cutoff and refund rules you set per product.

Letting customers cancel or reschedule

Customers can manage their own appointment or reservation straight from the order link in their confirmation email — no account, login, or app needed. You stay in control: you decide what they're allowed to do, and how close to the start time they can do it, separately for each booking product.

Giving customers self-service control cuts down on "can you move my 3pm?" emails, fills freed-up slots faster (a cancelled time goes back on sale immediately), and makes your store feel as polished as a dedicated booking tool.

Set your policy

Open the appointment or reservation product in Products and find the Customer self-service section in the editor. You have four controls:

  • Allow customers to cancel — shows a Cancel button on the customer's booking page.
  • Allow customers to reschedule — lets them pick a new open time from your live availability.
  • Cutoff (hours before) — online changes are blocked once the start time falls inside this window. For example, 24 means "no online changes within 24 hours of the appointment." Set it to match how much notice you genuinely need to re-fill or prepare for a slot.
  • Refund on cancel — choose No refund (the time is released but no money is returned online) or Full refund (Zillo refunds the payment, including the 3% platform fee).

Set the cutoff to the smallest window that still gives you time to react. A hair salon might use 24 hours; a busy restaurant might use 2. A shorter cutoff means more customers can self-serve, which means fewer messages for you.

The cutoff protects your calendar from last-minute surprises. With a 24-hour cutoff, a customer trying to cancel on the morning of their appointment is told it's too late to change online and to contact you directly — so a same-day slot never silently disappears without you knowing.

What the customer experiences

When the policy and cutoff allow it, a Manage booking panel appears on the customer's order page with Reschedule and Cancel buttons:

  • Rescheduling shows the exact same live availability as a brand-new booking, so they can only land on a time you're actually open. Their old time is released the moment the new one is confirmed, and they get a fresh confirmation and calendar invite for the new slot.
  • Cancelling releases the time immediately — and for a reservation, releases the seats too — so it goes straight back on sale for the next customer.

Once a booking is inside the cutoff window (or you've turned a permission off), the matching button simply isn't offered, and the customer is pointed to contact you instead.

What you'll see in the dashboard

Every customer-initiated change is reflected automatically:

  • A reschedule moves the booking to its new time everywhere it appears — on the Calendar, in Bookings, and on the order.
  • A cancellation voids the booking and frees its capacity.

Both appear in Orders so you always have a record of what happened and when. If you've connected a marketing tool such as Klaviyo from Settings → Integrations, these changes flow through to your customer automations too.

You can always cancel, reschedule, or refund any booking yourself from the order or the Calendar — drag an appointment to a new time, or use the cancel and refund actions on the order. The self-service policy only governs what customers can do on their own; it never limits you.

A few things to keep in mind

  • Refund on cancel applies to the whole booking payment, including any deposit. If you'd rather keep a deposit when someone cancels, set No refund and handle exceptions manually.
  • Reschedule never charges or refunds — the customer keeps their existing payment and simply moves to a new time.
  • Reservations release seats on cancel, so a freed group table or seat pool is immediately bookable again by other customers.

Next steps

Was this helpful?