Banner Ads lets you sell banner space on your directory. You create zones (places on the site with a size and a price per day), advertisers book dates and pay through WooCommerce, and you approve their banners before they go live. This article walks through enabling the module, creating zones, selling them, moderating banners and testing the full flow.

What Banner Ads Does

Banner Ads is bundled with the Listeo Monetization Plus plugin. It needs WooCommerce, and Listeo theme and Listeo Core 2.2.3 or newer.

You can use it in three ways, and mix them freely:

  • Self-serve sales. Advertisers pick a spot and dates on the Advertise page, upload their banner, pay through WooCommerce and follow their results on My Ads.
  • Banners you add yourself. For deals made outside the site, add the banner in wp-admin and set its dates.
  • House banners and ad code. When nothing is booked, a zone can show your own promo banners or a code snippet (for example AdSense) instead of staying empty.

Image banners count impressions and clicks, and you see the results per zone and per banner on the Banner Ads dashboard.


Where to Find It

Go to WP Admin → Listeo Core → Banner Ads. You’ll find five tabs:

  • Dashboard: impressions, clicks, CTR and sales for the last 7, 30 or 90 days, how full each zone is over the next 30 days, and your top banners.
  • Zones: the places on your site where banners show.
  • Banners: every banner with its zone, dates, status and results. Banners bought on the Advertise page wait here for your review.
  • Emails: the messages sent to advertisers and to you.
  • Settings: the on/off switch, sponsored label, link attributes, pages, checkout and upload rules.

A red number next to the menu item shows how many banners are waiting for review.


Step 1: Turn It On

Banner Ads is off by default.

  1. Open Banner Ads → Settings.
  2. Under Enable Banner Ads, switch on Show banners.
  3. Check the Label. It defaults to Sponsored and is shown with every banner, house banners and ad code included. Many countries require paid content to be marked, so we recommend keeping it.
  4. Save.

When the plugin is activated, Banner Ads also creates two pages for you:

Page Shortcode What it’s for
Advertise With Us [lpba_advertise] Where advertisers choose a spot and dates, upload their banner and go to checkout.
My Ads [lpba_my_ads] The advertiser’s list of banners with results, payment and edit options. It uses the dashboard page template.

You can assign different pages in Settings → Pages. Each page must contain its shortcode.

Add the Advertise page to your menu or footer so advertisers can find it. The My Ads item appears in the user dashboard menu automatically once a user has a banner.


Step 2: Create a Zone


A zone is one place on the site with one banner size. Go to Banner Ads → Zones and click Add zone.

Place

  • Zone name: advertisers see it on the Advertise page, so make it descriptive, for example “Search results top”.
  • Location: where the zone shows. Each option has a small sketch of the page.
Location Where it shows
Search results Above the results, below the results, in the sidebar (top), or between listings (every N). The in-feed option shows the banner as one more card in the results grid, after every N listings, counted across pages and AJAX filtering. Sponsored listing cards do not count.
Single listing Sidebar (top or bottom), after the description, after the Overview section (below Features), or after the location (before reviews).
Whole site Top of the page above the header, or above the footer.
Manual Nowhere automatically. You place it yourself with the shortcode, the widget or the Elementor widget (see Step 3).

Size

Pick a Format: 728 × 90 Leaderboard, 970 × 250 Billboard, 300 × 250 Medium Rectangle, 300 × 600 Half Page, 320 × 50 Mobile Banner, 320 × 100 Large Mobile Banner, or Custom size. Advertisers upload images in these proportions, and the upload tool crops them to fit.

Display

Setting What it does
Banners at the same time 1 makes the zone exclusive: one banner per day. With more, banners booked for the same days rotate on each page view.
Targeting None (everywhere the zone shows), Category or Region. With targeting, each category or region has its own calendar, so you can sell the same spot to a different advertiser per category. A targeted banner takes priority over banners shown everywhere.
When nothing is booked Show nothing, House banners of this zone, or Code (e.g. AdSense). Fallback code can only be edited by administrators.

Selling

Switch on Sell this zone to offer it on the Advertise page, then set:

  • Price per day. A zone is offered only when it is for sale and has a price above zero.
  • Earliest start (days from today), Shortest booking and Longest booking.
  • Long booking discounts (optional): up to three tiers, for example “From 30 days take off 10%”. The best matching discount applies.

Leave Sell this zone off for zones you want to fill only with banners you add yourself.

Click Create zone. The zone card shows its shortcode, how many of the next 30 days are booked, and Pause / Edit buttons.

Pausing a zone hides it and all its banners, paid ones too, and removes it from the Advertise page. Bookings stay, but the paid days keep running. A zone that has banners (including banners in the trash) cannot be deleted; pause it instead.


Step 3: Place Manual Zones

Zones with an automatic location need nothing more. For a Manual zone, use one of these:

  • Shortcode: [lpba_zone id="123"]. Copy it from the zone card.
  • Widget: Listeo Banner Zone in Appearance → Widgets.
  • Elementor: the Banner Zone widget.

To keep in-feed banners out of a particular listings list, use [listings banners="no"], or switch off Banners between listings in the Elementor Listings widget.


Step 4: Set Up Selling

Open Banner Ads → Settings and review the Selling and Image uploads sections:

Setting Default What it does
Approve paid banners automatically Off Paid banners go live without your review. This also applies when advertisers change the image or link of an approved banner. Not recommended: check images and links first.
Allow WooCommerce coupons Off Lets coupons apply to banner purchases.
Reserve the dates during checkout 30 minutes How long the chosen days are held while the advertiser pays. Once an online order is placed, the reservation is extended to twice this time.
Reserve the dates for offline payments 3 days How long an order paid by bank transfer, cheque or cash on delivery keeps its days.
Remind before the end 3 days When to send the “ends soon” email. 0 turns it off.
Advertising terms None Choose a page and advertisers must accept it before paying.
Maximum file size 300 KB Largest banner image after cropping. Animated GIFs must fit this limit as uploaded.
Allowed difference in proportions 2% How far an uploaded image may differ from the zone’s proportions. In practice this matters for animated GIFs, because other images are cropped exactly.

Under Links, banner links always get rel="sponsored". You can also add nofollow and open links in a new tab (both on by default).


How Buying Works

For Advertisers

Any logged-in user can book a banner. Guests see the spots and are asked to log in or create an account. The Advertise page has three steps:

  1. Spot: choose a zone. Each card shows the size, the shortest booking, the price per day and any long-campaign discount. If the zone uses targeting, the advertiser can also choose a category or region, or keep “Everywhere this spot shows”.
  2. Dates: pick a range on the calendar, which shows booked days, or use a ready-made length.
  3. Your Banner: upload an image, crop it to the spot in the browser, and add the link and optional alt text. JPG, PNG and WebP are cropped and compressed automatically. Animated GIFs are not cropped, so they must already have the right proportions and size.

The Your campaign sidebar shows a live preview and the total. Continue to payment holds the dates and sends the advertiser to the WooCommerce checkout.

Behind the Scenes

All banner purchases go through one hidden WooCommerce product called Banner placement, created automatically. It cannot be bought directly, and you only need to edit it to change its tax class. The price is calculated on the server from the zone, the dates and the discount.

  • Order placed: the held days become a reservation, longer for offline payments.
  • Order paid: the banner moves to Pending review (or straight to Scheduled/Active with automatic approval). Orders that contain only banners are completed automatically.
  • Cash on delivery: the banner is activated only when you mark the order Completed.
  • Order cancelled or refunded: the days are released and the banner is cancelled. Partial refunds don’t change the banner.
  • No order placed in time (or the banner was removed from the cart): the banner becomes Abandoned (not paid) and its days are released.
  • Order placed but not paid in time (for example a bank transfer that never arrives): the days are released when the reservation runs out. The banner stays Waiting for payment until you cancel the order.

Tax follows the tax settings of your WooCommerce store and the tax class of the Banner placement product (Standard by default). To change it, edit the product in Products; it is hidden from the shop but listed there.


Step 5: Review and Approve Banners


Paid banners wait in Banner Ads → Banners with the status Pending review, and you get an email.

  1. Use the Pending review filter at the top of the list.
  2. Check the image and the link (open the banner with Edit to see it in full).
  3. Click Approve in the banner’s row. In the banner editor, set Status to Approved (runs on its dates) and save instead. The banner becomes Scheduled or, if its first day has come, Active.

To reject, open the banner, set Status to Rejected and fill in Reason (sent to the advertiser). The advertiser gets an email and can change the image or link on My Ads and send it again.

Rejecting a banner does not refund the order. If you won’t run the banner, refund the order in WooCommerce, which also releases the days.

The list also has bulk actions (Approve, Pause, Resume, Move to trash) and filters by zone, type and advertiser.

Banner Statuses

Status Meaning
Waiting for payment Booked on the Advertise page, not paid yet. The days are held until the reservation time runs out.
Pending review Paid, or changed by the advertiser, and waiting for you.
Scheduled Approved, its first day hasn’t come yet.
Active Showing on the site.
Paused Stopped by you. Resume it from the list.
Expired Its last day has passed.
Rejected / Cancelled Not running. Their days are released.
Abandoned (not paid) No order was placed in time. Deleted automatically 30 days after the booking was started.

Adding Banners Yourself

Click Add banner in the Banners tab. Choose the image (or HTML / code, administrators only), link, zone and one of two types:

  • Paid banner (runs on its dates): for deals made outside the site. It books the zone’s days like a purchase. If the zone is already full on some days, the banner is still saved with a warning and rotates with the others. You can assign it to a user so it appears on their My Ads page, where they can also change its image and link.
  • House banner (fills the zone when nothing is booked): your own promo, with no dates. It shows only when the zone’s When nothing is booked option is set to house banners and no paid banner is running.

Emails go only to advertisers who bought on the Advertise page. Banners you add yourself never email the assigned user.


My Ads (Advertiser Dashboard)

Advertisers see all their banners on My Ads, with dates, status, impressions, clicks, CTR and price. From there they can:

    dzr

  • Pay now or Cancel a booking that isn’t paid yet.
  • Edit banner: replace the image, re-crop it, or change the link and alt text.
  • Book again: start a new booking for the same spot. For a running or scheduled banner, the new dates start the day after the current ones end.

After an advertiser changes an approved banner, it goes back to Pending review and stops showing until you approve the changes, while its paid days keep running. The advertiser sees this warning before saving. With automatic approval on, changes go live right away.


Emails

In Banner Ads → Emails, each message can be switched off and its subject and text changed. Leave a field empty to use the default text, which is translated (into the advertiser’s language for advertiser emails, and the site language for yours).

To the advertiser To you
Payment received, Banner approved, Banner rejected, Banner is live, Ending soon, Banner ended (with results) Banner to review, New sale (auto-approved), Paid over capacity

Available tags: {advertiser_name} {zone} {dates} {end_date} {price} {banner_url} {reason} {impressions} {clicks} {ctr} {my_ads_url} {renew_url} {review_url} {site_name} {contact_email}

Set Send the emails for you to if admin emails should go somewhere other than the site admin address.


Statistics and Caching

  • An impression counts when at least half of the banner is visible for one second. HTML / code banners and fallback code (AdSense) are not counted.
  • A click counts once per visitor and banner every 30 minutes. Bots are ignored, and no IP addresses are stored.
  • Banners work with page caching: the page carries all eligible banners and the visitor’s browser picks one, so rotation and dates stay correct on cached pages. Banner and zone changes clear the cache of WP Rocket, LiteSpeed Cache, W3 Total Cache and WP Super Cache.
  • Banner markup and images uploaded on the Advertise page avoid typical ad-related names, which helps them get past many ad blockers. Third-party ad code such as AdSense will still be blocked.

If you use Delay JavaScript execution in WP Rocket (or a similar option in another plugin), exclude the inline script lpz. Otherwise banners don’t rotate and impressions aren’t counted until the visitor interacts with the page.


Step 6: Test It

  1. Create a zone with a price, switch on Sell this zone, and make sure Show banners is on.
  2. Log in as a regular user (not an admin) and open the Advertise page. Choose the zone, dates and an image, then click Continue to payment.
  3. Pay with a test gateway (or bank transfer, then mark the order Completed).
  4. As admin, open Banner Ads → Banners, find the banner in Pending review and approve it.
  5. Visit a page where the zone shows on one of the booked days. Confirm the banner appears with its label, and that clicking it opens the advertiser’s link.
  6. As the advertiser, open My Ads and confirm the banner, its status and its results are listed.

FAQ

  • Do I need WooCommerce?

  • Can I sell banners without letting advertisers book them online?

  • Can more than one banner share a zone?

  • Can I charge different prices per category?

  • What happens when I change a zone's price?

  • Can I show AdSense when no banner is booked?

  • Are there limits for advertisers?

  • Are statistics kept when a banner is deleted?


Troubleshooting

  • The Advertise page shows the shortcode as text

  • A zone isn't offered on the Advertise page

  • A paid banner isn't showing

  • A banner says it needs new dates

  • Impressions stay at zero

  • The 'Above the footer' zone doesn't appear


For Developers

  • Templates can be overridden by copying advertise.php, my-ads.php or creative-fields.php to a listeo-banner-ads/ folder in your child theme.
  • Useful filters: lpba_render_locations (add or remove locations), lpba_price (booking price), lpba_eligible_banners (banners shown in a zone), lpba_length_presets (ready-made booking lengths), lpba_offline_payment_methods, lpba_advertiser_can_edit_creative, lpba_email_subject / lpba_email_body.
  • Useful actions: lpba_banner_status_changed, lpba_order_fulfilled, lpba_notify.
  • For a page cache that isn’t cleared automatically, add your purge function with the lpba_purge_cache filter.
  • To remove all zones, banners and statistics when the plugin is deleted, switch on Delete data on uninstall in Settings (off by default).