Campaign breakdown (UTM)

Coming soon. Web tracking isn't generally available yet — today it runs only on pages and forms published from the app. See Overview for what's live now.

If you tag your links — the ?utm_source=… bits you add to an ad, an email, or a social post — this is where you see which of them actually brought people to your page.

What you get

For any published web artifact, a table of your tags with two numbers each:

SourceVisitorsPageviews
google1,2031,890
newsletter412601

Visitors counts people; pageviews counts visits. One person who comes back three times is 1 visitor and 3 pageviews. The gap between the two columns is usually the more interesting number — a source with many pageviews per visitor is holding people's attention.

You can break down by any of the five standard tags: source, medium, campaign, content, or term.

Untagged traffic is shown separately

Most sites have plenty of visitors with no tags at all — someone who typed your address, clicked a bookmark, or followed a link you didn't tag. They are reported as untagged rather than hidden or lumped into a made-up "direct" row.

This matters more than it sounds. If untagged traffic were quietly dropped, a breakdown covering a third of your visitors would look exactly like one covering all of them, and you would have no way to tell. So the untagged count sits next to the table: if it is large, the table is describing a small slice of your traffic, and the fix is tagging more of your links.

Very large breakdowns are capped

If you generate a unique campaign tag per email — some tools do — you can end up with thousands of values. The table shows the top ones and reports the rest as a single "everything else" line, with a note that it was truncated. Nothing is silently discarded.

Counting across several artifacts

When you look at a campaign covering several pages, someone who read two of them from the same source counts as one visitor, not two.

This changed in July 2026. The previous analytics backend could only count one page at a time, so it added the per-page totals together and double-counted anyone who read more than one. If you kept a note of older figures, the new ones will be lower for multi-page campaigns — the traffic did not drop, the arithmetic got fixed.

Filtering to one campaign

The breakdown above answers "which campaigns"; you can also ask about one. Filtering an artifact's stats by a campaign narrows the visitor, pageview, bounce and time figures to the people that campaign brought in.

It follows the whole visit, not just the landing page. Your tags are only on the link someone clicked, so they are attached to the first page of the visit and nothing after it. If we filtered page by page, everyone would look like they read exactly one page and left — every campaign would show a bounce rate near 100%, and the time-on-page figures would stop the moment someone clicked through to a second page. So instead we identify the visits that arrived from the campaign, then count everything those people did.

The numbers won't add up, and that's correct

Add up the pageviews for every campaign and you will get more than the site total. That is not a bug. Someone who arrives from your spring campaign and then reads two untagged pages has all three pageviews counted toward spring — because the campaign is what brought them. Those same untagged pageviews also sit in your overall total.

So: use the campaign filter to answer "what did this campaign bring in?". Don't use it to work out "what share of my traffic was campaign X?" — the percentages will not be meaningful.

Where the tags come from

Whatever is in the link's query string when someone arrives. You add them yourself when you build the link; most ad and email tools can do it for you. Nothing needs configuring here — if the tags are on the link, they appear in the breakdown.

See also: Overview · Installing the script