Pay Per Lead turns visitor inquiries into paid leads: guest contact details stay hidden from listing owners until they pay to unlock them. This article walks through enabling the feature, choosing how leads are priced, setting up credit packs, and testing the full flow from both the visitor and owner side.

What Pay Per Lead Does

Pay per lead

Pay Per Lead is bundled with the Listeo Monetization Plus plugin. There is nothing extra to install and no separate license – it uses your existing Listeo Monetization Plus license.

Once enabled, two things can create a “lead”:

  • A visitor fills out the native contact form on a listing.
  • A visitor sends a booking request for a listing.

Instead of emailing the guest’s name, email and phone straight to the listing owner, Listeo masks that information. The owner sees that a lead came in, but not who it’s from. To see the full details, the owner pays to unlock the lead – instantly with prepaid wallet credits, or through checkout.


Where to Find It

Go to WP Admin → Listeo Core → Pay Per Lead. You’ll find four tabs:

  • Dashboard – stat tiles (total leads, pending approval, purchased leads, revenue), plus recent leads and top-performing listings.
  • Leads – a filterable list of every lead (by status, listing, source), with a detail view and moderation actions.
  • Credit Packs – create and manage the wallet top-up packs owners can buy.
  • Settings – the master switch, pricing model, emails, spam protection, and advanced options.
Pay Per Lead Dashboard

Step 1: Turn It On and Choose Pricing

Go to WP Admin → Listeo Core → Pay Per Lead → Settings.

General Section

  1. Toggle on Enable Pay Per Lead.
  2. Decide whether new leads need moderation. Turn on Require approval if you want to review every lead before the listing owner can see or unlock it. While a lead is pending, the owner sees a message that it’s awaiting review instead of an Unlock button.
  3. Turn on Booking leads if you also want booking requests (not just contact form submissions) to become leads.
  4. Under Enable for listing types, check the listing types that should be lead-gated. Leave everything unchecked to enable Pay Per Lead for every listing type.

Pricing Section

Choose one Pricing model:

Model How it works
Fixed price Every lead costs the same Default price.
Price per listing type Set a different price for each listing type in a per-type table. Leave a type’s field empty to fall back to the default price. These prices can also be edited directly in the Listing Types editor.
Commission on visitor budget Charges a percentage of the budget the visitor enters in the contact form, with a minimum price and an optional maximum (0 = no cap). Leads without a budget value fall back to the default price. This option works only with PPL Contact Form widget, and contact form needs a ‘budget’ field.

Commission pricing only works if your contact form has a field with the exact ID budget. Without it, every lead falls back to the default price.

Click Save Settings.


Step 2: Check Your Contact Form

Pay Per Lead reads the same contact form that ships with Listeo Core, built with the drag-and-drop form builder.

  1. Go to WP Admin → Listeo Editor → Contact Form.
  2. You’ll see a tab per listing type (for example “Service Contact Form”, “Rental Contact Form”, “Event Contact Form”). By default each tab includes Name, Email, Phone and Message fields.
  3. Add or rearrange fields as needed. Available field types are Text, Email, Phone, Textarea, Select, Radio, Checkbox and Header.
  4. For any field that contains personal information (besides the default Name/Email/Phone, which are always masked), check Is contact info. This masks that field’s value in the lead until it’s unlocked.

Make Sure the Widget Uses the Native Form

The contact form is displayed on single listing pages by the Listeo Contact Widget.

  1. Go to Appearance → Widgets, find the Single Listing Sidebar widget area.
  2. Confirm the Listeo Contact Widget is present.
  3. Open it and check the Form source setting: it must be set to Native Listeo contact form (the default). The other option, Contact Form 7 (legacy), bypasses Pay Per Lead entirely — submissions on that legacy form go straight to the owner’s inbox, unmasked.

The form is also available outside the sidebar via the [lppl_lead_form] shortcode, or as a Pay Per Lead Form widget in Elementor.

On a listing that isn’t lead-gated (its type isn’t checked in Settings, or Pay Per Lead is off), the same form still works normally: it emails the owner directly with full contact details, exactly like before.


Step 3: Optionally Enable Booking Leads

If you turned on Booking leads in Settings, booking requests submitted through the classic booking widget or the Booking Plus popup also become leads.

Pay Per Lead Options

What Changes for Owners

  • In the owner’s Bookings dashboard, the guest’s name is masked (shown as something like L···).
  • A banner reads “Reveal this guest’s contact details”, with a blurred preview of Guest name / Email / Phone and an Unlock · $X button.
  • The owner can still Approve or Reject the booking itself for free — only the contact details are paid.
  • The “new reservation” email sent to the owner is masked the same way until the lead is unlocked.

After the owner unlocks a booking lead, its card in My Leads shows a View Booking button linking straight to that booking.

Administrators always see full, unmasked guest details everywhere, regardless of lead status.


Step 4: Set Up Credit Packs

Credit packs

Listing owners pay to unlock leads either one at a time (checkout) or by buying wallet credits in bulk (a credit pack).

Go to WP Admin → Listeo Core → Pay Per Lead → Credit Packs.

Choose a Payment Method

At the top of the tab, pick how packs are paid for:

  • WooCommerce checkout (default) — packs are bought through your regular WooCommerce cart and payment gateways.
  • Payment provider hosted checkout — uses whichever provider is already configured in Listeo Subscriptions settings (Stripe, Paddle, Polar, or Dodo).

Click Save payment method.

Single-lead unlock checkout (paying for one lead at a time, not a pack) always goes through WooCommerce, no matter which payment method you choose here. The provider choice only affects credit pack purchases.

Create a Pack

  1. Click Add Pack.
  2. Enter a Pack name (shown to owners and used as the WooCommerce product name).
  3. Enter the Credits amount — the wallet value granted per purchase.
  4. Enter the Pack price — what the owner actually pays. Set it lower than the credits amount to offer a bulk discount (for example, $100 in credits for $50).
  5. If you chose the provider payment method, also paste the provider’s one-time Price/Product ID for this pack.
  6. Click Save pack.

When using the provider checkout, the price ID you paste must be a one-time price, not a recurring/subscription price. Each pack shows a Ready or Missing price ID pill in the packs table so you can see at a glance which packs are set up correctly. If a provider checkout ever fails, the buyer is automatically redirected to WooCommerce checkout instead, and the exact error appears as a red notice at the top of the Credit Packs tab.

Packs are created as hidden WooCommerce products, so they won’t show up in your regular shop.


Step 5: Review the Emails (Optional)

Go to WP Admin → Listeo Core → Pay Per Lead → Settings → Emails.

Each email has its own enable toggle plus editable Subject and Content fields:

  • New lead notification to the listing owner
  • Confirmation to the visitor who submitted the inquiry
  • Admin notification of a new lead
  • Lead-unlocked notification to the listing owner

Each email lists the {tags} you can use in its content. Leave a Subject or Content field empty to use the built-in translated default. All these emails are sent through Listeo’s standard branded email template, so they match the rest of your site’s notifications.


Spam Protection and Advanced Options

Spam Protection

Setting Description Default
Protection method Honeypot (invisible, no setup) or Google reCAPTCHA v3 (needs site + secret key) Honeypot
Allow spam reports Lets listing owners flag a purchased lead as spam for admin review Off

Rate limiting is built in automatically: no more than 5 submissions per hour per IP address, regardless of which spam protection method you choose.

Advanced

Setting Description Default
Remove data on uninstall Deletes leads, the credits ledger and all Pay Per Lead settings when the plugin is uninstalled Off

Credit balances are real customer value. Only enable “Remove data on uninstall” if you are permanently removing Pay Per Lead from your site.


How It Works

For Listing Owners

Owners manage their leads from My Leads in their dashboard (found under Main, with a badge showing how many locked leads they have). This page includes:

  • A wallet strip with their current credit balance and available credit pack cards (each showing a savings percentage, with the best-value pack flagged)
  • Stat chips: Total, New & locked, Unlocked, Spent
  • All / Locked / Unlocked filter tabs, plus a search box
  • Lead cards showing status, source (contact form or booking), a message teaser, a blurred contact preview, and an Unlock button

When an owner clicks Unlock:

  • If they have enough wallet credits, the contact details are revealed instantly, right on the same card.
  • If not, a dialog offers a one-time checkout for just that lead, or buying a credit pack.

For Visitors

Visitors don’t notice anything different. They fill out the contact form or submit a booking request exactly as before. Their submission is confirmed by email, and their contact details are simply held back from the owner until unlocked (or shown immediately, on listings that aren’t lead-gated).


Step 6: Test It

  1. Open a lead-gated listing in a private/incognito window (as a logged-out visitor) and submit the contact form.
  2. Log in as the listing owner and open My Leads. Confirm the lead appears with the contact details blurred/masked.
  3. Click Unlock and complete payment (with credits, or via checkout in a test/sandbox environment).
  4. Confirm the full name, email and phone now show correctly, and that a Reply/Message action is available.
  5. If you enabled Booking leads, repeat the test with a booking request and confirm the masked banner appears on the booking, and that Approve/Reject still work without unlocking.

FAQ

  • Can the listing owner see full contact details without paying?

  • Can I charge different prices for different listing types?

  • Can owners still approve or reject a booking without paying?

  • What happens if a provider checkout fails when buying a credit pack?


Troubleshooting

  • The listing owner sees full contact details instead of a masked lead

  • The Unlock button is missing from a lead

  • Buying a credit pack always goes to WooCommerce checkout, even though 'Payment provider' is selected

  • No leads are created from booking requests