Reference · Adform · Click macros

Adform Click Macros: %%c1 and %%ec1

Adform's click macro doesn't look like anyone else's: the token and its ;cpdir= separator travel together, and the nested form pre-encodes that separator by hand. Two tokens, two positions — here is which goes where, derived from Adform's third-party tag documentation.

The tokens, by position

Position in the tag Token Encoding
URL prefix (directly before the landing URL) or standalone click value %%c1;cpdir= None
Nested inside a URL query-param value %%ec1%3Bcpdir= Separator manually percent-encoded
Nested two redirects deep (double encoding) No documented token — JS-encode manually
Cachebuster __ADFRND__

The prefix form is %%c1;cpdir= followed immediately by the landing URL. In the nested form, %%ec1%3Bcpdir=, the ; separator is manually percent-encoded as %3B — exactly the shape Adform's own nested-redirect examples use, because the whole macro is riding inside another URL's query string. Alongside __ADFRND__, CreativeValidator also recognizes __ADFTIMESTAMP__, %%ADFRND%%, and %%ADFTimeStamp as Adform cachebusters.

A correct Adform tag

<!-- Image creative trafficked to Adform:
     %%c1;cpdir= as the URL prefix, right before the landing URL -->
<a href="%%c1;cpdir=https://example.com/fall-catalog" target="_blank">
  <img src="https://cdn.example.com/creatives/fall-300x250.jpg"
       width="300" height="250" border="0" alt="Fall Catalog" />
</a>

<!-- Click URL nested in another URL's query string: the encoded ec1 form,
     with the nested landing URL percent-encoded as any nested URL must be -->
<a href="https://redirect.example.net/go?u=%%ec1%3Bcpdir=https%3A%2F%2Fexample.com%2Ffall-catalog&amp;rnd=__ADFRND__">...</a>

The wrong-platform trap

Adform expands only its own tokens. Paste GAM's %%CLICK_URL_UNESC%%, a DV360/Xandr ${CLICK_URL}, or Equativ's [countgo] into a tag destined for Adform and the platform serves the token as literal text: the ad renders, the landing page usually loads, and click reporting is silently lost — there is no error to catch, only a reporting gap discovered weeks later. CreativeValidator classifies any foreign click token as WRONG PLATFORM MACRO before the tag is trafficked.

Source and verification

Primary source: Adform documentation, "Guide to Third-Party Tags in Adform". These tokens are docs-derived: correct to Adform's published documentation, but not behaviorally verified the way CreativeValidator's Google Ad Manager tokens are (those ran through a live GAM test network). Confirm in Adform before launch.

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.

Test an Adform tag now →

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

FAQ

What does %%c1;cpdir= do in an Adform tag?

It is Adform's click macro in its URL-prefix / standalone form: placed immediately before the landing URL, it expands into the click-tracking redirect so the click is counted before the browser reaches the destination.

When do I use %%ec1%3Bcpdir= instead?

When the click URL is nested inside another URL's query parameter. The ; separator is manually percent-encoded (%3B) — the form Adform's own nested-redirect examples use.

Does Adform have a double-encoded click macro?

No — there is no documented double-encoded token. When a click URL sits two redirects deep, JS-encode it manually.

What is Adform's cachebuster macro?

__ADFRND__. Also recognized: __ADFTIMESTAMP__, %%ADFRND%%, and %%ADFTimeStamp.