Troubleshooting and Trackers Configuration Guides


Troubleshooting guide for 3rd party trackers

How to check if the tracker is a pixel:

Easiest way to check if the tracker you’re using is a 1x1 pixel or not is just to open it in a browser, for example:

https://pixel.adsafeprotected.com/jload?anId=931059&advId=Eskimi&campId={campaign_id_enc}&pubId=
{site_domain_enc}{app_bundle_enc}&chanId={creative_id_enc}&placementId={placement_id} 

not an impression pixel

https://pixel.adsafeprotected.com/?anId=931059&advId=Eskimi&campId={campaign_id_enc}&pubId=
{site_domain_enc}{app_bundle_enc}&chanId={creative_id_enc}&placementId={placement_id} 

correct impression pixel

From the first view these two trackers look almost identical, but they’re not, if you would open both of them in your browser you will see. You will always recognize the pixel if the browser window is a black screen with a small 1x1 white dot in the middle.
WYlBeSXXfPbPUs4E-ezgif-com-gif-maker-2-copy.gif

If you implement the pixel incorrectly (for example if you use the first URL) there might be huge discrepancies between us and the 3rd party platform (they might even not track anything), so it’s very important before you launch a campaign that uses 3rd party trackers to double check if the trackers are correctly implemented.

Other 3rd party pixel examples:
https://ad.doubleclick.net/ddm/trackimp/N705418.1727343ESKIMI.COM/B28985587.353603375;dc_trk_aid=
545020201;dc_trk_cid=182974786;ord=[timestamp];dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;tfua=;
gdpr=${GDPR};gdpr_consent=${GDPR_CONSENT_755};ltd=?
https://track.adform.net/adfserve/?bn=60266225;1x1inv=1;srctype=3;ord={cachebuster}

Some other ways to recognize if it’s a pixel:

<script type="text/javascript" src="https://pixel.adsafeprotected.com/jload?anId=931059&advId=Eskimi&campId={campaign_id_enc}&pubId={site_domain_enc}{app_bundle_enc}&chanId={creative_id_enc}&placementId={placement_id}">
</script>
<noscript>
<img src="https://pixel.adsafeprotected.com/?anId=931059&advId=Eskimi&campId={campaign_id_enc}&pubId={site_domain_enc}{app_bundle_enc}&chanId={creative_id_enc}&placementId={placement_id}" height="1" width="1" alt="">
</noscript>

This is a our internal IAS JS tracker, but you can extract a pixel from this tracker. Most of the tracking pixel will be placed inside the <img> element:

<img src="https://pixel.adsafeprotected.com/?anId=931059&advId=Eskimi&campId={campaign_id_enc}&pubId={site_domain_enc}{app_bundle_enc}&chanId={creative_id_enc}&placementId={placement_id}" 
height="1" width="1" alt="">

If you look closely you we will that the height and the width are set to 1x1 for this element (witch almost always indicates that it’s 1x1 pixel). So just extract the URL part from this element and use it as a tracking pixel (it’s not always possible to extract the pixel from JS trackers, keep that in mind).


How to validate that you have a 3rd party JavaScript tracker:

Third party trackers can be implemented two ways (both JS and Pixels):

1. Campaign level in the campaigns approval page:

image-1707209339755.png

2. Creative level in the campaigns edit page under each creative:

image-1707209429050.png



How to check if the trackers are firing:

1. Launch a campaign with trackers applied and leave it as pending.

2. Copy part part of the trackers name/id, for example:

https://pixel.adsafeprotected.com/?anId=931059&advId=Eskimi&campId={campaign_id_enc}&pubId=
{site_domain_enc}{app_bundle_enc}&chanId={creative_id_enc}&placementId={placement_id}

From this pixel you just can take adsafeprocted part or 931059 (this differs from tracker to tracker)

3. Open campaigns preview page.

4. In the preview page open developer tools by right clicking anywhere on the screen and click "Inspect", then navigate to the network tab and search for the trackers name (the part that was copied the step before), then refresh the page:

ScreenRecording2024-02-06at11.03.09-ezgif.com-video-to-gif-converter.gif

5. After you do the previous step, you we see a log pop up after the page refresh, click on that log, and if you see status 200 in the request header, it means that it's firing correctly:

Screenshot 2024-02-06 at 11.08.33.png

Android WebView (Dalvik):
If you’re using 3rd party trackers on your campaigns, always exclude Android WebView (Dalvik) browser from your targeting. We’ve noticed that the Android WebView (Dalvik) has poor performance when it comes to 3rd party verification (applacable to all 3rd party trackers).
Screenshot 2024-02-06 at 11.32.22.png

What to share to tech support:
If you'll encounter an issue with trackers/discrepancies this is the information you should include in the tickets or check yourself.

1. Report - always include a report from 3rd party platform where we can clearly would see that there is discrepancy. Also in the report we only need to see impressions (or other metrics) by day and campaign. We do not require other splits in the clients report (for example we sometimes receive report by app/site, often those reports have over 100k rows in the sheets, witch makes the report almost unreadable for us). If tech support will require additional report with other splits, they will inform regarding it.

2. Trackers - Include original tracker csv/txt file. (Helps tech support understand if the trackers were implemented correctly).

3. Documentation -  If you'll ever receive trackers from the client that you or your colleagues never seen before, then ask the client for the documentation for those trackers and share it in the ticket with tech support, as there is a high chance they tech support is not familiar with those trackers as well (test campaign would be recommended here as well, to be sure that the trackers will work).


Things to remember:

1. Discrepancies up to 15% are considered normal.

2. The tag should be implemented exactly as you got it from the 3rd party vendor.

3. There are supply limitations as there are publishers that will not support JS tags on their page.

4. Always change [timestamp] to {CACHEBUSTER} in the 3rd party tracker as it might impact numbers that the clients sees.

5. Majority of 1x1 pixels will track only impressions.

6. DC trackers need to be modified a bit for In-Game campaigns, more information in this manual

Adform creative tag implementation (updated)

The following article presents the approach how adform tags should be implemented in Eskimi DSP.

1. Usually the tags which you will receive from client will be placed in excel file and looks similar to example below

<script language="javascript" src="https://track.adform.net/adfscript/?bn=50747383"></script>
<noscript>
<a href="https://track.adform.net/C/?bn=50747383;C=0" target="_blank">
<img src="https://track.adform.net/adfserve/?bn=50747383;srctype=4;ord=[timestamp]" border="0" width="300" height="250" alt=""/>
</a>
</noscript>

2. To continue tag implementation, you need to create banner type creative set, then add creative as JS/HTML banner and copy the tag from spreadsheet manually.

3. Once the code is copied, you need to adjust tag with click macro in order to track clicks in campaign.

3.1 add ;click={click_url} into the redirect string.

3.2 To ensure proper cache-busting, replace [timestamp] with {CACHEBUSTER}.

Once all 2 steps completed the tags should look like

<script language="javascript" src="https://track.adform.net/adfscript/?bn=50747383;click={click_url}"></script>
<noscript>
<a href="https://track.adform.net/C/?bn=50747383;C=0" target="_blank">
<img src="https://track.adform.net/adfserve/?bn=50747383;srctype=4;ord={CACHEBUSTER}" border="0" width="300" height="250" alt=""/>
</a>
</noscript>

4. Press save and later you can link this creative to your campaign.


Possible issues and troubleshooting:

According to our experience we noticed that the adform create tags might be created in multiply variations. Unfortunately, sometimes the creatives might be prepared incorrectly, not follow adform requirements. Therefore sometimes you might notice that after you followed the guide of tag adjustment the tag don't track clicks properly. In such cases suggest to client double check how the creatives were created, and if they follow all adform requirements. In that scenario client can refer to adform support team, or refer to official adform documentation:

The documentation of how the creative should be created below:

https://www.adformhelp.com/s/article/UUID-ba1da05a-285e-ade0-1165-a33481f90b35

Please also note that there are three important things to be taken into consideration when talking about Adform clicks to work correctly and tracker to fire well:

- Adform DHTML library;
- manifest.json file;
- Click function.

Sizmek Tags

Sometimes it may happen that you will receive JS banner tags for Sizmek. But the tags may not be compatible with our DSP platform, without any additional changes. 

Lets take an example of a bad tag: 

 <script src="https://bs.serving-sys.com/Serving/adServer.bs?c=28&cn=display&pli=107430544984&w=300&h=250&ord=[timestamp]&z=10000"></script>
<noscript>
<a href="https://bs.serving-sys.com/Serving/adServer.bs?cn=brd&pli=1074305984&Page=&Pos=-956631125" target="_blank">
<img src="https://bs.serving-sys.com/Serving/adServer.bs?c=8&cn=display&pli=107430445984&Page=&Pos=-9566431125" border=0 width=300 height=250></a>
</noscript>

Upon looking at the tag there are a few things: 

In order to fix the tag, we need to make several changes. 

To start let's look at the correct tag.

<script src="https://bs.serving-sys.com/BurstingPipe/adServer.bs?cn=rsb&c=28&pli=2601744794&PluID=0&w=300&h=250&ord={CACHEBUSTER}&ucm=true&ncu=$${CLICK_URL}$$"></script>
<noscript>
<a href="{CLICK_URL}https%3A%2F%2Fbs.serving-sys.com%2FBurstingPipe%2FadServer.bs%3Fcn%3Dbrd%26FlightID%3D2601447794%26Page%3D%26PluID%3D0%26Pos%3D57039442024" target="_blank"><img src="https://bs.serving-sys.com/BurstingPipe/adServer.bs?cn=bsr&FlightID=2644017794&Page=&PluID=0&Pos=574044392024" border=0 width=300 height=250></a>
</noscript>

1. {CLICK_URL} macro is added in two places, the <script> part of the tag, and the <noscript> part of the tag. 

<script> part of the tag: to insert the {CLICK_URL} macro you have to add the "&ncu=$${CLICK_URL}$$" of the first URL. 

<noscript> part of the tag: insert {CLICK_URL} before the href="" url

2. Enable Cachebuster. Cachebuster in Sizmek is enabled, by using the [timestamp] property of the URL. To enable this from our DSP end, that has to be changed to {CACHEBUSTER}.

3. Encode the <noscript> URL: the after the {CLICK_URL} part has to be encoded. To encode the URL use this tool: https://meyerweb.com/eric/tools/dencoder/.