Sub ID tracking is a useful tool that can be customized to achieve your reporting needs. Some of the ways Publishers successfully utilize Sub ID tracking include tracking revenue by article, traffic source, social influencer, or to evaluate performance on different page variations.

Adding Sub ID Tracking to Your Widget(s)

In order to start collecting Sub ID data you'll need to add a "data-sub-ids" array along with your custom key-value pairs into your widget script like we've done in the following example:

<div id="habitat" 
<script type="text/javascript" src="//" defer="defer"></script>

Adding Sub ID Tracking to Your AMP Widget(s)

Collecting Sub ID data on an AMP widget will require the same "data-sub-ids" array and key-value pairs we used above, but in the following AMP code format:

<amp-ad layout="responsive" height="100" width="100" type="revcontent" data-revcontent data-id="12345" data-sub-ids='{"KEY1":"VALUE1","KEY2":"VALUE2"}'></amp-ad>

Retrieving SubID Stats

In order to pull SubID reports you must have a 3rd party API software. We recommend Postman which is free to use.

The API request used to pull SubID reports can be found here in our API Documentation: Widget - Get SubID Stats

Optional Advanced Usage - Extracting SubIDs from URLs

The following examples are optional advanced methods which would allow SubIDs to be pulled directly from URLs.

The first is ES6 which is compatible with Chrome, FireFox, Edge, however not Internet Explorer:

let el = document.getElementById('habitat');
let subids = {};
let params = new URLSearchParams(;
for ( const [key, value] of params) {
  subids[key] = value;
el.setAttribute('data-sub-ids', JSON.stringify(subids));

The second is conventional Javascript which is compatible across all browsers but is a bit more involved: 

//Vanilla JS
function getParams() {
  var params = {};
  var query = ? : null;
  if (query) {
    var arr = query.split('&')
    for (var i = 0; i < arr.length; i++) {
      var entry = arr[i].split('=');
      params[entry[0]] = entry[1];
  return params;
var subids = getParams();
el.setAttribute('data-sub-ids', JSON.stringify(subids));

The logic above can be updated to get meta tags or any other unique values and serves as a general guideline for working with SubIDs outside of setting them directly on the div. As an example, if you were using the following params:
The objects returned would be:
subids = { rc_campaign: value1, utm_source: value2 } 

Did this answer your question?