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>

Adding Sub ID Tracking to HTML widget(s)

Collecting Sub ID data on an HTML widget (standard and dynamic) only requires the addition of the "sub_ids" parameter, as an array with key-value pairs.

Standard HTML Widget:

<a href="<WIDGET_ID>&key=<UUID>&sub_ids=[<KEY1>:<VALUE1>,<KEY2>:<VALUE2>]">
<img src="<WIDGET_ID>&key=<UUID>&size=<IAB_SIZE>&sub_ids=[<KEY1>:<VALUE1>,<KEY2>:<VALUE2>]" />

Dynamic HTML Widget:

<a href="<UUID>&segment_name=<DYNAMIC_WIDGET_NAME>&size=<IAB_SIZE>&pub_id=<PUBLISHER_ID>&sub_ids=[<KEY1>:<VALUE1>,<KEY2>:<VALUE2>]">
<img src="<UUID>&segment_name=<DYNAMIC_WIDGET_NAME>&size=<IAB_SIZE>&pub_id=<PUBLISHER_ID>&sub_ids=[<KEY1>:<VALUE1>,<KEY2>:<VALUE2>]" />

Retrieving Sub ID Stats

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

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

Optional Advanced Usage - Extracting Sub IDs from URLs

The following examples are optional advanced methods which would allow Sub IDs 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?