WebCalendar Is Coming to WordPress
I’m excited to announce that I’ve been building a WordPress plugin for WebCalendar — and it’s nearly ready for release.
For those who don’t know me, I’m Craig Knudsen, and I’ve been developing WebCalendar since 2000. Over 25 years of building calendar software has taught me a lot about what works at scale, what standards matter, and where most calendar tools fall short. The new WordPress plugin brings all of that experience into the WordPress ecosystem.
Built on a Shared Core
Rather than starting from scratch or bolting calendar features onto WordPress custom post types, I extracted the business logic from WebCalendar into a standalone core library: webcalendar-core. This is a clean, framework-independent PHP library that handles events, recurrence, categories, permissions, and more — all built on top of the battle-tested WebCalendar database schema.
The plugin is the first consumer of webcalendar-core, but not the last. The next generation of the standalone WebCalendar application is also in development and will share this same core. The iCalendar parsing and writing is handled by another library I recently released, php-icalendar-core, which provides full RFC 5545 compliance, including proper recurrence rule support. Both the plugin and the next-gen WebCalendar will use it.
This architecture means bug fixes and improvements to the core benefit every product built on top of it.
What the Plugin Does
The free version of the plugin is packed with features that most competitors lock behind paywalls:
- Full RFC 5545 recurring events — daily, weekly, monthly, yearly, with exceptions and overrides. No artificial limits.
- Month, week, and day views with AJAX navigation and real-time category filtering
- iCal (.ics) and CSV import/export with smart duplicate detection – works with Google Calendar, Outlook, and Excel
- Holidays for 100+ countries with automated bulk import
- Mulituser permissoins with 34 custom WordPress capabilities
- Frontend event submissions with an admin approval queue
- SEO-ready event pages with Schema.org JSON-LD markup, social sharing buttons, and add-to-calendar link for Google, Outlook, Yahoo, and iCal
- Email notifications and configurable reminders
- Gutenberg blocks (“Main Calendar” and “Upcoming Events”), shortcode support, and sidebar widget
- Full Rest API with 35+ endpoints
- Responsive design with touch/swipe support on mobile
- Keyboard and screen reader accessible
Here’s the month view with color-coded events and category filters:

And it looks good on mobile too:

Code Quality
I held myself to high standards on this one. The plugin runs at PHPStan level 9 — the strictest static analysis level available. There are over 1,000 automated tests covering unit, integration, and end-to-end scenarios, with 89% code coverage. Every file uses strict type declarations. Psalm taint analysis runs in CI to catch security issues before they ship.
The plugin is 3.1 MB. No bloat, no bundled frameworks, no kitchen sink.
It uses dedicated webcal_* database tables rather than custom post types. This is a deliberate architectural choice — it means the plugin can handle 100K+ events without the performance degradation you see in CPT-based calendar plugins.
What’s Next
The plugin should hopefully be available on WordPress.org soon. In the meantime, you can follow progress on Twitter/X at @agenticdaisy or check out the plugin page at agenticdaisy.com/webcalendar.
If you’ve used WebCalendar over the years — thank you. This plugin is the next chapter, and I think you’re going to like it.