WebCalendar
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 Month, week, and day views with smooth AJAX navigation — no page reloads Responsive design that adapts to any theme and screen size Color-coded categories for visual organization Gutenberg blocks (Calendar + Upcoming Events) and [webcalendar] shortcode Event Management Recurring events — daily, weekly, monthly, and yearly patterns with RRULE support Edit a single instance or the entire series File attachments via the WordPress Media Library Public, Private, and Confidential visibility levels Filter the calendar by tag, and jump straight to what visitors are looking for Venues and organizers — reusable places and contacts, managed in one screen, shown on every event page Custom event fields — text, dates, drop-downs and more, defined once and filled in on every event Online and hybrid events with a “Join online” link, separate from the physical location Conflict detection warns you about overlapping events (Starter+) Filter the calendar by venue and organizer (Starter+) Import, Export & Sync Import .ics files from Google Calendar, Outlook, Apple Calendar, or any iCal source One-click migration from The Events Calendar — venues, organizers, categories, images and recurring events, with undo Side-by-side trial: run WebCalendar next to The Events Calendar with scheduled one-way sync, then switch — or remove everything in one click Export your calendar in iCalendar format Import public holidays for any country Subscribe to remote iCal feeds with automatic hourly sync (Starter+) Collaboration & Permissions Invite WordPress users to events with email notifications Event reminders via WP-Cron 36 granular capabilities mapped to WordPress roles — control who can view, create, edit, and manage events Multi-user calendar filtering and shared calendar views Frontend event submissions with admin approval queue (Starter+) Category merging for cleaning up duplicate categories (Business+) SEO & Sharing Single event pages with SEO-friendly permalinks Schema.org Event JSON-LD, Open Graph, and Twitter Card meta tags Social share buttons and “Add to Google/Outlook/Yahoo” one-click buttons AI Integration Built-in MCP server lets AI assistants (Claude, ChatGPT, etc.) manage your calendar — free on every edition AI admin page with connection wizard, tools reference, and one-click testing WordPress Abilities API integration for WP 6.9+ For Developers Full REST API for events, categories, holidays, layers, and shared calendars Built on Clean Architecture with webcalendar-core business logic library PSR-4 autoloading, PHPStan Level 9, 1400+ automated tests All calendar data in dedicated webcal_* tables — no Custom Post Types Technical 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. External Services This plugin connects to the following third-party services: Nager.Date API Used for importing public holidays via WebCalendar > Holidays. * Endpoint: https://date.nager.at/api/v3/ * Privacy Policy Google Calendar Public Feeds Alternative holiday source. Fetches public .ics files from Google. * Endpoint: https://calendar.google.com/calendar/ical/ * Google Privacy Policy * Google Terms of Service Thunderbird Holiday Calendars Alternative holiday source via community-maintained .ics files. * Endpoint: https://www.thunderbird.net/media/caldata/ * Mozilla Privacy Policy Freemius License Server 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 OpenStreetMap / Nominatim 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 Google Maps Embed API 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 Add to Calendar Links 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/ Social Sharing Links 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/ Development & Source Code 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 widget build/ — 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 install composer.json — PHP dependency manifest Rebuilding 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 dependencies npm 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.
Top keywords
- calendar29×2.81%
- google18×1.74%
- event17×1.65%
- https13×1.26%
- events12×1.16%
- com11×1.07%
- api8×0.78%
- data7×0.68%
- openstreetmap7×0.68%
- policy7×0.68%
- source7×0.68%
- wordpress7×0.68%
Icalviz
Icalviz connects to any public iCal feed and displays your availability day by day on any page or post, using a simple shortcode. Works with Google Calendar, Outlook, Apple Calendar, Nextcloud, and any service that exposes a public .ics link. Each day is automatically classified: 🟢 Free — no events scheduled 🟡 Partial availability — some time slots are taken 🔴 Fully booked — your entire working hours are covered Visitors can click any day to see occupied time slots in a clean timeline modal. Optionally display a call-to-action button (e.g. “Book this slot”) that links to your booking system. Why Icalviz? Stop copy-pasting your schedule into a webpage. Connect your Google Calendar, Outlook, Apple Calendar, or any iCal-compatible calendar — Icalviz reads your public iCal feed and updates automatically, every 30 minutes. Use cases 🏢 Meeting room & shared space booking — Display a room’s availability calendar so your team or clients can instantly see open slots, without logging into any system. 📅 Show your public availability as a freelancer or consultant — Let potential clients see when you are free before they even reach out. Display months of availability from your Google Calendar, Outlook or any iCal feed in seconds. 🎓 Training sessions & open office hours — Show students or participants which session slots are still open. Mark them as full automatically when your agenda is blocked. 🏡 Seasonal rental & short-stay property — Display your gîte, studio, or vacation rental availability directly on your WordPress site, synced live from any iCal-compatible calendar. 🚗 Fleet & equipment availability — Track and display the availability of a shared vehicle, camera kit, or any bookable asset — simply by blocking time in Google Calendar, Outlook, or any other iCal calendar. Key features Zero configuration — Paste your iCal URL, copy the shortcode, done. No API key required — Works with any public iCal feed: Google Calendar, Outlook, Apple Calendar, Nextcloud, and more. Responsive — 2 columns on desktop, 1 on mobile. Navigation arrows for multi-month views. Timeline modal — Click a day to see occupied time slots in a visual hourly timeline. Call-to-action button — Add a custom button (e.g. “Request a slot”) inside the modal, linking to your booking page or contact form. Custom labels — Rename “Free”, “Partial availability”, “Fully booked” to match your vocabulary. Dark mode — Built-in light and dark themes. Booking window — Limit how many days ahead users can see (e.g. next 90 days only). Onboarding wizard — Step-by-step setup guides you from iCal URL to ready shortcode in under a minute. Inline iCal tester — Paste a URL and instantly see whether it connects, how many events it contains, and what the next upcoming events are. Debug panel — One-click diagnostic report covering WordPress environment, plugin version, cache status, iCal feed health, and slot calculation trace. Designed for quick support. How it works Get your public iCal URL (.ics link) from your calendar app: Google Calendar: ⋮ → Settings and sharing → Make available to public → Public address in iCal format Outlook: Calendar settings → Shared calendars → Publish → ICS link Apple Calendar / iCloud: Calendar settings → Public Calendar → Copy link Any other app: look for “Subscribe”, “iCal export” or “public ICS link” In WordPress: go to Settings → Icalviz, paste your iCal URL and follow the 3-step wizard. Copy the generated shortcode and paste it into any page or post. Shortcode reference Basic: [icalviz url=”https://calendar.google.com/calendar/ical/…/basic.ics”] All options: [icalviz url=”…” start=”9″ end=”17″ months=”3″ days_ahead=”90″ show_titles=”0″ disable_modal=”0″ legend=”1″ theme=”light” lbl_free=”Available” lbl_partial=”Limited availability” lbl_full=”Fully booked” cta_label=”Request this slot” cta_url=”https://your-booking-page.com”] url (required) — Your public .ics iCal link (Google Calendar, Outlook, Apple Calendar, etc.) start (0–23, default: 8) — Start of your working day in hours end (1–24, default: 18) — End of your working day in hours months (1–12, default: 2) — Number of months to display days_ahead (0–730, default: 0) — Days ahead to show; 0 = unlimited show_titles (0 or 1, default: 0) — Show event titles in the modal timeline legend (0 or 1, default: 1) — Show colour legend below calendar theme (light / dark, default: light) — Colour theme lbl_free (text, default: Free) — Label for free days lbl_partial (text, default: Available) — Label for partially available days lbl_full (text, default: Fully booked) — Label for fully booked days cta_label (text) — Text for the call-to-action button in the modal cta_url (URL) — Link for the call-to-action button disable_modal (0 or 1, default: 0) — Disable day-click modal; show only availability colour Privacy Icalviz connects only to the iCal URL you provide. No data is sent to any third party. The iCal feed is cached locally in your WordPress database for 30 minutes. If show_titles is set to 0 (default), event titles are never exposed to visitors. Requirements WordPress 5.8 or higher PHP 7.4 or higher A public iCal URL (.ics link) from Google Calendar, Outlook, Apple Calendar, Nextcloud, or any iCal-compatible service Your WordPress timezone must be set correctly (Settings → General → Timezone)