How to configure Experience

In the following tutorial we will use the term Experience. Depending on your business you can read it as “Tour”, “Activity”, “Excursion”, “Class” or “Session” — the plugin handles all of them.

PREREQUISITES:

  • Joomla 6.x, PHP 8.4+, MySQL 8.4+ / MariaDB 10.11+
  • Solidres 4.0.6 or newer (the installer refuses to run on anything older). Solidres 4.2.x is recommended.
  • Experience plugin 2.0.5+
  • The Solidres - Custom Field plugin must be installed and enabled before you install Experience. Experience aborts the component boot with an error if it is missing.

The Bank Wire, Pay Later, Offline and PayPal experience payment plugins are bundled inside the Experience package and are installed automatically. You do not need to download them separately.

STEP 1. Download and install

Download the Experience plugin from your Downloads page and install it with the Joomla Extension Installer. While you are there, also download any of the optional companions you want:

  • Experience site modules — Search, Filter, List, Categories, Extras, Coupons, Book form, Tracking (see STEP 12).
  • Extra payment gateways — Stripe, Authorize.Net, PayPal Pro, Omise, Alfa-Bank, PayKeeper.
  • Solidres - Experience Invoice — adds an Invoices screen and PDF invoices for experience reservations.
  • Solidres - Feedback — guest reviews and ratings on experiences.
  • Solidres - Discount, Solidres - Advanced Extra, Solidres - Stream, Solidres - Hub.

After installing, open Solidres → System Info and confirm that the Experience plugin is enabled. When it is, a new Experiences section appears in the left-hand navigation bar with the following screens:

Solidres left navigation bar showing the Experiences section and its sub-menu items
Screens in the Experiences section
Screen What it is for
CategoriesGroup your experiences. At least one category is required.
ExperiencesThe experiences themselves.
TransportationsTransport types you can attach to an experience (bus, boat, on foot…).
ExtrasPaid or free add-ons offered during booking.
CouponsDiscount codes the guest types in at checkout.
DiscountsAutomatic rules applied without the guest doing anything.
GuidesPeople (or teams) who run the experience, used by Time slots.
Custom fieldsThe fields of the front-end booking form.
ReservationsExperience bookings.
InvoicesOnly shown when the Experience Invoice plugin is enabled.
StatusesReservation statuses for experiences — separate from accommodation statuses.
OriginsBooking origins for experiences — separate from accommodation origins.
Reports & statisticsThe experience dashboard.

STEP 2. Choose your main activity

Go to Solidres → Configuration → Component and set Main activity:

  • Property & experience (default) — both sections are shown.
  • Property — the Experiences section is hidden, even though the plugin is enabled. Use this if you only sell accommodation.
  • Experience — use this if you only sell tours and activities.

If the Experiences section does not appear after installation, this setting is the first thing to check.

STEP 3. Categories and transportation

Categories

You need at least one category. Categories group your experiences and can be used to restrict a menu item or a module to a subset of them. Each category has a name, alias, image, description, published state and (for multilingual sites) a content language.

The Experience categories list in the Solidres back end

Transportation

Create every transport type your business uses, so you can attach them to experiences later. An experience must have at least one transportation assigned.

The Transportation list in the Solidres back end

STEP 4. Extras

Extras are optional add-ons a guest can pick while booking — lunch box, hotel pick-up, equipment rental, insurance, and so on.

Fields on an experience extra
FieldMeaning
Name / Description / ImageWhat the guest sees in the booking form.
MandatoryThe extra is always added and cannot be removed by the guest.
Charge typeCurrently Per booking.
Max quantityUpper limit the guest may order.
Price / Price for adult / Price for childUse the flat Price, or set different adult and child prices.
ExperiencesWhich experiences offer this extra. Leave empty to offer it on all of them.
TaxTax rule applied to the extra.
AccessJoomla view level, so you can offer an extra to logged-in guests only.
ArticleLink a Joomla article shown in a pop-up (terms of the insurance, for example).

Install the Solidres - Advanced Extra plugin if you need extras with their own availability, stock or per-date rules. It supports Experience from version 1.0.1.

STEP 5. Coupons

A coupon is a code the guest types into the booking form. The plugin validates it and deducts the amount from the total.

  • Coupon code — what the guest types.
  • Amount and Is percentage — a fixed sum or a percentage of the total.
  • Valid from / Valid to — the window in which the coupon may be used.
  • Valid from check-in / Valid to check-in — the window the experience date must fall in. Use it for “20% off trips in November, book any time”.
  • Quantity — how many times the coupon may be redeemed in total.
  • Customer group — restrict the coupon to one group of customers.
  • Experiences — restrict the coupon to specific experiences.

The coupon box only appears in the booking form when Enable coupon is switched on for that experience (Publishing tab). It is on by default.

STEP 6. Discounts

Where a coupon needs the guest to do something, a discount is applied automatically when its condition matches. Discounts are evaluated in Priority order, and a rule with Stop further processing ends the chain.

Experience discount types
TypeTriggers on
Length of stay (hours)The duration of the experience in hours falls between the lower and upper limit.
Length of stay (days)The duration in days falls between the lower and upper limit.
On the experience availabilityHow many places are still free — use it to fill up departures that are selling slowly.
On number of days booked in advanceEarly-bird or last-minute pricing.

Each rule has a Value that is either a fixed amount or a percentage, a validity window, and an Applied to list of experiences.

This screen needs the Solidres - Discount plugin (1.0.1+) installed and enabled.

STEP 7. Custom fields

Experience ships with ten built-in customer fields: Title, First name, Middle name, Last name, Email, Landline number, Mobile phone, Company, Address 1, Address 2. They are what the guest fills in on the front-end booking form.

Open Experiences → Custom fields to add, edit, reorder, publish or unpublish them. Mark a field optional to make it non-mandatory. The available field types come from the Custom Field plugin (text, textarea, select, radio, checkbox, email, date, country, state…).

The custom fields list for the experience customer context

These fields live in the com_solidres.experience.customer context and are separate from the accommodation booking fields. Editing them does not affect your property booking form.

You can choose which of them appear as columns in the reservation list — see Configuration → Experience → Custom fields in reservation list.

STEP 8. Guides

A guide is the person or team that runs an experience. Guides exist so that Solidres can stop the same guide being sold twice at the same time — even across two different experiences.

  • Name — how the guide appears in the back end and in the front-end time slot picker.
  • Status — unpublishing a guide immediately hides every time slot assigned to it.
  • Partner — the Solidres partner who owns this guide (used with the Hub plugin).
  • User(s) — one or more Joomla users behind the guide. Assign the actual staff member here so they can be reached through their Joomla account.

You only need guides if you are going to use Time slots. An experience sold once per day does not need one.

STEP 9. Time slots

Time slots let you sell the same experience several times on the same day — a 09:00 walking tour, a 14:00 one and an 18:00 one — each one run by a named guide, each one with its own remaining capacity.

Defining slots

Open the experience, go to the Time slots tab and add one row per slot. Each row has four fields:

Fields of a time slot
FieldMeaning
From timeThe starting time, in 15-minute steps.
To timeThe ending time, in 15-minute steps.
Select a dayThe week day the slot applies to, or Every day. Add several rows to build a weekly schedule — for example one 09:00 row for Saturday and another for Sunday only.
GuideRequired. The guide who runs this slot. Slots are grouped by guide in the front end.

What the guest sees

Once an experience has at least one time slot, the booking form shows the guides with their slots after the guest has picked a date and a number of participants. The guest chooses a slot, and the number of places left is shown next to it (subject to Show participants left in the configuration).

How availability is calculated

This is the part worth understanding, because it explains why a slot sometimes appears greyed out:

When a time slot is blocked
SituationResult
Places sold out Remaining capacity is Max group size minus the participants already confirmed on that date, guide and slot. At zero the slot is blocked.
The guide is busy on another experience If that guide already has a confirmed booking in the same slot for a different experience, the slot is blocked here. This is the main reason to use guides.
Overlapping slots for the same guide Booking a guide from 09:00–12:00 also blocks that guide’s 10:00–11:00 and 11:00–13:00 slots, because one person cannot run both.
The slot has already started today Slots whose time has passed are blocked for same-day bookings, evaluated in the visitor’s time zone.
The experience is private With Is private on, the first confirmed booking closes the slot completely, no matter how many places remain.
The guide is unpublished All of its slots disappear from the front end.

IMPORTANT “Confirmed” here means the reservation status you selected in Configuration → Experience → Confirmation reservation status. If that setting points at the wrong status, capacity will never be counted and slots will look permanently free. Check it before you go live.

Times are displayed as 12-hour or 24-hour according to Configuration → Experience → Time format 24h.

An experience with no time slots falls back to plain per-date capacity: the whole day is one departure, limited by Max group size or by the per-date quantity you set on the Available dates calendar.

STEP 10. Create the experience

Now the main part. Go to Experiences → Experiences → New. You can hover over any field label to read its description.

Tab: General

Basic information about the experience. The required fields are Name, Categories, Transportations, Country, Base location, End location, Duration, Duration unit, Min participant, Max participant and Max group size.

Notable General fields
FieldMeaning
AliasThe URL segment. Leave it empty and Solidres generates it from the name.
CodeYour internal reference for the experience.
PartnerThe owner of the experience when you run a marketplace with the Hub plugin.
TaxThe tax rule applied to the experience price.
Base location / End locationWhere the experience starts and finishes. Both feed the front-end search and the distance filter.
Start timeThe default departure time for experiences that do not use time slots.
Duration / Duration unitA number plus Days or Hours. Used by the duration filters and by length-of-stay discounts.
Min / Max participantThe smallest and largest party one booking may contain.
Max group sizeThe total number of guests the experience can take — this is the capacity that time slots and per-date availability count against.
LanguagesThe languages the experience is delivered in (not the Joomla interface language).
TagsStandard Joomla tags. They power the tag filter in the front end.

Below the fields you will find the description editors: Short description (used in listings), Description, Long description, Pricing info, Price includes, Price excludes and Cancellation policy.

The General tab of the experience edit form

Tab: Publishing

This tab holds far more than the publish state. It is grouped into four blocks.

Publishing and menu

  • Is private — once a booking on a date or slot is confirmed, that date or slot becomes unavailable to everybody else, regardless of how many places remain. Use it for privately chartered experiences.
  • Status, Created, Created by, Modified, Modified by.
  • Add to menu — create the front-end menu item for this experience right here: pick the menu, the title and the alias. If a menu item already exists, an Edit menu item link replaces these fields.

Deposit

Take part of the money now and the balance later:

  • Deposit required — switch the feature on.
  • Deposit typePer booking (one deposit for the whole reservation) or Per person (multiplied by the number of participants).
  • Deposit is percentage — treat the amount as a percentage of the total instead of a fixed sum.
  • Deposit amount.
  • Include extra cost — whether the extras are included in the amount the deposit is calculated from.

The guest can settle the outstanding balance later from the reservation detail screen in the front end.

Guest options

  • Disable customer registration / Force customer registration — book as a guest, offer an account, or require one.
  • Enable single supplement, with a value that is a fixed amount or a percentage — the surcharge for a solo traveller.
  • Enable coupon — show or hide the coupon box on this experience.
  • Collect guest info — when on, the booking form asks for details of every participant, not just the person paying. You choose which details individually: first / middle / last name, gender, date of birth, nationality, single room, dietary requirements and passport.
  • Count children — whether children count towards the participant limits.

Display, media and SEO

Display options
OptionEffect
Slideshow images / Gallery imagesPick the media folders used for the header slideshow and the photo gallery. Filename as caption turns the file names into captions.
Show accommodation tabAdds a tab with a map of nearby Solidres properties at the base and/or end location, with optional location overrides and a list of associated properties. Requires the Hub plugin.
Information blockFifteen individual switches for what appears in the info block: duration, scale, base location, end location, group size, categories, transportation, languages, phone, email, WhatsApp, Facebook, price includes, price excludes and cancellation policy.
Show list / item reviewStar ratings in the listing and on the detail page. Requires the Feedback plugin.
Disable online bookingTurns the experience into a brochure page. You can still Show price, and swap the booking form for an inquiry form with its own captcha and email format.
Available dates formatShow the available dates as a calendar or as a drop-down list.
Min / Max days book in advanceThe booking window. For example 7 and 90 means “at least a week ahead, at most three months ahead”. 0 means no limit.
Invoice noteText appended to the invoice for this experience.
Meta title / description / keywordsPer-experience SEO metadata.

Tab: Language associations

Only shown on a multilingual site with Joomla associations enabled. Link this experience to its translations so that the language switcher moves the visitor to the right version.

Tab: Contact

Business details used in the outgoing emails and, when enabled, in the front-end information block: company name, logo, email, phone, fax, city, country and state, plus WhatsApp and Facebook links.

Tab: Pricing

Prices are defined here; per-date exceptions belong on the Available dates tab.

Adults

Simple flat pricing — if every adult pays the same, just fill in Price per person and leave the table empty.

The Pricing tab with a single price per person

Pricing per booked number of adults — to charge less as the party grows, add rows to the table:

The Pricing tab with tiered prices by number of adults
  • Number of adults = 1 and Price = 10
  • Number of adults = 5 and Price = 9
  • Number of adults = 10 and Price = 8

That means (assuming the currency is US dollars):

  • If the guest books 1 to 4 adults, the price is $10 for each adult.
  • If the guest books 5 to 9 adults, the price is $9 for each adult.
  • If the guest books 10 or more adults, the price is $8 for each adult.

Children

Children work the same way, with one addition: each row also carries an age range. Enter the base Price per child first — the age-range table only becomes active once that is non-zero. A row is from age, to age, number of children and price, so you can charge, say, nothing under 3, half price from 3 to 11, and full price from 12.

Tab: Available dates

By default an experience has no availability at all — nothing can be booked until you open some dates here.

  • Click a date to mark it available. Click again to close it.
  • Click a month name to open the whole month in one go.
  • Hover a selected date and use Set pricing to give that single date its own capacity and price — useful for public holidays and peak weekends.
  • Use the From / To pickers at the top with Set pricing to apply custom capacity and prices across a whole date range at once.

Per-date pricing accepts the same structure as the Pricing tab: a number of adults with a price, and child rows with age ranges. The quantity you set on a date overrides Max group size for that date only.

Tab: Time slots

Covered in full in STEP 9.

Tab: Payments

Enable and configure the payment gateways for this experience. Every installed experiencepayment plugin adds its own collapsible section here, so each experience can use a different set of gateways.

Bundled with the plugin: Bank Wire, Pay Later, Offline and PayPal. Available as separate downloads: Stripe (including Stripe Connect), Authorize.Net, PayPal Pro, Omise, Alfa-Bank and PayKeeper.

Each gateway also exposes a base rate surcharge, so you can add a card fee where the law allows it.

For any gateway that asks for a Success message, this text is a good starting point:

	<p>Thank you [CUSTOMER_FIRSTNAME] [CUSTOMER_LASTNAME]!</p>
	<p>Your reservation number [CODE] via [TOUR_NAME] has been completed successfully.</p>
	<p>We've sent a confirmation email to [CUSTOMER_EMAIL]</p>

When Enable Stripe Connect is on in the Solidres configuration, the Stripe section swaps its normal keys for the Connect fields automatically.

Tab: Plugins

Appears only when a plugin has injected fields into the experience form. Each contributing plugin gets its own collapsible panel.

Tab: Stream

Back-end only. With the Solidres - Stream plugin installed, this tab shows the full audit trail of events recorded for this experience.

Tab: Custom tabs

Add your own tabs to the front-end experience page — itinerary, what to bring, FAQ, meeting point. Each tab is a title plus a rich-text body, and they are reorderable.

STEP 11. Front-end menu items

Installing the plugin adds four Joomla menu item types under Solidres:

Experience menu item types
Menu item typeWhat it shows
Single experienceOne experience. You select which one when creating the menu item.
Experiences listA list of experiences. By default it shows everything; use the Frontend Setting tab to restrict it to certain countries, cities or categories. This is also the page that receives the results from the Experience Search module.
Experience categoriesA list of your categories.
Reservation tracking formLets a guest look up their booking with a reservation code plus their email address.
Creating a Single experience menu item in Joomla Creating an Experiences list menu item in Joomla

You can also create the menu item straight from the experience itself — see Add to menu on the Publishing tab.

STEP 12. Site modules

Publish these in Joomla’s Module Manager and assign them to a position and to the pages you want.

Experience site modules
ModulePurpose
Experience SearchThe search form. Set Menu item id so it knows which page to send results to.
Experience FilterFilters the search results by category, price range, partner, transportation and duration (days or hours).
Experience ListA list of experiences anywhere on the site.
Experience CategoriesYour category list.
Experience ExtrasShows the extras you configured.
Experience CouponsAdvertises the coupons you configured.
Experience Book FormPlaces the booking form outside the experience page.
Experience TrackingThe reservation lookup form (code + email).
The Experience Search module parameters including the menu item id

Search module options worth knowing

  • Menu item id — the Experiences list menu item that receives the search.
  • Base location / End location field type — render each as a free-text box (with optional autocomplete) or as a pre-defined drop-down list.
  • Search by category and Show range box — toggle those inputs.
  • Search range by date — add a date range to the form.
  • Embed code — a ready-made snippet that renders this exact search form inside an <iframe> on an external website. Copy it from the module’s parameters and paste it into the other site; results open in a new tab on your Joomla site. Save the module once before copying, because the snippet contains the module id.

STEP 13. Global Experience configuration

Open Solidres → Configuration → Experience. These settings apply to every experience.

Configuration → Experience
SettingMeaning
Default reservation statusThe status a new booking is created with.
Confirmation reservation statusThe status that means “this booking is real”. Availability and time slot capacity are counted from this status only, so get it right.
Confirmation / Pending / Cancellation payment statusWhich payment statuses map to paid, awaiting payment and cancelled.
Cancellation reservation statusThe status used when a booking is cancelled.
Starting price typeThe “from” price shown in listings: either the minimum price, or the price calculated for the participant count.
Show participants leftDisplay the number of remaining places in the front end.
Email when changing reservation stateSend the guest an email on status change, and which statuses trigger it.
Time format 24h12-hour or 24-hour clock for time slots.
Show sorting barThe sort control above the experience list.
Front-end filtersIndividually toggle the category, partner, transportation, price range, review, duration (days), duration (hours), distance, tag and country filters — and define the duration buckets.
Dashboard chartsThe chart type for the sales chart and the top-experiences chart, plus how many experiences the latter shows.
Custom fields in reservation listWhich customer custom fields become columns in the reservation list.
Terms and Conditions formatPoint the T&C and privacy links at Joomla articles or at external URLs.
Slideshow / Gallery thumb sizeThumbnail dimensions for the two image sets.

STEP 14. Reservations, statuses and origins

Experience bookings live in Experiences → Reservations, entirely separate from your accommodation reservations. Opening one gives you the guest’s details, the participants (adults and children), the extras, the invoice information, the IP address and language the booking came from, and the full payment history.

You can adjust the adults, children and extras of an existing booking and press Apply to recalculate the total, and you can export the list to CSV.

Statuses and Origins under the Experiences section are also experience-specific — editing them has no effect on accommodation bookings. Create the statuses that match your workflow first, then map them in Configuration → Experience.

STEP 15. Reports & statistics

Experiences → Reports & statistics is the experience dashboard. It shows hits and revenue for today, this month, last month, the last three months, the last six months and this year, a sales chart over time, and a top-experiences chart. The chart types and the top-experiences limit are set in the configuration.

STEP 16. Front-end management for partners

Experience owners do not need a Joomla back-end account. When the Solidres - Hub plugin is enabled, partners can manage their own business from the site itself:

  • My experiences — create and edit their own experiences, including pricing, available dates and time slots.
  • Reservations — view and manage their own bookings.
  • Extras, Coupons and Guides — the same screens as the back end, scoped to that partner.
  • Dashboard — their own reports and statistics.

Visitors who are not logged in are redirected to the Joomla login page and returned afterwards. The Partner field on experiences, extras and guides decides who sees what.

STEP 17. Optional add-ons

Plugins that extend Experience
PluginWhat it adds
Solidres - Experience InvoiceAn Invoices screen in the Experiences section, PDF invoices and invoice emails. The Invoice note field on each experience is appended to them.
Solidres - FeedbackGuest reviews and star ratings, shown in the list and on the detail page via Show list review / Show item review, and usable as a front-end filter.
Solidres - DiscountRequired for the Discounts screen.
Solidres - Advanced ExtraExtras with their own availability and stock rules.
Solidres - HubThe partner front end, and the Show accommodation tab map on the experience page.
Solidres - StreamThe audit trail shown on the Stream tab.
Solidres - Custom FieldMandatory. Experience will not boot without it.

Troubleshooting

Common problems and their causes
SymptomCause and fix
The Experiences section is missing from the navigation bar Either the plugin is disabled, or Main activity is set to Property. See STEP 2.
An error about the Custom Field plugin on every Solidres page The Custom Field plugin is missing or disabled. Install and enable it — Experience depends on it.
Nothing can be booked; the calendar is empty The experience has no available dates. Open the Available dates tab and click the dates or the month names.
Places never run out; sold-out departures stay bookable Confirmation reservation status in Configuration → Experience points at a status your bookings never reach. Capacity is only counted for reservations in that status.
A time slot is greyed out and I do not know why Work through the table in STEP 9. The usual answer is that the guide is already booked at that time — possibly on a different experience, or on an overlapping slot.
No time slots appear at all in the front end The guide assigned to them is unpublished, or the slot’s week day does not match the date the guest picked.
Only one date shows in the drop-down Check Available dates format and the Min / Max days book in advance values on the Publishing tab — a narrow window hides most dates.
The search module returns nothing Its Menu item id is not pointing at an Experiences list menu item.
Uppercase text such as SR_EXP_… appears on screen A language file did not install. Reinstall the plugin package; do not copy language files by hand.
The accommodation tab is missing on the experience page Show accommodation tab requires the Hub plugin to be installed and enabled.

All the things you need to make your work easier. Did you like Solidres?