Reference · The Trade Desk · Click macros

The Trade Desk Click Macros: %%TTD_CLK%%

The Trade Desk is the exception in this series: its click macro is inserted by the platform, not by you. TTD adds %%TTD_CLK%% itself for supported third-party ad servers — so the right trafficker move is usually to add nothing. Here is what the tokens mean and why CreativeValidator treats them as recognition-only.

The tokens — and who inserts them

Role / position Token Inserted by
Standard click wrapper (head of the redirect chain) %%TTD_CLK%% The Trade Desk, automatically, for supported third-party ad servers
Escaped fallback %%TTD_CLICK_ESC%% Documented fallback when the normal macro does not click through
Multi-escape forms %%TTD_CLK_ESC3%% and similar Deeper escape levels; same platform-side story
Cachebuster No documented TTD cachebuster macro

Note what's missing from the third column: the trafficker. There is no documented trafficker-side insertion for any of these tokens. Where a GAM or Adform tag needs you to place the macro at the right position and encoding level, The Trade Desk wraps clicks itself — hand-inserting %%TTD_CLK%% into a creative is working against the platform, not with it.

What you should actually traffic

<!-- Do NOT hand-insert TTD macros into a creative tag: -->
<!-- <a href="%%TTD_CLK%%https://example.com/landing"> ... </a>   ← wrong -->

<!-- RIGHT: traffic the tag exactly as your ad server exported it. For
     supported third-party ad servers, The Trade Desk adds %%TTD_CLK%%
     itself at serve time — there is no documented trafficker-side insertion. -->
<ins class="dcmads" style="display:inline-block;width:300px;height:250px"
     data-dcm-network="1234:5678"
     data-dcm-placement="N1234.567890EXAMPLE"
     data-dcm-rendering-mode="script"
     data-dcm-https-only>
  <script src="https://www.googletagservices.com/dcm/dcmads.js"></script>
</ins>

If clicks fail to track on TTD, the documented fallback is %%TTD_CLICK_ESC%% — "when the normal macro does not click through" is the platform's own framing — with multi-escape forms like %%TTD_CLK_ESC3%% existing for deeper escape levels. That is a troubleshooting path inside The Trade Desk's own tooling, not a token to sprinkle into creatives preemptively.

The wrong-platform trap

TTD tokens are only meaningful where The Trade Desk serves the creative. Paste %%TTD_CLK%% into a tag destined for Google Ad Manager, Adform, or Equativ and the destination serves it as literal text — the browser navigates to a URL that literally begins with the token, and click reporting is silently lost. CreativeValidator classifies TTD tokens as native on The Trade Desk and WRONG PLATFORM MACRO everywhere else. And in the TTD direction the validator fails closed: it recognizes these tokens but never proposes inserting them, because no trafficker-side insertion is documented.

Source and verification

Primary source: The Trade Desk Creative Connector documentation. This page is docs-derived: correct to The Trade Desk's published partner documentation, but not behaviorally verified the way CreativeValidator's Google Ad Manager tokens are (those ran through a live GAM test network).

Paste your tag — the validator renders it and tells you if clicks will actually track: native macro, unfilled placeholder, wrong-platform token, or hardcoded URL.

Check a tag before trafficking →

Every rule cites its primary source — see the Policy Studio.

FAQ

Do I need to add %%TTD_CLK%% to my creative before trafficking to The Trade Desk?

No. TTD adds %%TTD_CLK%% itself for supported third-party ad servers — the platform wraps clicks on its own. Traffic the tag exactly as your ad server issued it.

What is %%TTD_CLICK_ESC%% for?

It is the documented fallback when the normal macro does not click through. Multi-escape forms such as %%TTD_CLK_ESC3%% also exist.

Does The Trade Desk have a cachebuster macro?

No — there is no documented TTD cachebuster macro.

Why does CreativeValidator never propose inserting TTD macros?

Because no trafficker-side insertion is documented, the validator fails closed: TTD tokens are recognized (native on TTD, wrong-platform elsewhere) but never proposed as an insertion.