EP Holiday Bookings
EP Holiday Bookings is a purpose-built plugin for independent travel agents. Not a DIY booking engine — an enquiry-first workflow that matches how small agents actually work. Package listings attract interest, enquiries land in a pipeline, the agent quotes, collects deposits, then balances, and tracks traveller details securely.
Published by ElmsPark Studio.
Who this is for
Section titled “Who this is for”Independent travel agents who:
- Curate a catalogue of packages rather than selling from live inventory.
- Talk to every customer before confirming a booking (enquiry-first, not self-checkout).
- Take deposits upfront and balances closer to travel.
- Need to hold traveller details (passport numbers, dietary requirements, emergency contacts) securely.
Not for online travel agents with API-based inventory. Not for ATOL-bonded trust-account operations — that’s a compliance domain this plugin doesn’t touch.
Features
Section titled “Features”Destination and package catalogue
Section titled “Destination and package catalogue”- Destinations with name, region, country, hero image, description.
- Packages tied to a destination with dates, pricing, capacity, itinerary, inclusions, exclusions.
Enquiry-first flow
Section titled “Enquiry-first flow”A customer browses packages, finds one they like, submits an enquiry form. The agent replies, discusses, quotes. When the customer commits, the agent turns the enquiry into a booking.
Pipeline
Section titled “Pipeline”Enquiry statuses: New → Contacted → Quoted → Booked → Cancelled. Visible on the admin dashboard so the agent always knows what needs attention.
Deposits and balances
Section titled “Deposits and balances”Stripe-integrated payment collection:
- Deposit when the booking is confirmed.
- Balance closer to travel (typically 6 to 8 weeks before).
- Payment links sent to the customer, not self-checkout on the site.
Travellers
Section titled “Travellers”Per-booking traveller records:
- Name, date of birth, passport number, nationality.
- Passport numbers encrypted at rest using AES-256.
- Dietary requirements, emergency contact.
Encrypted sensitive fields, consent logging via EP GDPR, full-record deletion on data subject erasure request.
Shortcodes
Section titled “Shortcodes”| Shortcode | Purpose |
|---|---|
[holiday-packages] | Full package catalogue with filtering. |
[holiday-package slug=spain-villa-week] | Single package page. |
[holiday-destinations] | Destination catalogue. |
[holiday-enquiry package=spain-villa-week] | Enquiry form for a specific package. |
[holiday-search] | Search interface across packages. |
Requirements
Section titled “Requirements”- PageMotor 0.8.2b or later
- EP Email (required for notifications)
- EP Suite base class
- Stripe account (for deposit / balance collection)
Optional:
- EP GDPR for consent logging.
- EP Newsletter for opt-in at enquiry time.
Status
Section titled “Status”Version 0.3.0 — the core pipeline and catalogue are stable. Some UX polish items are still pending. Details in the plugin’s own CHANGELOG.
Installation
Section titled “Installation”- Install EP Email.
- Download
ep-holiday-bookings.zipfrom the EP Suite downloads page. - Upload via Plugins → Manage Plugins. Activate.
- Configure Stripe keys in the settings.
- Work through Destinations → Packages → Test enquiry form.
Database tables
Section titled “Database tables”All prefixed {prefix}ep_holiday_:
destinations— destination catalogue.packages— holiday listings.enquiries— customer enquiries with pipeline status.bookings— confirmed bookings with deposit/balance tracking, Stripe payment intent IDs.travellers— per-booking traveller details, passport encrypted.customers— customer database.
Compliance notes
Section titled “Compliance notes”ATOL and ABTA
Section titled “ATOL and ABTA”This plugin does NOT handle ATOL bonding, client-money trust accounts, or ABTA-specific compliance. If your regulatory context requires those, use accounting and compliance tools designed for that purpose. EP Holiday Bookings is operational CRM, not financial infrastructure.
Passport storage
Section titled “Passport storage”Passport numbers are encrypted at rest using AES-256 with a key stored outside the database. Decryption happens only server-side, only when the agent explicitly views a traveller record. The key itself should be:
- Stored in a PHP environment variable (
EP_HOLIDAY_ENCRYPTION_KEY). - Backed up separately from database backups.
- Rotated periodically.
If you lose the key, stored passport numbers become unrecoverable. This is by design.
GDPR erasure
Section titled “GDPR erasure”On a data subject erasure request, the plugin:
- Deletes the customer record.
- Deletes all associated enquiries and bookings.
- Deletes traveller records with encrypted passport numbers.
- Retains a minimal audit row noting the erasure happened.
Troubleshooting
Section titled “Troubleshooting”“Enquiry form submitted but I didn’t get notified”
Section titled ““Enquiry form submitted but I didn’t get notified””Check EP Email config. Enquiry notifications go through EP Email’s queue.
“Deposit payment link is generated but the customer can’t pay”
Section titled ““Deposit payment link is generated but the customer can’t pay””Check Stripe keys are for the correct mode (test vs live). Check the payment link hasn’t expired — Stripe links have configurable lifetimes.
“Passport number shows ‘decryption failed’”
Section titled ““Passport number shows ‘decryption failed’””The encryption key has changed since the record was encrypted. Either restore the old key, or re-collect the passport from the customer.
“Package isn’t appearing in the catalogue”
Section titled ““Package isn’t appearing in the catalogue””Check status is Active and dates haven’t expired. Packages past their end date are auto-hidden by default.
“Enquiry pipeline status doesn’t update when I mark an enquiry as Booked”
Section titled ““Enquiry pipeline status doesn’t update when I mark an enquiry as Booked””Creating a booking from an enquiry should auto-advance the enquiry to Booked. If it doesn’t, there’s a likely bug — log in the review queue with an enquiry ID.
Feedback and corrections
Section titled “Feedback and corrections”For a quick question about this plugin, EP Support inside your admin is the fastest option. The chat widget sits on every EP plugin settings page and knows which one you’re on, with starter questions and links preloaded for that exact screen.
For anything bigger — a bug report, a feature request, or a “how do I…” that needs a real reply — open a ticket at help.elmspark.com. A real person, helped by AI, writes the reply. Usually within a few hours. Tickets don’t disappear into the void.