Getting started
Testing with the link and postback testers
Trace a tracking link hop by hop, send a test postback, investigate any id, and use test mode without polluting reports or billing.
You should never have to guess why a click or conversion did not track. Four tools in the admin portal (Traffic and Insights menus) answer that, all backed by endpoints you can call yourself.
Test mode
Add test=1 to a link or a postback and the traffic is marked as test: it is recorded and shows in the logs with is_test set, so you can inspect every decision, but it is excluded from reports and is never posted to the ledger, so it cannot be paid or invoiced. The testers below add test=1 for you by default.
Link tester
Traffic, Link tester (POST /tools/link-test). Paste a tracking link or just a path such as /c/OFFER_HASH/PARTNER_HASH?sub1=x. The server requests it from the edge, follows up to 8 redirects that stay on your tracking domains, and shows each hop: status, Location, latency, and selected response headers (Set-Cookie, Cache-Control). The hop that leaves your domains is shown with its destination but never requested. Use it to confirm:
- the link resolves to the intended offer and partner (including legacy styles),
- macros in the destination URL come out as expected (for example
{click_id}and{sub1}), - rules, caps or fraud checks are not sending the traffic to a fallback.
Only your own tracking domains (or the configured default edge) are addressed; the tester cannot be pointed at arbitrary hosts. You can send User-Agent, Accept-Language, Referer, X-Forwarded-For and CF-IPCountry request headers to simulate a visitor.
curl -s -X POST $API/tools/link-test -H "Authorization: Bearer $DT_API_KEY" -H "Content-Type: application/json" \
-d '{"url":"/c/OFFER_HASH/PARTNER_HASH?sub1=demo","test":true}'
Postback tester
Traffic, Postback tester (POST /tools/postback-test). Provide the parameters of a postback (at least click_id or txn_id); the server sends it to ingest as a test and returns the request it made, the HTTP status, the latency and the parsed outcome (created, duplicate, rejected, unmatched, updated), the reason and the conversion_id.
curl -s -X POST $API/tools/postback-test -H "Authorization: Bearer $DT_API_KEY" -H "Content-Type: application/json" \
-d '{"params":{"click_id":"CLICK_ID","goal":"sale","txn_id":"T-1","amount":"49.90","currency":"USD"}}'
A rejected outcome carries the same reasons as live traffic, listed in tracking methods.
Investigator
Insights, Investigator finds anything from an identifier such as a click id, conversion id, transaction id, order id, IP address or email. It searches the last 12 months of clicks, conversions, inbound and outbound postbacks and the ledger entries they created, and lays the matches out as a trail from click to money.
Encode and macros
Traffic, Encode & macros (GET /tools/macros, POST /tools/encode, POST /tools/decode) lists the macro registry, previews how a template expands for sample values, converts a link between styles, and decodes a legacy link into canonical parameters.
Logs
Insights, Logs has four tabs: Clicks, Conversions, Postbacks out and Postbacks in. Each row opens an inspector with the raw request, the decision, the reason and the history of status changes. Incoming postbacks include the ones that never produced a conversion, which is usually where a missing conversion is explained.
Debugging checklist
- Click it with the link tester. Do you get a
302and anX-Click-Id? If the click is invalid, the click log showsinvalid_reason(for exampleoffer_inactive,blocked_partner,caps,duplicate,bot, or a rule reason). - Find the click in the log by
click_id. Is the destination what you expect after macro expansion? - Send the postback with the postback tester using that click id. Read
outcomeandreason. - If the real advertiser postback never shows in Postbacks in, the advertiser is not calling you: check their URL, firewall and the tracking domain's DNS and certificate in Traffic, Domains.
- If it shows but is
rejected, fix the reason (token, window, goal key, method).