Skip to content

Listing Analytics

The Listing Analytics function tracks how each listing performs — from being seen in search results through to phone calls, bookings, and attributed revenue — and segments the numbers by promotion period and listing plan.

Overview

Every enabled event is captured once and feeds two views: promotion analytics (promoted vs organic, spend, ROAS) and plan analytics (performance per listing plan, with plan price as the cost). Admin dashboards live under Voxel Toolkit → Analytics and → Plan Stats; three front-end widgets put the numbers in front of the listing owners themselves.

Key Features

  • Card impressions and clicks in search results, page views, action clicks, shares, form submissions, and order revenue
  • Promoted-vs-organic segmentation with spend, CPC, and ROAS
  • Plan segmentation with the plan price as cost
  • My Listings Analytics (VT), Promotion Stats (VT), and Plan Stats (VT) widgets
  • @post(listing_stats.*) dynamic tags, usable in visibility conditions
  • Privacy controls: exclusions, bot filtering, DNT/GPC, hashed or no IP storage, retention limits

Setup Instructions

  1. Navigate to Voxel Toolkit → Functions, enable Listing Analytics, and save
  2. Open Configure and tick the post types under Tracked post types — nothing is tracked until at least one is selected
  3. Optionally adjust the tracking events and privacy settings below

Enabling the function also enables its three widgets.

Standalone plugin takes precedence

If the standalone Voxel Listing Analytics plugin is active, the toolkit version stands down entirely — no tracking, menus, widgets, or tags — and shows an admin notice. Their data is stored separately; deactivate the standalone plugin to use the toolkit version.

What Gets Tracked

EventWhat it counts
ImpressionsCard visibility on search and archive pages (card actually seen, not just rendered)
Card clicksClicks on a listing card in results
Page viewsViews of the listing page
ActionsPhone, SMS, WhatsApp, message, email, directions, booking, website, download, follow, save, cart and checkout clicks
SharesShares by network (Facebook, X, LinkedIn, WhatsApp, email, copy link, and more)
Form submissionsFluent Forms submissions on listing pages
RevenueOrder revenue attributed to the listing

Each tracking event has its own on/off toggle. Revenue attribution is configurable: Traffic share (recommended), Engagement-gated, or Full sale (inflates ROAS).

Privacy Settings

SettingDefaultWhat it does
Exclude adminsOnDoesn't count administrators
Exclude post authorOnDoesn't count owners viewing their own listing
Exclude botsOnIgnores crawlers, link-preview fetchers, and headless browsers
Respect Do Not TrackOnSkips visitors sending a DNT or Global Privacy Control signal
Store hashed IPOnKeeps a one-way salted hash for de-duplication; off stores no IP-derived value at all
Event data retention (days)365Raw events older than this are purged daily (aggregates are kept)

Rate limits and impression thresholds (visibility percentage and duration) are also configurable. A privacy policy paragraph is registered with WordPress's privacy policy guide automatically.

Dashboards

  • Voxel Toolkit → Analytics — the promotion view: performance score, impressions/clicks/CTR/views/actions/spend cards with promoted-vs-organic and period-over-period deltas, a daily performance chart, per-promotion-package table, action breakdown with traffic sources, and top promoted posts. Periods of 7/14/30/90 days, per-post filtering, and CSV export (the export includes the hourly and device-level data)
  • Voxel Toolkit → Plan Stats — the plan view: listings on plans, per-plan summary (impressions, clicks, CTR, views, actions, total cost, CPC, CPA), daily activity chart, and top plan posts. Cost is the plan price snapshotted when the term starts (using the discounted price when set)

Both post edit screens also gain Promotion Stats and Listing Plan Stats metaboxes.

Widgets

WidgetWho sees itWhat it shows
My Listings Analytics (VT)The logged-in user, own listings onlyTotals across all their listings plus an optional per-listing table
Promotion Stats (VT)Configurable — everyone, logged-in, author & admins (default), or admins onlyStats for the current post's promotion: badge, performance score, funnel, action/device breakdowns, trend chart, and ROI. Renders nothing unless the post is or has been promoted
Plan Stats (VT)Same visibility choicesStats for the current post's plan term, with plan cost, ROAS, CPC/CPA, and optional benchmark against the plan or category. Can be limited to specific plan keys

Promotion Stats and Plan Stats offer detailed, summary, and compact display styles (Promotion Stats also has a badge-only mode).

Dynamic Tags

The post group gains a Listing Stats (VT) object:

@post(listing_stats.<metric>.<timeframe>)
@post(listing_stats.action.<action_key>)
  • Metrics: impressions, card_clicks, page_views, actions, shares, forms, revenue
  • Timeframes: 7d, 30d, 90d, all
  • Action keys (fixed 30-day window): phone_call, website, directions, message, whatsapp, email, booking, follow, save_collection

Examples:

@post(listing_stats.page_views.30d)
@post(listing_stats.revenue.all)
@post(listing_stats.action.phone_call)

Because these are ordinary dynamic tags, they work anywhere dynamic data does — including Voxel visibility conditions, so you can show a "Popular this month" badge only when @post(listing_stats.page_views.30d) passes a threshold.

Troubleshooting

Nothing Is Being Recorded

  • Confirm at least one post type is ticked under Tracked post types
  • If you're testing while logged in as admin or as the listing's author, the exclusion settings are skipping you
  • Check the standalone plugin isn't active (see the notice above)

Numbers Look Low

  • Impressions only count when a card is actually visible for the configured threshold and duration
  • Bot, DNT/GPC, and rate-limit filtering all reduce raw counts by design

Requirements

  • Voxel Theme (active and configured)
  • Voxel Toolkit plugin with Listing Analytics enabled
  • Fluent Forms (optional, for form submission tracking)

Built by Code Wattz.