Author Archive

Stripe Split Payments Support

[Discalimer] Listeo works with hundreds of WooCommerce payment gateways however split payment could be technically only with PayPal and Stripe. Without split payment you can use any payment gateway that works with WooCommerce. 🙂

Before you’ll raise a support ticket:
1. Ensure that the API keys and permissions are correctly configured in both WP and Stripe.
2. Verify that the Redirect URI in Stripe matches the one in your WordPress plugin.
3. Confirm that your Stripe account is fully verified (not pending).
4. Make sure you are not using account that is already connected to other platform
5. Clear any cache that might interfere with the connection.
6. Check https://docs.purethemes.net/listeo/knowledge-base/how-to-troubleshoot-stripe-split-payments/

Listeo supports Stripe Connect, which automatically splits payments between listing owners and you as the site owner. Stripe Connect is a marketplace payment solution provider.

This requires the official WooCommerce Stripe Payment Gateway to be installed and configured—only payments made through this gateway will be split. Stripe accepts major credit cards (Visa, MasterCard, American Express, Discover, JCB, Diners Club) and Bitcoin, and is supported in 47 countries. Stripe Connect creates a platform where listing owners can sign up and connect, automating payments and simplifying site management.


How it works

You have to enable your Connect Platform in Stripe dashboard. After properly configuring both Stripe and WordPress according to instructions below, the Wallet page will have an option “Connect to Stripe“.

Any Listing Owner who will click this button will be going through the “onboarding” process where he will set his own Stripe account and connect it to your platform. From now on every booking that will be made using Listeo that will be paid with Stripe gateway will be automatically splitted and you as platform owner will get the commission and the Owner will get his earning directly to his Stripe account. The money is then payout automatically by Stripe based on the settings or rules (it’s different based on the country)

 

How to configure Stripe Connect in Listeo


Let’s get started
  1. Create a stripe account by visiting https://stripe.com/. You’ll be viewing a page that asks you to Activate Payments, click that button to fill out your business profile to accept payments
  2. Go through the whole process of onboarding https://dashboard.stripe.com/account/onboarding – make sure you haven’t skipped any field there.

    It’s very important to have all the items checked, you even need to set your own branding color or upload logo as without it it won’t let you set Connect accounts.

  3. Next step, open Stripe Dashboard go to Connect, then go to “Get started with Connect“, where you will be able to complete your platform profile and add required informations to enable payments on your account

    Select “Buyers will purchase from you”

    Complete your platform profile and add required informations to enable payments on your account

    Select “Sellers will be paid out individually”

    In next steps select “Onboarding hosted by Stripe” and “Express Dashboard”
  4. Follow next steps to finish setting up Connect.

    It’s very important to have all the items checked, you even need to set your own branding color or upload logo as without it it won’t let you set Connect accounts.

  5. Get Client ID. For that go to Settings scroll down to Product Settings → Connect box,
  6. Navigate to Onboarding Options
  7. Copy your Test mode client ID and paste it in Listeo Core → Stripe Connect → Stripe Connect Test Client ID.

    and turn on OAuth Settings
  8. in Redirects section click +Add URL, and add there a link to your wallet page with /?stripe-setup=yes at the end, so the whole link would be
    https://www.yourdomain.com/wallet/?stripe-setup=yes
  9. Now Switch to Live mode and repeat those steps, get the Live Client ID to set it in Listeo Core, enable OAuth settings and add Redirect.
  10. In Stripe Dashboard →Developers you’ll find Publishable and Secret Key, copy them to Listeo Core → Stripe Connect fields, there are inputs for both keys for test and live mode, and you need that to onboard users. If you can’t copy/reveal the Secret Key in Stripe Dashboard, you can create a new one using “Create secret key” button.
  11. Review all other options

Setting Up WooCommerce Payment Gateway

  1. Install WooCommerce Stripe Payment Gateway
  2. Go to WordPress Admin → WooCommerce → Settings → Payments, find Stripe on the list, go to Manage and connect to your Stripe account you’ve just created in step before.

    It’s VERY important to not create a new account from that link in plugin, it has to be the one you already have and already has Connect enabled.

  3. It should automatically get all required API keys, but to be sure go to Settings, click Edit Account Keys and make sure both test and live keys are set.
  4. Set the webhook in your Stripe Account Settings as it’s explained in the popup. It’s important as this webhook is what is used to get data about payment. Make sure the webhook type is set to Account, not Connect.
  5. It’s important to know that this feature in Listeo is in its early stage and although we did a lot of testing we strongly encourage to run it in Test mode first to make sure everything works as expected. To do that go to wp-admin → WooCommerce → Settings → Payments → Stripe → Manage → Settings and check the “Enable test mode” checkbox

    After Connecting to Stripe, users will have a new box in Wallet page with few informations about his account and option to login directly to Stripe Dashboard to see all details about the payments to his account.
    Example view of Stripe Dashboard for Listing Owner

Before you’ll raise a support ticket:
1. Ensure that the API keys and permissions are correctly configured in both WP and Stripe.
2. Verify that the Redirect URI in Stripe matches the one in your WordPress plugin.
3. Confirm that your Stripe account is fully verified (not pending).
4. Make sure you are not using account that is already connected to other platform
5. Clear any cache that might interfere with the connection.
6. Check https://docs.purethemes.net/listeo/knowledge-base/how-to-troubleshoot-stripe-split-payments/


Why split payment works only with Stripe?

While we offer auto split payment support for commonly used gateway (Stripe), we are not able to provide support for every niche payment gateway from each country. If your website makes revenue maybe it’s worth hiring a professional who can implement a gateway that is popular in your country. Otherwise you can manage payouts manually.

Google Reviews Support

Important: API Usage & Costs
Google Places API calls are made only when visitors view listing pages and cached for 1 day (or more if you modified cache duration in Listeo Core). If you have many listing take into account that Google Reviews can result in API charges based on your usage.

Set up API quotas and billing alerts in Google Cloud Console →

To use that feature you need IP restricted API key added in  Listeo Core → Single Listing → Google Reviews).

https://docs.purethemes.net/listeo/knowledge-base/creating-google-maps-api-key/#radius-key

Listeo has option to show 5 latest reviews from Google Reviews for the listings.

To use it, you have to provide Place ID for the listing. If you are using Google Address auto suggestion feature, this will be automatically set if you choose a business/establishment/place from the suggestion list (yes! we have now option to actually search for places, not just address).

If you are using other map providers, you can get the Place ID from Places ID-finder. You can also use this method if Places ID finder doesn’t work for you

Places API allows to show only 5 reviews from that, those results are cached for 48 hours to not generate additional costs for API. To use that feature you need to have API key set for radius search (Listeo Core → Map Options → Google Maps API key for server side geocoding).


Troubleshooting

Google Reviews are not displaying, what can I do?
  1. First make sure you Google API key is properly created (not restricted to domain). In Listeo Core → Single Listing → Google Reviews Integration click “Test your API key“.
  2. The second most common reason reviews don’t show is using the Place ID for an address instead of the actual place. Searching by address alone gives an ID without reviews. To get reviews, use the place’s name and address. For example, “Via dei Tribunali, 32, 80138 Napoli NA” gives a different ID than “Gino e Toto Sorbillo, Via dei Tribunali, 32, 80138 Napoli NA.” You need the Place ID of the business, not just the address.
  3. Please also pay attention to the following options if google reviews are not displayed:
    – Show Google Reviews even if there are no Listeo reviews

Google Reviews API Rate Limiting

It is highly recommended to enable gateway for Google Places API to control API usage to prevent excessive charges from Google. Listeo Core → Single Listing → Google Reviews API Rate Limiting

Although the Listeo Core itself has a “API Rate Limiting” system, it’s always wise to configure quota limits directly in Google Cloud.

https://developers.google.com/maps/billing-and-pricing/manage-costs#set-caps
✅ SELECT the API in the drop-down menu (All Google Maps Platform APIs).
✅ SET requests/map loads/elements per day parameter according to what you are willing to pay each month.
✅ Click SAVE and repeat this process for any API you want to use.

Please set these limits to stay charge-free:
✅ Geocoding API → 320 requests per day
✅ Maps JavaScript API → 320 map loads per day
✅ Places API → 50 requests per day


When Google Reviews API is Called

  1. On listing page view but only when rating is not cached – transient cache expires by default: 1 day, configurable up to 999 days
  2. No cached data – First-time fetch for a listing with a _place_id
  3. Manual cache clear – Admin users can trigger cache reset for specific listing via ?clear_google_cache URL parameter e.g. https://www.test.com/listing/sample-listing/?clear_google_cache

Debuging

First, please verify this: I can’t see reviews! How to enable reviews? → 

For advanced users: you can use ?google_debug=1 parameter after listing URL and you will get derailed log in debug.log regarding Google Reviews fetching from visited listing, e.g:

[03-Oct-2025 13:08:39 Etc/GMT+0] === GOOGLE REVIEWS DEBUG - Listing ID: 560 ===
[03-Oct-2025 13:08:39 Etc/GMT+0] URL: /listing/test-listing/?google_debug=1
[03-Oct-2025 13:08:39 Etc/GMT+0] Gateway enabled option: on
[03-Oct-2025 13:08:39 Etc/GMT+0] Place ID: ChIJi-URiMdbFkcRejR0UEAeZtc
[03-Oct-2025 13:08:39 Etc/GMT+0] Gateway: ENABLED
[03-Oct-2025 13:08:39 Etc/GMT+0] TRANSIENT CACHE: EXISTS and VALID
[03-Oct-2025 13:08:39 Etc/GMT+0] Cache data type: array
[03-Oct-2025 13:08:39 Etc/GMT+0] Cache array keys: html_attributions, result, status
[03-Oct-2025 13:08:39 Etc/GMT+0] Cache status: OK
[03-Oct-2025 13:08:39 Etc/GMT+0] Result exists: YES
[03-Oct-2025 13:08:39 Etc/GMT+0] Cached Rating: 4.2, Count: 667
[03-Oct-2025 13:08:39 Etc/GMT+0] Number of reviews in cache: 5
[03-Oct-2025 13:08:39 Etc/GMT+0] RETURN: Cached data (from transient)
[03-Oct-2025 13:08:39 Etc/GMT+0] FINAL RETURN: array (status: OK)
[03-Oct-2025 13:08:39 Etc/GMT+0] Will display: 5 reviews
[03-Oct-2025 13:08:39 Etc/GMT+0] === END DEBUG ===

If there will be an issue e.g. with Google API limits you will see proper info, for example:

Error message in cache: You have exceeded your daily request quota for this API. If you did not set a custom daily request quota, verify your project has an active billing account: http://g.co/dev/maps-no-account

How to fix login stuck at “sending user info, please wait…”?

If you’re experiencing issues during logging in in and you get stuck on message ‘Sending user info, please wait…‘ there might be couple of issues:

  1. Most common cause of this problem are cache plugins active on your site. Try to disable them to see if that help. If it does – you may need to adjust plugin settings, as some may have aggressive optimization. For example, in WP Rocket, set the cache lifespan to 10 hours or less.
     
    If it still happens from time to time we suggest enabling “Skip additional login/registration security check” option in Listeo Core → Registration
  2. Another but less common reasonis often related to custom mod_security rules. Some hosting providers block login requests from non standard paths, so try to contact your hosting provider and ask them about it.
  3. And last but not least, you may experience this issue on nginx server, in that case, add the following lines to /etc/nginx/nginx.com
    fastcgi_temp_file_write_size 10m; 
    fastcgi_busy_buffers_size 512k; 
    fastcgi_buffer_size 512k;
    fastcgi_buffers 16 512k;
    client_max_body_size 50m; 
    proxy_buffer_size 16k; 
    proxy_busy_buffers_size 16k;

    if that won’t help, check if you have Nginx Content caching enabled, you might need to disable that to fix that problem

Why I have so many Products on my WordPress site?

Every time you create a listing, it creates a “shadow copy” of that listing in Products. So each listing has assigned its own product in WooCommerce -> Products. This is created to handle payments for Booking, so when booking request is confirmed, it creates WooCommerce order for that product, and user is able to pay for it.
Those products are set to product type “Listeo Booking”, they are not visible on front-end, and not indexed by google.

If you’re looking for only listing or ad campaign packages, please use the filter:

If you see these products on front-end shop you can disable then in Listeo Core → Dokan → Disable product categories from Dokan 

Search by date range

Until version 1.4.3 the “date range” field was used only to search for rental listing types. Since 1.4.3 we’ve added support for event type listing, but because of the way the search works, you can search for rentals and for events at the same time. For rentals, we’re looking for dates where the listing have no bookings made, and for event we search for dates which are in the selected range.


Setting Up date range

Go to Listeo Editor -> Search Form, choose the type of search form, if it already has Date range field click it to open, if no, drag the Date range field from Available searchable elements to the place in Search form, and click Save.

Now, click this new field to open its options. You should see this.

By choosing Rentals, you will limit Date Range only to rental listing type, and by choosing Event you will search only for events.

If you have both types and want to allow users to choose, select the last option, and drag from the Available searchable elements  the Listing Type field, that will allow user to select which listing types they want to search for.

You can of course remove service type as this won’t be returning any results. Date search for services is currently not available.

Coupons

How to add new coupon by owner

To add a new coupon, go to Dashboard → Coupons and click Add New Coupon. The opening screen will present you with the coupon code and other settings.


How to set up a coupon widget

If you would like to display a widget with coupon code and description first you have to add Coupon Widget in Appearance → Widgets for Single Listing Page

Then you can select specific coupon and enable widget for each listing in listing editor:


Managing coupons

From WordPress admin in WooCoomerce. Navigate to WP Admin → Marketing → Coupons. You can manage there both user coupons and own created by site admin.


Coupons do not work

If after all steps above you still can’t see coupons in listing pages and add listing form most likely you disabled them in  Listeo Core → Booking → Remove Coupons option from Booking widget and confirmation

Also make sure “Coupons” page is created with [listeo_coupons]  shortcode and assigned in Listeo Core → Pages → Coupons Manage Page

 

Categories and Sub Categories

This guide explains how categories work in Listeo. You can modify categories by navigating to WordPress Dashboard → Listings → Categories

Unlimited-Level Navigation, an example:
Level 1: Listing types (Services, Rentals, Events, Classifieds)
Level 2: Categories specific to each type (e.g., Restaurants under Services)
Level 3: Sub categories related to previous parent category (e.g. Italy Food, Asian Food under Restaurants)

User Flow:
1. User click drilldown field
2. Select listing type (e.g., “Services”)
3. Select specific category (e.g., “Restaurants”)
4. Can drill deeper into subcategories if available


Option 1 (Global Categories Drilldown)

This approach works best when listing types have common categories between them. By using Global Categories shared across all listing types, users start with the main shared categories at the surface level, then navigate through hierarchical subcategories as they go deeper.

Simply add “Any Categories” search filter, select “Drilldown Taxonomy” and add to the search form where you need it.

To avoid displaying both Global and Listing Type categories in add listing you need to disable “Register dedicated taxonomy” option


Option 2 (Listing Type + Categories Drilldown)

This approach works well for unrelated listing types with distinct category structures, using a hierarchical, multi-level dropdown menu. Users start with the main listing types at the surface level, then navigate through nested categories specific to each listing type at deeper levels.

Main advantage of this approach is the fact that you can edit for each listing type add listing form individually.

Requires Listeo at least Listeo v2.0

When creating custom listing type make sure to check “register dedicated taxonomy” – this will display listing type in categories page.

Add the “Choose Listing Type & Category” search filter to the search form using Listeo Editor.

To display  Listing Type categories in add listing you need to enable “Register dedicated taxonomy” option

You can remove “Global Category” dropdown in Listeo Editor in this case if you won’t use it and leave only “Listing Type Categories”


Bulk Add Categories

This feature in WP Admin → Listings → Bulk Add Categories allows you to quickly import multiple categories and subcategories at once using a simple text format.

Simply enter one category per line, use dashes to define hierarchy levels (- for subcategory, — for sub-subcategory), and optionally add FontAwesome icons using the pipe separator (e.g., Restaurant|fas fa-utensils).

You can AI assistants like ChatGPT or Claude to generate category lists – just copy the built-in prompt template and describe your business type. The feature supports all category types including global categories and listing type-specific categories like Service, Event, and Rental categories.

Changelog

Before browsing new features (on our demo or your website after update) please flush cache and perform “hard reload” by pressing Ctrl + F5 (or Cmd + Shift + R on Mac). 🙂

After theme update:
1. Make sure you updated also plugins (Listeo Core, Listeo Editor, and Listeo Elementor)
2. Clear your website’s cache and hosting cache after the update

18/10/2026

2.2.4

Release postListeo Update 2.2.4 ReportRead
New
  • Calendar view in Listings > Bookings that shows bookings by month, week or agenda, with the same listing, status, client, owner and resource filters as the list. It loads up to 500 bookings at a time, hides cancelled and expired bookings unless you pick that status in the filter, and shades owner-blocked days when one listing is filtered.
  • "Region base" field in Settings > Permalinks to replace `/region/` with your own word. Leave it empty to keep current URLs.
  • Setting "Resize images before upload (max px)" in Listeo Core > Submit Listing (default 2560): gallery photos larger than this are scaled down in the browser before upload. Scaled photos are rotated correctly and sent without camera metadata such as GPS position; smaller photos are sent unchanged.
Improved
  • The Listeo Core admin menu is grouped under Settings, Tools, Add-ons and Licenses headings.
  • "Listeo Ads" is now called "Promotions" in all text (menus, dashboard, settings, product type "Listing Promotion", widget "Listeo Promoted Listings").
  • OpenStreetMap tiles load from tile.openstreetmap.org directly instead of the old a/b/c subdomains. Custom tile servers are not affected.
  • Date range search reads dates correctly on sites with a day-first, text month date format
Updated
  • Region, Feature, listing-type category and listing type URL slugs are now in the translation template, so you can translate them in Loco Translate or Poedit.
Fixes
  • Gallery uploads no longer create blog, avatar, WooCommerce and extra-large image sizes for every photo, which reduces load and timeouts on shared hosting.
  • Failed gallery uploads show a short red error on the image, and the form cannot be submitted while an image is still uploading or has failed.
  • Changing any Listeo permalink base (listing, category, region, archive) now takes effect after one save. A region base that collides with another Listeo base is refused with a notice.
  • Listings > Bookings filters (status, client, owner, listing, resource) no longer end on "Sorry, you are not allowed to access this page". The Client and Owner dropdowns keep the selection and "Pay to Confirm" now matches bookings.
  • The all-listings map no longer freezes after a visitor allows location access with a search radius.
  • "Find my location" with OpenStreetMap no longer moves another listing's marker, keeps the zoom level, and works with address suggestions turned off. With Google, the results now refresh.
  • The "All published listings" map (Listeo Core > Map Settings > "Map markers source") and clustering work again on HTTPS sites whose WordPress address or upload path is still saved as http.
  • Listing descriptions no longer lose their paragraph breaks after being edited in the WordPress block editor and then in the dashboard. Existing listings display correctly without changes to stored data.
  • Removing an image from the gallery uploader now really removes it from the listing, and deletes it if it was not saved with any listing yet.
12/10/2026

2.2.3

Release postRelease PostRead
New
  • Search by category name. The keyword box can now also match the names of your categories, features, regions or any custom taxonomy you choose, so searching for a category name returns the listings filed under it even when the word appears nowhere in the listing itself. Listeo Core > Browse/Search Options > "Search taxonomy names". Off by default.
  • Address filters. Country, State / County, City and Postcode detected from a listing's address are now available as search fields in Listeo Editor > Search Forms. The detected address itself moved into the Location tab of the listing, next to the map.
  • Pay For Time ad campaigns. A new campaign type charging for a period of display rather than per view or per click, with a configurable price per day and minimum and maximum duration.
  • Fallback package. Listing packages can now specify where listings go when the package expires ("When listings on this package expire, move them to:"), instead of simply expiring.
  • Custom SMS gateways. The SMS Providers screen now links to a guide for connecting your own SMS or WhatsApp gateway.
Improved
  • The "Open Now" filter is back in Listeo Editor > Search Forms and now works on every layout, including the half-map and load-more views, with a correct result count and pagination. Only listings with Opening Hours switched on take part, matching the "Open Now" badge on the cards, and each listing is judged in its own time zone.
  • Number settings accept a comma as the decimal separator. A price typed as "0,15" used to be submitted as empty on browsers whose language expects a full stop, so it saved as blank with no warning.
  • The Minimal Search Form widget has a new "Search Button Text" control.
Fixes
  • Reviews posted by signed-in users were moved to the trash while the author was shown an "awaiting moderation" page. Blog comments from signed-in users were affected in the same way.
  • A guest review rejected by the CAPTCHA was reported back as "awaiting approval", so the visitor never saw the error.
  • Moderating a comment could log a PHP 8 warning and store an empty rating, which quietly removed the listing from the "Minimum Rating" search filter.
  • With AJAX browsing disabled, changing the sort order still sent an AJAX request: results came back as page one while the address stayed on /page/2/ and the pager stopped working.
  • "Best Match" could not be selected at all, and the two price sort orders did nothing on the listing archive.
  • Searching for more than one word matched listings containing only one of them: "senior care" returned everything mentioning "care".
  • With Maps Provider set to None, WordPress 6.9.1 logged a dependency warning on every page view.
  • A Drilldown field placed in the panel column of a fullwidth or boxed home search form printed raw template code onto the page.
  • Booking notifications were sent before the booking was saved, so a cancelled or racing change could still send emails, SMS and create a Zoom meeting for a booking that never changed status.
  • A free booking approved with "Approve Booking" never got its Zoom meeting, while the same booking marked through "Confirm Payment" did. Zoom meetings can also no longer be created twice for one booking.
  • Listing owners received the "listing expired" email twice.
03/10/2026

2.2.2

New
  • Owners Grid and Owners Carousel Elementor widgets for displaying listing owners.
  • Built-in breadcrumbs with an option to hide them in page title bars. Breadcrumb NavXT is now optional.
  • Configurable booking tax display: show prices including tax or display taxes as separate items.
  • Option to calculate booking taxes based on the listing location using WooCommerce tax rates.
  • Automatic listing address detection, manual address editing and tools to fill missing tax locations.
  • Option to mark additional fees as non-taxable and exclude taxes and pass-through fees from commission calculations.
  • New booking email tags: {price_total}, {tax_total}, {payment_method}, {tickets_breakdown}, {price_incl_tax} and {tax_note}.
Improved
  • Improved Owners Directory layout, responsive filters, profile fields and contact forms.
  • Service selections now stay synchronized between pricing cards and the Booking Plus popup, including individual services.
  • Consistent tax-inclusive totals and tax information across booking forms, booking dashboards and QR tickets.
  • Contact popups prevent repeated messages until the recipient replies. Messages related to a shared booking remain exempt.
Updated
  • CMB2 Field Slider is no longer listed as a required plugin.
Fixes
  • Fixed the pricing and bookable services editor layout on mobile devices.
  • Hidden unnecessary booking settings in pricing forms when bookings are disabled.
  • Removed artificial “Category 1” tabs for uncategorized services and fixed their visibility in mixed pricing menus.
  • Fixed Elementor Taxonomy Grid losing the selection order of categories and listing types.
  • Disabling enhanced admin screens now also restores standard WordPress category, feature and region screens.
  • Fixed coupon calculations with WooCommerce taxes and non-taxable fees.
  • Removed the misleading “Qty” column from booking order payment pages.
  • Purethemes MCP: fixed connections failing after OAuth when another plugin modifies REST JSON responses.
Security
  • Strengthened encryption for newly saved or refreshed Zoom credentials and newly created meeting host links and passcodes.
  • Disconnecting a Zoom account now requests token revocation.
  • Zoom Marketplace connections require explicit confirmation before linking an account.
30/09/2026

2.2.1

Release postRelease PostRead
New
  • Additional safety layer for listing submission and the user-profile file handler
  • Optional failed-login lockout blocks logins after repeated failures on the Listeo login popup, wp-login.php and XML-RPC
  • Owners Directory: public, filterable directory of listing owners via the [listeo_owners] shortcode
  • Option to use self-hosted Nominatim and OpenStreetMap tile servers
  • Verified column in Users > All Users and optional auto-verification of users who buy a package
  • New setting to show website and social links while contact details are hidden
  • New calendar on single listing Availability section
Improved
  • Shared reCAPTCHA v3 verification listeo_core_verify_recaptcha_v3() replaces five separate implementations; one token per form (register, booking, claim, review, login)
  • Drilldown/taxonomy menus: labels no longer show entities, terms sorted by name unless a term_order column exists
  • Hidden conversations: Restore conversation is a visible button again
  • Improvements for font icons
Updated
  • Pricing section: category tabs when there are several menus, card layout per item, lazy-loaded images
  • Google Reviews section: card carousel with arrows and avatars/initials
  • Features list rendered as cards
  • Listing reviews rendered as cards with header/footer
  • Redesigned POI cards
Fixes
  • Fixes the review form captcha
Changes
  • New Features
24/09/2026

2.2.0

Security
  • Hardened dashboard booking status changes.
  • Booking confirmation verifies a nonce and validates guest, ticket and extra-service quantities. (Child themes that override `booking.php` must add the new `listeo_booking_nonce` field.)
  • Additional validation for public single-listing calendars and calendar booking-detail requests
  • iCal subscriptions secured with per-listing random private tokens, optional guest details (off by default), private-link rotation and a control to disable legacy links (still served, availability-only, through the updated theme).
  • Removed the legacy remote license-command endpoint and its init hook.
New
  • New "Enhanced listings screen in wp-admin" setting (General > Listing Management, on by default). Turning it off restores the standard WordPress list table on Listings > All Listings, including the regular publish-date column and sorting
  • New "Custom field search relation" setting: AND/OR when a search matches several values of the same custom field. Previous behaviour stays the default. Filter: `listeo_custom_field_search_relation`.
  • New filters for add-ons extending the event booking widget: `listeo_event_booking_closed_notice`, `listeo_booking_confirmation_fee_subtotal`.
  • "Listing Type" (`_listing_type`) is available in the widget Display Condition and the Theme Builder template Condition, e.g. show the booking widget only for "accommodations".
Updated
  • Reordered the listing editor's Booking options into logical groups (booking and payment, prices, guests, children, pets, fees, tickets, time slots, hourly booking, availability)
  • "Expire listing after event date" did not expire events whose date had been edited: the timestamp was computed from the date saved before the edit. It is now recomputed after all listing meta is written, and removed when the date is cleared.
  • the "Store Settings" section of the frontend listing form is hidden from users whose package does not include Dokan store access when "Restrict Dokan Store to Packages Only" is on.
Fixes
  • Fixes for map bounds search after panning or zooming and then searching a different location
  • wp-admin availability calendar showed "NaN" and unlabeled buttons (missing calendar strings); fixed unreadable "Set Price" button colors in the price dialog.
  • Header Builder: custom button settings could be discarded on save or preset apply.
  • Header Builder: new elements were visible on every screen size instead of the one being edited, and toggling visibility could move an element. Both fixed.
16/09/2026

2.1.9

New
  • Single listing fullwidth photo layout and listing gallery mode
  • Light/dark/auto color scheme option for Google Maps
Fixes
  • Datepicker on events fields
  • Displaying prices after tax calculations in booking confirmation
  • Fatal Dokan error on post_date_column_time
Updated
  • Option to disable marker clusters on map
11/09/2026

2.1.8

New
  • Includes Listeo Notifications that adds WhatsApp and Web Push notifications alongside SMS, with scheduled booking reminders and customizable user preferences.
10/09/2026

2.1.7

New
  • Combined region and category URLs option (Listeo Core -> General Settings, next to the existing region+feature option)
  • Prevent overlapping time-picker bookings option (Listeo Settings -> Booking)
Improved
  • Free listing packages no longer require going through the WooCommerce checkout
  • All Listings on Map markers now use the category icon, like the regular map does.
Updated
  • Review criteria requested without a listing context now use the configured global criteria instead of theme defaults
Fixes
  • Sidebar ads on category/region filter
  • Changing account password could redirect to the wrong page (or a broken URL) on multilingual sites.
  • Date/time picker fields loaded into the page after the initial load (for example custom fields that only appear once a listing type or term is chosen) did not save their value.
  • The dashboard "Your Reviews" box was hidden from owner-type roles even when they had written reviews themselves.
  • Bug when renewing listing with new package could use 2 slots
  • A customer who kept a listing page open could submit a booking for a time slot or hour that had already passed.
Security
  • Several small security related fixes
03/09/2026

2.1.6

New
  • Listeo Header Builder: drag-and-drop visual header editor with multiple presets and per-page overrides.
  • Developer hook listeo_after_package_price on the pricing package selection step.
  • Timezone field now available on the pricing package step of Submit Listing.
Fixes
  • Admins and editors can open pending listings on the front end for review instead of getting a 404.
  • Zoom meeting invitations now use the listing's own timezone.
  • The "Choose Listing Type & Category" drilldown selection is preserved when half-map AJAX results refresh.
  • Cloudflare Turnstile now reliably renders in the login/register popup.
  • Combined taxonomy URLs no longer risk exhausting PHP memory on sites with many regions.
  • A page whose slug collides with a feature slug now correctly falls back to that page.
  • Pausing a Listing Package Subscription no longer strips listing package metadata.
  • reCAPTCHA v3 now works again on all forms that use it.
  • Event listings with an end date no longer disappear on the event day.
27/08/2026

2.1.5

New
  • Features
  • Full-page split screen design for the Login/Registration popup and the dedicated login page (Settings -> General -> "Login/Registration Form Design"): shows a customizable image or color-gradient panel next to the form, with optional overlay text.
  • Listings without an uploaded logo can now show the owner's profile avatar instead (Settings -> Single Listing -> "Use owner avatar as listing logo fallback").
  • Split Grid/Content with sidebar (No Map) archive layout: browse listings and filters side by side without a map, with AJAX browsing support.
Improved
  • On category pages and preset searches using the "All Listings on Map" option, the full set of map markers now loads right away instead of briefly showing unfiltered markers first.
  • Large category filter trees now load faster: big branches are fetched on demand (with hover-preloading) while smaller ones still load instantly.
Fixes
  • Fixed a rare issue where saving a WooCommerce listing package product (e.g. right after a plugin update, or via a script) could reset the package's modules, limits and other settings back to defaults if the package configuration screen hadn't fully loaded. Also fixed the package's subscription type sometimes reverting to the default "Package" option instead of saving your choice.
  • Fixed "Upcoming events" sorting timing out or returning broken/empty results on sites with a moderate number of event listings; sorting is now much faster and no longer slows down as listings grow. Also fixed the "upcoming events" filter being ignored when combined with custom field filters.
  • Fixed the "Load More" button spinning indefinitely on archive pages when the map's "All published listings" option was enabled. That option's map data also now builds immediately for sites with up to 5,000 listings, instead of waiting on a background task that could be delayed on some hosting setups.
  • Fixed category/taxonomy icons showing the wrong color in some places (including the Elementor hierarchical taxonomy widget).

Third Party Extensions for Listeo

We are not affiliated with these extensions and take no responsibility for them. Updates and compatibility are not guaranteed, and similar features may be added to the theme core in the future.

Want your plugin listed here? Contact us at [email protected]. If it meets our guidelines and doesn’t compete with official extensions, we may add it.

https://listingpilot.gr.com/