Author's note: This article would not have been possible without the help of my colleague, SEMrush Email Marketing Specialist Peter Ermakov.
If you are reading this, you are probably starting to implement Nielsen Attribution pixels (formerly Visual IQ Platform pixels). By this time, you may already have received instructions/methodology from Nielsen, but if you feel that you need something more to achieve your goal, then this article is for you.
We will show you exactly how this implementation has to be done to succeed and discuss the attribution of Nielsen.
There are two main parts to the implementation: pixels for tracking traffic channels and conversions. Let's start with the first one, which includes such channels as:
-
Google Ads
-
Search
-
GDN
-
YouTube
-
-
Bing
-
DoubleClick Campaign Manager
-
DoubleClick Bid Manager
-
Email Service
Google Ads
Search Ads
Nielsen’s instructions state that you just have to add a tag in the Tracking Template field in your Ads. You could do this in two ways: directly on Ads level or via Account level. This is really simple, especially the latter: just a few clicks, and that is it! Instructions are easy to follow, but only if you don’t have your own specific tracking in this field that is unique for each ad! And if you do - the show starts here.
First of all, you should compose Nielsen’s and your tags like this:
//pseudotag
nielsentag-that-contains-parameter-in-the-end-&red=url-of-your-landing-page&{lpurl}%3Fyour-tracking-params
//example
https://t.nielsensitethattracks.net/click_pixel?et=c¶m=XXX¶m2=YYY...&red=https://www.youcoolbusiness.com/superlanding/&{lpurl}%3Fkw=how_to_implement_nielsen&campaign=Cool_Ads
It is crucial that Nielsen’s tag goes first, and only then yours. And because it is tracking automatically takes your URL from the {lpurl} parameter at the outset, you should add %3F after it:
&{lpurl}%3Fyour-tracking-params / &{lpurl}%3Fkw=how_to_implement_nielsen
You then have to apply it across all your ads. And if your Google Ads account(s) is big enough, this will take you a few days.
There is, of course, an alternative way, but with some side effects. You could insert in the “red” parameter {lpurl} instead of the URL itself like this:
https://t.nielsensitethattracks.net/click_pixel?et=c¶m=XXX¶m2=YYY...&red={lpurl}&{lpurl}%3Fkw=how_to_implement_nielsen&campaign=Cool_Ads
Pros: fast and easy, with a low possibility of a mismatch between the URL in the red parameter and the final URL in ads.
Cons: if you have BigQuery, your pagePath may be a little messy:
1. Right pagePath:
/page-name/?%3Fkw=how_to_implement_nielsen&campaign=Cool_Ads
2. Messy pagePath:
/page-name/?https://www.yourwonderfullsite.com/page-name/%3Fkw=how_to_implement_nielsen&campaign=Cool_Ads
It is not that critical, as, in our experience based on using Regex, it doesn’t influence the patterns of data parsing, but it really simplifies the whole process of implementation.
Google Display Network
There could be difficulties with banners/responsive ads: you change the tracking template in Google Ads Editor, try to post, and get an error. A guaranteed way to fix this is:
1. Export “Current View” via ZIP (!)
2. Open this ZIP file, and change the tracking in the CSV file (named by default “data.csv”):
3. Make a new ZIP from the CSV and images and import via File in Google Ads Editor.
YouTube Ads
A few words about tracking YouTube ads with Nielsen Attribution: you don’t need to add click tags because the Nielsen’s site tag catches YT’s clicks, and this site tag is easily implemented through Google Tag Manager.
The only thing is that Nielsen Attribution can’t track impressions via user (and view-through conversions as a result) from YouTube ads due to YouTube’s tracking policy. If you are using Google Marketing Platform (former DoubleClick), you know that you can show video ads through this platform on YouTube, just like on Google Ads. And you may think that if Nielsen could be implemented on Display&Video 360 and track impression touchpoints, it might work to just migrate your campaigns from Google Ads to Display&Video 360, and that is it. Nice trick, but, unfortunately, 3rd party pixels will be blocked by YouTube irrespective of this.
Bing
As for Bing, there is nothing of note here: the logic is the same as Google Ads. All that we’ve said about Google Ads applies to Bing too.
Social Media
There is also nothing of note about social media; instruction from Nielsen will be enough here too.
Display&Video 360/Campaign Manager
If you use only Campaign Manager, everything is pretty easy for you. Just follow the given instructions, and that is it!
But everything changes when you want to track Bid Manager too. The first thing to remember: watch your ads closely after you put tracking on DBM. For example, in our case, one of the tags (cross-device) was not in the authorized list of data vendors in the Google Marketing Platform, so your ads in Display&Video 360 (former Bid Manager) may just be stopped until you pause this pixel. Secondly, only Campaign Manager has the ability to integrate 3rd party pixels (don’t be fooled by “Integration Code” in the Insertion Order/Line Item settings in Display&Video 360!), you have to carry out the next steps:
1. Use Nielsen tags with the following macros:
a) Add the following impressions tracker under Properties > Event tags > Impression event tags > Advertiser tags > New impression event tag with automatic application and enabled status:
https://t.nielsensitethattracks.net/impression_pixel?r=%n&et=i&ago=XXX&ao=XXX&aca=%ebuy!&si=%esid!&ci=%ecid!&pi=%epid!&ad=%eaid!&advt=%eadv!&chnl=XXX&vndr=XXX&sz=XXX&u=%pu=!;|%pcid=!;|%ppid=!;|%pcrid=!;|%pioid=!;|%peid=!;|%pusiteid=!;&nielsen_did=%pdevice=!;&pt=i
XXX - will be given by Nielsen
b) Add the following click tracker under Properties > Event tags > Click event tags > Advertiser tags > New click event tag with automatic application and enabled status:
https://t.nielsensitethattracks.net/click_pixel?et=c&ago=XXX&ao=XXX&aca=%ebuy!&si=%esid!&ci=%ecid!&pi=%epid!&ad=%eaid!&sv1=[keyword_id]&advt=%eadv!&chnl=XXX&vndr=XXX&sz=XXX&u=%pu=!;|%pcid=!;|%ppid=!;|%pcrid=!;|%pioid=!;|%peid=!;|%pusiteid=!;&nielsen_did=%pdevice=!;&red=
XXX - will be given by Nielsen
2. Update key-values parameters using this one:
cid=${CAMPAIGN_ID};pid=${PUBLISHER_ID};crid=${CREATIVE_ID};ioid=${INSERTION_ORDER_ID};eid=${EXCHANGE_ID};usiteid=${UNIVERSAL_SITE_ID}
In Site settings: In Campaign Manager go to
Admin > Site > Settings > Site Tag Options > Additional key-values
In all your campaigns in Campaign Manager – Yes, in all of them!
Campaign > Placement > Tag defaults > Additional key-values
But for this last case there is also the solution:
1. Download all placements IDs using Reports.
2. Then, on your Google Drive, create a Google Sheet with two sheets – “config” and “data”:
3. In the “config” sheet, there must be only two columns:
XXXXX is your CM Account ID (number)
4. In “data” there are also two columns:
Under Placement ID you put your downloaded IDs, and in key-value, for each ID you should write as shown below:
cid=${CAMPAIGN_ID};pid=${PUBLISHER_ID};crid=${CREATIVE_ID};ioid=${INSERTION_ORDER_ID};eid=${EXCHANGE_ID};usiteid=${UNIVERSAL_SITE_ID}
5. Go to Google Apps Scripts
6. Put this in the code field:
function onOpen() {
var ui = SpreadsheetApp.getUi();
// Or DocumentApp or FormApp.
ui.createMenu('Key-values updater')
.addItem('Update', 'updateKV')
.addToUi();
} function getUserProfile(accountId) {
var profiles = DoubleClickCampaigns.UserProfiles.list(); var output = [];
for (var i = 0; i < profiles.items.length; i++) {
if(accountId == profiles.items[i].accountId)
return profiles.items[i].profileId;
}
throw "Error: cannot find CM profile";
} function updateKV() {
var accountId = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("config").getRange("B1").getValue();
if(!accountId) throw "Error: no account id";
var sheet = SpreadsheetApp.getActiveSheet();
var values = sheet.getRange(2, 1, sheet.getLastColumn(), 2).getValues();
var profileId = getUserProfile(accountId);
values.forEach(function(row) {
var placementId = row[0];
var kv = row[1];
if(!placementId) throw "Error: empty placement id";
var placement = DoubleClickCampaigns.Placements.get(profileId, placementId);
placement.tagSetting.additionalKeyValues = kv;
DoubleClickCampaigns.Placements.update(placement, profileId);
});
}
7. Then to Menu Bar > Run > Test as add-on…
8. Select Doc > SpreadSheet > Your Sheet
9. Save. Then go to your sheet, and in the Menu Bar, you will find your “Add-on” -> chose it and click on “Update”.
10. If you have too many placements, update them a little at a time.
And lastly, we should say that all this could not be done without the great help of the Google Marketing Platform Team. Thank you, guys!
Email Service
For email services, the main thing is to define what an impression is in this case. As we see in Google Ads, an impression is a shown banner (GDN), but if we follow the same logic, an impression in email marketing is a sent email. However, it is very difficult to reconcile a transfer process from a third-party email service to a third-party attribution system. So the best solution here is to agree that an impression is an opened email.
Impression Tracking
For this, the Nielsen Implementation Team proposes an impression tracking pixel set up right in HTML code.
We added “XXX” to hide our parameters.
As we see, it is the same method that Google uses in its Measurement Protocol, and you can even use Google’s Hit Builder to fetch the pixel to see all the parameters:
Unfortunately, when you start validating the data, you will see a large number of discrepancies, because of Google Crawlers, which are always “reading” emails before people.
Click Tracking
There are two ways to track clicks:
-
The Nielsen Attribution Implementation Team proposes their link with a special redirect parameter where you put in your target link.
-
Add one parameter in UTM just for Nielsen.
In the first case, all your links in an email will look like this:
https://t.nielsensitethattracks.net/click_pixel?et=XXX&ago=XXX&ao=XXX&aca=XXX&si=XXX&ci=XXX&pi=XXX&ad=XXX&sv1=XXX&advt=XXX&chnl=XXX&vndr=XXX&sz=XXX&u=XXX&red=https%3A%2F%2Fwww.semrush.com%2F&type=XXX&templateName=XXX
On the other hand, you can reach an agreement with the Implementation Team that some standard UTM parameters or a custom parameter will be used for their tracking. We agreed that standard utm_content would contain a unique email campaign number (they can get just INTEGER values), so they fetch UTMs and define them as email campaigns.
The last thing to say is that there may be a discrepancy in clicks and impressions between your data and data in the Nielsen platform due to different ways of counting. For example, in Google Marketing Platform (DoubleClick), clicks in the DCM report are lower due to Google's spam filtering, and Nielsen does not filter or deduplicate the clicks tracked by their click pixel. Also, you should stay alert to how direct, organic search, and organic social are counted: rules could be very specific.
Conversions
Last but not least is conversions. You can track up to 10 conversions in Nielsen Attribution; it is possible to track all of them by Tag Manager. But if your infrastructure is large and complicated enough, it is better to do it right by FTP, especially for sensitive conversions like transactions; this will decrease the level of discrepancy.
One more thing that could help with discrepancy is taking into account the time difference between your data and data in Nielsen Attribution reports. Also, as stated earlier, you may have your own rules, for example, for counting traffic from channels. Try to keep it in mind, because all this could affect comparison significantly.
If you use Google Analytics as one of the main instruments for reporting (which means that you trust GA), you could make duplicates of tags of Nielsen conversions in GTM and push them to GA as well, for comparison. The best way to do this is to make another GA account/property with the same reporting time zone that Nielsen Attribution has.
Another thing to say, from our point of view, is that the most complicated conversion to implement was what is considered as “Offline conversion(-s)” from SalesForce. The main issue here is matching a person who visited a website (“online”) with the same person from, for example, a phone call (“offline”). Obviously, most businesses nowadays have registration, and as a result, they get the mutually agreed unique identifiers with email/phone number. Such identifiers could be the solution because it is a point of matching. All you need is to catch, by GTM, mutually agreed unique identifiers in the variable and integrate it with a special Nielsen Attribution synx pixel in a tag like this (note that Nielsen does not use or store any personally identifiable information (PII) for offline integration):
nielsenpixel?param1=XXX¶m2=YYY&fieldformutuallyagreeduniqueidentifier={{mutually_agreed_unique identifier}}
Conclusion
If you are going to start implementing such a complex high-end solution as Nielsen Attribution, it means that your marketing is already like a self-confident and resultative creature (great efforts via programmatic, search, social media, email, affiliate), but you need a more detailed picture. And we hope that with this guide you will do it much faster.
We also hope that you will find answers about your current situation in digital with this tool. Just remember to be careful with data interpretation: it requires strong expertise from digital marketer to evaluate the real value of each channel, bringing us to the fact that you must have a deep understanding of how to adopt Nielsen’s powerful mathematical engine to analyze traffic and evaluate (or better score) a channel’s effectiveness.