GMC Tours · Excursion booking system for Joomla + WordPress, 0% commission
Tour booking engine
GMC Tours
Sell excursions, rentals and activities from your own CMS with 0% platform commission, Stripe checkout and a calmer direct-booking workflow.
What is included
- Tour catalogue and availability flow
- Stripe-ready checkout
- Works for Joomla or WordPress delivery
Booking Engine
€399/year
Choose GMC Tours or GMC Booking. Annual licence, updates and support included.
Buy Booking EngineDirect Booking Pack
€699/year
GMC Tours + GMC Booking together for one annual direct-booking stack.
Direct Booking PackFAQ
Everything included
98 real features, grouped by area — the full depth of the GMC Tours booking engine, nothing hidden.
Booking engine & availability
- Scheduled departures — publish each tour with fixed date-and-time departures, each with its own seat capacity.
- Per-person bookings — a customer books one departure for N participants, with a live per-departure seat counter, not a clumsy per-night calendar.
- Overbooking-proof seat hold — seats are locked in a database transaction at checkout, so two people can never grab the last seat on the same departure.
- Timed checkout holds — seats are reserved for a configurable window (default 15 min) while the customer pays, then released automatically if they don't.
- Automatic hold release — a background task returns seats from abandoned or expired holds, so inventory never gets stuck.
- Booking cutoff / lead time — stop sales a set number of minutes before departure (per tour, with a per-departure override), enforced even under a race.
- Min / max party size — enforce group-size limits server-side.
- Recurring-departure generator — bulk-create repeating departures from a schedule instead of adding each one by hand.
- Waitlist — customers join a waitlist for full departures and are promoted automatically when a seat frees up.
- Departure viability auto-cancel — automatically close departures that never reach a minimum viable group size and refund those bookings.
- Whole-departure cancel + refund cascade — cancel an entire departure in one action; every booking on it is cancelled and refunded automatically.
Product types & options (variants)
- Four product types — timeslot, open-date, private and multiday, so one engine sells fixed-time tours, undated vouchers and private hire.
- Open-date / skip-the-line vouchers — sell undated tickets that take no seat and are redeemed on arrival (gate capacity), distinct from the scheduled seat hold.
- Product options / variants — sell the same tour in several variants (e.g. shared vs private, morning vs sunset), each with its own price, capacity and rules.
- Flexible per-option pricing — per-person, a flat buyout unit price, or a percent/fixed modifier over shared tiers — whichever fits the variant.
- Front-end option selector — a segmented picker on the tour page filters departures and pricing to the chosen variant, cheapest preselected; works with or without JavaScript.
- Option snapshots — the booked variant label is frozen onto the booking so later edits never rewrite a customer's record.
Pricing, tiers & discounts
- Per-person price tiers — Adult / Child / Senior… each with its own price, age band and party-size band.
- Live price quote — the total and availability update instantly as the guest changes departure, quantities, option or gift card.
- Volume breaks — larger parties automatically get a cheaper per-person price.
- Add-on extras — optional paid extras, charged per booking or per person.
- Multi-currency — set the selling currency per tour.
- Tax / VAT — configurable rate and label, inclusive or exclusive, carried onto invoices.
- Deposits & balance collection — take a deposit now and collect the balance later with an automatic pay link and reminder, or allow pay-on-arrival.
- Discount coupons — percent or fixed, with a minimum-party gate, validity window and usage cap; reserved race-safely so a coupon is never over-redeemed.
- Gift cards — sell and issue store-credit gift cards redeemed at checkout, with optional expiry; a card that covers the whole amount skips the payment step entirely.
- Sequential invoices — numbered invoices with a configurable prefix.
Payments
- Stripe built in — embedded Payment Element with a signature-verified webhook as the source of truth (raw REST, no bulky SDK).
- Stripe hosted checkout — an alternative "Pay now" redirect (Checkout Session) mode.
- PayPal built in — PayPal Smart Buttons alongside Stripe; the customer chooses the provider at checkout (none / Stripe / PayPal / both).
- Test & sandbox modes — validate the whole flow before going live.
- Refunds — full or partial, wired into cancellation and provider-aware (refunds the Stripe intent or the PayPal capture automatically).
- Tiered cancellation-refund policy — set refund percentages by time-before-departure, per tour, with an all-or-nothing fallback.
- Reconciliation-grade ledger — an append-only charge / refund / deposit / balance record per booking, with Stripe fee and net figures for payout reconciliation.
- Double-charge protection — idempotency keys mean a webhook replay or page reload never charges twice.
- Demo confirm mode — take bookings with email confirmation before you've connected a payment provider.
Guest / customer experience
- Tour catalogue — a browsable list with thumbnails and a category filter.
- Nearby / radius search — surface tours near a location, distance-sorted.
- Rich tour page — gallery, meeting point, duration, difficulty, languages, what's included and excluded, and the cancellation policy.
- Departures list + ticket picker — pick a departure and per-tier quantities inline.
- Map embed — an OpenStreetMap meeting-point map with no API key or extra JavaScript library.
- Verified reviews & ratings — reviews are accepted only from real confirmed bookings, with an average rating and admin moderation.
- E-ticket / QR voucher — a printable voucher for each confirmed booking.
- "My bookings" self-service area — customers see their booking history and re-access their e-tickets.
- Self-service cancellation — cancel and get refunded per the tour's policy.
- On-site check-in — a token-secured check-in page for the day of operation.
- Guest ↔ host messaging — a booking-scoped message thread between customer and operator.
- Clean SEF URLs — human-readable tour links.
- Configurable contact band — a "Questions? Talk to us" block that can be full contact details, a single WhatsApp-concierge CTA, or hidden.
Marketplace (Portal mode)
- Two modes, one licence — run as Single (sell your own tours) or Portal (a commission marketplace) from the same product.
- Host self-registration — external operators sign up themselves, with optional auto-approval and KYC gating.
- Host dashboard — each operator gets their own KPI dashboard and recent-bookings view, scoped to their listings only.
- Host self-service listings — approved operators create and manage their own tours, departures and price tiers from the front end — no admin access needed.
- Listing approval queue — new host listings stay pending until published (publishing is the approval), or auto-publish if you prefer.
- Commission model — earn a configurable commission on every booking (10% default).
- Automatic Stripe Connect payouts (Joomla) — commission is split atomically at settlement via destination charges, with a payout ledger and Connect onboarding + KYC sync.
- Ownership isolation — every host-scoped action is IDOR-guarded so operators can never see or touch each other's data.
Admin & operations
- Operations dashboard — live KPIs for tours, departures, bookings, confirmed, active holds, revenue, waitlist and pending host listings.
- Full CRUD — tours, departures (capacity, price, guide, meeting-point override, cutoff), price tiers, coupons, gift cards and product options.
- Bookings management — cancel + refund, mark completed, check-in, mark no-show (with undo), collect balance, and an invoice link, per booking.
- Back-office booking creation — staff can create a booking directly, not only via public checkout.
- Per-departure manifest / day-sheet — a printable manifest plus a CSV participant roll-call for each departure.
- Day-of-operations dispatch board — a purpose-built board for running the day.
- Departures calendar — a month-view calendar of all departures.
- Sales reports — revenue, bookings, pax, average order value, refunds and net over any date range, with a prior-period comparison.
- Payout reconciliation report — reconcile the multi-row payment ledger against provider payouts, with CSV.
- CSV exports — bookings and a participant registry (the foundation for ES SES.Hospedajes / parte de viajeros reporting), UTF-8 so accented names survive Excel.
- Waitlist management UI — view and manage waitlist entries and promotions.
- Resource allocation — assign guides / vehicles to departures with overlap-conflict blocking.
- Liability waiver capture — record waiver acceptance and version on the booking.
Emails & notifications
- Booking confirmation emails — to customer and admin, including the meeting point and the e-ticket / manage / cancel links.
- Configurable email intro & footer — brand outbound emails with your own intro text and signature.
- Pre-departure reminders — automatic reminder emails ahead of each departure.
- Balance reminders — automatically chase outstanding deposit balances before the departure.
- Abandoned-hold recovery — a one-time recovery email nudging customers whose checkout expired.
- SMS / WhatsApp notifications — optional Twilio or WhatsApp Cloud sends alongside email (best-effort, off by default).
Integrations & developer API
- Reseller / public REST API — resellers can read the catalogue, check availability and create bookings, authenticated by hashed, scoped API keys; off by default.
- OCTO (octo.travel) supplier API — a read-only products / options / units / availability surface for OTA and channel-manager pulls, on its own independent toggle.
- Outbound webhook — HMAC-signed booking events pushed to your endpoint for automations.
- iCal export — publish each tour's departures as an .ics feed that Google Calendar / Outlook can subscribe to.
- Booking-source tracking — every booking records its channel (web / api / admin) plus UTM parameters.
- Analytics injection — GA4, Google Tag Manager and Meta Pixel tags with ecommerce events, built in.
Automation (scheduler)
- Built-in scheduled tasks — release expired holds, send reminders, run departure viability auto-cancel, send balance reminders, and sync Stripe Connect (marketplace) — as Joomla scheduled tasks and WordPress WP-Cron jobs.
Security, privacy & GDPR
- Token-gated bookings — bookings can only be viewed or confirmed with their secret token, so customers never see each other's data (no IDOR).
- CSRF protection — every state-changing form is token-checked.
- Signature-verified webhooks — payment webhooks are HMAC-verified with replay protection, never trusting the browser.
- GDPR consent capture — consent is recorded at booking time.
- Stored-XSS guard — host-submitted descriptions are HTML-filtered.
- Hashed API keys — keys are stored SHA-256-hashed and shown in full only once, at creation.
- Self-hosted data — all bookings and customer data live in your own database.
Localization
- English, Italian and Spanish out of the box — admin, front end and scheduler plugins fully translated, respecting your site's multilingual setup.
Trust & licensing
- GPL-licensed software — released under the GNU GPL.
- Self-hosted, you own the data — no third-party marketplace sits between you and your customers; payment providers use your own credentials.
- Annual licence, one site — includes the official build, one-click licensed updates and support.
- One-click updates — the extension checks the GMC / FuerteventuraTV update server automatically (Joomla ~24 h, WordPress ~12 h) and offers updates while your licence is active.
- Download key by email — entered once to unlock licensed updates.
- Lapsed-licence safe — if the licence lapses the installed product and existing bookings keep working; only updates and support stop.
- Proven in production — this exact build powers the live tours catalogue and checkout on fuerteventurasurfcamp.com.
Joomla & WordPress
- Joomla — requires Joomla 5.0+ or 6 and PHP 8.1+ (J6 target 8.2), MySQL 8 / MariaDB with InnoDB; the single pkg_gmctours package installs the component, the scheduler task plugin and the web-services API plugin; automated Stripe Connect marketplace payouts are available.
- WordPress — requires WordPress 6.0+ and PHP 8.1+; delivered as shortcodes + REST routes + WP-Cron with the identical seat-hold booking engine. Honest gap: no automated Stripe Connect payouts on WordPress — commission is tracked on each booking, but paying hosts is a manual admin step (Joomla has automated payouts).
FAQ
- Is there any per-booking commission?
- No. The plugin does not add a per-booking fee. Stripe fees remain Stripe fees.
- Joomla or WordPress?
- The licence can be delivered for the CMS version agreed after checkout.
- Can I buy both systems?
- Yes. Use Direct Booking Pack when you want tours and accommodation booking together.


