Author Archive

Adding custom fields to registration form

If you would like to change names or Owner/Guest role, use this method: How to change some texts/words?

Please also check Listeo Core → Registration where you will find options regarding the registration form, this instruction below is only for creating custom fields.


Step 1

First you have to create custom fields. Go to Listeo Editor → User Fields. There are two tabs for Guest and Owner as you can set those fields separately for each role.

Available Fields:
1. Input
2. Dropdown Select
3. Dropdown Multi Select
4. Upload Field
5. Checkbox
6. Multi Checkbox
7. Date Time
8. Textarea

For this guide purpose we will add VAT Number field.

Click the green button Add field, type a name and click OK, you will see box with new field and options for that field. You can switch Type of this field to dropdown, radio, checkbox or even file upload field.

Fields you will create are automatically added to My profile page in Listeo Dashboard.


Step 2

When you are ready click Save Changes and  go to Listeo Editor → Registration Fields. Here you will see the field you’ve just created in the Available Fields section in the right side, you can simply drag&drop it to the fields area, and save.

That way this field will be now added to your registration form. You can change the label or set a new icon for that field.

The field you created will also be visible in WordPress Admin → Users. For example, if you add a file upload field, you can download the file by going to Users, clicking “Edit” on the user you want to access, and finding the field with the attachment.

 

 

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

 

Header Builder

The Header Builder lets you arrange and style your Listeo header in a live preview. Open Listeo Editor > Header Builder in your WordPress dashboard.


Build your header

Drag elements from the left panel into the header, then reorder them in the preview. Click an element to edit its settings. Add your logo, menu, account links, cart, search or a button such as Add Listing.

Use Header settings to change the background, height and width, choose static or sticky positioning, and adjust content colors. Auto contrast helps keep text and icons readable against the background.

Header Builder with the element palette, live preview and menu visibility controls


Menus and responsive layouts

Select a WordPress menu in the menu settings. Changes made under Appearance > Menus sync automatically. Use dropdowns or mega menus, with columns, icons, short descriptions and an optional introduction.

Header builder in Listeo allows you to create mega menus and heavily customize it with icons, subtitles, different column layouts etc.

Switch between Desktop, Laptop, Tablet and Mobile to check each layout. Element visibility can vary by screen size and whether a visitor is logged in. The Logged out and Logged in previews help you check both versions.


Different headers for different pages

Open the header selector at the top and choose Manage presets to create alternative headers. Assign them to individual pages under Page overrides, or use the Single listing and Dashboard template overrides.

When you are happy with the result, click Save settings.


Video overview

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