Track users from click to conversion across multiple devices.
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
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 |
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.
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.
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
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 |
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:
Many programming languages provide built-in library support for SHA-256 hashing. Here are some examples.
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 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.
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.