Brightcove Extras
Brightcove Extras adds the pieces the Brightcove module leaves out: an in-page (not iframe) video player, GA4 video analytics, faster incremental sync, and admin tools for spotting broken video references. Enable only the submodules you need — the base module ships shared utilities and has no features of its own.
Features
Each capability is a separate submodule you can turn on independently:
- In-page player (
brightcove_extras_player) — renders a Brightcove video as a responsive, on-pagevideo.jsplayer instead of an iframe. Because the player lives on your page, analytics, cookie consent, and page context all work correctly. It shows up automatically on the video entity page, and is also available as a field formatter for any field holding a Brightcove player URL (such as a Media oEmbed field). - GA4 analytics (
brightcove_extras_ga4) — sends Google Analytics 4 video engagement events (video_start,video_progressat configurable milestones,video_complete) to thedataLayerusing GA4's standard video parameters (title, percent, URL, provider). Works with any in-pagevideo.jsplayer. - Incremental sync (
brightcove_extras_sync) — syncs only the videos changed since the last run (delta sync) on cron, instead of a full nightly reconcile. Ideal for large catalogues. Includes adrush brightcove_extras_sync:run(bce:sync) command to run it on demand. - Admin (
brightcove_extras_admin) — a videos overview with title / video-ID search, and a report listing content that references an inactive or missing Brightcove video.
When and why to use it: reach for Brightcove Extras when your Brightcove videos need to be tracked properly in GA4, when the default iframe embed breaks analytics or consent, when a large video library makes the nightly full sync too slow, or when editors need to find and fix broken video references. Typical use cases: marketing sites measuring video engagement, editorial teams managing thousands of synced videos, and sites with strict cookie-consent requirements.
Post-Installation
Enable the base module plus whichever submodules you want, then:
- In-page player: synced videos show the player automatically on their entity page — no configuration required. To use it elsewhere, set the Brightcove in-page player formatter on the field that stores your Brightcove URL (Manage display).
- GA4: set the progress milestones at Configuration → Media → Brightcove Extras GA4 (default 10/25/50/75%), then create matching Custom Event triggers and a GA4 Event tag in your Google Tag Manager container to forward the events to GA4.
- Sync: enable it and tune the interval and overlap window at Configuration → Media → Brightcove Extras sync. It runs on cron.
- Admin: set the media bundle and video-ID field the report inspects at Configuration → Media → Brightcove Extras admin. The report is at Reports → Brightcove broken references; the overview at Content → Brightcove videos.
Note: the in-page player submodule ships a corrected brightcove-video.html.twig that fixes a recursive-render issue in the Brightcove module's default template (which otherwise truncates the video page). No action is needed — it applies automatically.
Additional Requirements
- Brightcove (
^3.3) — required by all submodules. - The Admin submodule additionally requires Entity Usage and core Views.
Recommended modules/libraries
- Google Tag (or your own GTM/gtag snippet) — required downstream to forward the GA4
dataLayerevents into Google Analytics 4. - Media: Brightcove — if you manage Brightcove videos as Media entities, the in-page player formatter works directly on the media oEmbed field.
Similar projects
Brightcove Extras complements, and does not replace, the Brightcove module (which handles the API integration and video entities) and Media: Brightcove (media integration). It adds capabilities none of them provide: an analytics-friendly in-page player, GA4 video tracking, incremental sync, and a broken-reference report.
Supporting this Module
Issues and merge requests are welcome in the issue queue.
Community Documentation
Documentation lives in the module's README.md and each submodule's README. (Add links to walkthroughs or a demo site here as they become available.)