A client needs a monthly events calendar on an Elementor site: a grid you can click through month by month, event details on hover, and a mobile view that actually works. The usual options are a heavy events plugin that drags its own templating and styles into your build, or an Elementor addon bundle where the calendar is one widget among fifty you will never use, often behind a paywall. I do not install Elementor addon suites, so neither route fit.
So I built a small, focused plugin and released it as open source.
What it does
Elementor Events Calendar is a single-purpose widget for Elementor Pro plus ACF Pro. It renders a monthly grid with AJAX month switching (no page reload), hover popups on desktop, a mobile dot grid that scrolls to the tapped day's event, a month picker with dots on months that have events, and multi-day event spanning. It auto-advances to the next month that actually has events when the current one is empty, and it supports status badges like cancelled or sold out. Every style control (primary color, text, backgrounds, font sizes, popup width) lives in the Elementor panel, so it looks native because it is rendered with Elementor.
It works with any custom post type and any ACF field names. You point the widget at your event CPT slug and your date fields, and it does the rest.
How it is wired
The plugin registers two Elementor widgets and refuses to load if its dependencies are missing, so you get a clear admin notice instead of a white screen:
add_action( 'plugins_loaded', 'eec_check_dependencies', 20 );
function eec_check_dependencies() {
$missing = [];
if ( ! did_action( 'elementor/loaded' ) ) {
$missing[] = 'Elementor Pro';
}
if ( ! class_exists( 'ACF' ) ) {
$missing[] = 'Advanced Custom Fields Pro';
}
// ...show a notice and bail if anything is missing, otherwise boot.
}
add_action( 'elementor/widgets/register', 'eec_register_widgets' );
function eec_register_widgets( $widgets_manager ) {
$widgets_manager->register( new EEC_Calendar_Widget() );
$widgets_manager->register( new EEC_Card_Widget() );
}
Under the hood it reads events from ACF date fields stored in Ymd format, and it can sync an Elementor Loop Widget to the selected month through a fixed query ID, so your event list filters as you page through the calendar.
Install it
- Download the ZIP from the GitHub repo (Code, then Download ZIP).
- In WordPress go to Plugins, Add New, Upload Plugin, and select the ZIP.
- Activate it. If Elementor Pro or ACF Pro are missing you will get a notice telling you which.
- Create ACF date fields on your event post type (start and end date stored as
Ymd), drag the Events Calendar widget onto a page, and point it at your CPT slug and field names.
Full field setup and Loop Widget wiring are in the README.
Why open source
An event calendar should not cost a subscription or force a bloated suite onto an otherwise clean build. This one is GPL-2.0, no upsell, no telemetry. Requirements are WordPress 6.0+, Elementor Pro 3.x+ and ACF Pro 5.x+, all current in 2026.
The code lives on GitHub: djaysan/elementor-events-calendar. Star it, fork it, or open an issue if you want a field type it does not cover yet.
Need it wired into a specific site or a custom event layout? Reach out and I can help.