Release notes / WB Ad Manager Pro
Premium Plugin Plugin

WB Ad Manager Pro

Selling ad placements one-by-one does not scale. WB Ad Manager Pro turns the site into a self-serve advertising portal: members top up credits through your existing WooCommerce or membership billing and run their own campaigns.

6 releases
v1.5.0 latest
April 19, 2026 shipped

v1.5.0 Latest

April 19, 2026
New 17 Improve 6 Fix 16

New

  • Complete membership state machine - subscribe, switch between plans with prorated refund, cancel-at-period-end keeps benefits until the current period ends, reactivate while cancelled, and a past-due grace window for failed renewals
  • Subscribe / switch / cancel / reactivate / payment-failed email handlers with HTML templates
  • State-aware portal UI - cancelled and past-due banners with clear next-step CTAs and dynamic plan-card buttons ("Subscribe", "Switch to this plan", "Current Plan", "Current Plan (ending)")
  • 3-step setup wizard on first activation - guided site mode, payment config, and page setup
  • Direct messaging on classified pages - buyers can message sellers with real-time conversation view
  • Browse classifieds sort options - newest, oldest, price low/high, featured first
  • Classified expiry reminder emails - configurable days before expiration
  • 7 HTML email templates replacing plain-text emails (fund request, welcome, registration, inquiry, report)
  • Admin activation notice with page links after plugin activation, dismissible scoped notices
  • Seller info card on classified detail page
  • Credits SDK ledger table created on activation, purchase URL auto-resolve
  • Wallet tab shows inline credit packs grouped by source (WooCommerce / PMPro / MemberPress)
  • Demo data uses real stock images, seeds a campaign per ad, links taxonomy terms, and removes cleanly
  • Plug-and-play default settings seeded on activation across all module tabs
  • Help page with Pro features, classifieds FAQ, and demo data guide
  • Full Lucide icon migration across admin and frontend - ~450 dashicons replaced
  • Semantic CSS token layer with theme.json inheritance and prefers-color-scheme dark mode across 13 pro stylesheets - plugin now re-skins to the active theme's palette

Improve

  • Unified stat card pattern across Overview, Analytics, Wallet tabs
  • Consistent empty states with icon, title, description, and CTA across all portal tabs
  • Removed duplicate headings from Ads, Campaigns, Classifieds, Profile tabs
  • Membership UI - green active badge, current plan card, dimmed current in upgrade grid
  • Only 2 essential pages auto-created (Dashboard + Classifieds) instead of 5
  • Package meta saved to ad post for billing badge display in ads list

Fix

  • toast.js was silently broken since it was authored - a nested block comment closed the outer JSDoc early so window.wbamToast was never defined. Every success / error / confirm toast in the portal fell back to native browser dialogs (or nothing). Fixed the syntax and added the missing wbam-toast enqueue dependency across 10 consumer scripts (portal, classifieds, ab-testing, links, license, advertisers, admin UI, BuddyPress integration)
  • Ad edit form now pre-fills correctly when the ad was saved with the legacy \`_wbam_ad_*\` meta-key convention (demo data, classic wizard); title, image preview, detected format, Click URL, and alt text now all populate
  • My Ads cards now show real view and click counts (previously always 0) by reading from the \`wbam_analytics_daily\` table that Overview already uses, not from stale \`_wbam_impressions\` post meta that the tracker never populates
  • Membership current-plan card cleaned up - removed the empty "Status:" label row, removed the duplicate "Current Plan" text below the disabled button on grid cards
  • Proration refund on plan switch uses round() half-up instead of floor(), so a same-day switch gives back the full plan price instead of losing a credit to sub-second timestamp drift
  • Classified review step strips the hierarchical " - - " prefix from Category and Location, and omits the Condition row when no condition is picked (previously rendered "Select condition..." placeholder)
  • Wizard step scroll now honours theme sticky-header height so the step title is not hidden under pinned site headers
  • Unauthenticated advertiser portal login card centered properly on all viewport sizes
  • Package placement inheritance - ads now correctly display at package-configured placements
  • Ads tab pagination - pager links no longer 404 inside WP_Query loop
  • Geolocation map shows for all users (not just non-owners), duplicate location text removed
  • Messaging - single DM form replaces dual contact/message forms, "Send Message" scrolls to form
  • Membership race condition - subscribe wrapped in DB transaction with row locking
  • Campaign status syncs to ad enabled flag - paused campaigns stop showing ads
  • Missing wbam_get_placements() function that caused fatal error on ad submission form
  • Disabled module tabs show "Feature Not Available" notice instead of blank page

v1.4.0

March 2, 2026
New 6 Improve 3 Fix 6 Dev 1

New

  • Pre-funded budget reservation system for CPM/CPC campaigns
  • Manual/bank transfer payment with admin approve/cancel flow
  • BuddyPress xProfile seller fields for classified listings
  • Extracted submit form template for classifieds
  • wbam_classified_meta table for classified-specific meta storage (DB 2.8.0)
  • Action hooks on all shortcode forms for extensibility

Improve

  • Billing transparency for advertisers
  • Module dependency enforcement and dead code removal
  • Ad submission uses campaign/reservation system

Fix

  • 6 critical + 4 high + medium/low severity data flow issues
  • Campaign builder balance lookup and CPM/CPC validation
  • Double-credit, double-debit, and silent failure vulnerabilities
  • Module settings save and error handling standardization
  • Wallet transaction type display across all templates
  • Marketplace card UI (title wrapping, footer layout, filter count)

Dev

  • Developer guide updated with classified meta table schema and API docs

v1.3.0

January 20, 2026
Improve 5 Fix 1 Dev 1

Improve

  • Comprehensive admin documentation with screenshots
  • Add default packages creation on plugin activation
  • Module enable/disable checks across all 10 modules
  • Ad submission simplified to dashboard only
  • Stock images replaced with clean placeholder images

Fix

  • Distribution excludes development files and demo data

Dev

  • Updated POT file for translations

v1.2.0

New 4 Improve 2 Fix 9 Security 2 Dev 2

New

  • User Profile Integration - manage advertiser data from WordPress user edit screen
  • Admin as Advertiser setting - automatically create advertiser accounts for administrators
  • Advertiser user meta (_wbam_advertiser_id) for faster lookups and better performance
  • Comprehensive demo data generator with local images for testing

Improve

  • Database upgrade to version 2.3.0 with automatic migration
  • Classifieds module refinements

Fix

  • A/B Test winner logic - properly handle when original beats all variants
  • Link Scanner nonce verification - use correct nonce action name
  • Campaign budget race condition - atomic UPDATE with budget constraints in WHERE clause
  • CPM billing precision - increase spent column from DECIMAL(10,2) to DECIMAL(19,6)
  • Proper $wpdb->rows_affected check to verify budget updates succeeded
  • Settings preservation in sanitize_settings() for advertiser balance and quota
  • Asset enqueue issues - proper script/style loading in advertiser dashboard
  • Frontend accessibility and UI/UX improvements
  • Following tab CSS not loading in advertiser dashboard

Security

  • A/B Test capability check - verify manage_options before processing actions
  • Stripe payment ownership verification - ensure user owns advertiser before confirming payment

Dev

  • Add future roadmap for Links feature enhancements
  • Update POT file for translations

v1.1.0

Fix 12 Security 2

Fix

  • Campaign budget race condition in record_impression() and record_click()
  • Replace transient-based locking with database-level locks in classified billing
  • Remove spent from save() to prevent race condition overwrites
  • Floating point precision in CPM/CPC calculations
  • Campaign billing race condition, idempotency, and refund negative balance
  • Classified API ownership check and payment order
  • Add billing idempotency to prevent double-charging
  • Ad submissions save _wbam_ad_data and provide placements
  • Advertiser restriction settings not saving
  • Classified filtering validation, security, and missing filters
  • Classified filtering on taxonomy archive pages
  • 16 additional bugs from comprehensive audit

Security

  • Fix SQL injection risk in analytics API with whitelist validation
  • GDPR consent detection for CookieYes and other plugins

v1.0.0

Note 10

Note

  • Initial release
  • Analytics module with dashboard and tracking
  • Advertiser portal with frontend management
  • Classifieds system with categories and locations
  • Wallet and payment integration
  • Package system for ad pricing
  • Campaign management with budgets
  • BuddyPress profile integration
  • REST API endpoints
  • Email notifications