Contact Support | System Status
Page Contents

    Brightcove Player Sample: Google Analytics Advanced Integration

    In this topic, you will learn how to set the Google Analytics Tracking ID dynamically at runtime when using a Brightcove player.

    Player example

    This example uses a Brightcove player and adds Google Analytics programmatically, assigning the Tracking ID dynamically at runtime. This approach is useful if you have several GA accounts but don't want a unique player for each.

    When adding GA dynamically, you will not add the Google Analytics plugin in Video Cloud Studio. If you configure it in the Studio, it will be initialized on player load and it will be too late to change the settings (they cannot be overridden).

    Another benefit of this approach is that our API integration will not create fields in your GA account (Google won't let you rename existing fields).

    When you replace the tracker value in this example with your own Google Analytics Tracing ID, then you should see metrics on your Google Analytics page.

    Google Analytics home page
    Google Analytics home page

    See the Pen Google Analytics Advanced Integration by Brightcove Learning Services (@bcls1969) on CodePen.


    Source code

    You can view the source code by selecting the HTML, CSS and JS buttons in the CodePen above, or you can view the complete solution on GitHub.

    Using the CodePen

    Here are some tips to effectively use the above CodePen:

    • Toggle the actual display of the player by clicking the Result button.
    • Click the HTML/CSS/JS buttons to display ONE of the code types.
    • Later in this document the logic, flow and styling used in the application will be discussed in the Player/HTML configuration, Application flow and Application styling sections. The best way to follow along with the information in those sections is to:
      1. Click the EDIT ON CODEPEN button in the CodePen and have the code available in one browser/browser tab.
      2. In CodePen, adjust what code you want displayed. You can change the width of different code sections within CodePen.
      3. View the Player/HTML configuration, Application flow and/or Application styling sections in another browser/browser tab. You will now be able to follow the code explanations and at the same time view the code.

    Development sequence

    Here is the recommended development sequence:

    1. Use the In-Page embed player implementation to test the functionality of your player, plugin and CSS (if CSS is needed)
    2. Put the plugin's JavaScript and CSS into separate files for local testing
    3. Deploy the plugin code and CSS to your server once you have worked out any errors
    4. Use Studio to add the plugin and CSS to your player
    5. Replace the In-Page embed player implementation if you determine that the iframe implementation is a better fit (detailed in next section)

    For details about these steps, review the Step-by-Step: Plugin Development guide.

    iframe or In-Page embed

    When developing enhancements for the Brightcove player you will need to decide if the code is a best fit for the iframe or In-Page embed implementation. The best practice recommendation is to build a plugin for use with an iframe implementation. The advantages of using the iframe player are:

    • No collisions with existing JavaScript and/or CSS
    • Automatically responsive
    • The iframe eases use in social media apps (or whenever the video will need to "travel" into other apps)

    Although integrating the In-Page embed player can be more complex, there are times when you will plan your code around that implementation. To generalize, this approach is best when the containing page needs to communicate to the player. Specifically, here are some examples:

    • Code in the containing page needs to listen for and act on player events
    • The player uses styles from the containing page
    • The iframe will cause app logic to fail, like a redirect from the containing page

    Even if your final implementation does not use the iframe code, you can still use the In-Page embed code with a plugin for your JavaScript and a separate file for your CSS. This encapsulates your logic so that you can easily use it in multiple players.

    API/Plugin resources used

    API Methods API Events
    bcGa()  

    Player/HTML configuration

    This section details any special configuration needed during player creation. In addition, other HTML elements that must be added to the page, beyond the in-page embed player implementation code, are described.

    Player configuration

    A Brightcove Player is used for this example.

    1. In Video Cloud Studio, navigate to the Players module. Create a new player.
    2. In the left side navigation, expand Third-Party Analytics. For the GoogleAnalytics option, DO NOT select Enable Google Analytics. Leave this option unchecked.

      Google Analytics in Studio
      Google Analytics in Studio

    Other HTML

    A script was added after the Brightcove Player embed code.

    1. After the Player embed code, add the following script for the Brightcove Google Analytics plugin. We are loading the plugin manually instead of configuring it in Video Cloud Studio.

          <script src="//players.brightcove.net/videojs-bc-ga/1/videojs-bc-ga.min.js"></script>

    Application flow

    The basic logic behind this application is:

    • Create a Brightcove Player without configuring the Google Analytics plugin
    • Load the Google Analytics plugin manually
    • Define options for the plugin, including parameters and events that you want to track
    • Set the tracking id
    • Play your video
    1. Create the player

      If you have already done so, see the Player/HTML configuration section above to create your player in Studio.

    2. Load the plugin

      See the Other HTML section above to add the Google Analytics plugin script.

    3. Define plugin options

      In the JS section of the CodePen, find the code where which is labeled:

          // Set up the Google Analytics plugin options

      The player calls the bcGa() method to initialize the plugin. Notice that you can set parameters and events that you want to track.

      myPlayer.bcGa({
        "paramsToTrack": {
          "bcvideo_video_seconds_viewed": "dimension7",
          "bcvideo_range": "dimension8",
          "bcvideo_video_duration": "dimension9",
          "bcvideo_player": "dimension10",
          "bcvideo_account": "dimension11",
          "bcvideo_session": "dimension12",
          "bcvideo_platform_version": "dimension13"
        },
        "eventsToTrack": {
          "video_impression": "Video Impression",
          "play_request": "Play Request",
          "video_engagement": "Video Engagement",
          "ad_start": "Ad Start",
          "ad_end": "Ad End",
          "player_load": "Player Load",
          "error": "Error"
        },
        "tracker": "UA-150904906-1"
      })
      /*
      	Two extra events can be added:
      		video_view
      		video_complete
      */

      For details about events and dimensions, see the Configuring Google Analytics Event Tracking document.

    4. Set the tracking id

      In the JavaScript code above, replace the tracker value with your Google Analytics Tracking ID.

          "tracker": "your tracking id"
    5. Put the HTML and JavaScript code on your web page and play your video. You should see metrics in your

    Plugin code

    Normally when converting the JavaScript into a Brightcove Player plugin nominal changes are needed. One required change is to replace the standard use of the ready() method with the code that defines a plugin.

    Here is the very commonly used start to JavaScript code that will work with the player:

    videojs.getPlayer('myPlayerID').ready(function() {
      var myPlayer = this;
      ...
    });

    You will change the first line to use the standard syntax to start a Brightcove Player plugin:

    videojs.registerPlugin('pluginName', function(options) {
      var myPlayer = this;
      ...
    });

    As mentioned earlier, you can see the plugin's JavaScript code in this document's corresponding GitHub repo: advanced-ga.js.

    Using the plugin with a player

    Once you have the plugin's CSS and JavaScript files stored in an Internet accessible location, you can use the plugin with a player. In Studio's PLAYERS module you can choose a player, then in the PLUGINS section add the URLs to the CSS and JavaScript files, and also add the Name and Options, if options are needed.


    Page last updated on 03 Jul 2021