Author Archive

How booking works in Listeo?

Listeo Booking System Video Guide

Booking system in Listeo is divided into 3 methods: Rental, Services and Events.
It’s built into the theme and doesn’t require any additional plugins.


Rental (e.g. vehicles, apartments, products)

Ideal for booking tangible assets such as apartments, cars, bikes, or equipment.

Rental Booking Prices and Settings
This is where the listing owner can thoroughly customize their booking settings.

βœ… Regular Price and Weekend Price
βœ… Reservation Fee: An additional fee for making a reservation
βœ… Minimum Stay: Specify the minimum number of days required for booking
βœ… Enable Instant Booking: With this option enabled listing owner does not have to approve manually booking request.
βœ… Enable Price per Hour: Charge by the hour instead of per night or day -this feature is dedicated to hourly rentals, such as for cars.
βœ… Price per Guest regular price and weekend price will be multiplied by the number of guests to estimate the total cost.
βœ… Maximum and Minimum Number of Guests
βœ… Children Price: Custom price for children by applying a percentage discount
βœ… Animal Fee: An additional fee for animals
βœ… Mandatory Fees: Add required fees for the booking (e.g., Cleaning Service).

Rental Availability Calendar

The availability calendar allows users to manually block or unblock specific days and set custom prices for individual days. Users also have the option to bulk-select multiple days for easier management.


Services (e.g. restaurants, barbers, doctors)

Designed for appointments like doctor visits, barber bookings, or life coaching sessions. The key feature is the time slot configurator, ensuring precise scheduling.

Time Picker and Time Slots
The available settings are mostly the same as in rental listings.

Time Picker – By default, the booking widget includes a time picker, allowing guests to book freely within opening hours of listing. This method is less precise. To refine it, enable time slots.

Time Slots – Listeo simplifies time slot configuration by automatically generating slots based on previous ones and allowing users to copy them across weekdays, reducing manual effort.

Service Booking Prices and Settings
The available settings are mostly the same as in rental listings.

βœ… Regular Price and Weekend Price
βœ… Reservation Fee: An additional fee for making a reservation
βœ… Enable Instant Booking: With this option enabled listing owner does not have to approve manually booking request.
βœ… Enable Price Per Hour – this is quite important setting because it defines price calculation with this option enabled regular price will be multiplied or divided so for example if listing owner set regular price to 100 USD and configured 30 minutes time slots the price for time slot will be 50 USD
βœ… Price per Guest price will be multiplied by the number of guests to estimate the total cost
βœ… Maximum and Minimum Number of Guests
βœ… Mandatory Fees: Add required fees for the booking.

Service Availability Calendar

The availability calendar for services lets users manually block or unblock specific days. It also includes a bulk selection option for managing multiple days at once.


Events (e.g., concerts, conferences)

Events – designed for ticketed occasions like concerts or seminars. Users select a date to secure a spot. This method is tailored for one-time events rather than recurring bookings.

Event Booking Prices and Settings has the least options comparing to services and listings.

βœ… Available Tickets
βœ… Ticket Price
βœ… Reservation Fee: An additional fee for making a reservation
βœ… Minimum Stay: Specify the minimum number of days required for booking
βœ… Enable Instant Booking: With this option enabled listing owner does not have to approve manually booking request.
βœ… Mandatory Fees: Add required fees for the booking (e.g., Camping Pitch.


Extra Services

Extra services are available in all booking methods (Rental, Service, and Event) and are integrated with the pricing table on the listing page. Items in the pricing table can be set as bookable options in the booking widget.

Owner can add for each item/service photo, title, price enable it as a bookable service using toggle switcher.Β 

Listing owner can specify if it’s gonna be one time fee, multiplied by guest/days or both. He can also add quantity buttons so guest can multiply service in booking


Opening Hours

For rental listing types with hourly bookings enabled (e.g., car rentals), opening hours are crucial because bookings can only be made within the specified opening hours.

For service listing types that use a time picker without predefined time slots, the same principle appliesβ€”bookings are only possible within the designated opening hours range.


Listeo Core β†’ Booking

Additional settings for site administrator in Listeo Core β†’ Booking

Option Description
Allow user to book without being logged in User will be registered in the booking form with default role “guest”
Remove Guests options from all booking widgets Guest picker will be removed from booking widget
Remove Coupons option from Booking widget and confirmation Coupons are enabled by default
Allow owners to make bookings Β ON/OFF
Count last day of data range in rental bookings By default the last day as the check-out day is not calculated in price
Make First Name field required in booking confirmation form Β ON/OFF
Make Last Name field required in booking confirmation form Β ON/OFF
Make Email field required in booking confirmation form Β ON/OFF
Make Phone field required in booking confirmation form Β ON/OFF
Add address fields section to booking confirmation form Used in WooCommerce Orders and required for some payment gateways
Control display of selected Address fields in booking confirmation form Used in WooCommerce Orders and required for some payment gateways

  • Company Name
  • Street Address
  • Street Address 2 (Apartment, suite, unit, etc.)
  • Postcode/ZIP
  • Town
  • Country
  • State
Make selected Address fields required in booking confirmation form Used in WooCommerce Orders and required for some payment gateways

  • Company Name
  • Street Address
  • Street Address 2 (Apartment, suite, unit, etc.)
  • Postcode/ZIP
  • Town
  • Country
  • State
Disable payments in bookings Bookings will have prices but the payments won’t be handled by the site. Disable Wallet page in Liste Core β†’ Pages
Disable extra services type option Those services are enabled by default, if you check any of them now it will disable it on the list. Disabling all will remove that option

  • One time fee
  • Multiply by guests
  • Multiply by days
  • Multiply by guests & days
For “instant booking option” require payment first to confirm the booking Users will have to pay for booking immediately to confirm the booking.
Add 15 minutes lock after booking Add 15 minutes lock after booking a listing to not allow users to book again immediately
Show Expired Bookings in Dashboard page Adds “Expired” subpage to Bookings page in owner Dashboard, with list of expired bookings
Set how long booking will be waiting for payment before expiring Default is 48 hours, set to 0 to disable
Show Host/Guest contact and address info only for Paid Bookings in Dashboard page Contact informations will be hidden for pending bookings
Enable Ticket option It will add downloadable/printable tickets to bookings
Ticket Terms and Conditions Text that will be displayed on the ticket

SMS Notification & OTP verification

Listeo SMS Notification plugins add capabilities to your registration process that can enhance the security and user experience of your application. It also allows you to send notification to users about upcoming bookings, expiring listings or new bookings or reviews.This guide walks you through the steps to configure it.


How to install?

  1. Go to https://purethemes.net/license/ and download Listeo SMS plugin
    You’ll need purchase key: How to find my license key?
  2. Upload listeo-sms.zip in WP Dashboard β†’ Plugin β†’ Add New and install & activate.

How to configure?

  1. Create a Twilio Account: Go to the Twilio website and sign up for an account if you don’t already have one.
  2. Verify Your Email and Phone Number: Complete the verification process for your email and phone number.
  3. Get Twilio API Credentials: Once your account is set up, navigate to the Console Dashboard to find your Account SID and Auth Token. These credentials are required to authenticate API requests.
  4. Copy those information to Listeo Core -> SMS Settings -> Providers, there are settings for Twilio Account SID, Twilio Auth Token and Twilio phone number
  5. And that’s all, now you can turn on which SMS you want to send and configure their content


If you want to test it first without actually spending money on Twilio, you can enable Debug Mode in Listeo Core β†’ SMS Settings, with that enabled you will see the messages sent in Listeo Core β†’ View Debug log

To enable debugging mode go to Listeo Health and enable it under “debugging section”.


What notifications are sent?

All notifications listed in this article:

Automatic Email & SMS Notifications


Additional settings for SMS: Listeo Core β†’ SMS Options

Setting Name Option/Details
SMS Service Configuration
Enable SMS notificationsΒ activate SMS, turn on text messages, enable mobile notifications, activate messaging service, SMS functionality toggle, text notification system Activate SMS messaging functionalityΒ checkbox
SMS ProviderΒ SMS gateway, messaging service, text message provider, SMS API service, messaging platform, SMS vendor, bulk SMS service Choose SMS service providerΒ select
Options: Twilio
API Configuration
Twilio Account SIDΒ Twilio account identifier, Twilio ID, account security identifier, Twilio credentials, SID authentication Twilio account identifierΒ text
Twilio Auth TokenΒ Twilio secret key, authentication token, API secret, Twilio password, API authentication, security token Twilio authentication tokenΒ password
Twilio Phone NumberΒ sender number, SMS from number, Twilio number, messaging number, outgoing number, SMS sender ID Your Twilio phone number for sending SMSΒ text
OTP & Verification
Enable SMS OTP verificationΒ phone verification, mobile number verification, SMS authentication, two-factor SMS, 2FA SMS, phone number validation, mobile OTP Require SMS verification for user registrationΒ checkbox
OTP code lengthΒ verification code digits, OTP length, PIN code length, security code length, verification digits, authentication code size Number of digits in OTP codesΒ number
Range: 4-8 digitsΒ Default: 6
OTP expiry time (minutes)Β verification code validity, OTP timeout, code expiration, validation window, OTP TTL, verification time limit How long OTP codes remain validΒ number
Range: 1-60 minutesΒ Default: 10
SMS OTP message templateΒ verification SMS template, OTP message format, authentication text template, verification SMS content, OTP text format Template for OTP SMS messagesΒ textarea
Available tags: {otp_code}, {site_name}, {expiry_minutes}
Default: “Your verification code is: {otp_code}. Valid for {expiry_minutes} minutes.”
SMS Notifications
Send SMS for new bookingsΒ booking SMS alert, new reservation SMS, owner booking notification, text alert for bookings, mobile booking notification Notify listing owners via SMS for new bookingsΒ checkbox
Send SMS for booking confirmationsΒ reservation confirmation SMS, booking success text, confirmation text message, booking approved SMS Send SMS confirmations to users after bookingΒ checkbox
Send SMS for booking cancellationsΒ cancellation SMS alert, booking cancelled text, cancellation notification SMS, reservation cancelled message Notify about booking cancellations via SMSΒ checkbox
Send SMS for booking status changesΒ status update SMS, booking modification text, status change notification, booking update alert SMS notifications for booking status updatesΒ checkbox
New booking SMS templateΒ booking notification template, new reservation SMS format, owner alert message, booking SMS content SMS template for new booking notificationsΒ textarea
Available tags: {listing_title}, {user_name}, {booking_date}, {site_name}
Booking confirmation SMS templateΒ confirmation SMS template, reservation success message, booking approved text, confirmation message format SMS template for booking confirmationsΒ textarea
Available tags: {listing_title}, {booking_date}, {booking_details}, {site_name}
Advanced SMS Settings
Default country codeΒ phone number prefix, international dialing code, country phone code, default prefix, national code, telephone country code Default country code for phone numbersΒ select
Options: All country codesΒ Default: +1 (US)
SMS rate limitingΒ SMS throttling, message frequency limit, anti-spam SMS, SMS quota, send rate limit, message cap Limit SMS sending frequencyΒ checkbox
Maximum SMS per hourΒ hourly SMS limit, messages per hour, hourly quota, SMS rate cap, hourly message limit Maximum SMS messages per hour per userΒ number
Range: 1-100Β Default: 10
Log SMS messagesΒ SMS logging, message history, SMS tracking, message audit, SMS records, delivery logging Keep logs of sent SMS messagesΒ checkbox
Default: ON
SMS log retention (days)Β log storage duration, message history retention, log expiry, SMS archive period, log cleanup period How long to keep SMS logsΒ number
Range: 1-365 daysΒ Default: 30

Shortcodes

[login_form]

You can use Listeo Editor to edit fields in registration form

  1. [listeo_login_form] – displays both login and register in a tabs
  2. [listeo_login] – only login form
  3. [listeo_registration] – only register forms

[listings]

It’s better and easier to use Elementor instead [listings] shortcode – there is a listings elementor block with all filters needed which allows you to display listings without need of shortcode


[listeo_search_form]

Listeo features drag and drop forms editor. You can easily add new, rename or re-arrange fields. Go toΒ Listeo Editor β†’ Search FormsΒ and choose search form which you would like to customize.

TheΒ [listeo_search_form]Β shortcode is used to display a search form on a page. This form allows users to search through listings. Here’s a brief documentation for how to use this shortcode based on theΒ output_search_formΒ function:

TheΒ [listeo_search_form]Β shortcode accepts several attributes:

  1. source: Determines the source of the search form. Can be ‘sidebar’, ‘home’, or ‘split’. Default is ‘sidebar’. You can define custom sources by creating new forms in Listeo Editor β†’ Search Forms
  2. wrap_with_form: If set to ‘yes’, the search form is wrapped with aΒ <form>Β tag. Default is ‘yes’.
  3. custom_class: A custom CSS class to add to the search form. Default is empty.
  4. action: The action attribute for the form. Default is empty.
  5. more_trigger: If set to ‘yes’, a button for additional features is displayed. Default is ‘yes’.
  6. more_text_open: The text for the ‘open’ state of the additional features button. Default is ‘Additional Features’.
  7. more_text_close: The text for the ‘close’ state of the additional features button. Default is ‘Additional Features’.
  8. more_custom_class: A custom CSS class to add to the additional features button. Default is ‘margin-bottom-10 margin-top-30’.
  9. more_trigger_style: The style of the additional features button. Default is ‘relative’.
  10. ajax_browsing: If set to ‘on’, enables AJAX browsing for the search form. Default is the value of ‘listeo_ajax_browsing’ option.
  11. dynamic_filters: If set to ‘on’, enables dynamic filters for the search form. Default is ‘off’ if ‘listeo_dynamic_features’ option is not set to ‘on’.
  12. dynamic_taxonomies: If set to ‘on’, enables dynamic taxonomies for the search form. Default is ‘off’ if ‘listeo_dynamic_taxonomies’ option is not set to ‘on’.

Here’s an example of how to use the shortcode with some of these attributes:

Editing single listing page using Elementor

Editing Custom post type with Elementor requires having Elementor Pro.
If you want to try it out before you can install https://proelements.org/

Quick Guide:

  1. Activate listing post type in Elementor β†’ General β†’ Post Types β†’ Listing
  2. Go to Templates β†’ Theme Builder and click import icon in top right corner and upload following .json single listing templates:
    elementor-single-listing-template.jsonΒ 
    elementor-single-listing-gallery-grid-template.json
  3. Click Save Options then Display Conditions
  4. Select Listings and then Save
  5. When you edit single listing page and you can’t see content click cog icon in top bar and set any listing to be used as a preview

Here’s a short video guide how to use Elementor on single listing page:

Please note that you need to use one of your listings as a preview (around 00:28 in the video). Otherwise, Elementor will use the standard post view to load the template preview, which won’t make much sense for listing content.

Basically you can rearrange every section or add / display data from custom fields in desired place

This functionality will be expanded with new options and more control for widgets based on your feedback and theme development


Example of usage

For example, you can add custom block/widget with data from your custom fields added in Listeo Editor

How to fix the [custom-post-author-email-shortcode]

It’s perfectly fine; ignore this error. It does not affect functionality of contact form.

This message is displayed because we use a custom shortcode to dynamically replace the “To” address with the email of the listing owner on which the contact form is displayed. Without this, we could only set one email for all the forms, meaning only you, as the site owner, would receive the emails instead of the owners of the listings.

This solution requires the Dynamic Field add-on for Contact Form 7. The custom shortcode added via this plugin is not recognized by CF7 as valid code, which is why it shows this error.

If your form doesn’t you can be sure that this error does not cause that. You should check SMTP configuration instead:

Having problems with your WordPress site not sending emails?

How to troubleshoot Stripe Split Payments

Setting up Stripe Connect in Listeo can be a challenging process, and we frequently receive support tickets from users seeking assistance with troubleshooting. Here are a few steps you can take before reaching out to us.


Step 1

Go to Overview of your Stripe Connect dashboard,
Ensure that there are no tasks on the list tagged as “Required” and that all necessary steps are completed.

This is example of not fully configured account, the platform profile is not completed. That will cause troubles with Connect button on wallet page. The onboarding process won’t be correctly completed.


Step 2

Go to your WordPress admin -> WooCommerce -> Settings -> Payments -> Stripe -> Manage -> Settings

Make sure the payment options are correctly configured and you have green checkmarkΒ  in all options

it’s especially important for Webhooks as that what we mainly use in Listeo to work with Stripe API. Make sure it works both in test mode and live mode.

While we’re here you enable log, that will help us debug any issues, it’s below in Advanced Settings.


Step 3

Double check if all keys are set correctly, and they match the settings in your Stripe Dashboard, both for Live and Test mode


Step 4

If you made sure everything above is set and it still doesn’t work, we need admin access to your site.

You can create temporary admin account and delete it later or you can install this plugin https://wordpress.org/plugins/temporary-login-without-password/ and generate for us the link for 1 week admin access (make you’re creating user with ADMIN ROLE as by default it will be regular user).

Please also make sure that:

  1. You’ve set your Stripe payment gateway in Test mode
  2. You have one user with Owner role who has at least 1 published listings, and is connected to your Stripe Platform in the Wallet page. We most likely won’t be able to do that as it usually requires some address/contact data
  3. Please install this plugin https://wordpress.org/plugins/wp-user-switch/ to allow us easy change between users for tests
  4. And if you haven’t already, please contact us via Support Tab

 

Add a phone number to the listing url

This snippet will alter the listing URL to include phone number of the listing:Β  www.site.com/listings/3331542847/listing-name/

In your child theme functions.php file add this code.

function listing_post_type_link($permalink, $post)
{
	// Abort if post is not a listing
	if ($post->post_type !== 'listing')
		return $permalink;

	// Abort early if the placeholder rewrite tag isn't in the generated URL
	if (false === strpos($permalink, '%'))
		return $permalink;

	$find = array(
		'%phone%'
	);
$phone = get_post_meta($post->ID,'_phone',true);
	$replace = array(
		$phone
	);

	$replace = array_map('sanitize_title', $replace);

	$permalink = str_replace($find, $replace, $permalink);

	return $permalink;
}
add_filter('post_type_link', 'listing_post_type_link', 10, 2);

function change_listing_slug($args)
{
	$args['rewrite']['slug'] = 'listing/%phone%';
	return $args;
}
add_filter('register_post_type_listing', 'change_listing_slug');

After that go to Settings -> Permalinks, and click Save to renew new permalinks

How to add PHP snippets?

You can add code into your functions.php file in child-theme or use WP Code plugin


function.php method

Appearance β†’ Theme File Editor and select Theme Functions file in sidebar. Use child-theme otherwise snippet will be overwritten/lost after update.


WPCode plugin method

WPCode – Insert Headers and Footers + Custom Code Snippets – WordPress Code Manager

WP Code will be more suitable for most cases. Head over to WP Code, select Add Snippet and Add Your Custom Code (New Snippet)

In next step choose PHP Snippet

Paste snippet, toggle “inactive” to “active” button near Save button and Save

Done. Make sure it’s activated

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/onboardingmake 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