Opencast Player - Matomo Tracking Plugin

This plugin allows to use Matomo (, formerly known as Piwik, to track usage data. To setup Matomo please follow the instructions on the Matomo website:

The plugin respects the Do-Not-Track settings of a browser. You might also need to consider the legal requirements of your country when you setup Matomo.

This plugin uses a Matomo javascript library that is loaded from the remote Matomo server!

Tested Matomo version: 3.0.2+

The configurations for the Matomo player plugin are done for each tenant. So the configuration keys are located in .../etc/org.opencastproject.organization-mh_default_org.cfg.

To activate the plugin set:


Where localhost should be replaced with your Piwik server URL.



The plugin shows a notification about the tracking to the user. This can be disabled with this option. (Default: true) Before you disable the notification, make sure that you do not violate any local regulations.


The Matomo server from which the Piwik JS library will be loaded and where the data will be reported.


The Matomo site ID has to be numeric value. If not set this will be 1. It is recommended to use different site IDs for each tenant that is configured in Opencast.


The heartbeat setting to track how long a user stayed on the player page. Set to 0 or comment this line to disable the heartbeat.


This setting lets you track several player events. Add the events that you want to track to the list. Comment this property to prevent event tracking.

Events that can be tracked:

  • play: play has been pressed (will also be called if after seeking).
  • pause: pause has been pressend (will also be called if before seeking).
  • seek: user jumps to a different time. Time in seconds will be stored
  • ended: video has reached the end
  • playbackrate: user changes the playback speed (values 0.75 to 3.00)
  • volume: Volume change by the user value 0.0 to 1.0
  • quality: manual change of video quality (quality tag is stored)
  • fullscreen: user presses fullscreen button
  • focus: user selects one video to be enlarged (flavor of selected video is stored)
  • layout_reset: user switches back to default layout
  • zoom: user changes the zoom of the video

Tracked Data

Additional to the event data that can be turned on for each event (see above), this Opencast specific data is tracked if tracking is allowed:

  • Page name as " - <lecturer name>"</li> <li>Custom Matomo variables:<ul> <li>"event" as "<title of the event> (<event id>)"</li> <li>"series" as "<title of the series> (<series id>)"</li> <li>"presenter"</li> <li>"view_mode" which can be "desktop", "mobile" or "embed"</li> </ul> </li> </ul> <p>Heartbeat data does not show how long a video has been played but how long a viewer remained on the page, while the page was in the foreground.</p> </div> </div> <footer> <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> <a href="../paella.player/" class="btn btn-neutral float-right" title="Paella player">Next <span class="icon icon-circle-arrow-right"></span></a> <a href="../player.url.parameter/" class="btn btn-neutral" title="URL Parameters"><span class="icon icon-circle-arrow-left"></span> Previous</a> </div> <hr/> <div role="contentinfo"> <!-- Copyright etc --> </div> Built with <a href="">MkDocs</a> using a <a href="">theme</a> provided by <a href="">Read the Docs</a>. </footer> </div> </div> </section> </div> <div class="rst-versions" role="note" aria-label="versions"> <span class="rst-current-version" data-toggle="rst-current-version"> <a href="" class="fa fa-github" style="float: left; color: #fcfcfc"> GitHub</a> <span><a href="../player.url.parameter/" style="color: #fcfcfc;">« Previous</a></span> <span style="margin-left: 15px"><a href="../paella.player/" style="color: #fcfcfc">Next »</a></span> </span> </div> <script>var base_url = '../..';</script> <script src="../../js/theme.js" defer></script> <script src="../../search/main.js" defer></script> <script defer> window.onload = function () { SphinxRtdTheme.Navigation.enable(true); }; </script> </body> </html>