Contents

Availability - Plugixa Car Parking

Every booking, whether a customer makes it on your site or you take it in the admin, passes the same three checks in the same order:

  1. Is the stay inside the booking window?
  2. Is the car park open at the entry and at the exit?
  3. Is there a free space?

The first check that fails stops the booking and tells the person why. This page explains each check and the settings behind it.

Availability has no screen of its own. It is the result of your locations, their spaces and hours, and four options under Settings -> Bookings.

The booking window

The window is set under Settings -> Bookings -> Booking window.

Setting Default What it does
Shortest notice (minutes) 0 The entry must be at least this many minutes from now. 0 lets a customer book a stay that starts now.
Furthest ahead (days) 365 The entry must be no more than this many days from now. 0 sets no limit. The highest value is 3650.

Two rules apply whatever the settings say: the exit must be after the entry, and the entry cannot be in the past.

Refusal When
“Invalid entry or exit date.” A date could not be read.
“The exit time must be after the entry time.” The exit is the same as or before the entry.
“The entry time is too soon or in the past.” The entry is earlier than now plus the shortest notice.
“The entry date is too far in the future.” The entry is later than now plus the furthest-ahead limit.

Times are compared on the site’s own clock, taken from the timezone set in WordPress under Settings -> General. A customer in another timezone books in the car park’s time.

The window applies to bookings you make in the admin too. You cannot record a booking whose entry is already in the past.

Opening hours and closures

Each location has weekly opening hours and a list of dated exceptions. See Locations for how to set them.

The check looks at two moments only: the entry and the exit. Each must fall at a time the car park is open. The days in between are not checked, so a week-long stay can span a day on which the car park is closed, as long as the car arrives and leaves while it is open.

For each of the two moments, the plugin works through this list and stops at the first rule that applies:

  1. A closure covers the date. The booking is refused.
  2. A special-hours exception covers the date. Its hours replace the weekday’s hours for that date.
  3. The weekday is marked closed. The booking is refused.
  4. The weekday has hours. The time must be inside them.
  5. Nothing is set. The car park is open.

A location with no weekly hours at all is open around the clock, on every day that has no exception. A closure still applies to such a location, so a car park that never closes in a normal week can be closed for a single day.

Refusal When
“The car park is closed on the entry date (2026-12-25).” A closure or a closed weekday covers the entry.
“The car park is closed on the exit date (2026-12-25).” The same, for the exit.
“The entry time is outside the car park business hours.” The entry is before opening or after closing.
“The exit time is outside the car park business hours.” The same, for the exit.

Counting free spaces

A location holds a number of spaces of each space type. The spaces of one type at one location are a pool: they are interchangeable, and a booking takes a number of them without naming which.

For a requested stay the plugin works out:

free = active spaces of that type at the location - spaces held during the stay

Only spaces whose status is Active are counted. Spaces that are inactive or in the trash add nothing to the capacity.

The booking goes through when free is at least the number of spaces asked for.

Which bookings count as held

A booking is counted when all of these are true:

  • It is at the same location and for the same space type.
  • It overlaps the requested stay. Two stays overlap when one starts before the other ends. Stays that only touch do not overlap: a booking that leaves at 10:00 and one that arrives at 10:00 can share a space.
  • Its status is one of the Statuses that hold a space.
  • It is not a pending booking whose hold has run out. See below.
  • It is not in the trash.

Each counted booking takes as many spaces as its Spaces number.

Statuses that hold a space

Set under Settings -> Bookings -> Statuses. The default is:

Status Holds a space by default
Pending yes
Confirmed yes
Paid yes
Completed yes
Cancelled -
Refunded -
No-show -
Expired -

Take a status off the list and bookings in it stop counting at once, for new quotes and new bookings alike. If the list is emptied, nothing holds a space and no stay is ever refused for lack of room.

The same list decides the occupancy and arrival figures on the Dashboard.

Pending holds

A booking that starts as Pending keeps its space for a limited time. The time is Hold an unconfirmed booking for (minutes) under Settings -> Bookings -> Booking window.

Value Effect
30 (the default) A pending booking holds its space for 30 minutes from the moment it is made.
0 A pending booking holds its space until you act on it.
Up to 10080 The longest hold is seven days.

What happens when the hold runs out:

  1. The space is free immediately. Availability stops counting the booking the moment its hold passes. It does not wait for anything else.
  2. The status changes to Expired within the hour. A scheduled task, plugixa_carparking_expire_holds, runs hourly through WP-Cron and marks every pending booking whose hold has passed as Expired. It first runs about five minutes after the plugin loads. It frees nothing: it makes the status say what has already happened.

So for up to an hour a booking can still read Pending while its space is already on offer again. On a site where WP-Cron does not run, the status stays Pending for longer, but the space is free all the same.

A hold only belongs to a pending booking. It is removed when:

  • You move the booking to any other status, for example by confirming it. A confirmed booking keeps its space for as long as it is confirmed.
  • A payment is recorded against the booking. See Payments.

A booking only gets a hold when Status of a new booking is Pending, which is the default. With that setting on Confirmed, new bookings are confirmed at once and never expire.

The booking’s detail screen shows Space held until while the booking is pending and has a hold. An expired booking can be brought back with Reinstate, which checks for a free space again. See Bookings.

The last space is sold once

“Is there a space” and “save the booking” are two steps, and two customers can both be told yes before either booking is saved. To stop that, the plugin takes a lock on the location, counts the free spaces and saves the booking while holding it. A second request for the same location waits for the first to finish, then counts again and sees that the space is gone.

  • The lock is per location. Bookings at different locations do not wait for each other.
  • A request waits up to five seconds for the lock. If it still cannot get it, the booking is refused with “This car park is taking another booking right now. Please try again.” Nothing is saved, and trying again normally works.
  • The booking, its price lines and the use of a coupon are saved together. If any part fails, none of it is kept.

The same lock is taken when a booking is moved to other dates, restored from the trash, or reinstated from a status that held no space.

When availability is checked

Moment What is checked
The customer picks dates in the booking form The booking window and the opening hours, then the free spaces of each space type, so that the form can offer what is available. See Booking wizard.
A booking is saved, from the site or the admin All three checks, with the space count made under the lock. A space that went to somebody else in the meantime is refused with “Sorry, those spaces are no longer available for the selected dates.”
An admin changes the dates, the space type or the number of spaces of a booking Opening hours and free spaces, with the booking itself left out of the count. The booking window is not applied to an edit.
An admin restores a booking from the trash, or reinstates a cancelled, expired or no-show booking Opening hours and free spaces, because the space was given up and may have been taken since.
An admin asks for a price in the New booking form Nothing. The price preview does not look at availability. It is checked on save.

An admin can override a full or closed car park when editing, restoring or reinstating a booking. A customer never can. See Bookings.

Other ways of counting spaces PRO

The pool described on this page is how every location counts its spaces in the free edition. Pro adds a mode in which each space is numbered and a booking is tied to one particular space. See Assigned spaces.

If Pro is removed, a location that used another mode goes back to being counted as a pool, so it stays bookable.

Why a stay is refused: a checklist

The customer sees Look at
“The entry time is too soon or in the past.” Shortest notice (minutes), and the site’s timezone in WordPress.
“The entry date is too far in the future.” Furthest ahead (days).
“The car park is closed on the entry date” or “on the exit date” The location’s exceptions, then its weekly hours.
“The entry time is outside the car park business hours.” The opening and closing time for that weekday, or the special hours for that date.
“Sorry, those spaces are no longer available for the selected dates.” How many spaces of that type the location has, and which bookings overlap the stay. The Calendar, filtered to the location, shows the busiest day against capacity.
No space type is offered at all The location has no active spaces of any type. Add them on the location’s page.

Quick Links