Appearance
Choosing Which Member a Widget Shows
By default every member-facing widget shows the logged-in visitor their own data — their balance, their history, their level, their badges. Build a "My Points" page out of them and it works per-member with nothing to configure.
| Widget | Shows by default |
|---|---|
| Points Balance | the viewer's balance |
| Points History | the viewer's ledger |
| Member Level | the viewer's level and progress |
| Member Badges | the viewer's badges |
| Rewards Store | the viewer's balance and what they can afford |
| Leaderboard Privacy | the viewer's own setting |
| How to Earn | your enabled rules — the same for everyone, by design |
| Leaderboard | everyone, with the viewer's own row optionally pinned |
Logged-out visitors see nothing at all — the Rewards Store shows its configurable login message instead — so you do not need to wrap any of this in a "user is logged in" condition.
Pointing a widget at someone else
Points Balance, Points History, Member Level and Member Badges each have a Member field. Leave it empty for the logged-in visitor, or set it to show a specific member:
- a plain user ID, or
- a dynamic tag — the field takes Voxel's tag picker like any other text control.
The one you will use most is on a member profile template:
@tags()@author(id)…which means "the member whose profile this is". Without it, a Member Badges widget on Kaz's profile shows each visitor their own badges, which is rarely what a profile page is for.
If the tag resolves to nothing, the widget shows nothing
It deliberately does not fall back to the visitor. Falling back would put the wrong member's data on the page while looking perfectly fine — the exact problem the field exists to prevent.
Two widgets deliberately have no Member field: Leaderboard Privacy (a member's own setting) and Rewards Store (it leads to spending your own balance). Pointing either at someone else would be incoherent.
A note on privacy
Putting @tags()@author(id) on Points History or Points Balance publishes that member's balance, or their whole ledger, to anyone who can see the page. That is a perfectly reasonable thing to want — plenty of directories show "1,240 points earned" on a profile — but it is a decision to make on purpose. Level and badges are the safer pair for a public profile.
Weaving values into your own text
For a sentence rather than a widget, use dynamic tags directly. Every tag comes in two forms:
| Tag | Whose |
|---|---|
@user(vxp_level) | the logged-in viewer — "my level" |
@author(vxp_level) | the post's author — "this profile's level" |
@author(display_name) has earned @author(vxp_earned_total) points
and is currently @author(vxp_level).Showing something only to certain members
Voxel's own Visibility tab appears on every Voxel Points widget, so you can gate any element without a plugin setting:
- User role is — one Rewards Store for customers, another for businesses
- User plan is — gate by membership plan
- Dynamic tag — compare any tag, including ours
That last one is worth knowing about: because our values are dynamic tags, you can show or hide any element on the site based on a member's points standing — "show this offer only to members with 1,000 or more points", or "show this section only to Veterans" — with no code and no extra setting.

