I wanted a way to add pre-roll ads to Elementor videos without turning each page into a custom embed project. The main problem was not video playback itself, it was configuration drift. Once ads live in separate shortcodes, extra players, or theme code, editors lose track of what controls the final experience.
So I built a plugin that extends the existing Elementor Video widget instead of replacing it. Inside the widget, I add a dedicated Video Ads section where an editor can enable a pre-roll clip, define skip timing, and optionally attach a visit link. That keeps the ad logic attached to the same content object as the main video, which makes updates much less error-prone.
Under the hood, the plugin works in two layers. The first layer is widget-level configuration stored with Elementor data, so each video can have its own ad behavior. The second layer is a WordPress admin settings screen for global rules, where I can define a default ad and control where it applies or where it should be excluded. That split matters because some sites want per-page control, while others want a site-wide campaign without editing dozens of widgets.
I also added a lightweight statistics view in wp-admin. It records plugin-specific events like ad impressions, skips, and interactions, then surfaces them in a simple reporting screen. I did not try to turn it into a full analytics platform. The goal is just to make ad behavior visible enough to tune timing and placement.
A big implementation detail was preserving the normal Elementor editing flow. Editors still work with the core Video widget they already know. The plugin injects extra controls into that panel rather than introducing a parallel UI. That decision reduced training overhead more than any front-end feature.
If you want to see the full plugin, I published it here: NEXU Elementor Video Ads Plugin.
The result is a cleaner way to manage pre-roll video ads in WordPress, especially for teams that need monetization controls, skip timing, and reusable global rules without breaking the Elementor workflow.
Top comments (0)