Reference · GAM / DV360 / Xandr / Adform / Equativ · Click macros

Click Macros by Ad Server: The Token That Actually Expands

A creative's click only gets tracked if it carries the click macro the destination ad server knows how to expand. Ship a Google Ad Manager macro to Xandr and the platform serves it as literal text — the click reporting is simply lost. This is the token, per server, that works.

How to read this

Each ad server expands its own click token at serve time, substituting the real click-through URL. The token you need depends on where the macro sits in your tag:

A note on trust, stated the way our scanner states it: the Google Ad Manager tokens below are verified against GAM behavior. The DV360, Xandr, Adform, and Equativ tokens are derived from each platform's public documentation and are not independently GAM-verified — correct to the docs, but confirm in the destination platform before launch.

Google Ad Manager ✓ verified

Position Token
URL prefix / standalone %%CLICK_URL_UNESC%%
Nested in query param %%CLICK_URL_ESC%%
Double-nested %%CLICK_URL_ESC_ESC%%
Cachebuster %%CACHEBUSTER%%

DCM/CM360 INS tags use a data-dcm-click-tracker attribute instead — when it is filled, clicks are tracked through the Campaign Manager chain rather than a GAM macro.

Display & Video 360 (DV360) docs-derived

Position Token
URL prefix / standalone ${CLICK_URL}
Nested in query param ${CLICK_URL_ENC}
Double-nested ${CLICK_URL_ENC_ENC}
Cachebuster ${CACHEBUSTER}

Xandr / Microsoft Monetize docs-derived

Position Token
URL prefix / standalone ${CLICK_URL}
Nested in query param ${CLICK_URL_ENC}
Double-nested ${URL_ENC(${CLICK_URL},2)}
Cachebuster ${CACHEBUSTER} (or ${AUCTION_ID})

Monetize has no _ENC_ENC token — double encoding uses the URL_ENC function macro with an explicit encode count, as shown above.

Adform docs-derived

Position Token
URL prefix / standalone %%c1;cpdir=
Nested in query param %%ec1%3Bcpdir=
Double-nested no documented token — encode manually
Cachebuster __ADFRND__ (also __ADFTIMESTAMP__)

Adform's nested form manually percent-encodes the ;cpdir= separator (%3B) — the shape Adform's own nested-redirect examples use. Note the case-sensitive clickTAG variable name in the creative itself.

Equativ (Smart AdServer) docs-derived

Position Token
URL prefix / standalone [countgo]
Nested in query param [countgoEncoded]
Double-nested no documented token — encode manually
Cachebuster [timestamp]

[timestamp] is a real Equativ macro, so a tag already carrying it is cachebusted for this server — no separate cachebuster needed.

Paste a tag and pick the destination ad server. CreativeValidator tells you whether its click macro is native, a wrong-platform macro, an unfilled placeholder, or hardcoded — before it costs you a campaign's click data.

Check a tag's click truth →

The failure this prevents

The most expensive click mistake in ad ops is invisible: a tag that looks macro'd, passes a glance, and gets trafficked to the wrong platform — where the macro is never expanded and every click goes untracked. There is no error, just a hole in reporting. Matching the token to the destination server, every time, is the fix.