Author Archive

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

How to update theme and plugins →

23/06/2026

2.0.49

New
  • Separate "reservation hold" time for bookings pending approval (independent of payment deadline; can be disabled by setting 0).
  • Support for fixed-amount commission (flat fee per order) alongside percentage commission in stats and reports.
  • New hooks for add-ons on the booking confirmation page and the post-listing-submission screen.
Updated
  • Updated option to manually Add Booking as owner
  • Listing name in cart, checkout, orders, and emails now shows the current listing title instead of the previously stored version.
  • Listing selector in stats showed all users' listings (now only the user's own; admin still sees all).
  • Pricing Table (WooCommerce) widget now supports membership packages alongside listing packages.
Improved
  • Price summary in the booking widget hides zero-value line items.
  • Expanded the Font Awesome icon list in the icon picker.
Fixes
  • Price breakdown correctly displays fractional values (e.g. "× 1.5 hours").
  • PHP 8 fatal error when calculating service price (empty/free price or symbol/comma).
  • Listing-type save failure ("Unknown column 'booking_type'") — added self-healing for missing DB columns.
  • WordPress pages were being hijacked by listing URL rules and failed to display correctly.
  • Zoom integration OAuth callback redirected to the blog page instead of handling the connection.
  • "Copy to all days" button in opening hours did not work with 12-hour format.
  • Confirmation-page price for multi-tier tickets/events now matches the widget price.
  • Minor escaping and display fixes on the post-submission screen.
  • Listing Resources widget visible again in the Elementor panel and Theme Builder; better listing-context detection and clearer editor messages.
  • Booking Plus resource styles load correctly on Elementor pages and in the editor preview.
  • CSS fixes: dashboard calendar width, select2 dropdown position in the manual booking modal.
18/06/2026

2.0.48

New
Security
  • Security fixes
Improved
  • Listeo Analytics performance enhancements
16/06/2026

2.0.47

New
  • Touch support for front-end drag/sort (gallery, slots, pricing rows) via bundled jQuery UI Touch Punch.
Improved
  • "Login to Book": guest's date + time slot + service now restored after login (was date-only); fee total recomputed (bookings.js).
  • Recurring-event hooks: cards/search show next occurrence or "Past event" badge instead of a past start date (listeo_card_event_date, listeo_detail_event_date_value, listeo_core_event_expiry_ids).
  • Visits counted once per visitor / 30 min (cookie dedupe + new server-side legit_visits stat; analytics sums those).
  • Auto-created WooCommerce booking products now use the listing's featured/gallery image (thumbnail in cart/emails/Stripe).
  • Add-ons: Install enabled when a key is present; license verified at install time and cached.
Updated
  • Booking Plus moved to the license-included add-on flow (no longer "paid separate"); removed PRO badge/filter pill.
Fixes
  • Prevented accidental ticket/event auto-submit on page load
  • Expired/pending-unpaid bookings now release their slot instead of blocking it indefinitely.
  • Recurring events no longer expire on their first occurrence.
  • Google schema image emitted as ImageObject (fixes Search Console error).
  • Safer paid-listings package getters (no undefined-property notices).
14/06/2026

2.0.46

New
  • Listeo Booking Plus Free version included with Listeo
Improved
  • Small user dashboard overhaul
10/06/2026

2.0.45

New
  • Listeo Dashboard — new admin area to browse, install, and manage Listeo add-ons and licensing (add-ons catalog + dashboard UI).
  • New listeo_listing_type_row_meta hook so add-ons can show extra info on listing-type rows.
  • Booking price breakdown in the booking widget can start collapsed and expands by clicking the "Total Cost" row (new option "Show booking price breakdown expanded by default").
Improved
  • Accent-aware alphabetical ordering for search taxonomy dropdowns (filterable per field).
Updated
  • Bundled plugin versions updated (Listeo Core and add-ons).
Fixes
  • Coupons are now applied to the WooCommerce order for confirmed bookings — owner/seller coupons were previously rejected in programmatically-created orders, charging the full price.
  • Removed the enqueue of a non-existent listeo-modern-admin.js that caused a 404 on admin settings pages.
Tweaks
  • Minor listing card price display refinement.
  • Admin assets now load on the new Add-ons and Core settings pages.
  • Minor admin and customizer cleanup.
05/06/2026

2.0.44

Fixes
  • Fixes for Listeo Booking Plus
02/06/2026

2.0.43

New
  • Option to turn off Listeo schema.org output in Listeo Core -> General
  • Characters limit in search query (server resources protection)
Improved
  • Better sorting events by date
  • iCal import improvements (pre-scan the feed to avoid unnecessary clearing of valid blocked dates)
Fixes
  • Fix for Dokan routing issue on New product page.
  • Fix currency setting in schema.org
  • Fix for Ads display on categories
  • Fix for terms order in taxonomy search field
  • Fix for pricing menu item extra fields if Booking Module is disabled
Changes
  • In Pricing Menu item description the newlines are preserved.
31/05/2026

2.0.42

Fixes
  • Updater fix
27/05/2026

2.0.41

Fixes
  • Small fix for Setup Wizard conflict caused by Elementor redirect on activation.
27/05/2026

2.0.40

Fixes
  • Fixes pricing row "Add Service" checkbox IDs on new rows were not reindexed, plus select2 reinitialization
  • listeo_render_svg_icon() fatal in Elementor widget contexts
  • Fixes for WordPress 7.0
  • Fixed "Invalid Package" error after preview on subscription listing packages
Changes
  • Owner / Classified widget "Show Send message button" setting now applies to guest visitors too
  • replaced deprecated addslashes_gpc() with wp_slash()
  • Services (pricing menu) option can be now enabled in Listing Type setting even if booking is disabled
  • Dynamic per-listing-type taxonomy controls in Listings Carousel, Grid, and Wide Elementor widgets.
  • Listeo blog posts author box displays social icons and link to profile
  • Listeo Core → General → "Author Page" block with option to control author page listings/posts display.