clickTag Explained: How Clicks Work in HTML5 Banners (Google Ads, CM360/DV360, Adform, DSPs)
BannerPeek · September 15, 2026
If you have ever had a banner bounced with "clickTag missing" or "clickTag not readable", this is the whole story in one page.
What a clickTag is
A banner does not know where it will send people. The landing page is decided by the trafficker in the ad server, per campaign, per placement, often with tracking parameters appended, and it changes without anyone rebuilding the creative.
So the ad server needs a hook: a variable in your banner that it can overwrite at serve time with the real destination. That variable is the clickTag. Your code opens whatever is in the variable; the ad server fills the variable. If you hard-code https://example.com/spring-sale in an <a href>, the ad server can't change it, the clicks aren't tracked, and the creative is rejected.
That's it. Everything else is platform-specific spelling.
Google Ads (self-serve)
Google Ads is the exception: you don't need a clickTag at all. Google wraps the whole ad in a clickable layer and handles the destination from the ad settings. Do not add your own click handler; it can interfere. If you need multiple exits or a custom exit, use Google's optional ExitApi:
<script src="https://tpc.googlesyndication.com/pagead/gadgets/html5/api/exitapi.js"></script>
<script>
document.getElementById('cta').addEventListener('click', function () {
ExitApi.exit();
});
</script>
For a normal banner, skip it and let Google make the ad clickable.
Campaign Manager 360, most DSPs (The Trade Desk, Xandr, Amazon DSP, and others)
This is the "standard" clickTag, and the one to build by default when the brief doesn't say otherwise:
<!doctype html>
<html>
<head>
<meta name="ad.size" content="width=300,height=250">
<script>
var clickTag = "https://www.example.com"; // fallback for local testing only
</script>
</head>
<body>
<div id="banner" style="width:300px;height:250px;cursor:pointer;">
<!-- creative -->
</div>
<script>
document.getElementById('banner').addEventListener('click', function () {
window.open(window.clickTag, '_blank');
});
</script>
</body>
</html>
Rules that validators check:
- The variable is named exactly
clickTag(lowercase c, uppercase T), declared globally, near the top of the file, as a plain string. Validators literally scan the source forvar clickTag =. - The click opens
window.clickTagat click time, not a copy you took earlier (the ad server may inject the value after your script ran). - Use
window.open(..., '_blank'); don'tlocation.hrefthe iframe. - One clickTag per banner unless the brief asks for several (
clickTag,clickTag2, ...).
DV360 / Studio with Enabler (Google's rich media library)
If you build with Google Web Designer or Studio, the click goes through the Enabler, not a variable:
<script src="https://s0.2mdn.net/ads/studio/Enabler.js"></script>
<script>
function init() {
document.getElementById('banner').addEventListener('click', function () {
Enabler.exit('Main Exit');
});
}
if (Enabler.isInitialized()) init();
else Enabler.addEventListener(studio.events.StudioEvent.INIT, init);
</script>
The exit name ("Main Exit") is what the trafficker maps to a URL in Studio. You can have several named exits for multiple destinations. Google Web Designer generates this for you when you add a Tap Area with an Exit event.
Adform: clickTAG + manifest.json
Adform spells it clickTAG and wants every click declared in a manifest.json in the zip root:
{
"version": "1.0",
"title": "Spring 300x250",
"width": "300",
"height": "250",
"clicktags": {
"clickTAG": "https://www.example.com"
},
"source": "300x250.html"
}
Then in the HTML, include the Adform DHTML library and read the value with dhtml.getVar:
<head>
<script src="https://s1.adform.net/banners/scripts/rmb/Adform.DHTML.js"></script>
</head>
<body>
<div id="banner"><!-- creative --></div>
<script>
var clickTAGvalue = dhtml.getVar('clickTAG', 'https://www.example.com');
document.getElementById('banner').addEventListener('click', function () {
window.open(clickTAGvalue, '_blank');
});
</script>
</body>
Multiple destinations: add clickTAG2, clickTAG3 to both the manifest and the code. Adform parses the manifest to know how many clicks to expect; a click in code that isn't in the manifest is invisible to the trafficker.
Legacy: Sizmek EB.clickthrough()
You will still find it in old templates. Amazon Ad Server (formerly Sizmek) was shut down at the end of 2024; there is nowhere to serve that code anymore. Replace it with the CM360-style clickTag.
The two mistakes behind 90% of rejections
- Hard-coded URL. An
<a href="https://...">anywhere in the banner. Even if you also have a clickTag, the validator sees a link that bypasses tracking and rejects. - Wrong spelling.
clicktag,ClickTag,click_tag, or Adform'sclickTAGsent to a CM360 placement. The variable is read by string match; spelling is the API.
Test before you send
You can't see a clickTag work locally, because nothing fills the variable. What you can check: click the banner, and confirm it opens the fallback URL in a new tab and that the console has no errors. If it opens nothing, or opens undefined, the variable isn't wired. (BannerPeek is adding a clickTag check to the preview page: click the banner and see which URL it would fire, or "no clickTag" if none. It's on the roadmap; see the comparison with Adpiler for what's live today.)
For the full weight, file count and format rules per platform, see HTML5 banner specs 2026.
Related reading
- Ad creative naming conventions — how to deliver files under the agency's taxonomy without renaming them by hand.
Related articles
- HTML5 Banner Specs 2026: Google Ads, CM360/DV360, Adform, Amazon DSP, The Trade Desk
The HTML5 banner requirements that actually matter in 2026, per platform: zip size, file count, clickTag method, ad.size meta tag, animation length, what is banned. One page to check before you export.
- How to Share Google Web Designer Banners with Clients for Review
Google Web Designer can make a shareable preview link, but only one ad per link, only for some ad environments, and with no comments or approvals. Here is what it does, where it stops, and how to send a whole GWD campaign to a client as one link.
- Mobile Banner Ad Sizes 2026: 320×50, 320×100, 300×250 and 320×480 (Drawn at Actual Size)
The mobile banner sizes that still get bought in 2026, drawn at their real pixel size: 320×50, 320×100, 300×50, 300×250 and the 320×480 interstitial. What each is for, how to design text that survives 50 pixels, retina exports, weight limits, and which set to build.
Share your next campaign with one link
HTML5, image and video banners on one preview page, with pinned comments and approvals. Free while in early access.