❌ How does Appointment Booking Cancellation & Refund Work
When a customer or your team cancels an appointment, Hoppy Appointments updates the booking record, cleans up linked calendar or video meetings, sends notifications, and — if the booking was paid through Shopify — can optionally cancel and refund the linked Shopify order automatically.
This guide explains the full cancellation and refund flow, what controls are available, and what happens behind the scenes.
⚠️ Before You Begin
To use automatic refunds, make sure:
- ✅ The Hoppy Appointments app is installed
- ✅ The service is connected to a paid Shopify product or variant
- ✅ Bookings are created through Shopify checkout (a real order exists)
- ✅ Customer and admin email notifications are enabled
ℹ️ Free services, manual bookings, or "Book without pay" bookings can still be cancelled, but no Shopify order is involved, so no automatic refund happens.
👤 How Customer Cancellation Works
Customers cancel their own booking through the confirmation or update email.
1. Customer clicks the cancel link
The email contains a cancel link rendered by the [Booking Actions Block] in your template. If the service has Show cancel button in emails enabled, the customer sees a Cancel button.
2. Cancel page opens
The customer lands on a branded cancel page that shows:
- Service name
- Date and time
- Duration
- A Cancel Booking button
3. Minimum cancelling notice is checked
If the service has a Minimum cancelling notice set, the customer cannot cancel within that window. For example, a 24-hour notice means the customer cannot cancel an appointment that starts in less than 24 hours.
⚠️ This notice window applies to customers only. Admin cancellations bypass it.
4. Booking is cancelled
After the customer confirms, the booking status changes to Cancelled and the following happen automatically:
- Linked Google / Outlook calendar events are removed
- Linked Zoom meetings are removed
- Cancellation emails are sent to the customer and your team
- Shopify Flow "Booking Cancelled" trigger fires (if configured)
- Analytics records the cancelled booking
🛠️ How Merchant Cancellation Works
You can cancel a booking directly from the Bookings dashboard.
1. Open the booking actions menu
- In the app, go to Bookings.
- Find the booking you want to cancel.
- Click the actions menu (⋯) on the right.
2. Choose Cancel
For future bookings on the Bookings tab, you'll see:
- Reschedule
- Cancel
- Delete
Click Cancel to open the same branded cancel page used by customers, but with an admin flag so the notice window does not apply.
3. Confirm the cancellation
Click Cancel Booking on the page. The booking status changes to Cancelled and the same cleanup and notifications run as with customer cancellations.
⚠️ Delete is not the same as Cancel. Delete permanently removes the booking from the dashboard and cannot be undone. Use Cancel when you want the customer to be notified and the order to be handled.
💰 Understanding the Refund Settings
Refund behavior is controlled by store-wide toggles in Settings → General → Refund and Cancellation settings.
There are two independent pairs of toggles:
Customer cancellations
- Cancel order on customer cancel — automatically cancels the linked Shopify order when a customer cancels
- Refund customer on customer cancel — automatically refunds the customer when they cancel
Admin cancellations
- Cancel order on admin cancel — automatically cancels the linked Shopify order when you cancel from the admin
- Refund customer on admin cancel — automatically refunds the customer when you cancel from the admin
How the toggles depend on each other
The Refund toggle only works if the matching Cancel order toggle is also enabled. In other words:
- To refund a customer cancellation → enable both Cancel order on customer cancel and Refund customer on customer cancel
- To refund an admin cancellation → enable both Cancel order on admin cancel and Refund customer on admin cancel
If only Cancel order is enabled, the order is cancelled but the customer is not refunded automatically. You can still issue a refund manually from your Shopify admin.
What gets refunded
When both toggles are on, the app tells Shopify to cancel the order and refund it in full. The refund uses Shopify's standard order cancellation flow, so:
- The full order amount is refunded
- Inventory is restocked automatically
- Refunds are processed through your existing Shopify payment provider
ℹ️ The app does not support partial refunds, cancellation fees, or deposit-specific refund amounts. If you need a custom refund, handle it directly in Shopify.
⚙️ Service-Level Cancellation Controls
Each service has its own cancellation rules under Services → [Service] → Advanced → Booking options.
Show cancel button in emails
Controls whether customers see the cancel button in their booking emails. If this is off, customers cannot self-cancel from email.
Minimum cancelling notice
Sets how close to the appointment customers can still cancel. Choose anywhere from 0 hours to 6 weeks. Admin cancellations ignore this setting.
Show reschedule button in emails
Related option that controls whether the reschedule button appears in emails.
💡 These settings only affect customer emails and the customer-facing cancel page. They do not change refund amounts or admin behavior.
📧 What Happens After a Cancellation
Once a booking is cancelled, the app performs several cleanup and notification actions:
Booking status
bookingStatusis set to Cancelled- The booking remains visible in the dashboard with a cancelled status
Calendar and video cleanup
- Any Google Calendar or Outlook event tied to the booking is removed
- Any Zoom meeting generated for the booking is removed
Emails
- A customer cancellation email is sent using the Send email on cancel template
- An admin cancellation email is sent to assigned teammates and the team admin
- Default cancellation templates intentionally do not include the [Booking Actions Block], so the customer cannot cancel or reschedule again from the cancellation email
Analytics and Flow
- A
booking_cancelledanalytics event is recorded - The Shopify Flow Booking Cancelled trigger fires, sending booking details to any connected workflows
- A cancelled-booking stat is recorded in ServiceStats
⚠️ Important Notes & Limitations
- Refunds require a Shopify order. If the booking was free, created manually without an order, or made with "Book without pay", there is no order to cancel or refund.
- Refunds are full order only. The app cannot issue partial refunds, keep cancellation fees, or refund deposits differently.
- Refund timing depends on Shopify. The refund is initiated immediately, but the time it takes to appear in the customer's account depends on the payment provider.
- Admin bypasses notice windows. The minimum cancelling notice applies only to customers.
- Bundle bookings cancel per date. Each date in a bundle is a separate booking with its own cancel link. Cancelling one date does not cancel the entire bundle.
- Multiday bookings cancel normally. The cancel page shows the duration in days, but the cancellation logic is the same as a regular booking.
- Waitlist bookings are declined, not cancelled. When you decline a waitlist request, it uses a separate flow and sends a booking-declined notification.
- Delete is permanent. Deleting a booking from the dashboard removes it entirely and does not trigger cancellation emails or refund logic.
🐞 Troubleshooting
Cancelled bookings are not refunded
- Go to Settings → General → Refund and Cancellation settings.
- Make sure the matching Cancel order toggle is enabled.
- Make sure the matching Refund customer toggle is also enabled.
- Confirm the booking had a linked Shopify order.
Customer says the cancel button is missing
- Open the service and go to Advanced → Booking options.
- Make sure Show cancel button in emails is enabled.
- Check that the email template includes the [Booking Actions Block].
- Verify the customer is not inside the Minimum cancelling notice window.
Customer sees an error when trying to cancel
The customer may be inside the minimum cancelling notice window. Check the Minimum cancelling notice value on the service.
🎉 Final Result
Now you understand how cancellation and refund work in Hoppy Appointments:
- ✅ Customers can cancel from their booking emails within the notice window you set
- ✅ Merchants can cancel from the Bookings dashboard without notice restrictions
- ✅ Shopify orders can be cancelled and refunded automatically when the right toggles are enabled
- ✅ Cancellation emails are sent to customers and your team
- ✅ Linked calendar events and video meetings are cleaned up automatically
For setup instructions, see the related guides below.
📚 Related Articles
- How Customers Reschedule or Cancel Appointments
- How does Payments work with Appointment Bookings
- How to Manage Bookings in Dashboard?
- How to Configure Email Notifications for Appointment Bookings?
- Appointment Bookings — Types of Bookings Explained
Updated on: 20/08/2026
Thank you!