Appearance
Voxel Events Changelog
Release notes for every Voxel Events release, newest first. The current release is 1.1.2.
Updates install through the normal WordPress updates screen once your license is active.
Back up before updating a production site
Voxel Events writes ticket, order, and inventory data. Update on staging first where you can.
1.1.2
New Features
Settings to restore the hidden create-event form sections — The "Time Slots (Optional Overrides)" and "Attendee Information" sections (hidden since 1.1.0) can now be re-enabled without editing any templates. Two new toggles live under Voxel Events → Settings → Create Event Form; both default to off, matching the streamlined 1.1.0 behavior. Re-enabling the Time Slots section also restores access to the per-date "Mark as sold out" toggle introduced in 1.1.0.
Filters for the same flags — Developers can override the section visibility in code via the voxel_events_create_form_show_time_slots and voxel_events_create_form_show_attendee_fields filters (each receives the current boolean and should return one). Filters run after the settings, so they take precedence.
1.1.1
New Features
- Alignment controls for the Ticket Product Form widget — Four new responsive (desktop/tablet/mobile) alignment controls: Section Labels → Alignment aligns the "Select tickets" and other section headings; Ticket Types → Content Alignment aligns the ticket name, description, price and availability text together; Quantity Stepper → Alignment positions the +/- stepper left, center, or right when the ticket row stacks vertically (previously hardcoded to the right on mobile); and Buttons → Width + Alignment lets the add-to-cart button be narrower than full width and aligned within its row.
1.1.0
New Features
- Mark a date as sold out — The date override editor now has a per-ticket-type "Mark as sold out" toggle. When enabled, that ticket type shows as "Sold Out" for the date and cannot be purchased — it takes precedence over the capacity value (including unlimited). The "0 = unlimited" capacity behavior is unchanged, and no existing data is reinterpreted.
Changes
- Streamlined create-event ticket form — The "Time Slots (Optional Overrides)" and "Attendee Information" sections are now hidden in the create-event form (controlled by the $show_time_slots / $show_attendee_fields flags in the template). This is a display-only change; any previously saved time slots or attendee fields are preserved.
1.0.8
Bug Fixes
Pricing Breakdown now uses the configured currency — On offline-payment orders, the Pricing Breakdown line was always rendered with a hardcoded "£" symbol regardless of the site's actual currency, causing a mismatch with the rest of the order (e.g. subtotal in "$" but breakdown in "£"). The pricing breakdown and the printable receipt now pull the currency from the event's product field (with a fallback to Voxel's global Stripe currency setting) and format amounts accordingly.
Same-day events are now purchasable — Tickets for an event happening later the same day were incorrectly flagged as "No tickets available for this event" because slot date/times were being compared without applying the WordPress site's timezone. Slot start times are now parsed in the configured site timezone (wp_timezone), so tickets remain available right up to the event's start.
New "Sales Cutoff" setting per event — Event editors can now configure how many minutes before each event start time ticket sales should stop (0 = sell until start). The cutoff is enforced on both the front-end slot picker and the purchase validation.
Confirmation email now reliably shows Date and Time — When the upstream slot data was missing or only partially populated (some recurring-date and dynamically-generated slot ID formats), the ticket confirmation email's Date/Time lines came out blank. A safety-net backfill now resolves the slot from the event's product configuration (and from the ticket record in the DB) before the email is rendered.
Ticket confirmation email now includes QR codes inline — The default email template was using the simple ticket list (text codes only). It now uses the detailed list, which embeds each ticket's QR code so attendees can scan straight from the email. Customers who have customized their email template can switch to the new tag manually by replacing @tickets(:list) with @tickets(:detailed_list).
Clearer Attendee Information guidance for free tickets — The "Attendee Information" help text claimed buyer name and email are always captured from the payment gateway. That isn't true for free tickets, which skip checkout and would otherwise leave attendees anonymous. The text now explains that paid tickets capture name/email at checkout and prompts editors to add a name/email field for free tickets if they need to identify attendees.
"Empty Message" control moved to the Content tab — The "No tickets selected yet" empty-state text for the Your Selections panel was registered under the Style tab, away from every other editable string. It now lives in the Content tab next to the panel title (its styling controls remain under Style). Existing saved values are unaffected.
1.0.4
Bug Fixes
Check-in now works for custom user roles — Event authors with non-admin roles (e.g. Voxel custom roles) were getting "Connection error" / "Ticket not found" when trying to check in tickets. The API was requiring the WordPress edit_posts capability, which custom roles don't have. Now uses proper author-based authorization.
Ticket sales toggle actually disables sales — Turning off the "Enable Tickets" toggle had no effect because the code checked for ticket_types data or tickets_enabled flag. Since ticket_types always has data after setup, the toggle was ignored. Fixed across 14 occurrences in 4 files.
Real-time check-in status on customer order page — After a ticket was scanned and checked in, the customer's order page continued showing "Not Checked In" for up to 3+ hours. Added polling that updates the status within seconds of check-in.
Form layout fix for All-Day / Multi-Day switchers — The start/end time switcher toggles in the create event form were not clearing to their own line, causing a janky layout. Fixed with proper flex sizing for switcher-label elements.

