GMC Tours — Documentation (WordPress)
GMC Tours for WordPress turns your own site into a complete excursions and guided-tours booking platform: tours with scheduled departures and per-person price tiers, an anti-overbooking checkout with Stripe and PayPal built in, and an optional marketplace (Portal) mode where other operators list their tours and you earn a commission on each booking. It is aimed at tour operators, activity providers and destination sites that want to take bookings directly instead of paying listing fees to a third-party marketplace.
Requirements: WordPress 6.0 or newer, PHP 8.1 or newer.
Installation
- Log in to your WordPress dashboard and go to Plugins → Add New Plugin → Upload Plugin.
- Choose the plugin
.zipfile you downloaded after purchase. Keep it zipped — do not extract it first. - Click Install Now, then Activate.
- After activation the plugin's own settings screen appears in the admin menu. Open it to start configuring.
Configuration
All configuration happens in the plugin's admin menu, which appears after activation. Work through these steps in order:
- Enter your Download Key. You receive the key by email with your licence. Paste it into the Download Key field on the plugin's settings screen. This unlocks licensed one-click updates from the GMC / FuerteventuraTV update server.
- Choose the operating mode. The same plugin runs in two modes: Single (you sell your own excursions) or Portal (a marketplace where other operators list tours and you take a commission — 10% by default). Pick the mode that matches your licence and business model.
- Configure payments. Enter your own Stripe and/or PayPal credentials. Both providers are built in; the customer chooses between them at checkout. Set up deposits, currencies, taxes/VAT and any coupons or gift cards you want to offer. Always run a test-mode booking before going live.
- Check languages. The plugin ships with English, Italian and Spanish and respects your site's multilingual setup — no extra language packs needed for these three.
In Portal mode you will additionally set up host onboarding and Stripe Connect so commissions and payouts flow to each operator automatically. A Vokira WhatsApp concierge gate is also available for booking requests in Portal mode.
Using the plugin
Creating tours and departures
Each excursion is created in the plugin's admin area with its scheduled departures, per-person price tiers (for example adult/child), and optional add-on extras. The front end then shows a catalogue page and, for each tour, a full tour page with gallery, meeting point, "what's included" section, the departures list and a per-tier ticket picker.
Taking bookings and payments
Customers browse the catalogue, pick a departure and tier quantities, and pay at checkout with Stripe or PayPal. Seats are held with a transactional lock at checkout, so the last seat on a departure can never be sold twice; a scheduler automatically releases holds that expire unpaid. Deposits, multi-currency, taxes/VAT, coupons, gift cards and refunds are all handled inside the plugin.
Reviews
Each tour page collects customer reviews and displays them with average ratings, helping convert visitors into bookings without sending them to an outside platform.
Portal (marketplace) mode
In Portal mode, independent operators (hosts) are onboarded and list their own tours on your site. You earn a commission on every booking (10% default), payouts run through Stripe Connect, and hosts can message customers directly through the built-in host-to-customer messaging.
Updates & licence
- Automatic updates. The plugin checks the GMC / FuerteventuraTV update server on its own (about every 12 hours). New versions appear under Plugins or Dashboard → Updates like any other plugin, as long as your licence is active and the Download Key is in place. You can also re-download the latest build from your account at any time.
- Download Key. Delivered with your licence email; enter it once on the plugin's settings screen and updates keep flowing while the licence is active.
- Licence. The software is released under the GNU GPL. The annual licence (EUR 399/year) covers the official build, licensed one-click updates and support for one site. If the licence lapses, the installed plugin and your existing bookings keep working — you only stop receiving updates and support. For multiple sites or client projects, contact us for a volume or agency arrangement.
- Editions. This licence covers the
wp-gmctoursWordPress plugin. The Joomla component built on the same engine is a separate product.
Support
For help, reply to your purchase email or message us on WhatsApp at +34 633 168 995 (the same number appears in your licence email). Please include:
- the product name and version,
- your WordPress and PHP versions,
- a public URL or a screenshot of the issue (with any keys masked).
We answer in English, Italian and Spanish. If the plugin does not work as described and we cannot fix it for you, you can request a refund within 14 days of purchase.
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).


