BLOG
« Blog Home

Case Study: Dynamic Retargeting Ads with DBM and Third Party Tracking

March 15, 2017

Learn how Canned Banners successfully integrated into a client's in-house display ad technology stack.

The advertiser: Online retailer, with a typical price point in the 4 and 5 figures.

Campaign goal: Bring dynamic retargeting in-house, including creative, media buying, and performance tracking.

Dynamic creative strategy: Retarget visitors with the products and categories they viewed, featuring large product photography and simple creative.

Going in-house

The advertiser was using a performance marketing partner for its dynamic retargeting. The partner’s solution is a so-called “black box.” You put money in, you get performance out.

Black-box performance display ads

Don't worry about what happens in the box — you wouldn't understand.

But "black box" means that you don’t get custom creative and you don’t get to make your own tweaks to your programmatic ad buying – tweaks that might affect performance and efficiency. Conversion attribution can also be extremely tricky with black-box platforms that bury an audience under a deluge of ad impressions that create too much "noise" to really understand how (or if) other channels are contributing.

Our client wanted to take ownership of their ad buying, creative, and performance and decided to take all the elements of their dynamic remarketing program in-house. These were the components our client chose:

Ad stack component Purpose Vendor
DSP Manage programmatic ad buys and traffic creatives DoubleClick Bid Manager (DBM)
Click + impression tracking Third party click + impression tracking and reporting Atlas
Viewability tracking Third party viewability tracking and reporting DoubleVerify
Conversion tracking Third party conversion tracking and reporting Convertro
Dynamic ad creative Enable dynamic remarketing and ad personalization Canned Banners

Custom dynamic ad creative

Canned Banners developed three product ad designs for the client. All the designs were simple, featuring large product photography, prominent branding, and an added message about free shipping and returns.

Each creative type was produced in four sizes: 160x600, 300x250, 300x600, and 728x90, for a total of 12 different creative units.

Single-product

This design featured a single product with a very large photo product title, and product price

300x250 single-product dynamic display ad

Two-product

This design included two products, both showing product photo, title, and price.

300x250 two-product dynamic display ad

Multi-product

This design featured a grid of 6-8 products showing product photo and product price.

300x250 multi-product dynamic display ad

Third party trackers

The Canned Banners dynamic ad units needed to load three separate pieces of tracking code with every ad impression:

Tracker Purpose Type
Atlas Impression tracking <IMG> pixel
Convertro Conversion tracking <IMG> pixel
DoubleVerify Viewability tracking <SCRIPT> tag

Convertro pixel

The Convertro pixel was the simplest. Convertro's <IMG> pixel tag was simply added near the end of the ad HTML of all creatives.

Doubleverify script

DoubleVerify tracks "viewability," which is a tricky thing to measure. As part of data collection, a viewability tracker needs to understand whether the ad's content was rendered within the screen’s viewport (an ad that fully renders offscreen doesn't count as viewable).

DoubleVerify uses a technique that involves wrapping the ad content in a <SPAN> tag that's given a unique, random ID. Then the Doubleverify <SCRIPT> is loaded later in the ad HTML and provided a reference back to the random ID value. Presumably the random ID prevents caching problems and also allows the tracker to work when multiples of the same creative are loaded into a single page at once (e.g., page takeover placements).

Canned Banners used its $D{CACHEBUSTER} creative macro (which expands to a random 10-digit number) to ensure that Convertro's viewability tracker loaded properly for every ad impression.

<SPAN> tag wrapped around ad content

<span id="$D{CACHEBUSTER}">
<!-- ad content goes here -->
<span>

<SCRIPT> tag with <SPAN> ID passed dynamically by $D{CACHEBUSTER} macro

<script src="https://cdn.doubleverify.com/dvtp_src.js?ctx=4291&cmp=00777008&sid=66113368&plc=5779240&num=&adid=&advid=7701&adsrv=155&region=1&btreg=$D{CACHEBUSTER}&btadsrv=&crt=&crtname=&chnl=&unit=&pid=&uid=&tagtype=&app=&sup=&DVP_EXID=&DVP_CDID=&DVP_DMGRV=&DVP_LAT=&DVP_LONG=&dvtagver=6.1.src" type="text/javascript">
</script>

Atlas pixel and click tracker

Integration with Atlas required a slightly more elegant solution. Read more in the next section...


Atlas click + impression trackers

The advertiser required Atlas tracking to be split into two separately trackable groups that would be trafficked against separate media buys targeting different parts of the purchase funnel and customer journey.

Thou shalt not use redundant code...

To hard-code the Atlas trackers into the creatives would require duplicating each ad unit, resulting in a grand total of 24 ad units for a single campaign and lot of redundant code and assets. This would be unwieldy and error-prone to manage (and expensive for the client), so we came up with a more efficient solution.

Canned Banners creative macros to the rescue!

Luckily, Atlas trackers follow a standardized syntax that we could leverage. Here are two sample trackers:

Atlas impression tracker

<img src="https://ad.atdmt.com/i/img;p=23890065311870;idfa=;idfa_lat=;aaid=;aaid_lat=;cache=$D{CACHEBUSTER}" width="1" height="1" style="display:none;" />

Atlas click tracker

https://ad.atdmt.com/c/go;p=23890065311870;ev.a=1;idfa=;aaid=;idfa_lat=;aaid_lat=;qpb=1;cache=?h=[INSERT FINAL PRODUCT LANDING PAGE HERE]

Notice that both impression and click trackers have the same p= value (which probably equates to 'placement' or some such separately trackable designation). Our advertiser wanted to use two separately trackable groups, so this equated to two p= settings.

Canned Banners set up the trackers to receive the p= value from a Custom Value parameter. The parameter 'ci_atlas_tracker' parameter was set in the ad tag like this:

<IFRAME SRC="https://dynamic.cannedbanners.com/creative/00/0000/html/300x250/?ci_atlas_ tracker=23890065311870&click=${CLICK_URL_ENC}&cachebuster=${CACHEBUSTER}" WIDTH=300 HEIGHT=250 MARGINWIDTH=0 MARGINHEIGHT=0 HSPACE=0 VSPACE=0 FRAMEBORDER=0 SCROLLING=no BORDERCOLOR='#000000'></IFRAME>

Within the ad HTML, the Custom Value from the ad tag could be written into the impression tracker <IMG> tag using a $D{CI_ATLAS_TRACKER} creative macro:

<img src="https://ad.atdmt.com/i/img;p=$D{CI_ATLAS_ TRACKER};idfa=;idfa_lat=;aaid=;aaid_lat=;cache=$D{CACHEBUSTER}" width="1" height="1" style="display:none;" />

Click tracking

For click tracking, final landing page URLs were constructed using Javascript. Final landing page URLs contain three separate daisy-chained parts:

  • DoubleClick Bid Manager click tracker
  • Atlas click tracker
  • URL-encoded final landing page

Each component of the complete clickthrough URL is set using a different Canned Banners creative macro:

URL component Canned Banners creative macro Expands to (example)
DBM click tracker $D{CLICK_URL} https://adclick.g.doubleclick.net/pcs/click?xai=7IxgGsstGxLEAbDaT25SzBQKWNOMha0KGIV7qYMPuzwqv1VPN91Enet_KrjFgLFQNXEr-8ofKPw31HLpmYITcRyEBBcp7TUvq3ZR_949HZfvMe8DMk7pMrL2Fya0kmXZZsv_iFCdZNjdTPLwEdg&sig=Cg0ArKJSzMkEj2cEbCbBEAE&urlfix=1&adurl=
Atlas click tracker $D{CI_ATLAS_TRACKER} 23890065311870
Product landing page $D{S1_SEGMENT_URL} http://www.store-website.com/product/?sku=24680

The Canned Banners ad Javascript glued the components together like this:

var clickUrl = "$D{CLICK_URL}"; // DBM click track redirect

var clickTracker = "https://ad.atdmt.com/c/go;p=$D{CI_ATLAS_TRACKER};ev.a=1;idfa=;aaid=;idfa_lat=;aaid_lat=;qpb=1;cache=?h="; // Atlas click track redirect

var productLandingPage = "$D{S1_SEGMENT_URL}"; // Final product landing page

// Glue together final complete clickthrough
// Product landing page must be escaped
productLink = clickUrl + clickTracker + encodeURIComponent(productLandingPage);

A final complete landing page URL (DBM click tracker + Atlas click tracker + URL-encoded product landing page) would look something like this:

https://adclick.g.doubleclick.net/pcs/click?xai= 7IxgGsstGxLEAbDaT25SzBQKWNOMha0KGIV7qYMPuzwqv1VPN91Enet_KrjFgLFQNXEr-8ofKPw31HLpmYITcRyEBBcp7TUvq3ZR_949HZfvMe8DMk7pMrL2Fya0kmXZZsv_iFCdZNjdTPLwEdg&sig=Cg0ArKJSzMkEj2cEbCbBEAE&urlfix=1&adurl=https://ad.atdmt.com/c/go;p=23890065311870;ev.a=1;idfa=;aaid=;idfa_lat=;aaid_lat=;qpb=1;cache=?h=http%3A%2F%2Fwww.store-website.com%2Fproduct%2F%3Fsku%3D24680

Producing final ad tags for DoubleClick Bid Manager

The DBM integration was easy – Canned Banners has set up dozens of creatives and campaigns for DBM. We typically deliver <IFRAME> ad tags with DBM macros pre-filled. In this case, the ad tags required two DBM macros:

  • ${CLICK_URL_ENC} — the URL-encoded tracking redirect that allows DBM to track clicks, passed into the Canned Banners ad tag via the 'click=' param.
  • ${CACHEBUSTER} — a random number to prevent cached ad creative from loading, passed into the Canned Banners ad tag via the 'cachebuster=' param.

Canned Banners delivered 24 ad tags to the advertiser, grouped into two Atlas tracking groups of 12. Other than the ad tag Custom Value 'ci_atlas_tracker=', the two sets of ad tags were identical and referenced the same underlying creative files.

<IFRAME SRC="https://dynamic.cannedbanners.com/creative/00/0000/html/300x250/?ci_atlas_tracker=23890065311870&click=${CLICK_URL_ENC}&cachebuster=${CACHEBUSTER}" WIDTH=300 HEIGHT=250 MARGINWIDTH=0 MARGINHEIGHT=0 HSPACE=0 VSPACE=0 FRAMEBORDER=0 SCROLLING=no BORDERCOLOR='#000000'></IFRAME>

Example of 300x250 DBM ad tag.


Phew! We're done!

Congratulations if you read this far! If you have questions about how to integrate custom dynamic display ads into your ad technology stack, please contact us.

Contact us to learn more about the Canned Banners Dynamic Ads platform.

CONTACT US