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. Server-rendered blocks load instantly and are indexed by Google — no JavaScript-only pages that hurt your rankings.
- 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 one-click 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 unlimited hosts, group bookings, 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 appear in Google’s rich 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. - 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 archives, 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 an Elementor widget for classic-builder 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.
Source code and build
HappenBoard is fully GPL and ships its complete, human-readable source inside the plugin — nothing is obfuscated.
- PHP — uncompiled PSR-4 source in
src/. Third-party libraries are prefixed with Strauss and ship readable invendor-prefixed/(notablysabre/vobjectfor RRULE parsing). - JavaScript / CSS — the editor and admin code in
build/is compiled with@wordpress/scripts(webpack). The matching uncompiled source ships alongside it: block source insrc/blocks/, the admin SPA inassets/js/admin/, and the post-editor scripts inassets/js/post-editor/. The build configuration (package.jsonandwebpack.config.js) is included too.
To regenerate every compiled asset from source:
npm install
npm run build
Requires Node 20+. npm run start runs the same build in watch mode. PHP dependencies, if you rebuild the prefixed tree, are managed with composer install.
All declarations follow WordPress prefixing rules: PHP is namespaced under HappenBoard\, options/transients use the happenboard_ prefix, post meta uses _happenboard_, and taxonomies use happenboard_ (happenboard_category, happenboard_tag). Post types use the shorter hboard_ prefix (hboard_event, hboard_venue, hboard_organizer, hboard_booking_type) because WordPress caps post type names at 20 characters.
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. 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.
Blocks
This plugin provides 21 blocks.
- 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.
- Event Countdown Live countdown to the event's start time. Falls back to a static label when the event has started.
- RSVP Form Collect free RSVPs for the current event. Capacity-aware, no extra plugin required.
- 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.
- Event Date & Time Display the next occurrence date and time 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.
- Events Grid Server-rendered grid of upcoming events with featured image, date, venue, and a link to each event.
- Event Categories & Tags Show the current event's categories and tags as linked chips.
- Event Organizer Display the organizer name and contact 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.
- Event Venue Display the venue name and address for the current event.
- Event Query Loop Filterable server-rendered loop of events by date range, category, tag, venue, or organizer. The events-flavoured Query Loop.
- Events List Server-rendered list of upcoming events with date, venue, and a link to each event.
- Upcoming Events Display a server-rendered list of upcoming events.
- Event Description Renders the current event's content with the standard the_content filter applied.
- 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.
- Calendar Display a server-rendered month calendar of upcoming events.
- Booking Types A catalogue of bookable services. Each card links to that service's own booking page.
- 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.
- Booking Page A self-service appointment-booking flow: pick a time, fill your details, get confirmed. FSE-native, no iframe.
- Add to Calendar One-click links to add this event to Google, Outlook, Yahoo, or download an .ics file.
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. If your theme supports the Site Editor (FSE), HappenBoard also ships matching block templates for single events and the event archive.
-
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. -
Does HappenBoard add Event schema (JSON-LD) for SEO?
-
Yes — automatically, on every single-event page, conforming to the Google rich-result spec. 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. -
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.) - Delete every plugin transient
- Clear the plugin’s scheduled WP-Cron events
- Remove every HappenBoard custom capability from every role
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.
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
0.1.0
First public release.