Tradedoubler
Tradedoubler is an affiliate marketing network. When a user clicks a publisher link, Tradedoubler redirects them to your site and appends a tduid (Tradedoubler Unique ID) to the landing-page URL. To credit the publisher for a resulting sale or lead, you report the conversion back to Tradedoubler’s tracking endpoint with that same tduid.
Datafly Signal does this server-to-server. The Signal SDK captures the tduid from the landing-page URL and stores it as a first-party identifier, then Signal replays it on the conversion event from your own server. No client-side Tradedoubler pixel is required, so the conversion is reported even when third-party cookies or browser pixels are blocked.
Prerequisites
- A Tradedoubler advertiser account with at least one active program.
- Your Organization ID (advertiser org id), supplied by Tradedoubler.
- The Event ID for sale conversions, and (if you track leads) the Event ID for lead conversions. Both are listed in your Tradedoubler advertiser account under the program’s tracking events.
- The Signal SDK (Datafly.js) installed on your site so the
tduidURL parameter is captured on the affiliate landing page and persisted as a first-party identifier.
Configuration
| Field | Required | Description |
|---|---|---|
| Organization ID | Yes | Your Tradedoubler advertiser organization ID. |
| Sale Event ID | Yes | The Tradedoubler event ID for sale conversions. |
| Lead Event ID | No | The Tradedoubler event ID for lead conversions. Only needed if you report leads. |
| Checksum | No | Optional fraud-protection checksum. Leave blank unless Tradedoubler has enabled checksum validation for your program. |
Configure in Signal
- In Management UI, open Integrations and add Tradedoubler.
- Enter your Organization ID and Sale Event ID (and Lead Event ID if you report leads).
- Attach the Tradedoubler blueprint to your pipeline and choose the Retail preset.
- Confirm the
tduididentifier is being captured. The SDK reads it from the landing-page URL automatically; you can verify it in the Event Debugger under the event’s vendor identifiers.
API Endpoint
Signal sends a GET request with all parameters on the query string. There is no request body.
- Sales:
https://tbs.tradedoubler.com/report - Leads:
https://tbl.tradedoubler.com/report
Authentication is by the organization and event parameters rather than an API token. Attribution depends on the tduid, which must have been captured on the affiliate landing page.
Identity Signals
| Parameter | Source | Notes |
|---|---|---|
tduid | First-party identifier captured by the SDK from the landing-page URL | Primary attribution key. Required — without it the conversion cannot be credited to a publisher. |
extid | SHA-256 hash of the user’s email (lowercased and trimmed first) | Enables Tradedoubler’s deterministic cross-device matching. |
exttype | Static 1 | Tells Tradedoubler that extid is a hashed email (0 would be an internal user id). |
Email is never sent in clear text. Signal hashes it with the standard normalised SHA-256 transform (trim, lowercase, then SHA-256) before it leaves your infrastructure.
Event Mapping
| Signal event | Endpoint | Tradedoubler conversion |
|---|---|---|
Order Completed | tbs.tradedoubler.com | Sale |
Lead Generated | tbl.tradedoubler.com | Lead |
Signed Up | tbl.tradedoubler.com | Lead |
All other events are dropped.
Example: Order Completed
Datafly.js call on your purchase confirmation page:
datafly.track("Order Completed", {
order_id: "A-10042",
revenue: 89.97,
currency: "GBP",
coupon: "WELCOME10",
products: [
{ sku: "SKU-1", product_name: "Wool Scarf", price: 29.99, quantity: 1 },
{ sku: "SKU-2", product_name: "Leather Gloves", price: 29.99, quantity: 2 }
]
});Resulting server-to-server request from Signal (parameters URL-encoded; shown decoded for clarity):
GET https://tbs.tradedoubler.com/report
?organization=12345
&event=67890
&orderNumber=A-10042
&orderValue=89.97
¤cy=GBP
&voucher=WELCOME10
&tduid=e0f15774d8d148963fd2df1bf9396d54
&extid=f660ab912ec121d1b1e928a0bb4bc61b15f5ad44d5efdc4e1c92a25e99b8e44a
&exttype=1
&event_time=2026-06-06 14:22:05
&cons=true
&reportInfo=f1=SKU-1&f2=Wool Scarf&f3=29.99&f4=1|f1=SKU-2&f2=Leather Gloves&f3=29.99&f4=2reportInfo is a pipe-delimited list of products, one per line item, with f1 = product number, f2 = name, f3 = single-item value, and f4 = quantity. Use a dot as the decimal separator; Signal URL-encodes the whole string in UTF-8.
Testing
- Click through one of your Tradedoubler publisher links so Tradedoubler appends
?tduid=...to your landing page, then confirm the SDK captured it (Event Debugger > vendor identifiers). - Complete a test purchase and find the
Order Completedevent in the Event Debugger. - Check the outbound request to
tbs.tradedoubler.com/reportreturned200and thattduid,orderNumber,orderValue, andeventare present. - Confirm the transaction appears in your Tradedoubler advertiser reporting (it may be in a pending state pending validation).
Troubleshooting
- Conversion not attributed to a publisher. The
tduidwas missing or empty. It must be captured on the affiliate landing page and persisted before the conversion fires. Direct or organic traffic has notduidand is not credited, which is expected. 400response. A required parameter (organization,event,orderNumber, ororderValuefor sales) is missing or malformed. Order value must use a dot as the decimal separator with no thousand separators.404response. Theorganizationoreventid is wrong. Re-check both against your Tradedoubler advertiser account.- Lead conversions not arriving. Set the Lead Event ID in the integration config;
Lead GeneratedandSigned Uproute to the lead endpoint and need their own event id. - Duplicate conversions. Tradedoubler de-duplicates on
orderNumber. Ensure each order reports a uniqueorder_id.