Appearance
Plans, Groups & Pricing
This is what turns Voxel Ads from a sync tool into an ad business: each pricing tier you sell maps to an AdRotate group, and each group gets placed differently.
Create your groups
In AdRotate → Manage Groups, create one group per tier you intend to sell. A typical setup:
| Group | Tier | Typical placement |
|---|---|---|
| 1 | Bronze | Deep in the feed, every 8 cards |
| 2 | Silver | Mid-feed, every 4 cards |
| 3 | Gold | Top of feed, position 1 |
Note each group's ID — AdRotate shows it in the groups list.
Map plans to groups
In Settings → Voxel Ads → Plan → Group mapping, add one line per plan:
bronze=1
silver=2
gold=3The left side is the Voxel listing-plan key; the right side is the AdRotate group ID. Lines starting with # are comments and are ignored.
Set a Fallback group ID to catch banners whose plan isn't in the map. Leave it at 0 and unmapped banners go into no group at all — they exist in AdRotate but no group-based placement will ever show them.
The most common reason ads don't appear
A banner in no group is invisible to every [adrotate group="N"] placement. If banners are syncing but never showing, check the plan key spelling against the map, and set a fallback group.
Where pricing comes from
Pricing is read automatically from Voxel's listing-plan order items — the actual amount the advertiser paid, in the currency they paid it. Nothing to configure.
This feeds:
- CPC — cost per click
- CPM — cost per thousand impressions
- Revenue figures in the stats widget, dynamic tags and dashboard
Manual price fallback
Banners created outside the paid-listings flow — imported, created by an admin, or on a free plan — have no order to read. For those, set prices manually in Plan → Price mapping:
bronze=49.99
silver=99
gold=199Decimal commas work too (49,99). These are only a fallback: a real Voxel order always wins.
Set the Currency symbol to match, since manual prices carry no currency of their own.
Priority within a group
When several banners share a group and you want a predictable running order, set voxel:priority on the banner post — higher numbers run earlier. Voxel's listing plans can set this automatically through their "Custom priority" feature, which lets a premium tier outrank a cheaper one inside the same group.
Priority matters when a placement rule uses explode=yes, which gives each banner its own slot in priority order rather than letting AdRotate pick at random. Banners on the same priority are shuffled among themselves, so equal-paying advertisers rotate fairly. See Feed & Timeline Injection.
A worked example
Selling three tiers on a directory:
- AdRotate → Manage Groups: create Bronze (1), Silver (2), Gold (3).
- Voxel → Listing plans: create
bronze,silver,gold, priced and with durations. - Settings → Voxel Ads: map
bronze=1,silver=2,gold=3, fallback1. - Settings → Voxel Ads → Feed injection, add:
shortcode=[adrotate group="3"], position=1, target=.feedresults
shortcode=[adrotate group="2"], explode=yes, interval=4, order=priority, target=.feedresults
shortcode=[adrotate group="1"], explode=yes, interval=8, order=priority, target=.feedresultsGold leads the feed, Silver spreads every fourth card, Bronze every eighth — each tier getting exactly the exposure it paid for.

