Clicktag UTM tracking
Free UTM tracking: see which campaigns bring visitors and signups
Clicktag is a free UTM tracking tool that shows which campaigns bring visitors and conversions. Install one 4 KB script with no cookies and no credit card, filter by source, medium and campaign, and set up to 50 goals across up to 50 websites.
You track UTM campaigns by adding utm_source, utm_medium and utm_campaign query parameters to the URLs you share in emails, ads and posts, and installing an analytics script on your site to read them when visitors land. Clicktag records those parameters automatically with one 4 KB script, sets no cookies, and breaks down your traffic and goal conversions by campaign for free.
How to set up UTM tracking in 3 steps
- Tag your campaign links. Add
utm_source,utm_mediumandutm_campaignto the URLs you share in newsletters, social posts, partner links or ads. If you need help choosing names and building URLs, read our guide to UTM parameters. - Install the Clicktag script. Sign in at clicktag.app with a Google account, open Site settings > Installation, and copy the async
latest.jsscript tag into your site's HTML. It is about 4 KB compressed, needs no npm package, and works with plain HTML, React with Vite and the Next.js App Router. - Verify your site. Clicktag checks that your homepage HTML includes the script with its
data-verifytoken before storing data. If your site injects the tag only with client-side JavaScript, verify with a DNS TXT record or a file under/.well-known/instead.
Once verified, hits show up on the Live tab, usually within a second.
How campaign links appear in Clicktag
When someone clicks a tagged link, Clicktag reads the query string on arrival. For the main traffic sources report, Clicktag prefers utm_source first, then the source or ref query parameter, and falls back to the referring hostname if no parameter is present.
| Tagged URL shared in your campaign | Source (referrers) |
UTM Source (utm_sources) |
UTM Medium (utm_mediums) |
UTM Campaign (utm_campaigns) |
|---|---|---|---|---|
example.com/?utm_source=newsletter&utm_medium=email&utm_campaign=oct_launch |
newsletter |
newsletter |
email |
oct_launch |
example.com/pricing?utm_source=linkedin&utm_medium=cpc&utm_campaign=q4_saas |
linkedin |
linkedin |
cpc |
q4_saas |
example.com/?utm_source=chatgpt.com |
chatgpt.com |
chatgpt.com |
(omitted) | (omitted) |
example.com/blog?ref=partner_digest (clicked from partner.org) |
partner_digest |
partner_digest |
(omitted) | (omitted) |
example.com/ (no UTM, no referrer, e.g., typed or untagged email) |
Direct / none |
(omitted) | (omitted) | (omitted) |
Notice how utm_source=chatgpt.com works: ChatGPT adds that parameter to links it shows in answers, and Clicktag reads utm_source first, so those visits appear under chatgpt.com instead of getting lost in Direct / none.
Reading your UTM reports and filtering campaigns
Your dashboard breaks campaign traffic down into three dedicated dimensions:
- UTM source (
utm_sources): who sent the traffic, such asnewsletter,linkedinorpartner_blog. - UTM medium (
utm_mediums): the channel type, such asemail,cpcorsocial. - UTM campaign (
utm_campaigns): the specific promotion or launch, such asoct_launchorblack_friday.
Each row shows both pageviews and distinct daily visitors. To rank campaigns by how surely they grew compared to the previous period, pass sort=rising to the breakdown API.
You can stack up to 12 filters at once on your reports. Filter the dashboard by a campaign like oct_launch, then look at your pages, sources, countries, devices, browsers and operating systems to see what people from that specific campaign read and where they came from.
In goal breakdowns, each visitor is counted under the UTM parameters of their first pageview that UTC day, without cookies or local storage.
If you want to pull campaign numbers into your own scripts or internal tools, you can query the Stats API over HTTPS for any range up to 400 days:
curl --fail-with-body --silent --show-error --max-time 20 --get \
'https://clicktag.io/api/sites/demo.bitgate.dev/breakdown' \
--data-urlencode 'dim=pages' \
--data-urlencode 'f=utm_campaign:oct_launch'
See which campaigns bring signups and conversions
Traffic numbers alone don't tell you if an ad or newsletter worked. You need to know if those visitors signed up or reached a key page.
Open your site in Clicktag, choose the Goals tab and click New goal. You can set up to 50 goals and funnels combined per site. Every step matches either:
- Page: a pageview path using
is,starts withorcontains(for example/welcomeor/thank-you). - Event: a custom event you fire from the browser with
window.tt_event("signup_completed").
Goals are computed from data you already collect, so a new goal created today includes your past campaigns too.
Click any goal in the Goals tab to break its visitors and converted visitors down by utm_source, utm_medium, utm_campaign, referrer, entry page or country. You can also build a 2 to 6 step funnel (for example, visiting /pricing and then firing signup_completed on the same UTC day) and filter or break it down by campaign to see where visitors drop off.
You can see how source breakdowns look with sample data on the demo.
Weekly email reports and traffic alerts
You don't have to log in every day while a campaign is running. Clicktag sends scheduled email traffic reports to up to 25 recipients per site at the hour you pick in your local time. Breakout alerts are on by default and email you when a source or page reaches at least 20 visitors in 24 hours and at least doubles against both the day before and the same day a week earlier, such as when a newsletter goes out or a shared link picks up traction.
FAQ
Does Clicktag track utm_term and utm_content?
Clicktag stores them, but utm_term and utm_content are not report or API breakdown dimensions. Reports cover utm_source, utm_medium and utm_campaign, plus source and ref in the main referrers list.
How does Clicktag attribute conversions to a UTM campaign without cookies?
Clicktag counts visitors using a daily salted SHA-256 hash, and deletes the salt once each UTC day ends. When a visitor completes a goal or a 2 to 6 step funnel on the same UTC day, they are counted under the utm_source, utm_medium and utm_campaign of their first pageview that day. Visits on different UTC days are not linked.
Can I track revenue or ad spend per campaign?
No. Clicktag does not track revenue, order values or ecommerce carts, and it does not import ad spend. It measures visitors, pageviews, custom events, goals and conversion rates.
Why do some email or social clicks show up as Direct / none?
When a link has no utm_source, source or ref parameter, Clicktag looks at the HTTP Referer header. Many email clients, mobile apps and private messaging tools strip that header, so untagged clicks from them arrive with no referrer and no UTM and are grouped under Direct / none. Tagging your campaign URLs fixes this.
Can I attach UTM campaign data to server-side events?
Browser events sent with window.tt_event(name, metadata, callback) share the visitor's daily identity, so they inherit the first pageview's UTM parameters in goal breakdowns. Backend events sent with POST /events from your server get an identity built from your server's IP address instead of the visitor's, so they cannot inherit the visitor's referrer, entry page or UTM campaign.
Updated October 30, 2026