Contents
The booking form - Plugixa Car Rental
The booking form is how customers rent a car from your website. It is a single
form in five steps: Dates, Car, Extras, Details and Done.
You place it on any page with the Car rental booking block or the
[plugixa_car_rental_booking] shortcode. See
Shortcodes and blocks.
Every price and every rule lives on your server. The form asks the server, shows the answer, and puts a refusal under the field it is about. A price typed or changed in the browser is never used.
The progress bar
The numbered bar at the top shows where the customer is. A finished step shows a tick, and the line to the next step fills in.
The Extras step is only there when you offer at least one extra. Without extras the form has four steps and goes straight from choosing a car to the details.
On a narrow screen only the current step’s name is shown, so all five numbers fit on one line.
Before the first step
The form loads your locations, payment methods and booking rules first.
| What the customer sees | Why |
|---|---|
| “Loading…” | The form is fetching its settings. |
| “Online booking is not open yet. Please contact us.” | No published location takes pickups. See Locations. |
| “We could not reach the booking service. Check your connection and try again.” | The browser could not reach your site’s REST API. See Troubleshooting. |
Step 1: Dates

The first step is a search bar under the heading “Find the right car for your trip”.
| Field | What it does |
|---|---|
| Location | Where the car is picked up. Lists every published location that allows pickups, in your display order. When the shortcode or block names a starting location, or the page’s address ends in ?pcr_location= and a location ID, that one is chosen; otherwise the first. |
| Pickup | The pickup date and time. |
| Return | The return date and time. |
| Return to a different location | Shown when more than one location accepts returns. Ticking it renames the first field Pickup location and adds Return location. |
| Driver’s age PRO | Shown when Driver age is switched on. It starts empty and must be filled in, from 16 to 99: “Enter the driver’s age, from 16 to 99.” Young and senior driver surcharges and each car’s minimum age are worked out from it. |
| Currency PRO | Shown when Currencies offers more than one. |
| Delivery address PRO | Shown when Delivery is on for the chosen location. |
| Map of the desks PRO | Shown under the search bar when the Map is set up and two or more pickup locations have coordinates. See below. |
The customer clicks Find a car (it reads “Searching…” while it works).
Choosing the desk on a map PRO

With Pro and a Google Maps key, the first step can show the pickup desks on a map, with a list beside it. Each card shows the desk’s address, whether it is open now, its lowest daily price, a Choose button and Directions. A click on a card or a pin chooses that desk in the Location field, and the card’s button then reads Chosen. Choosing in the Location field moves the map to that desk too. The field and the map are always the same choice.
The map appears only when two or more locations that take pickups have a latitude and a longitude. If Google’s script cannot load, the form works as before with the Location field alone. See Map.
Where the form starts
The form opens already filled in, so a customer can search at once:
- the pickup date is tomorrow, or later if your Minimum notice needs more time;
- both times are 10:00, or the first time from 10:00 that the desk offers;
- the rental is three days long, or your Shortest rental if that is longer, but never more than your Longest rental.
The Driver’s age PRO is the one field left empty: the customer must type it, because the price and the cars offered depend on it.
Dates and times
The pickup date cannot be before today or after your Booking horizon. “Today” is the site’s date, so a visitor whose own clock is a day behind is not offered yesterday. Moving the pickup past the return pulls the return along with it.
The time lists come from the desk’s own opening hours for the chosen date, every half hour. Move the pickup to a Saturday and the list shrinks to Saturday’s hours, keeping the chosen time if it is still offered. A day the desk is closed shows Closed. A desk with an after-hours fee offers the whole day, and the fee is added to the price. See Locations.
When a search is refused
The server checks the search again and has the final word. The message appears under the field it is about.
| Message | Cause |
|---|---|
| “The return must be after the pickup.” | The return is at or before the pickup. |
| “Pickups must be booked at least 2 hours ahead.” | Minimum notice in Booking rules. With a notice of 0, “That pickup time has already passed.” |
| “Pickups can be booked at most 365 days ahead.” | Booking horizon. |
| “Rentals are at least 3 days.” / “Rentals are at most 90 days.” | Shortest rental and Longest rental. |
| “Airport Terminal 2 is closed on 24/12/2026.” | A closure on the location’s calendar. A closure always wins, whatever the fee. |
| “Airport Terminal 2 is not open at that pickup time.” | Outside opening hours, at a desk with no after-hours fee. |
| “That time does not exist at this location because of a clock change. Choose another.” | A time skipped when the clocks go forward. |
The numbers in these messages follow your own settings.
Step 2: Car

The second step lists your cars for those dates.
At the top a trip strip repeats the pickup and the return, with the number of rental days between them. Under it the form counts what can be booked, for example “3 of 9 cars available”, and offers Change dates or location to go back to step 1.
The car cards
Each card is one vehicle model, not one physical car. The customer books a model, and your desk decides which car with that model they get. See Fleet.
| Part of the card | Where it comes from |
|---|---|
| Photo | The model’s image. A model without one shows a drawn car. |
| Lowest price tag | On the cheapest car that can be booked, once. |
| Hybrid or Electric tag | The model’s fuel. |
| Name and description | The model. The description is cut to two lines. |
| Specs | Seats, gearbox, fuel, bags, Air conditioning when the model has it, and the mileage limit per day or Unlimited mileage. |
| Big price | The whole rental, with the after-hours and one-way fees included. |
| Small line | “Total for 5 days” and the daily rate, for example “€48.00 per day”. |
| Choose | Picks the car. A car that cannot be booked shows the reason instead, or “Not available for these dates”. |
A car is shown as unavailable when no vehicle of that model is free for the whole rental, counting the turnaround time after each booking. A model with no rate for a rental of that length is left out of the list altogether.
Cars that can be booked always come first, whatever the order chosen.
Sorting and filtering
The bar above the cards appears when there is more than one car.
| Button | What it does |
|---|---|
| Lowest price | Cheapest first. This is the starting order. |
| Highest price | Dearest first. |
| Most seats | Most seats first, then cheapest. |
| Automatic, Manual | Only cars with that gearbox. Shown when your list has both. Click again to clear. |
| Electric and hybrid | Only electric and hybrid cars. Shown when you have any. |
| Available only | Hides cars that cannot be booked. Shown when some can and some cannot. |
Sorting and filtering happen in the browser, on the list already loaded, so they are instant. If the filters hide every car the form says “No car matches these filters. Clear one to see more.”
If the pickup or the return is outside opening hours, a note above the cards says “Your pickup or return is outside opening hours. An after-hours fee is included in the prices.” If nothing at all is free: “No cars are available for these dates. Please try other dates.”
Step 3: Extras

The heading names the car: “Add extras to your Toyota Corolla Hybrid”. Choose another car goes back to step 2.
Each extra is a tile with its name, description and price.
| Extra set up as | On the tile |
|---|---|
| Taken once | A round tick box. The whole tile is a button: tap to add, tap again to remove. |
| Taken more than once | A - and + stepper with the number chosen, up to the extra’s maximum quantity. |
| Priced per day | “€8.00 per day”, and with a cap, “· at most €40.00”. |
| Priced per rental | “€20.00 per rental”. |
The panel at the side (under the tiles on a narrow screen) lists the car, each extra chosen with its amount, and the Total. It is a preview worked out in the browser. The server prices the booking again when the customer clicks Continue, and the details step shows the server’s figures. See Extras.
Continue holds the car
Continue (or Choose, when there are no extras) reserves the car. The button reads “Reserving…” while it works. At that moment the server:
- checks the dates and the rules again;
- takes a lock for that model, so two customers cannot take the same last car at the same instant;
- picks a free vehicle of that model and prices the rental, with the extras;
- creates a Pending booking that holds the car for your Hold time, 15 minutes by default.
If the last car went in the meantime, the customer sees “Sorry, there is no car of this model free for those dates.” and can choose another.
Step 4: Details

The heading is “Who is driving?”. Beside it a timer counts down the hold: “We are holding this car for you for 14:56.” When it runs out it changes to “We can no longer guarantee this car, but you can still book it if it is free.” The form keeps working. At checkout the server books the car if it is still free, and otherwise says “The hold on this car ran out and it has been booked by someone else. Choose another car or other dates.”
The customer’s details
| Field | Notes |
|---|---|
| Full name | Required: “Please enter your name.” |
| Required: “Please enter a valid email address, so we can send your confirmation.” | |
| Phone | Optional. |
| Your own questions | The custom fields you set up, such as Flight number or Driving licence number. An optional one is labelled “(optional)”. |
| Anything we should know? (optional) | A free note, shown to your staff on the booking. |
A hidden field catches form-filling robots. People never see it.
How would you like to pay?
The customer picks one of the payment methods you switched on.
| Method | What happens |
|---|---|
| Pay at pickup | On by default. The booking is confirmed at once and paid at the desk. |
| Bank transfer | Off by default. The booking is confirmed at once, and the instructions you wrote for it (your bank details) are shown on the last step. |
| Card (Stripe) PRO, PayPal PRO | The button changes to Continue to payment and the customer is sent to the provider’s page. The booking stays Pending until the payment is received. |
With Pay part now PRO and an online method, the customer also chooses “How much would you like to pay now?”, for example Pay everything now or a part.
If no method is switched on, the form says “Online booking is not available right now. Please contact us.” and the button is disabled. See Payments.
Consent and booking
The customer must tick “I agree to the rental terms, and to my details being used to manage this booking.” Otherwise: “Please accept the terms to complete your booking.” The time they agreed is stored on the booking. Their IP address is not.
Book now finishes the booking. Clicking it twice, or a browser resending it, does not book twice.
The summary and the coupon
The panel at the side is the booking as the server priced it: the car, the pickup and return with the number of rental days, every line, and the Total. Lines can include:
| Line | Example |
|---|---|
| The rental | “Toyota Corolla Hybrid, 5 days” |
| One-way fee | “One-way return to Cascais Marina” |
| After-hours fee | “After-hours pickup”, “After-hours return” |
| Extras | “Child seat”, “Full damage cover” |
| Pricing rule PRO | “Weekend pickups, 1 day” |
| Coupon | “Coupon WELCOME10”, as a negative amount |
| Tax PRO | “IVA (Portugal) (included)” |
When the model has a security deposit, a note under the total says “A refundable deposit of €300.00 is held at pickup.” It is not part of the total.
Have a coupon code? opens a box under the summary. Apply prices the held booking again, and the discount appears as a line: “Coupon WELCOME10 applied.” with a Remove link. A code that does not apply is refused under the box with the reason. The link appears whenever the Coupons app is on. See Coupons.
A coupon with a usage limit is checked once more when the booking is confirmed. If other bookings used up the code while this customer was filling in the form, Book now is refused under the coupon box with “That coupon has been fully used since it was applied. Remove it to book at the full price.” The customer removes the code, sees the full price, and books.
Choose another car at the bottom goes back a step (to the extras when you have any). It also gives the held car back at once: the pending booking is marked Expired and the car is free again, for this customer’s next search and for everybody else’s, without waiting for the hold time to run out.
Step 5: Done

The last step leads with the booking reference, the number the customer will be asked for.
| Part | What it shows |
|---|---|
| Heading | “Your car is booked” when the booking is confirmed, “Your booking has been received” when it is still pending. |
| Booking reference | Your reference prefix, the year and a number, such as ADR-2026-0037. |
| Email line | “A confirmation has been sent to” the customer’s email. |
| Instructions | The payment method’s instructions, such as “Pay at the desk when you collect the car.” or your bank details. |
| Summary | The same summary as on the details step. |
| View or cancel this booking later | A link to the booking on the customer portal, when the portal is set up. |
| Book another car | Starts again from step 1, keeping the search. |
The confirmation email goes out when the booking is confirmed. See Emails.
Coming back from a payment PRO
After paying online the customer comes back to their booking on the customer portal, or, without the portal, to the page they booked on. The page says how it went:
- “Thank you. Your payment for booking ADR-2026-0037 was received; the confirmation is on its way by email.”
- “You left the payment page, so nothing was charged and booking ADR-2026-0037 is not confirmed.”
- “The payment for booking ADR-2026-0037 did not go through, so nothing was charged and the booking is not confirmed.”
These words only report the outcome. Whether a payment was made is decided by your server, which asks the provider before recording anything.
On a phone

The form sizes itself to the space it is given, not to the screen. On a narrow page the search bar’s parts stack, the car cards go one per row, the sort buttons wrap, and the summary moves under the form. Nothing needs to be set up for this.
Limits
The form’s requests are open to anyone, so each is limited per visitor address, per hour.
| Request | Limit per hour |
|---|---|
| Loading the form | 300 |
| Searching | 120 |
| Holding a car | 15 |
| Applying a coupon | 20 |
| Finishing a booking | 15 |
Over a limit the form says “Too many attempts. Please wait a few minutes and try again.”
The form does not depend on a security token printed into the page, so it keeps working on a page served from a cache. Prices and availability are never cached.
What to do next
- Style the form to match your site: Booking form style.
- Let customers view and cancel their booking: Customer portal.
- Tune the notice, horizon, hold time and rental lengths: Booking rules.