Skip to content
UTMCAP

Features

What happens to a click, in order.

It arrives, it is described, it is scored, it is sent somewhere, and later something it caused is tied back to it. Each of those is a thing you can change.

One click, in order · example

  1. 1

    Arrives

    utm_source=meta · 12:04:31

  2. 2

    Described

    iPhone · Safari · Germany

  3. 3

    Scored

    Bot score 0.02 · human

  4. 4

    Sent

    Offer B · answered in 23 ms

  5. 5

    Tied back

    Sale $48.00 · 9 hours later

The redirect

Answered at the edge, decided by one engine.

The redirect runs on Cloudflare’s network, close to whoever clicked. The same decision code also runs on the origin, so the two cannot disagree about where a visitor goes — the edge is a place the engine runs, not a second implementation of it.

One click, through the edge

Visitor

clicks your ad

Cloudflare edge

the city nearest them

Offer

where they were sent

Median answer this week, 45 countries

57 ms

The same decision code runs on our server, so the edge and the origin cannot disagree about where a visitor goes.

Your own domains

A subdomain of yours, CNAMEd to us, with the certificate issued for you once the record resolves. Apex domains work too, by A record.

Per-domain rules

Crawler handling, an HTTPS upgrade before anything is recorded, whether the domain root answers at all — set per domain, not once for the account.

Parallel tracking

Google and Microsoft both require it and both mean something slightly different by it. Both are supported, and documented.

Tokens filled in

The tracking URL comes with the placeholders that network uses, so you paste one string rather than assembling it.

A page-view tag

One script on the lander ties the visit to the click that paid for it, without a second identifier to keep in step.

Nothing to keep running

No process of yours sits in the redirect path, and none of it depends on your lander being up.

The description

Ten things known about a click before it lands.

Resolved as the click passes, from data files on our own machines rather than from headers a middlebox may or may not have set. Which source answers which field is a choice, field by field — a city from one database and an ISP from another is a normal configuration, not a workaround.

  • Country
  • Region
  • City
  • ISP
  • ASN
  • Device, browser and OS
  • Datacentre or residential
  • Connection type
  • Mobile operator
  • Proxy

Page views land against the click that caused them and are joined to the campaign at read time, so a lander that beacons a second after the redirect is still attributed correctly.

The record

Every click, as it was recorded.

A sale lands on the click that earned it. The row keeps what the click cost and what the network paid for it, with the status the network sent — so a disputed number is one search for a click id away, not an argument about totals.

The clicks log narrowed to converted clicks: a row per click with its time, click id, campaign, hop and cost, an Approved status, and the revenue the network paid for it.
The clicks log. Every row keeps its click id, so a postback arriving days later still finds it.

The scoring

Bot filtering with the dial exposed.

Not a list you are either on or off. Each signal contributes to a score, the threshold is yours to set, and any signal that is wrong for your traffic can be switched off — with two exceptions, because a request pretending to be a search engine and a browser being driven by software are not judgement calls.

One click, scored · example

  • Crawler impersonation0
  • Headless browser0
  • Datacentre address+45
  • User agent anomalies+30
  • Tor exit node0
Score75 / your threshold 60

Filtered. Reason kept, in words: datacentre address, user agent anomalies.

Crawler impersonation

Always on

A request claiming to be Googlebot from an address Google does not publish. Verified against the ranges each search engine publishes, refreshed daily.

Headless browser

Always on

The tells a browser leaves when it is being driven rather than used.

Datacentre address

The click came from hosting, not from a home or a phone network.

Known crawler

A declared, verified crawler. Usually worth recording and not paying for.

Tor exit node

Refreshed daily from the published list.

User agent anomalies

Combinations of claims that no real client makes.

Every filtered click keeps the reason it was filtered, in words, so a disagreement with an ad network is a thing you can answer with specifics rather than with a total.

The money

What it cost, and what it earned.

A campaign carries a cost model — a flat cost per click, a share of revenue, a fixed amount, or a cost passed in the URL. Conversions arrive by postback from the network or from the tag on your own pages.

Keto offer · native · example

last 7 days

Cost$184.20
Revenue$306.00

Profit

+$121.80

ROI

66%

Cost models

Set per campaign, so a CPC buy and a revenue-share deal can sit in the same account and both report correctly.

A ceiling on cost

Because the URL is public, a cost arriving in it is treated as a claim rather than a fact.

Conversions

Postbacks from affiliate networks, with the field mapping already written for the common ones, or a call from your own thank-you page.

The Copilot

It reads the numbers every morning. You decide.

The Copilot goes through every campaign’s last seven days and says what to block, what to scale and what is broken — and nothing until there is enough data to be sure. Ask it anything about your tracking in plain words. It prepares changes; it never makes one until you press the button.

The Copilot's suggestions, filtered into Losing money and Winners: blocking ISPs that lost money on a Casino campaign and an Auto Insurance campaign, and an ISP converting at 1.6 times the campaign average, each with spend, clicks, conversions, ROI and payout, and buttons to act, snooze or dismiss.
The Copilot after a morning's read: eight suggestions, each with the figures behind it. Sample account.

Suggestions each morning

The zone losing money, the split test with a winner, the campaign to pause, the segment worth scaling — each with the figures behind it.

Tracking health

A macro the traffic source never filled in, clicks without their click id, a landing page that stopped sending clicks on, conversions that stopped arriving.

Apply, then Undo

One click on the paid plans. Every change is logged under Recent changes, and Undo puts it back.

Ask it

Why ROI dropped, which zones to stop, how to send conversions back to Taboola — answered from your own reports and setup, and the help pages.

It prepares, you press

Ask it to fix something and it puts the change on a card with the figures. Nothing changes until you press Apply.

Your AI or ours

Connect your own Anthropic, OpenAI, Google Gemini or OpenRouter key on any plan, or use the built-in AI on Growth and above.

The AI sees one account’s grouped figures and names — never a visitor’s IP address, a click id or your keys — and keeps to tracking.

Working with others

Accounts, invitations and goals.

A team joins by invitation and each person has their own login, which is the only arrangement in which an audit trail means anything. Measurement goals sit alongside: a site, a key, and the events on it that count as progress.

Four roles

AdminMemberContributorViewer

A contributor manages only what they created; a viewer can read and nothing else. Enforced in the API, not just hidden on screen.

Invitations

By email, to a role, revocable.

Sessions and two-factor

Signed-in devices are listed and can be revoked one by one, and each person can require a code from an authenticator app at sign-in.

Goals and sites

Name what counts as a conversion on your own properties. On the paid plans; conversions arriving by postback work on every plan, including the free one.

Usage in the open

The plan screen reads the same counter the limiter reads, so the two cannot disagree.

Being built

Named here so you can plan around it.

These are not shipped. They are listed because finding out after you have moved your campaigns over is worse.

  • Coming

    Copilot changes inside ad networks

    Blocking zones, sites and widgets, bids, budgets, negative keywords and pausing — built for PropellerAds, Google Ads, Microsoft Advertising, Taboola, Outbrain, MGID, Adsterra, ExoClick, TrafficJunky and TikTok, and switched on one network at a time once tried on a real account.

  • Coming

    Cost sync for Meta and TikTok

    Both wait on the platform to approve our app. Google Ads, Microsoft Ads, TrafficJunky, NewsBreak, Adsterra and the other key-based networks sync spend today.

  • Coming

    Alerts that leave the app

    Today they are computed and shown in the app. Email and push are next.

Anything above unclear? Ask us.

Point a domain at us and run a click through it.

The free plan takes a hundred thousand clicks a month and no card. If it does not do what you need, you have lost twenty minutes.