Dynamic Tags
Voxel Toolkit extends Voxel's dynamic data system with extra modifiers, methods, and properties. They work anywhere Voxel accepts a dynamic tag — Elementor widgets, email templates, and post type settings.
Voxel Toolkit → Dynamic Tags lists what's currently available on your site, and Tag Usage scans your templates for where each one is actually used.
Properties follow their function
Most properties only exist when the function that provides them is enabled. @post(reading_time) needs the Reading Time widget enabled; @user(online_status) needs Online Status. If a tag returns nothing, check the function is switched on first.
Modifiers
Modifiers transform the value of a tag. Chain them with a pipe, the same as Voxel's built-in modifiers.
| Modifier | What it does |
|---|---|
file_size | Outputs the size of a file field's value |
file_extension | Outputs the file extension |
address_part | Extracts a single component from an address — city, state, postcode, and so on |
tally | Counts items in the value |
sold | Outputs sold/stock state for a product |
generate_qr_code | Generates a QR code from the value |
see_more | Truncates long text with a "see more" toggle |
initial | Reduces a name to its initial — useful for avatars and privacy |
Methods
| Method | Group | What it does |
|---|---|---|
profile_completion | @user(), @author() | Returns how complete the profile is, driven by the Profile Progress widget's field configuration |
summary | @order() | Returns an order summary |
render_post_tag | @site() | Renders any @post() tag in the context of a different post |
render_post_tag
Provided by the Post Fields Anywhere function. It lets you output a field from one post while rendering another — for example showing a parent listing's address on a child post.
@site().render_post_tag(post_id, @post(field_name))Properties
Post
| Property | Provided by |
|---|---|
reading_time | Reading Time widget |
word_count | Reading Time widget |
campaign_amount_donated | Campaign Progress widget |
campaign_number_of_donors | Campaign Progress widget |
campaign_percentage_donated | Campaign Progress widget |
article_helpful_yes_count | Article Helpful widget |
article_helpful_no_count | Article Helpful widget |
article_helpful_total_votes | Article Helpful widget |
article_helpful_percentage | Article Helpful widget |
article_helpful_latest_yes | Article Helpful widget |
article_helpful_latest_no | Article Helpful widget |
feed_position | Recurring Events |
is_team_member | Team Members |
ai | AI Post Summary — @post(ai.summary) |
Recurring Date Fields
These are added to every Recurring Date field's own tag, alongside Voxel's upcoming, previous and all.
| Property | Provided by | Example |
|---|---|---|
upcoming_or_last | Past Events | @post(event_date.upcoming_or_last.start) |
has_ended | Past Events | @post(event_date.has_ended) |
upcoming_or_last is the next date, or the last one once the event is over, with start, end, is_multiday and is_allday. With Past Events on, Voxel's own upcoming list also falls back to the last date, so @post(event_date.upcoming.start) and .end show a date on past events too (a setting turns this off). See Past Events.
User and Author
| Property | Group | Provided by |
|---|---|---|
membership_expiration | @user(), @author() | Membership Notifications |
online_status | @user(), @author() | Online Status |
is_online | @user(), @author() | Online Status |
last_seen | @user(), @author() | Online Status |
unread_notifications | @user() | Title Notification Badge |
unread_messages | @user() | Title Notification Badge |
Site
| Property | Provided by | Example |
|---|---|---|
options | Site Options | @site(options.field_name) |
visitor | Visitor Location | @site(visitor.location) |
Share count
The Share Count function adds @post(share_count), which returns how many times a post has been shared through Voxel's share menu.