Description
HappenBoard is an events calendar and appointment booking plugin built for the block editor and the Site Editor. Its blocks are rendered by your server and styled by your theme, and its admin screens use the components of WordPress itself.
HappenBoard is made by the team behind SEOPress and MailerPress.
Events
- One-off and recurring events: every week, every month on the second Tuesday, every year. Each date of a series has its own page, and you can skip the dates that do not take place.
- Venues and organizers, each with a page listing their upcoming events.
- Categories and tags, with archive pages.
- A weather forecast on the event page, for outdoor events (optional, from Open-Meteo).
RSVPs
- Free registration with a seat limit. On a recurring event, each date has its own seats.
- A confirmation email with a calendar file, automatic reminders, and a link for attendees to cancel.
- An Attendees screen to search, edit, move to another date and export to CSV.
- Spam protection: a hidden field and a signed timestamp by default, Cloudflare Turnstile or Akismet if you turn them on.
Appointment booking
- Booking types with their length, price (shown to the customer, paid on site), buffers and notice time.
- Weekly availability for each host, days off, and round-robin assignment between hosts.
- Time slots with several seats, for group sessions.
- A calendar invite with every confirmation, and a link for customers to cancel or move their booking.
Blocks and templates
- 21 blocks, including Calendar, Events List, Events Grid, Event Query Loop, RSVP Form and Booking Page.
- 11 patterns.
- Site Editor templates for single events, the events archive, category and tag archives, venue and organizer pages, booking types and the “All dates” page of a series. Classic themes get event pages and archives too.
- 8 Elementor widgets for sites built with Elementor.
- Save Event Button and My Schedule blocks, so visitors can keep a list of the events they like.
Search engines
- Event schema (JSON-LD) on every event page, so your events can appear in Google’s event results.
- The event content is in the page’s HTML, not loaded later by JavaScript.
Moving from another plugin
Import your events from The Events Calendar, Events Manager, Sugar Calendar, EventKoi, Amelia or any .ics file, with the venues, organizers, attendees and bookings the old plugin stored. The import works even if the old plugin is already deactivated.
AI agents
Connect Claude, ChatGPT, Cursor or any MCP client by pasting one address and signing in with your WordPress account. The agent can then find, create and update your events and bookings with your WordPress permissions. It cannot delete anything.
Also included
- WPML and Polylang support (
wpml-config.xmlis bundled). - The WordPress tools to export and erase personal data cover RSVPs, bookings and saved events.
- Site Health checks, for example when WP-Cron stops running and reminders would not be sent.
- A REST API and WP-CLI commands to create events and run imports.
- iCal feeds for the whole site and for each event.
For developers
- PHP 8.2 with strict types and PSR-4 autoloading.
- Bundled libraries (sabre/vobject) are prefixed, so they never clash with another plugin that ships the same library.
- Checked with PHPCS (WordPress Coding Standards), PHPStan and PHPUnit.
- Text domain
happenboard.
External services
HappenBoard contacts no outside service on a fresh install. Each service below is used only after you turn it on.
- HappenBoard newsletter (happenboard.com): when you subscribe on the last screen of the setup wizard, your email address is sent to happenboard.com. Terms, privacy.
- Open-Meteo (Event Weather block): your server sends the venue’s coordinates and the event dates to get the weather. No visitor data is sent. Terms and privacy.
- OpenStreetMap or Google Maps (venue maps, when “Show map” is on): the visitor’s browser loads the map with the venue’s coordinates, and Google Maps also receives your API key. OpenStreetMap terms, privacy. Google Maps terms, privacy.
- Cloudflare Turnstile (spam protection on the RSVP and booking forms): the visitor’s browser loads Cloudflare’s check, and your server sends Cloudflare the check’s answer and the visitor’s IP address. Terms, privacy.
- Akismet (spam protection): your server sends the name, email address, IP address and browser of the person who submits an RSVP or booking. Terms, privacy.
- Add to Calendar links (Google Calendar, Outlook.com, Yahoo Calendar): nothing is sent until a visitor clicks a link, which opens that service with the event’s details. Google, Microsoft, Yahoo.
Credits
- Weather Icons by Erik Flowers (SIL Open Font License 1.1 and MIT).
- sabre/vobject, sabre/xml and sabre/uri by fruux GmbH (BSD 3-Clause).
Other product names and logos shown in the plugin belong to their owners.
Privacy
HappenBoard stores attendee and booking data (name, email, RSVP or booking status) in your own WordPress database. It collects no usage data, needs no account, and contacts no outside service on a fresh install. The services it can use once you turn them on, and what each one receives, are listed under External services above.
HappenBoard works with the WordPress privacy tools. A request made under Tools Export Personal Data or Tools Erase Personal Data covers the person’s RSVPs and tickets, their bookings (with the notes staff added), their saved events and the AI agent log entries that name them. Erasing anonymizes RSVPs and bookings without deleting them, so attendance counts and the booking calendar stay right.
Blocks
This plugin provides 21 blocks.
- 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 Description Renders the current event's content with the standard the_content filter applied.
- Event Query Loop Filterable server-rendered loop of events by date range, category, tag, venue, or organizer. The events-flavoured Query Loop.
- Booking Page A self-service appointment-booking flow: pick a time, fill your details, get confirmed. FSE-native, no iframe.
- Booking Types A catalogue of bookable services. Each card links to that service's own booking page.
- 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.
- Upcoming Events Display a server-rendered list of upcoming events.
- Event Organizer Display the organizer name and contact for the current event.
- Event Venue Display the venue name and address for the current event.
- 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.
- Event Date & Time Display the next occurrence date and time for the current event.
- Event Weather Show the weather for the event's date at its venue — forecast, observed history, or a typical-for-the-season normal.
- Events List Server-rendered list of upcoming events with date, venue, and a link to each event.
- Events Grid Server-rendered grid of upcoming events with featured image, date, venue, and a link to each event.
- RSVP Form Collect free RSVPs for the current event. Capacity-aware, no extra plugin required.
- 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.
- Calendar Show your events in a calendar with Month, Week, Day and Agenda views, past dates included.
- Add to Calendar One-click links to add this event to Google, Outlook, Yahoo, or download an .ics file.
- Event Countdown Live countdown to the event's start time. Falls back to a static label when the event has started.
- 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 Categories & Tags Show the current event's categories and tags as linked chips.
Installation
From WordPress.org
- In your WordPress admin, go to Plugins Add New and search for HappenBoard.
- Click Install Now, then Activate.
- Follow the setup wizard: calendar defaults, notifications, and an optional import from another plugin.
- Go to HappenBoard Events and click New event.
- Add the Calendar or Upcoming Events block to a page or a template.
Manual upload
- Download the .zip from WordPress.org.
- Go to Plugins Add New Upload Plugin, choose the .zip and click Install Now.
- Activate the plugin and follow the setup wizard.
Requirements
- WordPress 6.9 or newer
- PHP 8.2 or newer
- MySQL 5.7 or newer, or MariaDB 10.3 or newer
FAQ
-
Does this work with classic themes?
-
Yes. You can add the blocks to any post, page or widget area. On a classic theme, an 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 a category or tag archive shows its events, between your theme’s header and footer. If your theme has its own
archive-hboard_event.phportaxonomy-happenboard_category.php, HappenBoard uses it.On a block theme, HappenBoard adds block templates for event pages and archives, which you can edit in the Site Editor.
-
Will this conflict with other event plugins?
-
No. HappenBoard uses its own post type (
hboard_event), meta keys (_happenboard_*), database tables (happenboard_occurrences,happenboard_attendees,happenboard_bookings,happenboard_availability_rules,happenboard_agent_log) and prefixed libraries (HappenBoard\Vendor\…), so it can run next to another event plugin.The only thing they may share is the address. Events live under
/events/by default, as in The Events Calendar, Events Manager and Sugar Calendar. You can change it 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)?
-
Yes, on every event page, following Google’s Event structured data documentation. If SEOPress is active and you set up an Event schema for the same post in SEOPress, HappenBoard leaves it to SEOPress so the page does not get two.
-
Does it support recurring events?
-
Yes. A repeat rule (every day, week, month or year, with exceptions) is saved in the standard iCalendar format and turned into a list of dates. Each date has its own page and its own RSVPs, and a date can be skipped. Moving one date of a series needs HappenBoard Pro.
-
Where do I manage attendees?
-
Under HappenBoard Attendees. You can search, filter by event or date, change a status or a number of seats, move an attendee to another date and export the list to CSV.
-
Is HappenBoard translatable?
-
Yes. The text domain is
happenboard, and translations are made on translate.wordpress.org. Developers can generate a fresh.potfile withnpm run makepot. -
Does it work with WPML or Polylang?
-
Yes. Events, venues, organizers and their categories and tags can be translated, through the bundled
wpml-config.xml. The calendar, lists, grids and Query Loop show the events of the current language, and a translated event shows its venue and organizer in the same language. RSVP emails are sent in the language of the event the attendee registered on, and booking emails in the language of the page the booking 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 on any translation count against one capacity, the one set on the default language’s event (per date, on a recurring event). Every translation shows the same seats remaining, and an email address registered on one translation is registered on all of them. 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.
Booking types are not translated: one booking type serves every language, so its availability and bookings stay in one place. Its title and description show as you wrote them, and the rest of the booking page is translated.
-
Does it work with page caching, a CDN or a reverse proxy?
-
Yes. The RSVP and booking forms contain nothing personal or time-limited, so a page cache can serve them to every visitor. Each form fetches its anti-spam timestamp when the visitor starts filling it in. For a signed-in visitor the form contains a security token, so HappenBoard asks page caches not to store that page.
Behind a reverse proxy or a CDN, every request reaches WordPress from the proxy’s address, so the per-address limits on RSVPs and bookings would treat all your visitors as one. Give HappenBoard the visitor’s real 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 line for
happenboard_booking_client_ip. Only trust a header that your proxy sets: if the site can also be reached directly, anyone can send that header. -
How do I uninstall HappenBoard and erase all its data?
-
Deleting the plugin from Plugins Installed Plugins keeps your data: events, attendees, settings, categories and tags stay in the database, so installing HappenBoard again brings everything back.
To erase everything, add this line to your
wp-config.phpbefore you click Delete:define( 'HAPPENBOARD_UNINSTALL', true );Deleting the plugin then:
- removes every event, venue, organizer and booking type, with their data;
- removes every event category and tag;
- drops the tables
wp_happenboard_occurrences,wp_happenboard_attendees,wp_happenboard_bookings,wp_happenboard_availability_rulesandwp_happenboard_agent_log; - deletes the options and transients starting with
happenboard_, except HappenBoard Pro’s; - cancels the plugin’s scheduled tasks, including every pending reminder;
- deletes the plugin’s per-user data (saved events, dashboard layout, dismissed guides);
- removes HappenBoard’s capabilities from every role and user.
On a multisite network this runs on every site. Afterwards you can remove the line from
wp-config.php.HappenBoard Pro’s data (its settings, payment keys, licence, tables and capabilities) is not part of this. Pro erases it when you delete Pro with
define( 'HAPPENBOARD_PRO_UNINSTALL', true );inwp-config.php. To erase everything, add both lines 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.1.0
- IMPORTANT: Events, venues and organizers now have their own permissions. Administrators and editors keep full access. Authors and Contributors no longer see them; a role editor can give them back with the
happenboard_manage_events,happenboard_manage_venuesandhappenboard_manage_organizerscapabilities. - NEW: Event form: add a category, tag, venue or organizer without leaving the form, and press Enter to save. A new category or tag is only created when the event is saved.
- NEW: RSVP form: a signed-in visitor finds their name and email filled in. An RSVP goes to the visitor’s account (and their My Schedule) only when its email is the account’s. The attendee panel shows the event, the status, the seats and the RSVP date.
- NEW: iCal feed: the feed carries your site’s name, keeps the last 30 days, and is announced on the events archive so calendar apps find it. The Calendar block can show a “Subscribe to this calendar” link.
- NEW: Event Query Loop and Events List: “One entry per event” shows a series once. The Query Loop takes an offset, and the Events List can end with a “More events” link. Venue and organizer pages list each upcoming event once, with pages.
- NEW: Admin Calendar: filter by Recurring and by date range. The Events list filters by tag, venue and organizer too, and Venues, Organizers and Booking types show counts on their tabs.
- NEW: Settings: Save sits in the page header and is active only when something changed.
- IMPROVEMENT: Every admin screen uses the site’s date format and the WordPress date picker, which starts on the site’s first day of the week. All-day events show their date alone.
- IMPROVEMENT: The setup wizard opens once after activation, the browser’s Back button moves between its steps, and it looks like the rest of the admin.
- IMPROVEMENT: Attendees, Categories and Tags say what to do next when they are empty, and each admin screen has its own browser-tab title.
- IMPROVEMENT: Attendees get the online meeting link in their emails and calendar files. A password-protected event keeps the link behind its password.
- IMPROVEMENT: Search results and feeds show an event’s date instead of the date it was published.
- IMPROVEMENT: Search engines no longer crawl endless calendar months: calendar navigation is not indexed, and months far from any event answer with a 404.
- FIX: Calendar block: readable event titles, a message when a month or week has no events, short events in the week view, the month view on phones, and the admin color for events without a category. All-day events stay on their dates when the site’s time zone changes, and cancelled or moved dates of a series are marked.
- FIX: Blocks: cancelled and postponed events are labelled everywhere, ended and in-progress events are handled the same way in every block, event titles get the right heading level, and the venue, organizer and RSVP lines of an event are tidied. Venue photos and organizer logos show on their pages. An event block placed outside an event explains why it is empty.
- FIX: RSVPs: the form follows its own seat limit and refreshes when the event is full, the per-email limit counts per event and after the captcha check, and an attendee’s email cannot be changed to one already registered. Without JavaScript, the name and email no longer end up in the address bar. Deleting an event for good emails its attendees.
- FIX: RSVPs keep working when the bundled libraries are missing from an install, and administrators are told how to restore them.
- FIX: Bookings: a booking type with upcoming bookings cannot be deleted, moving a booking to its own time sends no email, and the booking blocks show their errors in your language. Availability shows refused hours on their row and warns before leaving unsaved hours.
- FIX: The RSVP and booking link pages are not indexed, have their own title, and answer with a 404 for an unknown link.
- FIX: Admin: errors show on their fields, the end moves with the start, and an end picked before the start moves to the afternoon. Trashing events refreshes the counts and offers Undo. A new venue or organizer stays in view, the form stays visible under the discard question, notices no longer cover the menu, settings refuse an invalid value on its field instead of saying “Saved”, and the admin Calendar filtered by a category shows all its events, not the first 100.
- FIX: Editor: the event dates in the When panel wrap instead of running under Clear.
- FIX: Event schema: closed ticket offers are left out, and an in-person event is no longer marked as online. The organizer’s email is no longer published.
- FIX: Imports and migration: imported titles and content are cleaned, backslashes are kept, duplicated events lose the import markers, an .ics repeating series keeps its time zone, and the report of a real migration stays on screen.
- FIX: AI agents: event dates are checked, and a duplicated event gets its own dates.
- FIX: REST API: negative, out-of-range and unknown values are refused, meeting links and venue and organizer websites are checked, and missing items answer with a 404.
- FIX: Typos and unclear wording in the admin, the recurrence editor and the exports.
- SECURITY: Cancellation links are stored as a hash and cleared when personal data is erased. Attendee emails are shown only to users allowed to export attendees, and public booking answers no longer reveal host user IDs.
- PERFORMANCE: Each admin screen loads only when you open it.
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.
