Reservation Status NEW
The reservation-status Livewire component gives customers a page to look up their booking, see its status and, if you allow it, cancel it. Inside the free cancellation window, cancelling refunds the charge automatically. The feature is off by default.
Enabling the feature
In Resrv → Settings → Checkout:
- Enable the reservation status page turns on the component and adds a "Manage your booking" link to confirmation emails. While it's off, the component renders nothing.
- Enable customer cancellations shows the cancel buttons. Without it, the page is view only.
Component basics
Create an entry for the page at any URL and add the component to its template:
{{ livewire:reservation-status }}Both the <livewire:...> and the Antlers {{ livewire:... }} syntaxes work, and the component takes no attributes. Then select it as the Reservation Status Entry. The first toggle requires it, and the email links point to it.
Looking up a reservation
By email and booking reference
By default the component shows a lookup form for the customer's email address and booking reference. A failed lookup always shows the same message, so the form can't be used to find out which references exist.
RATE LIMITING
Failed lookups are limited to 10 attempts per IP and reference, and 30 per IP across all references, each decaying after about 10 minutes. Successful lookups don't count.
Via the deep link
Confirmation emails include a "Manage your booking" button that opens the page with the reservation loaded:
https://yoursite.com/manage-booking?ref=ABC123&hash=...The hash is an HMAC signed with your Laravel app.key. It ties the link to that one booking and the customer's email, so no login is needed. To build the link yourself, for example in a published email template, use customerStatusUrl():
@if ($url = $reservation->customerStatusUrl())
[{{ __('Manage your booking') }}]({{ $url }})
@endifIt returns null when the feature is off, the status entry is missing or unpublished, or the customer has no email on file. A broken or tampered link shows a neutral notice and the lookup form.
KEEP YOUR APP KEY STABLE
The hash depends on config('app.key'). Rotating the key invalidates every existing deep link. The same scheme powers the {{ resrv:reservation_from_uri }} Antlers tag.
LOOKABLE STATUSES
The page shows Confirmed, Partner, Refunded, Cancelled and Completed reservations. Pending and Expired ones never got a reference, so they're left out.
From v6.5.0, Awaiting payment reservations you created in the Control Panel are left out too. Until they're paid, customers reach them through the payment page link in their payment request email.
The status view
A found reservation shows a status badge, the booking reference and the reservation period (one line per rate for cart bookings). Below that come the quantity and rate where relevant, extras and options, the cancellation policy, the total and the amount paid online. That amount is zero for bookings paid through manual gateways such as bank transfer, or marked as paid in the Control Panel.
The badge reads Confirmed for live bookings, Cancelled & refunded when the charge went back, Cancelled when there was no charge, Cancelled — no refund issued when you kept the payment, and Completed for past stays.
Cancelling a reservation
With customer cancellations enabled, an eligible booking shows a cancel button.
With a refund. While the free cancellation window is open, cancelling refunds the full amount paid to the original payment method. The window runs through the end of its last day. The stay must not have started, and the gateway must support automatic refunds.
Without a refund. After the window closes, or if the policy is non-refundable, the customer can still cancel a booking paid online, but you keep the payment. They see a warning ("You will NOT receive a refund for this cancellation.") and a second confirmation first. The booking ends up Cancelled.
If the gateway fails, the customer sees a generic message and the error is logged.
Instead of a cancel button, the customer sees a "contact us" note when:
- no cancellation policy was ever set (the default period of
0means unconfigured); - the booking was paid through a gateway that can't refund automatically (such as bank transfer) or is no longer configured;
- it's a partner booking;
- the booking was marked as paid in the Control Panel (manual reservations paid through their link follow the rules above);
- the stay has already started.
Each rate's cancellation policy sets the window, with the free cancellation settings as the global fallback.
What happens on cancellation
A customer cancellation works like the matching Control Panel action. A refund moves the reservation to Refunded, or leaves the status unchanged if the gateway call fails. Cancelling without a refund moves it to Cancelled without calling the gateway. Either way, availability for the booked dates is restored.
The customer gets the refund notice or a cancellation notice, and your admins a "cancelled by customer" notification. See Emails to change recipients, subjects and templates. Affiliate commissions are voided on a refund and kept when you keep the payment.
Customizing
The view is published together with the other checkout views and lives at /resources/views/vendor/statamic-resrv/livewire/reservation-status.blade.php:
php artisan vendor:publish --tag=resrv-checkout-viewsThere's no view attribute, so edit the published file directly.
Translations
The component uses these frontend keys, which you can override as described in Languages:
| Key | Default |
|---|---|
findYourReservation | Find your reservation |
findYourReservationDescription | Enter the email address you used for your booking and your booking reference code. |
emailAddress | Email address |
bookingReference | Booking reference |
findReservation | Find reservation |
reservationNotFound | We could not find a reservation matching these details. Please check them and try again. |
tooManyLookupAttempts | Too many attempts. Please try again in a few minutes. |
reservationLinkFailed | We couldn't open your reservation from that link. Please enter your email address and booking reference below. |
reservationStatus | Reservation status |
statusConfirmed | Confirmed |
statusCancelled | Cancelled & refunded |
statusCancelledNoRefund | Cancelled |
statusCancelledNoRefundIssued | Cancelled — no refund issued |
statusCompleted | Completed |
amountPaid | Amount paid |
cancelReservation | Cancel reservation |
cancelReservationConfirmation | Are you sure you want to cancel this reservation? This action cannot be undone. |
cancelReservationDescription | If you cancel now, the amount paid will be refunded to your original payment method. |
cancelReservationNoPaymentDescription | You can cancel this reservation now. Since no payment was collected online, no refund will be issued. |
cancelReservationNoRefund | Cancel without refund |
cancelReservationNoRefundDescription | The free cancellation period for this reservation has expired. You can still cancel it, but the amount you paid is non-refundable. |
cancelReservationNonRefundableDescription | This reservation is non-refundable. You can still cancel it, but the amount you paid will not be returned. |
cancelReservationNoRefundWarning | You will NOT receive a refund for this cancellation. |
cancelReservationNoRefundConfirmation | Are you sure you want to cancel this reservation? You will NOT receive a refund. This action cannot be undone. |
freeCancellationExpired | The free cancellation period for this reservation has expired. |
cancellationNotAllowed | This reservation cannot be cancelled online. Please contact us for assistance. |
cancellationFailed | We could not process your cancellation automatically. Please contact us for assistance. |
reservationCancelledSuccess | Your reservation has been cancelled. The amount paid will be refunded to your original payment method and a confirmation email is on its way. |
reservationCancelledNoPaymentSuccess | Your reservation has been cancelled and a confirmation email is on its way. |
reservationCancelledNoRefundSuccess | Your reservation has been cancelled. As it was outside the free cancellation period, no refund has been issued. A confirmation email is on its way. |
lookUpAnotherReservation | Look up another reservation |
The view also reuses these shared keys: somethingWentWrong, reservationPeriod, to, quantity, property, extras, options, cancellationPolicy and total.