Skip to content

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:

  1. 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.
  2. 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:

antlers
{{ 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.

Confirmation emails include a "Manage your booking" button that opens the page with the reservation loaded:

text
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():

blade
@if ($url = $reservation->customerStatusUrl())
    [{{ __('Manage your booking') }}]({{ $url }})
@endif

It 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 0 means 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:

bash
php artisan vendor:publish --tag=resrv-checkout-views

There'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:

KeyDefault
findYourReservationFind your reservation
findYourReservationDescriptionEnter the email address you used for your booking and your booking reference code.
emailAddressEmail address
bookingReferenceBooking reference
findReservationFind reservation
reservationNotFoundWe could not find a reservation matching these details. Please check them and try again.
tooManyLookupAttemptsToo many attempts. Please try again in a few minutes.
reservationLinkFailedWe couldn't open your reservation from that link. Please enter your email address and booking reference below.
reservationStatusReservation status
statusConfirmedConfirmed
statusCancelledCancelled & refunded
statusCancelledNoRefundCancelled
statusCancelledNoRefundIssuedCancelled — no refund issued
statusCompletedCompleted
amountPaidAmount paid
cancelReservationCancel reservation
cancelReservationConfirmationAre you sure you want to cancel this reservation? This action cannot be undone.
cancelReservationDescriptionIf you cancel now, the amount paid will be refunded to your original payment method.
cancelReservationNoPaymentDescriptionYou can cancel this reservation now. Since no payment was collected online, no refund will be issued.
cancelReservationNoRefundCancel without refund
cancelReservationNoRefundDescriptionThe free cancellation period for this reservation has expired. You can still cancel it, but the amount you paid is non-refundable.
cancelReservationNonRefundableDescriptionThis reservation is non-refundable. You can still cancel it, but the amount you paid will not be returned.
cancelReservationNoRefundWarningYou will NOT receive a refund for this cancellation.
cancelReservationNoRefundConfirmationAre you sure you want to cancel this reservation? You will NOT receive a refund. This action cannot be undone.
freeCancellationExpiredThe free cancellation period for this reservation has expired.
cancellationNotAllowedThis reservation cannot be cancelled online. Please contact us for assistance.
cancellationFailedWe could not process your cancellation automatically. Please contact us for assistance.
reservationCancelledSuccessYour reservation has been cancelled. The amount paid will be refunded to your original payment method and a confirmation email is on its way.
reservationCancelledNoPaymentSuccessYour reservation has been cancelled and a confirmation email is on its way.
reservationCancelledNoRefundSuccessYour reservation has been cancelled. As it was outside the free cancellation period, no refund has been issued. A confirmation email is on its way.
lookUpAnotherReservationLook up another reservation

The view also reuses these shared keys: somethingWentWrong, reservationPeriod, to, quantity, property, extras, options, cancellationPolicy and total.