Features

Ten modules. Every plan has all of them.

Each module is a switch on the Modules screen. Turn on what the site needs and nothing else loads. Notifications and the importers are built in and always there. Here is what each one does.

Forms

Forms that already know your fields.

Six kinds of form: post forms that create or edit posts, standalone forms for contact and inquiries, registration forms that sign visitors up, login forms, password reset forms, and product options forms for FluentCart. Pick a post type and the form starts with every field VX knows about. Drag fields into order, set each one full or half width, add a placeholder and help text, and show a field only when another has a certain value.

  • Shortcode, block editor, Elementor, or Bricks, each with its own style controls
  • Notifications with a visual editor and smart codes, sent when rules match
  • FluentCRM lists, tags, and custom fields; Cloudflare Turnstile against bots
  • Entries with approve, deny, and resend, and a CSV of any view

The full forms page →

The form builder: fields on the left as visitors will see them, the selected field's settings on the right.

Sheet

A hundred listings. One screen.

Every post of a post type in a full-screen grid, with the post's own fields, its taxonomies, and every VX field as a typed cell: inputs, dropdowns, switches, date pickers, term and relation pickers, the media library for images. Cells save on their own.

  • Filter, sort, page, hide columns, add draft rows, duplicate
  • Bulk edit a column with a preview before anything changes
  • Groups and repeaters in their own dialog; long content opens the post's editor in a frame
  • Export the view or the selected rows to CSV
The Sheet: a hundred properties in one grid, every field editable in place.

Admin columns

The post list, the way you'd set it up yourself.

Choose the columns for each post type, WordPress's own included. Thumbnails, choice labels, formatted numbers and dates, links to related posts, switch checks. Sort and filter by them, change a value in Quick Edit, or select a few posts and bulk edit any column.

  • Replace, find and replace, add to the start or end, raise or lower numbers, move dates
  • Turn switches on or off, add or remove choices, terms, and related posts, or clear
  • Every change previews on every selected post first, and goes through VX's validation
The Columns screen: the Properties list's columns in order, each with its heading, width, and options.

Validation

Rules a post must meet before it publishes.

Per post type: required, required only when another field has a certain value, unique across the type, matching a pattern such as a ZIP code or an email address, or at least one of several fields filled. VX's own required flags count too. Pick roles that may publish anyway; they still see what is missing. Drafts and pending posts are never held.

  • Block editor: Publish is held with a list of what is missing, checked as you type
  • Classic editor and Quick Edit: the post is saved as a draft with a notice
  • Forms, the Sheet, bulk edit, and REST refuse the change with the same message
  • Anything else, such as AI writes, is checked after the fact and listed on the dashboard
The Validation screen: excused roles, a strict switch, and the rules for Properties.

Elementor

VX fields, rules, and loops in Elementor.

Nine dynamic tags: field, link, number, image, gallery, media, color, date, and expression. A VX picker beside every dynamic-capable control: browse the post, author, viewer, site, and term fields, or type an expression with autocomplete, stack modifiers, and see the result before you insert it. Works with Elementor and Elementor Pro, on Elementor 4's atomic elements too.

  • Visibility rules on every element, evaluated by VX's own rule engine; hidden elements never reach the page source
  • Loops that repeat any element per item of a repeater, gallery, list, or relation field, with nested loops and per-item rules
  • Structure panel icons for bound, ruled, and looped elements, and right-click copy and paste of rules and loops
  • Templates, headers, and footers stay with Elementor Pro's Theme Builder, which VX Modules does not replace
The VX picker in Elementor: a field tree on the left, an expression with modifiers and a live preview in the middle, and the modifier stack on the right.

Importers and WP All Import

Moving from ACF, Meta Box, or Pods is a plan, not a leap.

The importer reads what the other plugin registered, post types and taxonomies included, and shows a plan in plain words: what carries over as is, what gets converted, and what needs a look. Every step has a dry run, and values move before the switch, so nothing is lost in between.

  • ACF and Secure Custom Fields, Meta Box, and Pods
  • Bringing a spreadsheet? A VX section in WP All Import's mapping step, with auto-assign by field key. The free edition is enough.
  • Also on the command line: wp vxm import acf --dry-run
The Import screen: the plan for moving ACF field groups into VX.

FluentCart & WooCommerce

Your store's data, in the same picker.

With either store active, the VX picker gets a Product folder: price, price range, compare-at price, on sale, stock, SKU, physical or digital, subscription, purchase link, image, categories. A Variations loop repeats any element per option with its own price, stock, and purchase link. Cart and Customer folders under the viewer give the cart's count and subtotal, and whether the viewer has bought this product or holds an active subscription to it.

Both modules publish the same tags and the same rule names, on purpose: a site that moves from one store to the other keeps its pages and its rules working. Only one of the two runs at a time.

Visibility rules

Product in stock, on sale, is a subscription; viewer has bought this product, has an active subscription, is a customer; cart has items, cart holds this product.

Product page fields

A switch lists the product's VX fields on the store's own product template — under the content on FluentCart, or under the price, in a tab, or below the product on WooCommerce. A shortcode places the same block anywhere.

Product options forms

Text, choices, and uploads a buyer fills in before adding to the cart. The answers ride with the item into the cart, the order, the receipt, and the store's own order emails — and stay as an entry that links back to the order.

Works everywhere VX Script runs

Elementor tags, the block editor's bindings, and expressions with modifiers all read the same product, cart, and customer data.

Memberships

Plans that decide how many posts a member gets.

A member buys a plan as a FluentCart subscription, and the plan says what they may post: “5 properties or rentals,” “1 free listing,” “unlimited events.” Voxel keeps memberships and paid listings in two systems that cannot talk to each other. Here a plan does both, so one subscription is the membership and the listing package.

FluentCart does the billing — checkout, Stripe or PayPal, renewals, receipts, and the customer portal. Plans, allowances, counting, and what happens to posts are VX Modules’. It works on free FluentCart; with FluentCart Pro, members also switch plans with prorated billing.

The memberships docs →

Counted the way you sell

Per plan: live posts, posts per billing period, or posts for good. A member can hold several plans and the allowances add up. A “No plan” level decides what anyone may post for free.

Enforced on every save

Forms refuse before writing, so nothing typed is lost. The block editor and REST refuse with the reason. The classic editor, Quick Edit, the Sheet, and AI agents save a draft and say why.

Perks per plan

A Featured badge, a Verified mark, a priority that puts better plans first on archives and search, and listings that expire after a set number of days.

Field limits per plan

“3 photos on Basic, 20 on Pro.” Leave a field out of a plan, or cap how many files a gallery holds.

And when a plan ends, nothing is lost.

A canceled plan keeps working until the period that was paid for runs out. Then its posts move to room on the member’s other plans first, and what does not fit is paused: hidden from the site, still there for the author. When the member buys a plan again, the paused posts come back on their own, newest first.

  • A pricing table and a membership panel as a block, an Elementor widget, a Bricks element, or a shortcode
  • A Membership tab in FluentCart’s customer portal
  • @membership(…) and @post_plan(…) tags, and visibility rules for plans, room to post, and featured or verified posts
  • Ten emails on the Notifications screen, from “Plan started” to “Allowance used up”

Downgrades the member chooses

Switching to a plan with less room asks which posts stay live, with the newest picked already.

A Members screen

Every member’s plans and usage, a re-sync from FluentCart, and a plan you can grant by hand for comps and partners.

Your existing posts, your call

When plans start limiting a post type, decide once whether the posts already there count, and see who would be over before you do.

Messaging

Private conversations, about the listing they are about.

Members message each other, and visitors message the person behind a listing. A conversation can carry a post as its subject, so the owner sees what it is about — and the same thread is titled for whoever is reading it: the buyer sees the listing, the owner sees the buyer with the listing as a chip underneath.

  • Starting a conversation is a link, so any button in any builder opens one
  • Groups with mentions, replies that quote, read receipts, and online status
  • Files kept out of the Media Library and served only to people in the conversation
  • Search inside every conversation at once, and land on the message
  • Blocking, reports, a moderation queue, retention, and conversation export

The messaging docs →

The messenger: conversations on the left, the open conversation in the middle, and its files, links and search on the right.

And a chat dock that follows them around.

A messenger in the corner of every page, the way a social network does it. Members carry their conversations with them instead of going back to an inbox, and it remembers what was open as they move around the site.

  • New messages arrive about once a second, from an endpoint that does not load WordPress
  • Block, Elementor widget, Bricks element, or shortcode — twelve groups of style controls in each
  • Light by default, matching the builder, with every color a custom property
  • Keyboard navigable, and it announces what arrives without reading out the whole thread
The chat dock: the launcher with an unread count, and the conversation list open above it.

Notifications

The emails a site should send, on one screen.

When something happens, the site tells the people it concerns. Every notification is on or off by itself, separately for the admin and for the person it is about, and nothing needs switching on first — it is built in, not a module.

Messages are written with VX’s own dynamic tags, the same ones the Elementor picker offers: the post’s fields, its author, whoever acted, plus what only the notification knows, like a review link or the status before and after.

  • A live preview against a real post or account, and a test send
  • Sent through WordPress’s own mailer, so your SMTP plugin carries them
  • Your from name and address, where admin emails go, and a clean branded layout
  • A log of what was recently sent, and to whom

The notifications docs →

Every post type

Five for each post type VX manages: submitted for review, edited by its author, published, approved, and not approved.

Accounts

With Forms on: a new account, an account approved, and an account not approved.

Memberships

With Memberships on: ten more, from “Plan started” and “Payment failed” to “Post expired” and “Allowance used up.”

Sent once, with the right values

Messages go out at the end of the save, after the fields are written, and one save that fires several events sends the one that matters.

Coming next.

The order and the details come from what early-access members ask for. Say what you need and it moves up the list.

All ten in one plan.

There are no tiers and no add-ons. Every module on this page is included, on every plan.