

Frontend month view — responsive calendar embedded on any page with color-coded events
WebCalendar gives your WordPress site a clean, responsive calendar with the features you actually need — recurring events, iCal import, holiday imports, email reminders, and fine-grained permissions — without the complexity.
Calendar Views & Display
[webcalendar] shortcodeEvent Management
Import, Export & Sync
.ics files from Google Calendar, Outlook, Apple Calendar, or any iCal sourceCollaboration & Permissions
SEO & Sharing
AI Integration
For Developers
webcalendar-core business logic librarywebcal_* tables — no Custom Post TypesTechnical Note: Database Architecture
This plugin integrates webcalendar-core, a framework-agnostic Composer library that provides all calendar business logic (events, recurrence, iCal, permissions) through 17 repository classes. These repositories require PDO and use exclusively parameterized prepared statements — no raw SQL concatenation. WordPress-specific data (users, options, capabilities) is accessed via $wpdb through the plugin’s Bridge layer (WpUserRepository, WpConfigRepository, etc.). See src/Bridge/PdoFactory.php for the connection factory.
This plugin connects to the following third-party services:
Used for importing public holidays via WebCalendar > Holidays.
* Endpoint: https://date.nager.at/api/v3/
* Privacy Policy
Alternative holiday source. Fetches public .ics files from Google.
* Endpoint: https://calendar.google.com/calendar/ical/
* Google Privacy Policy
* Google Terms of Service
Alternative holiday source via community-maintained .ics files.
* Endpoint: https://www.thunderbird.net/media/caldata/
* Mozilla Privacy Policy
Used for license validation, automatic updates, and optional usage analytics.
* Endpoint: https://api.freemius.com/
* Privacy Policy
* Terms of Service
* Data transmitted: license key, site URL, plugin version, WordPress version
When a single event page has a location and the map provider is set to OpenStreetMap
(the default), the plugin geocodes the address via the Nominatim API and displays a
map using OpenStreetMap tile servers. The event location string is sent as a search
query. No user personal data is transmitted.
* Geocoding endpoint: https://nominatim.openstreetmap.org/search
* Tile server: https://tile.openstreetmap.org/
* OpenStreetMap Terms of Use
* Nominatim Usage Policy
* OpenStreetMap Privacy Policy
When the map provider is set to Google Maps in settings, single event pages display
an embedded Google Map for the event location. The event location string and your
Google Maps API key are sent to Google. No other user data is transmitted.
* Endpoint: https://www.google.com/maps/embed/v1/place
* Google Maps Platform Terms of Service
* Google Privacy Policy
Single event pages include “Add to Calendar” buttons that generate links to Google
Calendar, Outlook.com, and Yahoo Calendar. When a visitor clicks a button, the event
title, date, time, location, and description are passed as URL parameters to the
chosen service. No data is sent until the visitor clicks.
* Google Calendar: https://www.google.com/calendar/render
* Outlook.com: https://outlook.live.com/calendar/0/action/compose
* Yahoo Calendar: https://calendar.yahoo.com/
Single event pages include social sharing buttons for Facebook, X (Twitter), and
LinkedIn. When a visitor clicks a button, the event page URL and title are passed as
URL parameters to the chosen service. No data is sent until the visitor clicks.
* Facebook: https://www.facebook.com/sharer/sharer.php
* X (Twitter): https://x.com/intent/tweet
* LinkedIn: https://www.linkedin.com/sharing/share-offsite/
Full unminified source for this plugin is included in this distribution under GPL-2.0-or-later — you do not need to download anything external to rebuild the compiled assets.
What ships in this zip:
src/ — unminified React/JSX source for all admin components, frontend calendar, and the mini-calendar widgetbuild/ — the pre-compiled minified bundles (what the plugin actually loads at runtime)package.json + package-lock.json — Node build manifest and lockfile for reproducible npm installcomposer.json — PHP dependency manifestRebuilding the compiled assets from source:
Prerequisites: PHP 8.1 or higher with Composer 2, Node.js 20 or higher with npm 10.
composer install — install PHP dependenciesnpm install — install JavaScript build dependencies (@wordpress/scripts, React, Toast UI Calendar, Leaflet, Tiptap)npm run build — compile src/index.js and src/frontend.js into the minified bundles under build/The compiled output in build/ is byte-reproducible from the matching src/ at the same version using this toolchain.