Cross Device Tracking

Track users from click to conversion across multiple devices.

Overview

Tradedoubler's Cross Device Tracking allows you to track user activity across devices.

Tradedoubler's Cross Device Tracking is supported by our global performance tracking platform. We'll use latency load balancing technology to ensure traffic is routed through the best data centre from anywhere in the world.

Once tracked every transaction then passes through Tradedoubler's proprietary tracking validation process. Impressions, clicks, leads and sales are all screened by dozens of quality checks to confirm their validity. So you can be confident in the accuracy of transactions being reported.


Do not have an affiliate program with Tradedoubler? Contact us

Implementation Update

This page explains changes required to an existing implementation for Cross Device Tracking. For a complete guide to tracking implementation, see the Conversion Tracking page.

Updating your existing tracking implementation to benefit from Cross Device Tracking is simple. You must add the following two parameters:

Name Description Type
extid The user's email address (i.e. the email address of the user currently logged into your site, not your own email address). The value must be hashed using SHA-256 before being included in the tracking pixel/batch file (see Example hash scripts for more information). String
exttype Defines the user ID type. If you are supplying the user's email address then exttype=1. If you are supplying an internal user ID then exttype=0. An internal user ID is only to be used if you do not have access to the user's email address. Integer

Pixel Tracking

This is an example of a standard pixel supplying the user's email address:

<iframe src="https://tbs.tradedoubler.com/report?organization=12345&event=12345&orderNumber=12345&orderValue=10.99&currency=GBP&tduid=e0f15774d8d148963fd2df1bf9396d54&extid=f660ab912ec121d1b1e928a0bb4bc61b15f5ad44d5efdc4e1c92a25e99b8e44a&exttype=1&type=iframe" frameborder="0" width="1" height="1"></iframe>

This is an example of a PLT pixel supplying the user's email address:

<iframe src="https://tbs.tradedoubler.com/report?o(12345)event(12345)ordnum(12345)curr(GBP)tduid(2ce09b3278da9e51434039b6687d4117)enc(3)basket(pr(i(AB453%2D435)n(Ipod%20Nano%202gb)gr(25)v(100)q(1))pr(i(AD455%2D425)n(IPhone%2016gb)gr(46)v(300)q(2)))extid(f660ab912ec121d1b1e928a0bb4bc61b15f5ad44d5efdc4e1c92a25e99b8e44a)exttype(1)type(iframe)" frameborder="0" width="1" height="1"></iframe>

Example pixel scripts in various programming languages can be found on the Conversion Tracking page in the Supporting Material section.

Note: The extid value in these examples uses the email address test@test.com. You must replace the value with a valid extid before setting it live on your site. If a valid extid is not available you should leave it completely empty (e.g. extid=&exttype=1).

Offline Tracking

An example entry for a sale is as follows:

<?xml version="1.0"?>
<tradeDoublerStandard>
<checksum>ffd93f16876049265fbaef4da268dd0e</checksum>
<organizationId>12345</organizationId>
<sequenceNr>1</sequenceNr>
<numberOfTransactions>1</numberOfTransactions>
<transactions>
	<transaction>
		<eventId>5</eventId>
		<orderNumber>991235434CD542EF</orderNumber>
		<orderValue>5.10</orderValue>
		<currency>EUR</currency>
		<tduid>ec1f9f8a92729e79ff3019288de86ccd</tduid>
		<timestamp>2014-10-30 16:00:00</timestamp>
		<extid>f660ab912ec121d1b1e928a0bb4bc61b15f5ad44d5efdc4e1c92a25e99b8e44a</extid>
		<exttype>1</exttype>
	</transaction>
</transactions>
</tradeDoublerStandard>

More information on offline tracking can be found on the Conversion Tracking page in the Offline Tracking section.

Note: The extid value in this example uses the email address test@test.com. You must replace the value with a valid extid before setting it live on your site. If a valid extid is not available you should leave it completely empty (e.g. extid=&exttype=1).

API Integration

As well as reporting the email address after a conversion (lead/sale) has taken place, you can also send the data to Tradedoubler at other times. For example, when a user logs into your site but before they have completed a purchase. Doing so will increase the reach and speed at which you build connections between users and their devices.


This is an example of a standard API call to Tradedoubler:

https://tbs.tradedoubler.com/user?o=12345&extid=64f2d6b0c74c9f07beb8b8f983dab9a722bf813c204c6d8f0f742c57519ab6a7&exttype=1&verify=true

This is an example of an API call that includes the device ID:

https://tbs.tradedoubler.com/user?o=12345&extid=64f2d6b0c74c9f07beb8b8f983dab9a722bf813c204c6d8f0f742c57519ab6a7&exttype=1&deviceid=5cfd36631ee6481d4d1b8581f1c8a212edbcddac&verify=true
Note: The device ID should be included when no cookie is available (i.e. when the user is in-app).
Note: The extid value in these examples uses the email address test@test.com. You must replace the value with a valid extid before setting it live on your site. If a valid extid is not available you should leave it completely empty (e.g. extid=&exttype=1).

This tables shows the parameters for the service.

Name Description Type
extid The user's email address (i.e. the email address of the user currently logged into your site, not your own email address). The value must be hashed using SHA-256 before being included in the tracking pixel/batch file (see Example hash scripts for more information). String
exttype Defines the user ID type. If you are supplying the user's email address then exttype=1. If you are supplying an internal user ID then exttype=0. An internal user ID is only to be used if you do not have access to the user's email address. Integer
o Organisation ID (provided by Tradedoubler). Integer
deviceid If the user is in-app (where no cookie is available) the device ID should be included. If the user is in the web browser (where a cookie is available) this parameter should be removed/left empty. In this case Tradedoubler will access the cookie and collect the TDUID. String
verify Defines is the URL parameters should be verified. If false, a HTTP_OK response will always be returned. If true, the parameters will be verified and an appropriate response returned. Boolean

Hash Function

User privacy is extremely important so both Tradedoubler and it's partners need to take steps to protect it. As with all data sharing, advertisers are required to abide by applicable local legislation; this includes gaining the user's consent.

In addition to gaining the consent, Tradedoubler requires all user IDs (extid) to be hashed before being passed to Tradedoubler. This ensures that the data is anonymised before leaving your system and does not classify as PII (Personally Identifiable Information).

Tradedoubler have chosen to use the SHA-256 function for its advanced security features. Hashing is a one-way process meaning Tradedoubler or other partners can not decrypt the value and will never know the email address/user ID of the user.

Before passing the email address/user ID through the hash function you must ensure:

  1. The value is all in lower case
  2. There is no white space
  3. Any encoding (e.g. special characters) is done using UTF-8


Many programming languages provide built-in library support for SHA-256 hashing. Here are some examples.

Java

The Apache Common Codec offers a built in SHA-256 function in the DigestUtils class. Assuming the parameter name for the user's email address is email and we wanted to save the output to a parameter called hashed_email the hash function would be called as follows:

String hashed_email = org.apache.commons.codec.digest.DigestUtils.sha256Hex(email);

If you already include DigestUtils in the page (e.g. using import org.apache.commons.codec.digest.DigestUtils;) the above example can be shortened to the following:

String hashed_email = DigestUtils.sha256Hex(email);

PHP

PHP offers the following built in SHA-256 hash function:

string hash ('sha256', $data, false);

Assuming the parameter name for the user's email address is $email and we wanted to save the output to a parameter called $hashed_email the hash function would be called as follows:

$hashed_email ('sha256', $email, false);

Note that false ensures a hexidecimal output is returned rather than raw binary.


.NET

The .NET Framework offers a number of built in SHA-256 function in the SHA-256 Class of the System.Security.Cryptography namespace, including C#, C++ and VB.