Description
HappenBoard is a modern, lightweight events calendar and appointment-booking plugin, built from the ground up for the WordPress block editor and the Site Editor. It uses only core WordPress components, server-rendered blocks, and clean PSR-4 PHP 8.2 code.
It is built by the team behind SEOPress and MailerPress, with the same focus on speed, native integration, and a generous free tier.
Why HappenBoard
- Fast and SEO-friendly out of the box. Blocks are rendered on the server, so your events are in the page’s HTML that search engines read, not built later by JavaScript.
- Works with your theme. Native blocks adapt to your design without custom CSS, and Site Editor templates let you redesign every event page visually.
- Stop losing attendees. Free RSVPs with capacity limits, email confirmations, automatic reminders, and a self-service cancellation link, everything your visitors need to actually show up.
- Real recurring events. Weekly classes, monthly meetups, yearly conferences — set it once and HappenBoard handles every occurrence.
- Take appointments too. A full booking flow in the free plugin: booking types, per-host weekly availability with buffers and notice windows, days off, round-robin assignment across your hosts, time slots with several seats for group sessions, a standards-compliant
.icsinvite attached to every confirmation, and a token link so visitors cancel or reschedule themselves. - Get found on Google. Event Schema (JSON-LD) is added automatically so your events can appear in Google’s event results.
- Move in without retyping anything. One-click importers for The Events Calendar, Events Manager, Sugar Calendar, EventKoi, Amelia, and any
.icsfile — they even work when the old plugin is already deactivated. - Works with your AI assistant. Turn on AI agents and connect Claude, ChatGPT or Cursor by pasting one address and signing in. They can then find, create and update your events and bookings with your WordPress permissions, and nothing can be deleted this way.
- No lock-in, no clutter. Standard custom post types, REST API, and iCal feeds — your data stays yours and works with any tool.
- Familiar admin. The same look and feel as WordPress core, so your team doesn’t need to learn a new interface.
Also in the free plugin
- 21 blocks, 11 patterns, and Site Editor templates for single events, the events archive, category and tag archives, venue and organizer pages, single booking types, and the per-event “All dates” page
- Weather forecast on event pages, for outdoor events (optional, powered by Open-Meteo)
- Favourites and a personal “My schedule” so visitors can save the events they care about
- Multilingual — WPML and Polylang, through the bundled
wpml-config.xml - GDPR-native — real WordPress personal-data exporter and eraser, not just a settings page
- Spam protection — honeypot and signed timestamps by default, optional Cloudflare Turnstile and Akismet
- Site Health checks that tell you when a cron failure is about to stop your reminders
- REST API for every entity, WP-CLI commands for event creation and migrations, plus 8 Elementor widgets (calendar, lists, grids, Query Loop and more) for Elementor sites
Built the WordPress way
- PHP 8.2+ with strict types and PSR-4 autoloading
- Vendor libraries (sabre/vobject) prefixed with Strauss — no conflict with any other plugin shipping the same dependency
- PHPCS (WordPress Coding Standards), PHPStan level 5, PHPUnit test suite
- Translation-ready (text domain
happenboard) - Accessibility-aware front-end components
From the team
HappenBoard is built by the same team behind SEOPress — trusted by 300,000+ WordPress sites. Same engineering bar, same support commitments, same long-term maintenance.
External services
HappenBoard works without any external service, and none is contacted on a fresh install. Each service below is opt-in: it is only used after you switch it on (under HappenBoard Integrations, or in a block’s settings or the setup wizard where noted).
HappenBoard newsletter (happenboard.com)
Used only if you sign up on the last screen of the setup wizard. When you type an email address and click Subscribe, your server sends that address, and nothing else, to happenboard.com, which adds it to the HappenBoard newsletter and emails you a link to confirm. Leaving the field empty sends nothing. You can unsubscribe from any newsletter email.
Open-Meteo (event weather)
Used by the Event Weather block to show the forecast, past weather or typical weather for an event’s date. Requests go from your server, only when weather is enabled under Integrations and an Event Weather block renders for an event whose venue has coordinates; answers are cached (forecasts for 3 hours by default). Each request sends the venue’s latitude and longitude (to four decimals), the event date or date range, the temperature and wind units, and your Open-Meteo commercial API key if you entered one (which switches to Open-Meteo’s customer- hosts). No visitor or attendee data is sent.
OpenStreetMap (venue maps)
Used by the Event Venue block to embed a map when Show map is turned on for that block, or on a venue’s page when a theme or site turns its map on with the happenboard_venue_organizer_page filter, and the map provider is OpenStreetMap (the default provider). The visitor’s browser loads the map from www.openstreetmap.org in an iframe; the request carries the venue’s coordinates and zoom level, plus what any embedded page receives: the visitor’s IP address, user agent and the referring page.
Google Maps (venue maps)
Used instead of OpenStreetMap when the map provider is set to Google Maps and a Google Maps API key is entered under Integrations, for Event Venue blocks with Show map on, and venue pages whose map is turned on. The visitor’s browser loads the Maps Embed API iframe from www.google.com; the request carries the venue’s coordinates, the zoom level and your API key, plus the visitor’s IP address, user agent and referring page.
If you choose the Custom provider instead, the map is loaded from the iframe URL you configure, and that provider’s own terms apply.
Cloudflare Turnstile (spam protection)
Used on the RSVP Form and Booking Page blocks when Turnstile is enabled under Integrations with a site key and secret key. The visitor’s browser loads Cloudflare’s challenge script from challenges.cloudflare.com, which checks the visitor as Cloudflare describes in its Turnstile privacy addendum. When the form is submitted, your server sends the challenge token, your secret key and the visitor’s IP address to Cloudflare’s siteverify endpoint.
Akismet (spam protection)
Used when Akismet is enabled under Integrations, with its own API key or the key of the Akismet plugin. On each RSVP or booking submission your server sends Akismet the submitter’s name and email address, their IP address, user agent and referring page, the URL of the event or booking type, your site’s URL and its language.
Add to calendar links
The Add to Calendar block shows links to Google Calendar, Outlook.com and Yahoo Calendar. Nothing is sent until a visitor clicks one: the link then opens that service with the event’s title, dates, location and description in the address, under that service’s terms (Google, Microsoft, Yahoo).
Credits
HappenBoard’s own code is GPLv3 or later. It ships these third-party works, each under its own licence:
- Weather Icons 2.0.10 by Erik Flowers — the weather glyphs of the Event Weather block, in
assets/fonts/weather-icons/. The font is licensed under the SIL Open Font License 1.1 and its CSS under the MIT License; both notices ship with it (CREDITS.txt). Project page - sabre/vobject, sabre/xml and sabre/uri by fruux GmbH — recurrence rules and iCalendar output, prefixed under
HappenBoard\Vendor\invendor-prefixed/sabre/, each with its licence file. BSD 3-Clause License. Project page
Logos of other products appear on the Integrations screen and the Migration settings only to identify the service or plugin HappenBoard connects to or imports from. They are not covered by HappenBoard’s licence and remain the property of their owners; their use implies no endorsement:
- Akismet is a trademark of Automattic Inc. (
assets/img/akismet.png). - Cloudflare and Turnstile are trademarks of Cloudflare, Inc. (
assets/img/turnstile.svg). - The Events Calendar, Events Manager, Sugar Calendar, EventKoi and Amelia names and logos are trademarks of their respective owners (
assets/migration-logos/).
Privacy
HappenBoard stores attendee and booking data (name, email, RSVP or appointment status) in your own WordPress database. It collects no telemetry, requires no account, and sends nothing anywhere by default.
Four optional features do contact a third party, and only once you turn them on:
- Event weather — the event’s coordinates and date are sent to Open-Meteo to fetch a forecast. No visitor or attendee data is included.
- Venue maps — an embedded map loads from OpenStreetMap (default), Google Maps, or a custom tile provider you configure. Your visitor’s browser contacts that provider directly, as with any embedded map.
- Cloudflare Turnstile — when enabled for the RSVP or booking forms, the submitting visitor’s IP address and challenge token are sent to Cloudflare for verification.
- Akismet — when enabled, the submission’s name, email, IP address and user agent are sent to Akismet for spam scoring.
All four are off unless you enable them; External services above details what each one sends, and when. HappenBoard also registers with WordPress’s own privacy tools, so a personal-data export or erasure request made through Tools Export/Erase Personal Data covers the visitor’s RSVPs and tickets, their bookings (including the notes staff left on them), their saved events, and any agent-log entries that recorded their details. Erasure anonymizes RSVPs and bookings in place, so attendance counts and the booking calendar stay accurate.
Blocks
This plugin provides 21 blocks.
- Calendar Show your events in a calendar with Month, Week, Day and Agenda views, past dates included.
- Events List Server-rendered list of upcoming events with date, venue, and a link to each event.
- Event Query Loop Filterable server-rendered loop of events by date range, category, tag, venue, or organizer. The events-flavoured Query Loop.
- Events Grid Server-rendered grid of upcoming events with featured image, date, venue, and a link to each event.
- Event Weather Show the weather for the event's date at its venue — forecast, observed history, or a typical-for-the-season normal.
- Booking Availability Publishes when a service is free — as a month calendar or a schedule list — anywhere on the site. Each time links straight into the booking page with that slot pre-selected.
- Event Organizer Display the organizer name and contact for the current event.
- Event Date & Time Display the next occurrence date and time for the current event.
- Event Series: All Dates Lists every upcoming occurrence of the current recurring event. Renders nothing for one-shot events. Used by the Series page template and the default Single Event template.
- My Bookings Lists the appointments the signed-in visitor booked, with a cancel action on upcoming ones. Signed-out visitors get a sign-in prompt. Bookings made without an account are not listed — those are managed through the link in the confirmation email.
- RSVP Form Collect free RSVPs for the current event. Capacity-aware, no extra plugin required.
- Save Event Button A heart / bookmark toggle so visitors can save an event to their personal schedule. Persists in their account when logged in, in localStorage otherwise.
- Event Countdown Live countdown to the event's start time. Falls back to a static label when the event has started.
- Event Venue Display the venue name and address for the current event.
- Upcoming Events Display a server-rendered list of upcoming events.
- Event Categories & Tags Show the current event's categories and tags as linked chips.
- Booking Page A self-service appointment-booking flow: pick a time, fill your details, get confirmed. FSE-native, no iframe.
- Event Description Renders the current event's content with the standard the_content filter applied.
- Booking Types A catalogue of bookable services. Each card links to that service's own booking page.
- Add to Calendar One-click links to add this event to Google, Outlook, Yahoo, or download an .ics file.
- My Schedule Lists the events the current visitor has saved. Empty state when nothing is saved. Designed for a dedicated "My schedule" page that visitors can bookmark.
Installation
From WordPress.org
- Search HappenBoard under Plugins Add New in your WordPress admin.
- Click Install Now, then Activate.
- Run the onboarding wizard that appears (general settings email).
- Go to Events Add New to create your first event.
- Insert the Calendar or Upcoming Events block into any page or template.
Manual upload
- Download the .zip from WordPress.org.
- Go to Plugins Add New Upload Plugin, choose the .zip, click Install Now.
- Activate and follow the onboarding wizard.
Requirements
- WordPress 6.9 or newer
- PHP 8.2 or newer
- MySQL 5.7+ / MariaDB 10.3+ (uses standard
dbDelta)
FAQ
-
Does this work with classic themes?
-
Yes. All blocks can be inserted in any post, page, or widget area. On a classic theme, each event page shows its date, countdown, RSVP form, venue, organizer, Add to Calendar links and categories around the event’s description, and a booking type’s page shows its booking form. The events archive shows the calendar and the upcoming events, and an event category or tag archive shows its events, between your theme’s header and footer (a theme with its own
archive-hboard_event.phportaxonomy-happenboard_category.phpkeeps it). On a block theme (Site Editor), HappenBoard ships matching block templates for single events and the event archives instead, which you can edit. -
Will this conflict with other event plugins?
-
No. HappenBoard uses its own post type (
hboard_event), prefixed meta keys (_happenboard_*), prefixed database tables (happenboard_occurrences,happenboard_attendees,happenboard_bookings,happenboard_availability_rules,happenboard_agent_log), and prefixed third-party libraries (HappenBoard\Vendor\…). You can run it alongside any other event plugin without conflict. The one thing they can share is the address: events live under/events/by default, as they do in The Events Calendar, Events Manager and Sugar Calendar. Change HappenBoard’s under Settings Permalinks Event base (or with thehappenboard_event_rewrite_slugfilter); Tools Site Health tells you when a page, a post type or a taxonomy uses the same address. -
Does HappenBoard add Event schema (JSON-LD) for SEO?
-
Yes, automatically, on every single-event page, built from Google’s Event structured data documentation. If SEOPress is active and an Event schema has been manually configured for the same post through SEOPress’s custom-schema feature, HappenBoard defers to SEOPress to avoid double emission.
-
Does it support recurring events?
-
Yes. Recurrence is stored as a standard RFC 5545 RRULE and expanded into a persisted occurrences table using the same library (
sabre/vobject) that powers most calendar servers. -
Where are attendees managed?
-
Under HappenBoard Attendees in the admin. The screen is built on
@wordpress/dataviews, the same component library the Site Editor and the Posts screen use. HappenBoard bundles its own copy, because WordPress does not registerwp-dataviewsas a public script handle. -
Can I export translations?
-
Yes. The text domain is
happenboardand the plugin is ready for translation on translate.wordpress.org. To generate a fresh.potlocally, runnpm run makepot. -
Does it work with WPML or Polylang?
-
Yes. Events, venues, organizers and their categories and tags are translatable, through the bundled
wpml-config.xml; the calendar, lists, grids and Query Loop show the current language’s events, and a translated event shows its venue and organizer in the same language. The emails about an RSVP are sent in the language of the event’s translation the attendee registered on, and the emails about a booking in the language of the page it was made on. The site’s iCal feed lists the default language’s events; add?lang=fr(Polylang) to its address for another language.The translations of an event share its seats. Registrations made on any of them count against one capacity, the one set on the default language’s version (each date’s, on a recurring event); every translation shows the same “seats remaining”, and an email address registered on one of them is already registered on the others. Each registration keeps the language it was made in, for its emails. In the admin, an event’s attendee list shows the attendees of all its translations, with a Language column; untick “All languages” to see one translation’s.
Booking types are not translatable: one booking type serves every language, so its availability and bookings stay in one place. Its title and description are shown as you wrote them, and the booking page’s own text is translated.
-
Does it work with page caching, a CDN or a reverse proxy?
-
Yes. The RSVP and booking forms carry nothing personal or time-limited in the page, so a full-page cache can serve them to every visitor: each form fetches its anti-spam timestamp when the visitor starts filling it in. Shown to a signed-in visitor, a form carries a security token, so HappenBoard asks page caches not to store that page.
Behind a reverse proxy or CDN every request reaches WordPress from the proxy’s address, so the per-address limits on RSVPs, bookings and booking-slot lookups would treat all your visitors as one. Give HappenBoard the real visitor address with the
happenboard_rsvp_client_ipandhappenboard_booking_client_ipfilters. Behind Cloudflare, for example:add_filter( 'happenboard_rsvp_client_ip', fn( $ip ) => filter_var( $_SERVER['HTTP_CF_CONNECTING_IP'] ?? '', FILTER_VALIDATE_IP ) ?: $ip );Add the same for
happenboard_booking_client_ip. Only trust a header your proxy sets: if the site can also be reached directly, anyone can send that header. -
How do I completely uninstall HappenBoard and erase all its data?
-
By default, deleting the plugin from Plugins Installed Plugins Delete preserves all of your data — events, attendees, occurrences, settings, taxonomy terms, and custom capabilities all stay in the database. This is intentional, so re-installing later restores everything as it was.
To opt in to a full wipe, add the following constant to your
wp-config.phpbefore clicking Delete:define( 'HAPPENBOARD_UNINSTALL', true );When that constant is set, deleting the plugin will:
- Remove every event, venue, organizer, and booking-type post (and their post meta)
- Remove every event category and event tag
- Drop the custom tables
wp_happenboard_occurrences,wp_happenboard_attendees,wp_happenboard_bookings,wp_happenboard_availability_rulesandwp_happenboard_agent_log - Delete every option starting with
happenboard_(general settings, onboarding flag, DB versions, etc.), except HappenBoard Pro’s - Delete every plugin transient
- Clear the plugin’s scheduled WP-Cron events and Action Scheduler jobs, including every pending reminder
- Delete the plugin’s per-user data (saved events, dashboard layout, dismissed guides)
- Remove every HappenBoard custom capability from every role and from any user it was granted to directly
The wipe is multisite-aware — on a network install it runs once per blog. After the uninstall completes you can remove the constant from
wp-config.php.HappenBoard Pro’s data (its
happenboard_pro_options, including its settings, payment keys and licence, its tables and its capabilities) is not part of this wipe: Pro removes it when you delete Pro withdefine( 'HAPPENBOARD_PRO_UNINSTALL', true );inwp-config.php. To remove everything, add both constants and delete both plugins.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“HappenBoard” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “HappenBoard” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.0.0
- IMPORTANT: This release updates the database on the first page load after the update. Recurring events are rebuilt in your site’s time zone, the exceptions you saved move with them, and existing RSVPs on recurring events are given the date they were made for. Back up your site before updating.
- IMPORTANT: HappenBoard Pro 1.0.0 requires this version.
- NEW: An RSVP on a recurring event is for one date, and the event’s capacity applies to each date. The Attendees screen shows, filters and exports each attendee’s date, and can move an attendee to another date, emailing them the new date with a calendar file.
- NEW: The RSVP form offers every date of a long series, 60 at a time, and says when a date is full.
- NEW: Booking page: customers can choose how long to book and, when the booking type lets them, their host. The price is quoted live as they choose, deposit included. A signed-in visitor finds their name and email filled in.
- NEW: Availability: write the whole rule stack (date ranges, seasons, weeks, weekdays, closures), let a booking type be open by default, set the time of the first slot and the weekdays a booking can start on.
- NEW: Bookings can be shown as a layer on the admin Calendar.
- NEW: A declined booking request gets its own “request declined” email instead of a cancellation, and its own Declined status: a tab on the Bookings screen, “Request declined” in My Bookings and on the booking link, which no longer offers to cancel it. Requests declined before this version stay listed as cancelled.
- NEW: The event address base (
eventsby default) can be changed under Settings Permalinks. Pages under the base are served, and conflicts are reported in Site Health. - NEW: Classic themes get the full single-event page, and the event archives show the same blocks as the block templates.
- NEW: Customers can move a booking to another time from the link in their booking emails. A moved booking is emailed with an updated calendar invite, a cancelled one is taken out of the customer’s calendar, and hosts and the site admin are told about new, moved and cancelled bookings.
- NEW: Attendees are emailed when the date they registered for is cancelled or moved, and when their RSVP is cancelled. RSVP emails say where the event takes place and which time zone its time is in, and the reminder carries the cancellation link.
- NEW: Venue and organizer pages show the address, contact details and upcoming events, with Site Editor templates of their own. Event tags get an archive template like categories.
- NEW: Event Query Loop: “Today”, “This week” and custom date ranges, and a
searchattribute (set in the code editor, or by HappenBoard Pro’s Filter Bar). - NEW: Multilingual sites: RSVP emails are sent in the language of the event the attendee registered on, booking emails in the language of the page the booking was made on, and the site’s iCal feed lists one language’s events.
- NEW: Multilingual sites: an event’s translations share its seats. Registrations on every translation count against the default language’s capacity, each page shows the same seats remaining, one email registers once whatever the language, and the admin’s attendee list and export of an event show every translation’s attendees with their language.
- NEW: AI agents: HappenBoard has its own MCP server. Paste its address into Claude, ChatGPT, Cursor or any MCP client, sign in with your WordPress account, and choose whether the connection may only read or may also make changes. Settings AI agents shows the steps for each client, the connected clients with a Disconnect button, and a setup check. AI clients can now create and update events, bookings, RSVPs, venues and organizers; deleting, and cancelling a booking, stay out of their reach. A connection that may make changes can set an attendee’s status, cancelled included, as the Attendees screen does.
- NEW: Extension points used by HappenBoard Pro: person types on bookings, the price stored on each booking, online deposits and card holds for requests that need approval, a filter to refuse free RSVPs on an event, a filter that marks an event as ticketed, and undone check-ins and wrong-event refusals in the attendee timeline.
- NEW: A new setup wizard: one step per screen, a live preview of your first event and of the emails your attendees receive, and on the last screen an optional newsletter sign-up (nothing is sent before you click Subscribe).
- NEW: Venues screen: each venue with its photo and address, a grid view, filters by city, country and “Not on the map”, and a panel with the venue’s details.
- NEW: Calendar: click the month or date in the heading to jump to another month or day.
- NEW: The event editor’s guide has a picture on each page, and the Dashboard opens on a new Welcome banner.
- IMPROVEMENT: The WordPress admin bar stays visible on HappenBoard screens, the status tabs use the WordPress design system, and the HappenBoard menu has its own icon, just below Pages.
- IMPROVEMENT: HappenBoard is now licensed under GPLv3 or later.
- IMPROVEMENT: This readme lists every external service HappenBoard can use and what each one receives.
- FIX: Recurring events: rules are expanded in the site’s time zone (series no longer shift by an hour across daylight saving time or land on the wrong weekday), long series stay current, BYMONTH rules work, events spanning several days show on each day, all-day events export as dates, and an end before the start is refused. Rules the plugin cannot expand are refused when saved, the rule builder keeps the parts of a rule it has no control for and offers monthly by weekday or by day of the month, and the series summary names the days.
- FIX: Front end: the RSVP and booking forms work behind page caches and submit only once; single-event blocks respect post passwords and read access; grids and lists show their empty state when a filter matches nothing; past Query Loops list newest first; the “All dates” page and the cancellation pages render with the theme’s header and footer. The linked venue and organizer are named on every surface (lists, grids, Query Loops, Add to Calendar, My Schedule, emails, Event schema); Add to Calendar keeps the description’s line breaks; category and tag archives paginate; password-protected events lose the “Protected:” prefix in emails, feeds and calendars; an event without a start cannot be published or take RSVPs; an RSVP stays within its form’s seat limit; a Query Loop saved without a layout shows its list; an organizer’s email address is printed protected from spam bots.
- FIX: Calendar block: each date of a series links to that date, the period is kept when switching views, past days and events are marked, and a period with more events than it can show says so.
- FIX: Translations: front-end strings, plurals, dates and block defaults are translatable and script translations load. WPML and Polylang get the plugin’s real data model, and public lists stay in the current language. Calendar times follow the site’s time format, dates and times are joined and time zones named in a translatable way (“Paris time, UTC+2”), arrows turn in right-to-left languages, plurals and words with several meanings have their own strings, and the admin lists’ built-in strings are translated.
wpml-config.xmlcovers every field and translatable block label. - FIX: Admin: the Calendar follows the site’s time zone and dragging one date of a series moves only that date; attendee and booking search work; activity and booking times no longer shift by the browser’s time zone; the Events date filter keeps the site’s day. The admin lists no longer break when the Gutenberg plugin is active, and a screen that fails offers a reload; the Calendar shows an event lasting several days on each of them and keeps its period across views; restoring from the Trash works as in WordPress; a new event’s end takes the default event length; the booking-type editor has the daily cap and the Availability screen each type’s own hours, with weekly hours validated; venue coordinates and websites are checked, and an attendee edit stays within the capacity; the dashboard’s setup checklist ticks “Connect a payment gateway” only when payments are configured; a link to an integration opens its card; an agent’s write refused for lack of permission is recorded in the agent log.
- FIX: Bookings: a booking type that needs approval asks instead of confirming, a booking is only moved to a time a host is free (its own host, or another free host on a round-robin type), emails have a body and a cancellation link, the calendar invite is standards-compliant, and slot lists refresh when a booking type changes. A host can no longer be double-booked across booking types or within another booking’s buffers.
- FIX: Accessibility: the Calendar block has enough contrast, keeps the focus, works with the keyboard and fits a phone; the booking calendars keep the focus and say the month; form errors are tied to their fields and announced, busy buttons say so, and confirmations take the focus; Save, Remove, View, Add to Calendar and Configure links and buttons, the event pickers, the admin’s dialogs and drag handles are named; heading levels follow the page. In the admin, the focus moves to each new screen and comes back from the command palette and the attendee panel, and the app has a layout for narrow screens.
- FIX: Notifications: a cancellation is sent once, and reminders follow the real date and are sent once.
- FIX: The iCal feed is served as a calendar, and the .ics button has its own route. A password-protected event’s own .ics download works and lists it as the site feed does, without its description.
- FIX: Importers: categories are read from the source’s term tables, ICS dates are read in their own time zone, imported series end on the right day, and EventKoi and Amelia imports get their dates. The Events Calendar’s all-day events, EventKoi Lite’s RSVPs and a re-import after trashing an event are imported; an .ics series keeps its moved and cancelled dates, and an empty or unreadable file is reported as an error.
- FIX: CSV: the events CSV keeps categories and online details, and the attendee export has plain-text titles and its dates.
- FIX: The Attendees screen offers the exports, and HappenBoard Pro’s badges, only to users allowed to export attendees (administrators by default). Editors saw them and were refused.
- FIX: Event schema: a ticketed event is no longer published as free, and one that is full is sold out.
- FIX: Deleting an event for good also deletes its attendees, their reminders and the rows add-ons keep for it.
- FIX: Privacy: the personal-data exporter and eraser also cover bookings, saved events and agent-log entries.
- FIX: Multisite: network activation sets up every site, and each database migration is verified.
- FIX: A full uninstall also removes scheduled reminders, user data and capabilities granted to single users, the attendee-management capability included; deactivation removes HappenBoard’s addresses and its recurring background tasks.
- FIX: Each currency uses its own number of decimals (none for the yen, for example).
- FIX: Elementor widgets render when saved on a page and are translatable.
- FIX: Event and booking addresses that stopped working because another plugin rebuilt the rewrite rules are repaired automatically.
- FIX: CSV import: imported events get their dates at once (they were missing from the admin Calendar and the calendar and list blocks until saved again), the apostrophe the export puts before a formula-like cell is removed again, and the Tools card lists all 19 columns, which may come in any order.
- FIX: Migration screen: a source of any size is migrated to the end (the run stopped after 10,000 events and was shown as finished), and a run that stops early says so and can continue.
- FIX: Migration: a series from The Events Calendar or Events Manager no longer shows the single dates it excluded: they come in as cancelled dates. An event whose extra repeat rules or repeating exclusions (“every Monday”) were left out, or whose repeat rule could not be converted, is listed under the run’s warnings, in the Migration screen and in WP-CLI. It used to come in without a word. EventKoi venues are counted once, when they are created, not once per event held there.
- FIX: Migration: the dates of an Events Manager series that last several days (Friday 10:00 to Saturday 16:00) keep their length; each one ended on its start day. Events Manager’s repeating events, whose dates have pages of their own, come in as a series with their excluded dates and warnings, like its recurring events. They came in as one event running from the first date to the last.
- FIX: RSVPs: two visitors registering for the last seat at the same moment can no longer both get it, and neither can a visitor and an operator using “Mark as Going”, a seat change or “Change date” on the Attendees screen.
- FIX: Migration: Events Manager bookings on the dates of a series are imported on those dates (they were dropped), and Events Manager booking statuses are read correctly (approved bookings came in on the waitlist, pending and unpaid ones as Going). The Events Calendar’s PayPal and Tickets Commerce attendees are imported with their order status, and its “Not going” RSVPs as declined. Running a migration again no longer copies cancelled bookings and declined RSVPs a second time.
- FIX: AI agents: the booking-type abilities offer round-robin host assignment as
round_robin. Theleast_loadedvalue they offered was stored as is and gave every booking to the first free host; it is now stored and read as round-robin. - FIX: Attendees: “Mark as Going”, the attendee panel’s status change and the update-attendee-status ability check the capacity, with the same “over capacity” override as a seat change.
- FIX: Uninstall: a full wipe of the free plugin no longer deletes HappenBoard Pro’s options (settings, payment keys, licence) or the meta Pro keeps on WooCommerce products and orders; Pro’s data is removed by Pro’s own uninstall. The option sweep matches its prefix literally.
- FIX: Admin: Editors are no longer stuck on the setup wizard and are not offered Settings shortcuts; the Docs link opens the documentation; the Events list names the linked venue; “Custom iframe URL” can be saved as the default map provider.
- FIX: Event schema: a password-protected event’s markup has no description (it read “There is no excerpt because this is a protected post.”). Organizer pages print the email address protected from spam bots.
- FIX: Bookings: a booking that took place can be marked as completed or as a no-show from the Bookings screen (the two tabs had no way in); a booking past midnight shows on both days of the admin Calendar; the booking type editor takes durations of 1 to 4 hours in hours and has a Description field.
- FIX: Admin: an administrator keeps every HappenBoard screen in the menu even when a role editor took a HappenBoard permission away, as the routes allow; the quick form fills the end from the start; Default event duration goes from 5 to 1,440 minutes; a day clicked in the Calendar’s Month view starts at 09:00; categories and tags ask before they are deleted; a venue or organizer restored from the Trash is published again, and their Trash offers Delete permanently; an invalid organizer email or out-of-range coordinates are refused in plain words; a website typed without https:// gets it.
- FIX: Blocks: Events Grid and Event Query Loop print the day of an all-day date; the listing blocks link each date of a series to that date; an unfiltered Events Grid keeps a date under way; the RSVP Form shows its own Success message; Event Date & Time, Venue, Organizer, Series and Weather check the visitor may read the event; the Event Weather block drops a unit setting that did nothing, and Save Event Button an option that did nothing.
- FIX: Emails: the button follows the Header accent color, and the footer keeps its links and emphasis.
- FIX: Event schema: a cancelled event synced from Google Calendar or Outlook is published as cancelled.
- FIX: Imports: CSV start_utc and end_utc are checked; an .ics event with a repeat rule HappenBoard cannot use is imported on its first date with a note, an event imported again without a rule loses the old one, and .ical files can be picked. WP-CLI refuses an unknown –status.
- FIX: Privacy: the agent log’s export and eraser also cover the error message, and the export of a sign-up names the date it was for.
- FIX: Help texts and messages that described something the plugin does not do (sender identity, Event base, spam protection, meeting URL, health check, editor tour, the setup wizard’s import step, the duplicate-RSVP message) were rewritten.
- FIX: Security hardening.
- PERFORMANCE: The site’s iCal feed is cached and answers revalidation with a 304, occurrence lists load their posts in one query, failed weather lookups are remembered for five minutes, and the admin Events date filter reads the occurrences table. Lists read Polylang’s language terms and each event’s current date once, the saved-events lookup and the seats count are batched, block defaults are translated for HappenBoard’s blocks only and the blocks register from one manifest, calendar links no longer go through a redirect, each event’s .ics answers revalidation, Cloudflare Turnstile loads deferred, booking slot lists are cached only with a persistent object cache and an anonymous one can be reused for a minute, and HappenBoard Pro’s Orders screen reads an index.
