EventKoi Pro Changelog

July 13, 2026

1.3.24.0 - Add attendees manually and import Event Tickets

New

  • Add an attendee by hand from the event’s Attendees tab. Creates a free, completed order with its own check-in code, for ticket transfers or competition winners, and it can never oversell your capacity.
  • The Events Calendar importer now brings over Event Tickets ticket types (RSVP and Tickets Commerce) with their prices, capacity, sold seats, and sale windows. Attendee records and WooCommerce tickets are counted and reported, not imported.
  • New Custom field value block binding: bind any block text to a single custom field’s bare value.

Fixes

  • Calendar times in 12-hour mode now always show the am/pm suffix in every language, so a bare hour can no longer be mistaken for a count.
  • Event images in the Query Loop now link to the event page itself for multi-day events, matching the title link, instead of one highlighted date.

July 13, 2026

1.3.23.2 - Theme compatibility and importer fixes

Fixes

  • RSVP status buttons and other controls no longer lose their text or get repainted by page-builder button styles (like the Elementor global kit).
  • The Events Calendar importer keeps each event’s original URL slug, so links to imported events keep working.
  • A TEC event’s Website link no longer marks the imported event as online or hybrid; it is saved as an Event website custom field instead.
  • The importer no longer creates a ticket priced in the wrong currency when the TEC event’s currency differs from your store currency.
  • Imported events copy the Show time zone display setting from The Events Calendar.

July 9, 2026

1.3.23.1 – Email and ticket count fixes

Fixes

  • Admin notification emails, such as the new ticket sale notification, now keep your formatting and paragraphs when you save the template.
  • A ticket type's remaining count is now capped to the event's total remaining, so it can never show more available than the event has left.
  • Event Query Loop: with Group same-day times enabled, the time and date fields now list every time frame for the day instead of only the first.

July 9, 2026

1.3.23.0 – Query Loop grouping, expired-event fixes and resizable terms

New

  • Event Query Loop: a new Group same-day times option shows one row per event per day, listing every time frame together instead of repeating the same event on multiple rows.

Fixes

  • Expired events can be edited again, and a new Republish action brings them back live. The Expired label is now translatable.

Improvements

  • The terms and conditions box at checkout can now be dragged taller, so visitors on larger screens can read long terms without scrolling a small window.

July 8, 2026

1.3.22.0 – Editor, calendar and checkout fixes

Improvements

  • Passed events now retire into a dedicated "Expired" state (redirected and hidden) instead of being drafted, so you can still see they were once published.
  • Orders paid with delayed methods like SEPA, Bacs and ACH now finalize automatically.
  • Each custom field group now renders in its own container so a whole group can be styled.
  • The per-event confirmation message and terms-acceptance email tags are now listed in the email settings and still render in customized templates.
  • The terms-acceptance email tag is now optional.

Fixes

  • Pasting into the rich text editor now strips inline styles and stray formatting from Google Docs and Word, while keeping your headings, lists, links, and bold or italic text.
  • The calendar list view no longer shows an empty grey image box for events that have no picture.
  • Recurring event summaries now list the weekdays in calendar order.
  • On mobile checkout, the terms and agreements now sit inside the scrollable area of the window, so long terms no longer cover the rest of the checkout.
  • A few more strings are now translatable, including the "From" starting price and the calendar "Copy feed link".
  • Empty custom taxonomy boxes are now hidden, and each ticket agreement gets a unique checkbox id.

July 6, 2026

1.3.21.0 – Price from attendance, passed-event management & custom field ordering

New

  • A new "Price from" attendance option shows a starting price on the event page and links visitors to an external ticketing site.
  • Passed events can be unpublished automatically after a grace period, with a 301 redirect from their old URLs to an address you choose.
  • Assign your site's registered taxonomies (like Places or Activities) directly on the event form, without opening the WordPress editor.
  • The event page tickets box now shows how many tickets are left, when the show-remaining setting is on.
  • Add multiple agreement checkboxes at checkout (for example privacy, refund policy and other consents). Each one is recorded on the order and listed in the admin sale email.
  • The admin sale-notification email now records the buyer's terms acceptance, with the exact terms text as it was at checkout.
  • Custom fields can be reordered with a drag-and-drop dialog, and the order stays consistent across the settings, the event form and the front end.
  • Add a per-event custom email message to ticket and RSVP confirmation emails, and expand recurring occurrences in the calendar block's List view with an optional toggle.

Improvements

  • Custom field output now has targetable per-field and per-group CSS classes, and the label colon is translatable for French spacing.
  • Event URL bases can include a nested path such as agenda/calendar; the slash is preserved instead of being stripped or turned into a dash.
  • The event page ticket sales window has a CSS hook so it can be hidden with a snippet without affecting the checkout modal.

Fixes

  • In the Divi builder, the Event module's "Current event" option can now be selected.
  • The custom field type is now labelled "Grouped dropdown" consistently in the fields list.
  • On narrow phones, the calendar toolbar wraps so the Subscribe button and the Month/Week/List switch never overflow.
  • The calendar and list views no longer collapse to a narrow strip on flex-based classic themes such as Astra.
  • The event template share icon follows the button's text colour.
  • Icon-only buttons, like the ticket quantity steppers, stay intact under themes that reset button styling, such as Hello Elementor.
  • Ticket agreement checkboxes always get a unique id, so two agreements can never share a checkbox at checkout.
  • Passed-event auto-unpublish never touches an open-ended recurring series, and its redirect can reach off-site targets without bouncing to wp-admin.

July 1, 2026

1.3.20.1 – Calendar subscribe button, block alignment & custom field order

New

  • A Subscribe button on the calendar lets visitors add the whole calendar (a single calendar, several, or all of them) to their own Apple, Google, or Outlook calendar in one click, and it updates automatically as your events change.

Fixes

  • In the block editor, the Event Data location field now honours center and right alignment, matching how it already looked on the front end.
  • Custom fields now appear in a consistent order across Settings, the event edit form, and the front end.

June 30, 2026

1.3.20.0 – Query Loop pagination, theme headings & ticket sales fixes

Fixes

  • The Event Query Loop now paginates correctly. Page two no longer repeats the events from page one when the results fit on a single page.
  • Event page headings (the title and the headings in the description) now consistently follow your theme's heading styles. A leftover style reset that still overrode some heading sizes and weights has been removed.
  • When an event has ticket types with different sales dates, the ticket sales window text is no longer shown incorrectly. If any ticket type has no start date, the “sales start” line is hidden, and the same applies to the end date.
  • More counters now use proper singular and plural forms, so translations read correctly.

June 25, 2026

1.3.19.0 – Calendar list view, mobile checkout & theme-friendly titles

New

  • The calendar now has a List view in the Month/Week switcher, with search, and each event shows its calendar's colour and name.
  • The block editor calendar preview now includes the List view, so the editor matches the front end.

Fixes

  • The event title now follows your theme's H1 styling instead of the plugin's hardcoded size, weight and colour.
  • Event images in the calendar list view are no longer stretched when they aren't 3:2; they are cropped to fit.
  • On mobile, the ticket checkout shows the terms in a scrollable box and opens as a full-screen sheet, so the form fields and the checkout button stay reachable, and the location pin no longer shrinks.
  • Broader translation coverage: more strings that were stitched together from fragments are now single translatable strings, and more counters use proper plural forms.
  • Fixed a crash in the calendar block's editor preview, and the preview now loads events.

June 24, 2026

1.3.18.0 – Recurring reschedule, ticket controls & translation coverage

New

  • Reschedule a single occurrence of a recurring event, overriding just that occurrence's date and time, including an all-day toggle for it.
  • Location data is now split into separate fields (name, address, unit, city, state, country, postal code) across the Event Data block, Query Loop, bindings and Bricks tokens, so you can show just the city, just the address, and so on.
  • Set a total ticket quantity cap per event, and require a Terms & Conditions checkbox before a ticket order or RSVP can be submitted.
  • Each calendar now has a subscribable iCal feed visitors can add to their own calendar app.
  • A single-package toggle for multi-day, selected-date events, so the whole set of dates can be treated as one package.
  • A "has location" flag for page builders, so you can show or hide elements based on whether an event has a location.

Improvements

  • Admin pages now have descriptive, per-screen titles in the browser tab.
  • The Beaver Builder calendar module can now show multiple calendars, or all of them, at once.
  • Much broader translation coverage: many admin and frontend strings that could not be translated before are now translatable, sentences that were stitched together from fragments were rewritten as whole strings, and counters use proper plural forms.

Fixes

  • Headings inside the event description now follow your theme's heading styles instead of being flattened by the plugin's styles.
  • "Upcoming" event lists keep events that are currently in progress by testing the end time, and a duplicate settings tab on the Query Loop block was removed.
  • The Date with Summary field now lists every date of a multi-date event on the front end, matching the editor.
  • The Events Calendar importer keeps the full date range for multi-day all-day events.
  • RSVP summaries now resolve correctly for selected-date and package events instead of failing.
  • Corrected package date ordering, the per-day purchase guard, and Beaver Builder legacy calendar selection.

June 19, 2026

1.3.17.3 – Translations, mobile dialogs & accented slugs

New

  • The React interface now applies your Loco/.mo translations across the calendar, RSVP, share, tickets and the entire admin — the plugin is fully translatable, not just the PHP strings.
  • Custom field groups now display stacked (one field per row) on the front, and URL fields use your theme's link color.

Improvements

  • On mobile, the Get tickets, Checkout, RSVP and Share dialogs are now full-width sheets with a fixed header, a scrollable body and a fixed footer, so nothing is cut off and every control stays reachable.

Fixes

  • Slugs generated from accented titles now fold to ASCII (é→e, ç→c, ß→ss) instead of replacing each accent with a dash, giving clean, SEO-friendly URLs.

June 18, 2026

1.3.17.2 – Calendar search refinements

Improvements

  • Calendar search keeps focus while typing, no more dropping after the first letter.
  • Recurring events now list their upcoming occurrences in search results.
  • Search also finds events that have already taken place, sorted after upcoming ones.
  • Search results scroll on their own without moving the page, and close on Escape or an outside click.

June 18, 2026

1.3.17.1 – SiteGround Optimizer compatibility

Fixes

  • The calendar now renders correctly when SiteGround Optimizer's JavaScript minification is enabled (it was breaking the bundle and leaving the calendar blank for visitors).

June 18, 2026

1.3.17.0 – Calendar search across all months

Improvements

  • Calendar search now finds events across all months, not just the month currently in view.

June 17, 2026

1.3.16.0 – Importer, calendar, and ticketing improvements

New

  • Per-block date and time format controls on the Event Data block.

Improvements

  • The Events Calendar importer now keeps ACF fields as ACF instead of converting them.
  • Calendar search results pagination now has Previous and Next month controls.
  • General settings are grouped into labelled sections.
  • The WordPress editor link is always available so ACF, SEO, and other plugin panels can be reached.

Fixes

  • Deleted recurring instances no longer appear on the calendar or event series list.
  • Ticket orders paid directly with Stripe now store the buyer's entered name instead of the cardholder name.
  • Multi-day all-day events from The Events Calendar now import as all-day spans.

June 15, 2026

1.3.15.0 – RSVP & checkout custom fields, ticket terms, calendar fixes

New

  • Add custom fields to the RSVP form with the eventkoi_rsvp_fields filter (for example a first/last name split), validated and saved with each RSVP.
  • Add custom fields to the ticket checkout form with the eventkoi_checkout_fields filter, saved with the order.
  • Ticket terms and conditions now show in the purchase dialog and can be output with the [eventkoi data="tickets_terms_conditions"] shortcode.

Fixes

  • Week view no longer drops events on weeks that span two months, and month navigation is faster.
  • Selected-day event titles in the Event Query Loop now link to the parent event instead of a single day.

June 7, 2026

1.3.14.1 – Calendar & Query Loop front-end fixes

Fixes

  • The frontend calendar no longer fails to render (which could drop recurring instances on some weeks) on hosts where a JavaScript optimizer alters the React runtime.
  • The Event Query Loop block now keeps its Wide and Full width alignment on the front end.
  • Virtual event locations in the Event Query Loop now render as a clickable link using the configured link text instead of a bare URL.

June 4, 2026

1.3.14.0 – Security fix, TEC importer improvements & calendar conflict fixes

Security

  • Event REST endpoints now restrict draft, pending, and private events to users who can edit them, preventing unauthenticated access to unpublished event data (CVE-2026-10029).

Improvements

  • TEC importer now resolves ACF file, image, and gallery fields to their file URLs, groups repeater rows into readable fields, and skips SEO and analytics plugin meta (Rank Math, AIOSEO, Jetpack, and similar) so only real event content is imported.
  • The "See all events in series" back-link can now be shown or hidden per event, overriding the global setting.
  • Admin events list now supports server-side sorting by title, start date, and modified date.
  • Recurring event rules now default to sorting by their start date.

Fixes

  • Resolved TEC importer edge cases for multi-day events, recurring series, and imported category colors.
  • Fixed Beaver Builder conflicts: theme-proof calendar toolbar visibility, px-based sizing so the calendar no longer shrinks under small-root-font themes, conditional submission styles, and assets shipped in the package.
  • Editing an event no longer resets its slug, map coordinates are preserved, and the SEO editor link is gated correctly.

May 31, 2026

1.3.13.0 – Frontend event submissions, grouped custom fields & calendar polish

New

  • Frontend Event Submission — let visitors submit events from the front end via a block or the [eventkoi_event_submission] shortcode. Includes optional moderation (pending review or auto-publish), a theme-aware form with custom date/time picker, rich-text description, featured image upload, RSVP and recurring options, calendar assignment, honeypot spam protection, and edit-your-own-submission support.
  • Grouped Dropdown custom field — structured multi-column custom fields (e.g. venue name / address / country) with a redesigned drag-to-reorder table editor.

Improvements

  • Calendar search now scopes results by month with clearer previous/next month controls.
  • Week view — multi-day events now show their time range and a “Full day” label on spanning days.
  • Event Data block now supports full typography controls (font size, line height, weight, letter spacing, transform).
  • Video and YouTube toolbar buttons in the description editor now have icons and are grouped with the image button.
  • More calendar and event labels are now translatable.

Fixes

  • Dates not rendering on continuous (multi-day) standard events.
  • Recurring rule ordering and edit stability.
  • Custom date/time format now applies consistently across event display.
  • Stripe keys and license are now preserved across plugin uninstall.
  • Ticket price now preserves cents in display.

May 24, 2026

1.3.12.1 – WordPress 7.0 compatibility

Compatibility

  • Tested against WordPress 7.0 — admin Settings, calendar, event editor and frontend all verified.

May 21, 2026

1.3.12.0 – Google-style week view, unified recurrence engine & dozens of fixes

New

  • Settings → Overview: toggle to disable the "See all events in this series" backlink injected on recurring instance pages.
  • REST API now supports custom orderby on /wp/v2/eventkoi_event: start_date, event_start, upcoming, past — for use in core Query Loop blocks and headless integrations.
  • Empty Trash button on the Events list.

Improvements

  • Week view: Google-style overlap cascade so stacked events stay readable instead of collapsing into "+more".
  • Week view: sticky event title on multi-day continuation bars (title visible on every visible day, not just the first).
  • Week view: compact Google-style time format ("9 AM" / "3pm" depending on the 12/24-hr toggle).
  • Week view: red "now" indicator line.
  • Week view: non-working days tinted using the working_days setting.
  • Month view: compact time prefix on dot-style events.
  • Event popover anchors at the click point instead of jumping.
  • Calendar + List blocks: "Select all calendars" is now honored in the editor preview (matches the frontend).
  • Calendar block editor preview lands on the current week when timeframe is set to "week".
  • Events admin: top toolbar layout (selected count left, pagination right) matches the footer.
  • Empty states for "Event not found" and "Event in Trash" — centered card with icon + CTA.
  • Sold-out ticket widget stays visible (with sold-out label) instead of disappearing once capacity is reached.
  • Event editor date and media UX hardened — end-time defaults, draft cleanup, structured-field guards.
  • Page builders: unified occurrence engine across Beaver Builder, Bricks, and Elementor — all read the same instance context for recurring events.
  • Tickets / Orders / Emails: instance-aware titles, itemized refunds, multi-seat expansion fixes.
  • RSVPs: standard events can now run in event-wide RSVP mode (vs. per-instance).
  • TEC importer: paragraphs preserved, address split into structured fields, organizer email/phone/website mapped, _EventCost mapped to ticket price, _EventURL imported as virtual location.
  • Upcoming Query Loop: cache-stampede single-flight, ranked dataset for predictable ordering.
  • Per-event ownership checks across admin endpoints + healer audit trail.
  • i18n: more admin strings wrapped in __() for Loco / translate.wp.org.

Fixes

  • Multi-day timed events: time now shows on every visible day instead of only the last; nested "+1 more" stops cascading.
  • iCal export: full RFC 5545 compliance — CRLF line endings, line folding, proper PRODID, RRULE syntax.
  • JSON-LD: recurring event endDate is now Google-compliant; each instance gets its own JSON-LD block.
  • iCal UIDs are stable across recurrences (previously regenerated, breaking subscriber dedup).
  • Recurrence cap enforced on UNTIL-style rules; recurring rule summary validated against the cap.
  • Stripe webhook + ticket checkout: TOCTOU race fixed (no more oversell under load).
  • WooCommerce: duplicate order suppression on retried payment posts.
  • Tickets: ticket-duplication and refund-state regressions resolved.
  • Capacity claim on RSVPs uses FOR UPDATE locking so two concurrent submitters don't both succeed against the last slot.
  • RSVP CSV export sanitises against Excel formula injection (=, +, -, @).
  • RSVP prefetch no longer leaks event meta into unauthenticated responses.
  • Calendar admin: archive-view event color leak fixed; static-singleton state resets between renders.
  • Editor block preview no longer renders the wrong week when timeframe is "week".
  • Site editor query loop no longer returns 400 on eventkoiSig.
  • "Publish stuck" — events that wouldn't progress past saving now publish reliably.
  • Bulk confirm dialogs surface backend errors instead of silently failing.
  • Sorting in admin tables is disabled when pagination is server-side, so sort no longer reorders just the current page.
  • QR-scanned check-ins guard against double-scan (replay).
  • RSVP phantom-instance gate: RSVPs no longer attach to non-existent instances.
  • "Invalid Date" guard in attendee TZ normalize.
  • API key dead-state regression fixed.
  • Lock leaks on WooCommerce checkout cleaned up.
  • Plugin .zip build now excludes .vite-hot and agent artifacts.

May 11, 2026

1.3.11.0 – User permissions & custom date/time formats

New

  • Settings → User permissions — grant non-admin WordPress roles access to specific EventKoi areas (events, calendars, attendees, orders, settings sub-tabs) without sharing the admin password. Admins always have full access; the panel is empty by default so existing behaviour is unchanged until you grant something.
  • Settings → Default settings → custom Date format and Time format inputs. Type a PHP date format string (e.g. Y-m-d, d-M-Y at H:i) to override WordPress Settings → General everywhere EventKoi renders dates (events list, single event, calendar/list blocks, RSVP and ticket emails, dynamic tags). Leave blank to keep using WordPress defaults.

Improvements

  • When a custom Time format is set, the 12/24-hour toggle is bypassed so the typed string wins as-is. With the field blank, the toggle keeps working exactly as before.
  • Calendar grid event tile labels now honour the 12/24-hour toggle (sites set to 24-hour see "13:00" instead of "1pm").

Fixes

  • Ticket check-in QR code from email now matches the code shown in the admin attendees list, and scans successfully for Stripe-native orders.
  • Recurring event series pages now honour the custom time format on every listed instance (previously some instances ignored it).
  • Resolves a WordPress 6.7 "Translation loading triggered too early" notice introduced by the permissions filter.

May 11, 2026

1.3.10.0 – RSVP windows, button states & block polish

New

  • RSVP availability window — set start and end dates for when RSVPs open and close on each event, with per-instance overrides on recurring events.
  • RSVP button now reflects three states — "RSVP" when open, "RSVP: Closed" when capacity is reached or the RSVP window has ended, and "Event ended" once the event itself is over.
  • "RSVP opens soon" label automatically appears within 24 hours of the configured open date.
  • "Select all calendars" toggle on the Calendar and List blocks — automatically include every calendar (including ones added later) without having to re-edit existing pages.
  • WooCommerce next-steps panel on Settings → Payments — quick links to set up payments and currency in WooCommerce when WC checkout is selected.
  • "Sold out" Get-tickets button label when the entire event's inventory is exhausted.
  • Pagination at the top of admin data tables for faster navigation.
  • Editor color picker upgrades, calendar dot indicators, text alignment and heading-level controls on event blocks.

Improvements

  • Localization coverage expanded across the admin React UI; POT regenerated and verification tests added.
  • "Allow RSVP edits" now defaults ON for new events. The default RSVP confirmation email link line auto-swaps between "View / manage your RSVP" and "View event page" based on the toggle (custom templates pass through unchanged).
  • Inline currency switcher beside Net earnings; counts and money totals decoupled from currency filter in stats.
  • Multi-currency stats now stack vertically and columns are reordered for readability.
  • Currency filter dropdown shrunk to a tiny pill in Ticket sales and per-event sales-history.
  • WooCommerce panel only renders when WooCommerce is installed and active.

Fixes

  • RSVP defaults (allow edits, show remaining) now reach the new-event template correctly.
  • TDZ ReferenceError that was hiding the entire RSVP widget on the frontend.
  • All ticket sales now visible in stats regardless of which provider (Stripe or WooCommerce) is currently active.
  • RSVPs stay attached to their event when an event's date changes.

May 3, 2026

1.3.9.9 – Translatable admin, calendar timezone fixes & editor polish

i18n

  • Full admin React UI is now translatable via Loco Translate or bundled JSON. Previously the admin stayed in English even when the site locale was set. POT regenerated with all new strings.

Fixes

  • Continuous standard events with specific times were being shown in the All-day lane in calendar Week view (and as full-width strips in Month view). They now render in their correct time slots.
  • Picking a start or end time could roll the date back a day when the browser timezone differed from the site timezone. Times now apply in the site timezone consistently.
  • Auto-filled end date inherits the picked start time, so users no longer hit "End date cannot be before the start date" the moment they add a non-midnight start time.
  • "Display timezone in event page" toggle is now respected on the frontend — when off, the timezone label no longer appears on the event page.
  • Completed events were leaking into the Upcoming Query Loop, and future events into the Past Query Loop.
  • WordPress was prepending http:// to [eventkoi … as=link] URLs, producing broken double-protocol links. Bogus prefix is stripped on render.
  • Standalone editor preview now resolves every event_* dynamic token (date, time, timezone, etc.) instead of showing {Field Name} placeholders.
  • Scalar custom fields (text, textarea, dropdown, radio, checkbox, url) auto-unwrap in the [eventkoi] shortcode by default, matching url-typed behavior.
  • Tickets "Change currency" link points to WooCommerce settings when WooCommerce is the checkout method, instead of EventKoi settings.
  • Stripe webhooks no longer accumulate as dead endpoints when the plugin is deactivated on staging — the webhook is disabled in Stripe on deactivation.
  • Live-mode Stripe keys can no longer be saved on staging environments (avoids accidental real charges).
  • QR check-in handler now redirects logged-out users to the login URL (HTML) and surfaces a "Log in" button in the JSON overlay; {qr_code} tag stripped from email templates in Lite where the feature is gated.
  • Editing a saved event no longer crashes due to a missing translation import in the description component.

Improvements

  • Page Numbers block "Number of links" (mid_size) attribute is now honored by EK Query Loop pagination on the frontend.

April 28, 2026

1.3.9.8 – Past events query, recurring date polish & ticket-delete safeguards

New

  • "Past events" query option in the Event Query Loop block, Elementor, Bricks, Beaver, and Divi loop surfaces — sort completed events with their most recent past occurrence (rolls backward as time passes, mirroring how Upcoming rolls forward).
  • Event Data block exposes the full set of canonical event tokens — separate event_date, event_time, event_date_year, event_date_month, event_date_day, event_date_iso, plus ticket-data tokens (capacity, sold, sold_out, low_stock, ticket_count, ticket_summary, sales_start/end), RSVP tokens, and ticket price + date format presets.
  • event_date and event_time dynamic tokens for Elementor, Divi, Beaver Builder and shortcode pickers.
  • License notice in admin when the Pro license isn't active, with a one-click jump from the plugins page to license settings.

Improvements

  • Recurring events in query loops now display the next upcoming occurrence (not the original series start). Past mode shows the latest past occurrence.
  • Recurring "ends on" defaults to one year from today, so newly created recurring events are bounded out of the box.
  • Event Query Loop grid is responsive on tablet and mobile breakpoints.
  • Calendar week view lands on the current week (not the start of the displayed month) when toggling from Month.
  • Ticket delete now requires confirmation and is only persisted when you click Save — refresh restores tickets you removed by mistake.
  • Drop the recurring rule summary from the ticket checkout modal — buyers see only what they're booking.
  • Stripe currency now auto-detects from the connected account; "Business name" only required in Live mode.
  • Test-mode Stripe link points to the Stripe Sandbox dashboard.
  • License persists across plugin uninstall + reinstall.
  • Ticket counts column reads "N ticket(s)" / "N RSVP(s)" with proper pluralization, and reflects gateway-completed orders only.
  • Admin pages share a unified 1280px content width.
  • Event Query Loop respects upstream render_block wrapper classes (Block Visibility extension etc.).

Fixes

  • Recurring "ends on" date is inclusive — the user-picked end date is now part of the series instead of being silently dropped.
  • Block Visibility extension is honored on Calendar, List, and event-data blocks.
  • Switching the WordPress timezone setting no longer crashes the site when gmt_offset returns an empty string.
  • Wrapper classes from render_block filters are preserved on Calendar and List blocks.
  • Per-instance override read paths are hardened against stdClass values returned by some import flows.
  • Event description list styling is preserved on the front end.

April 19, 2026

1.3.9.7 – Ticket Save Fixes & Loco Translate Compatibility

Fixes

  • Fixed ticket save on the event's Tickets tab. Tickets now persist when you click Save or when you switch to another tab — previously some edits could be lost on navigation.

Improvements

  • Tickets auto-save when you switch away from the Tickets tab, so edits are preserved even if you forget to click Save.
  • Translations saved to the plugin's own languages folder (Loco Translate's "Author" location) are now picked up automatically.

April 19, 2026

1.3.9.6 – Ampersand & Calendar Block Fixes

Fixes

  • Fixed ampersand (&) display in calendar names across the admin UI, multiselect dropdowns, builder module dropdowns (Divi, Elementor, Bricks, Beaver), and the frontend calendar archive page.
  • Fixed calendar block showing "Invalid calendar" when the default calendar option was missing or pointed to a deleted term. The block now resolves from its own attributes first, falls back to the default option, and finally to the first available calendar.

Improvements

  • Added self-healing for the default calendar option — if the stored value references a deleted or invalid term, it is automatically repointed to a real calendar on the next page load.
  • Empty-state calendar block now shows a friendlier message; admins also get a "Create a calendar" link.
  • Block editor no longer seeds the calendar block with an invalid default ID when the default option is missing.

April 18, 2026

1.3.9.5 – Divi Integration (Beta), Stripe Fixes & Polish

New

  • Added Divi Builder integration (Beta) — EventKoi Calendar, Event, and Loop modules, with occurrence-aware loop expansion and dynamic content tokens for event fields.
  • Added admin notification email templates for New RSVP and New ticket sale events.

Improvements

  • Added Stripe sync checkout confirmation fallback for environments where webhooks are not reachable (e.g. local development sites).
  • Admin notification emails now use the saved sender name and email from the Emails settings.
  • Backfilled the Site instance ID UUID automatically on version bump.
  • Restored the Site instance ID display on Settings > Integrations.
  • Tightened WordPress coding standards compliance and verified-build stability.

Fixes

  • Fixed Stripe account currency drift — checkout now uses the connected account's default currency instead of silently defaulting to USD.
  • Fixed admin sale notification not firing on Stripe checkout.
  • Prevented a fatal error in the admin sale notification pipeline.
  • Fixed theme CSS bleed into FullCalendar cells on Divi-like themes.
  • Fixed the WP-CLI eventkoi seed command's recurrence rule schema.
  • Fixed archive/unarchive actions for ticket sales on the global and per-event views.

April 12, 2026

1.3.9.4 – UI & Calendar Improvements

Improvements

  • Centralized confirmation dialogs with consistent centered modal design across all destructive actions.

Fixes

  • Bulk actions on the global ticket sales page now correctly show Archive/Unarchive instead of Duplicate/Move to trash.

April 11, 2026

1.3.9.3 – WooCommerce Gateway & Reporting Fixes

Improvements

  • Tickets are now issued as soon as a WooCommerce order moves to "processing", so every gateway (including Cash on Delivery and Bank Transfer) works out of the box.
  • Ticket refund emails now fire automatically when a WooCommerce order is partially or fully refunded, matching the Stripe flow.
  • Centralized the ticket sales query builder so the global Orders list, per-event Sales History, and stats endpoints always stay in lockstep on currency, gateway, and status filters.

Fixes

  • Orders with a partial refund now display the correct "Partially refunded" status on the Orders list and per-event sales history (previously showed "Pending payment").
  • Ticket sales totals, net earnings, and per-event stats no longer mix amounts from different WooCommerce currencies.
  • Pro now follows the active WooCommerce currency when the checkout method is WooCommerce, so stats stay consistent even when a stale currency was stored in plugin settings.
  • In-progress checkout holds are no longer counted toward sales stats.

April 11, 2026

1.3.9.1 – Direct Stripe & Ticketing Polish

New

  • Stripe now runs directly against your own Stripe account — no Supabase edge functions, no Connect OAuth. Enter your API keys in Settings → Payments and you're live.
  • Webhook handler creates orders, generates check-in codes, and sends confirmation emails locally, identical to the WooCommerce checkout flow.
  • Admin refunds now call the Stripe API directly and sync to the local orders database.

Improvements

  • Ticket refund emails fire automatically when a WooCommerce order is refunded.
  • Orders list and sales history CSV exports are now working.
  • WooCommerce order links in orders, attendees and sales history open in the same tab.
  • master_checkin_code is populated from WooCommerce order meta so check-in works consistently.
  • Attendees tab refreshes reliably after ticket status changes.
  • Billing information (name, email) is auto-filled for logged-in users during ticket checkout.
  • Clearer error messaging when WooCommerce is not installed.
  • Removed Beta badges from ticket-related UI.

Fixes

  • Fatal error in Orders::create_order caused by a stray Stripe class reference.
  • Stripe webhook now passes the correct checkout session ID into confirmation emails (activity note now shows on direct Stripe orders).
  • Order status filter tabs on the Tickets → Orders page now point at the correct base.
  • Event status dropdown is hidden on non-event admin pages.
  • React "Rules of Hooks" error on the Event Attendees tab.
  • Removed undefined isResendEmail reference in the Attendees component.
  • Hidden the attendees bulk-actions toolbar when no row-level actions are available.
  • REST API responses no longer break when third-party plugins emit PHP notices.
  • Stripe webhook secret handling for array-shaped values.
  • Wrong text domain in block descriptions.

April 10 2026

1.3.9.0 – Ticket Sales, Import Tools & More

New

  • Added ticket sales feature (Beta) — sell paid tickets for events via Stripe or WooCommerce checkout.
  • Added Payments settings page for Stripe Connect configuration and checkout method selection.
  • Added ticket management per event with pricing, capacity, and availability controls.
  • Added order management with real-time updates, status filtering, and CSV export.
  • Added sales history and attendee tracking per event.
  • Added customer list with order history across events.
  • Added event import from The Events Calendar (TEC) — full migration tool.
  • Added URL-based event import — import events by pasting a URL.
  • Added import tools to Events dropdown menu for easy access.

Improvements

  • Added Beta badges to ticket-related UI sections (Payments settings, Tickets event tab, attendance mode selector).
  • Admin dashboard performance optimizations.
  • Updated JSON-LD structured data output.
  • Accessibility improvements.
  • Improved payment method switch reliability by fixing race condition between checkout method and Stripe currency settings.

Fixes

  • Fixed REST API responses breaking when third-party plugins emit PHP notices.
  • Fixed Stripe webhook secret handling for array-shaped values.
  • Fixed wrong text domain in block descriptions.
  • Fixed Google Maps settings card and onboarding UI.
  • Fixed payment method switch reverting to WooCommerce due to concurrent settings POST race condition.
  • Fixed Stripe currency self-heal firing multiple times on component remount.

March 21 2026

1.3.2.0 – Page Builder Integrations, Accessibility & Performance

New

  • Added Elementor Pro Loop Grid integration with occurrence-aware query
    rewriting, custom controls (orderby mode, date range, include instances), and
    dynamic tag support for instance-specific dates, titles, and permalinks.
  • Added Bricks Builder query loop integration with the same occurrence
    expansion, pagination, and filtering capabilities as Beaver Builder and
    Elementor.
  • Added Event Instance Datetime Elementor dynamic tag that
    renders instance-specific start dates in loop templates.
  • Added rate limiter to QR check-in endpoint (20 requests/minute per IP) to
    prevent brute-force scanning.
  • Added per-event default template selector in Settings with support for block
    templates and Elementor templates.
  • Added performance test harness (tests/perf/) for benchmarking
    query and rendering operations.

Improvements

  • Improved RSVP capacity enforcement with database-level transaction locking
    to prevent race conditions under concurrent submissions.
  • Improved Beaver Builder loop pagination to correctly resolve
    paged/page query vars from the request instead of relying
    solely on builder-injected args.
  • Improved event template resolution so page builders (Elementor Theme
    Builder, Beaver Themer) only override the template when explicitly assigned in both
    the builder and EventKoi's template selector.
  • Improved frontend script loading to prevent duplicate
    wp_localize_script calls when multiple EventKoi blocks appear on the
    same page.
  • Improved admin page load performance by inlining the Supabase remote config
    into the page so the frontend no longer makes a separate network request on every
    admin page load.
  • Improved temporal event status filtering (live,
    upcoming, completed) to handle mutual exclusivity
    correctly when multiple temporal statuses are passed.

Accessibility

  • Added aria-hidden="true" to all decorative icons across admin
    components (filters, order headers, stats, instances table, dropzone, multiselect,
    date range, navigation).
  • Added aria-label to interactive controls: refund checkboxes,
    quantity inputs, working day toggles, edit buttons, multiselect remove buttons, and
    template editor links.
  • Added aria-pressed to working day toggle buttons and
    aria-current="page" to active side-tab navigation links.
  • Replaced non-interactive elements with proper <button>
    elements where click handlers were attached (event name edit, dropzone).
  • Added role="progressbar" with
    aria-valuenow/aria-valuemax to the RSVP capacity bar and
    role="alert" to error messages on the frontend.
  • Added keyboard support (Enter/Space) to dropzone
    and edit icon interactions.
  • Wrapped hardcoded admin UI strings in __() for
    internationalization (settings, stats, filters, date range, instances table).
  • Added sr-only labels for links that open in new tabs.

Fixes

  • Fixed Elementor Loop Grid date range filter, section labels, and display
    issues.
  • Fixed Beaver Builder loop link resolution for recurring event instances so
    instance-specific URLs are generated instead of parent series URLs.
  • Fixed occurrence status detection so live events are correctly counted as
    started occurrences.
  • Fixed date field clear interaction by replacing the external Clear button
    with an inline clear control inside the input.
  • Fixed stale integration tests that expected per-code row expansion instead
    of the current aggregated-order normalization format.

February 27 2026

1.3.1.2 – Calendar, Loop & Schema Bug Fixes

Fixes

  • Fixed structured data output for event locations to prevent empty/
    invalid Location fields in Event schema.
  • Fixed schema handling for physical, virtual, and mixed event locations
    so JSON-LD location data is generated correctly.
  • Fixed EventKoi list display edge case where small per_page</ code> + max_results values could return no results when sorting
    by upcoming events.
  • Fixed recurring-event link resolution in Beaver loop contexts so
    instance links resolve correctly instead of pointing to the parent series
    URL.
  • Fixed Beaver editor preview issue where EventKoi list output
    could appear empty in builder preview.
  • Fixed recurring weekday/day alignment and related timezone drift
    issues across event edit, instances, and calendar views.
  • Fixed date range filtering inconsistencies affecting event/instance
    results.
  • Fixed event list date/time display inconsistencies in admin table
    views.
  • Fixed location consistency issues so updated event locations are
    reflected reliably across EventKoi views.
  • Fixed multiple UI layering and overflow issues in calendar popovers
    and compact/responsive layouts.

February 19 2026

1.3.1.1 – Activation Safety & Stability

Improvements

  • Improved plugin activation flow to initialize EventKoi schema directly
    and more predictably.
  • Improved database recovery on activation by ensuring missing core
    EventKoi tables are recreated reliably.
  • Improved overall reliability of activation and update lifecycle
    behavior.

Fixes

  • Fixed activation-time compatibility issue that could cause conflicts
    with other active plugins.
  • Fixed duplicate initialization behavior during activation that could
    trigger fatal errors in some environments.
  • Fixed missing table recreation edge cases for core ticketing and order
    data after reactivation.

February 15 2026

1.3.1.0 – Beaver Builder Integration & Stability

New

  • Added Beaver Builder integration for EventKoi templates.
  • Added EventKoi Beaver modules (Event module and Calendar module).
  • Added EventKoi dynamic tags support for Beaver Builder content.
  • Added support for using Beaver templates from EventKoi template settings
    (global and per-event).

Improvements

  • Improved template rendering compatibility across Beaver Theme and block
    themes.
  • Improved token replacement behavior in Beaver module/template output.</ li>
  • Improved timezone/calendar handling consistency across views and local-
    time scenarios.
  • Improved admin settings/navigation cleanup and UX consistency.

Fixes

  • Fixed Beaver Event module context resolution when “Use current event
    context” is selected.
  • Fixed calendar week/day header and local timezone shift issues in
    specific views.
  • Fixed RSVP/check-in status/count edge-case inconsistencies.
  • Fixed email/template token rendering and formatting regressions.
  • Fixed multiple template fallback/selection issues with custom
    builders.

January 29 2026

1.3.0.0 – RSVP & Check-in

New

  • Added RSVP management with attendee statuses, counts, and RSVP
    finder.
  • Added attendee check-in flow with QR codes and QR check-in UI.
  • Added RSVP email notifications, resends, and email editor.
  • Added CSV export for RSVP data.

Improvements

  • Improved date/time handling and timezone display.

Fixes

  • Fixed issue with some custom fields were not displaying.
  • Fixed default/global event template applied to new events.
  • Fixed slugs and permalink-related issues.

January 13 2026

1.2.0.0 – Custom fields & Integrations

New

  • Added Custom Fields with field groups, global fields, and event-level
    field editing.
  • Added builder integrations: Elementor widgets/dynamic tags and Bricks
    elements/query loop.

Improvements

  • Added default event template setting and template editor shortcut.
  • Added timezone settings and local-time display support across admin and
    frontend.
  • Improved dashboard event thumbnails and admin UI layout.

Fixes

  • Fixed onboarding wizard navigation step handling.
  • Fixed demo event image handling in onboarding.
  • Fixed admin table rendering issues.

January 1 2026

1.1.0.2 – Calendar timezone fix

Fixes

  • Fixed calendar day headers shifting when the server timezone differs
    from the WordPress timezone.

December 23 2025

1.1.0.1 – Style fixes

Fixes

  • Fixed image styling in the Event Query Loop block.
  • Fixed Event Data block styling.

December 16 2025

1.1.0.0 – Elementor Widgets & Onboarding

New Changes

  • Added Elementor Event Data widget to place event details anywhere.
  • Added Elementor Event Calendar widget to embed calendars visually.
  • Added event data support in Elementor dynamic tags for flexible
    templating.
  • Introduced a quick start plugin tour plus onboarding hints to guide
    first-time setup.

Improvements

  • Added missing translation strings and refreshed the POT file.

Fixes

  • Event counts now update correctly in the Events list.
  • `eventkoi` shortcode now displays the event image reliably.
  • Fixed missing JS imports.

December 4 2025

1.0.0.1 – Fixed missing JS imports

Fixes

  • Fixed issue with missing i18n imports.

December 3 2025

1.0.0 – Event query loop block, event series page & more

New changes

  • Introduced the new Event Query Loop block with templating, layout controls, and live editor previews.
  • Added the new Event Series page/template with automatic instance listings and proper permalink routing.

Improvements

  • Improved recurring rule UI with corrected weekday alignment, more accurate date handling, and reduced off-by-one errors.
  • Enhanced Event Editor to always display dates in the WordPress timezone while saving clean UTC values internally.
  • Optimized calendar rendering and ensured consistent color propagation for per-calendar event colors.

Fixes

  • Fixed issue where recurring instances displayed on the wrong weekday in FullCalendar when using non-UTC timezones.
  • Fixed incorrect “Ends On” dates when selecting a date in the recurring editor.
  • Fixed recurring instances shifting by one hour or one day because of mixed UTC/Singapore conversions.

October 21 2025

0.9.7 – Week View Layout & Locale Handling Improvements

Improvements

  • Redesigned week view header to display weekday names and dates on separate lines for improved readability.
  • Improved locale detection and validation to ensure consistent weekday labels across languages.

Fixes

  • Fixed issue where month view displayed extra numbers beside month names.
  • Minor refinements to header rendering and date formatting for smoother cross-locale behavior.

October 20 2025

0.9.6 – Important bug fix

Fixes

  • Fixed issue with recurring instances not loading. (May require saving permalinks again)

October 19 2025

0.9.5 – Performance, Accessibility & Calendar Enhancements

Improvements

  • Optimized event query performance for faster calendar and dashboard loading.
  • Improved weekly view layout and navigation consistency in the calendar UI.
  • Enhanced accessibility in frontend event interfaces.
  • Refined date and timezone handling for more reliable multi-timezone scheduling.

Fixes

  • Fixed event "Add to calendar" and "Share" buttons.

October 9 2025

0.9.4 – Calendar View & Localization Fixes

Improvements

  • Enhanced localization support across admin and frontend interfaces.
  • Improved responsiveness and overall stability in calendar rendering.

Fixes

  • Resolved layout and navigation issues in the weekly calendar view.
  • Corrected locale handling and improved date/time formatting consistency.
  • Fixed recurring instances appearing blank when event time was unset or set as an all-day rule.

October 3 2025

0.9.3 – Accessibility, Security & Performance

New changes

  • Added accessibility improvements across calendar and admin interfaces.
  • Added option for setting the initial month/year in calendar view.

Improvements

  • Improved security by disabling direct file access for sensitive files.
  • Improved how styles are enqueued using WordPress standards instead of inline CSS.
  • Enhanced calendar performance for faster load times.
  • Improved calendar date selection navigation in the admin area.
  • Added responsive/mobile support for the calendar view.

Fixes

  • Fixed calendar search box functionality.
  • Fixed recurring rule summary display.
  • Fixed date and time display issues in the admin.
  • Fixed theme conflict issues affecting calendar output.
  • Fixed mobile/responsive display issues.

September 8 2025

0.9.2 – Calendar & Admin Improvements

New changes

  • Introduced time format picker (12/24 hour).
  • Added links to the “Account” page in plugin admin/dashboard.

Improvements

  • Enhanced search event feature in calendar view.
  • Added navigation support to the search event feature in calendar view.
  • Improved timezone picker/switcher for better usability.

Fixes

  • Fixed date range filter in backend.
  • Fixed calendar blocks.

August 28 2025

0.9.1 – Admin & Calendar Fixes

Fixes

  • Fixed CSS conflict with WordPress admin styles.
  • Fixed CSS issues affecting the plugin UI in the admin area.
  • Fixed “Add to Calendar” feature to ensure proper functionality.

July 25 2025

0.9.0 – First Pro release

Release notes

  • Initial release of EventKoi Pro plugin.