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
Arrives
utm_source=meta · 12:04:31
- 2
Described
iPhone · Safari · Germany
- 3
Scored
Bot score 0.02 · human
- 4
Sent
Offer B · answered in 23 ms
- 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 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
Filtered. Reason kept, in words: datacentre address, user agent anomalies.
Crawler impersonation
Always onA 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 onThe 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
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.

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
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.