Tempio

UTM builder

A UTM builder does one small thing carefully: it appends five labels to a destination URL so that the visits a link produces arrive in analytics already sorted. The labels are not tracking technology. They carry no identifier, set nothing on the visitor's machine and describe the link rather than the person who clicked it — which is exactly why they are worth getting right, because they are the only description of the click that survives the trip.

The page the ad sends people to, including https://.

Where the click came from: the ad platform, the newsletter, the partner site.

How it got there: cpc, paid_social, email, referral.

The campaign this spend belongs to, spelled the same way every time.

The keyword or the audience, on the channels where one applies.

Which creative or placement, when two of them share a campaign.

Tagged URL

Enter a destination URL to build the tagged link.

The five parameters, and what each is for

Source answers where the click came from. It names the property, not the tactic: the ad platform, the newsletter, the partner site, the podcast. It is the coarsest of the five and the one most often filled in with something too specific to aggregate later.

Medium answers how it got there. This is the channel type rather than the property: paid search, paid social, email, referral, affiliate. Analytics tools group by medium far more often than anybody expects, so a medium that varies from campaign to campaign quietly destroys the report that would otherwise have been useful.

Campaign answers which piece of work this spend belongs to. It should match the name the campaign has everywhere else — in the ad account, in the plan, in the invoice — because the whole value of the field is the join between the report and the money.

Term was designed for the keyword and is still used that way on search. On other channels it is the natural home for the audience or the segment, provided the meaning is written down somewhere other than in somebody's memory.

Content distinguishes two links that are otherwise identical: the image and the video, the first headline and the second, the banner and the footer link in the same email. It is what makes a creative comparison possible without a separate campaign for each variant.

The convention matters more than the tool

Any builder can append five parameters. What decides whether the report is readable a year from now is a convention that everybody follows, and there are only four rules worth enforcing.

One case. Lowercase everywhere. Most analytics tools compare these values as case-sensitive strings, so one capital letter is a second campaign in the report and a manual merge every month.

One separator. Hyphens or underscores, chosen once. A mixture produces spring-sale and spring_sale side by side, which looks like a typo and reads like two campaigns.

No spaces, no punctuation. A space is written as a plus sign, which analytics tools read back as a space, and a slash or a question mark inside a value is percent-encoded, so the label survives the trip but the report fills with escapes. Stick to letters, digits and the one separator.

A small, closed vocabulary for medium and source. These two are the grouping fields, and a grouping field with fifty values groups nothing. Write the permitted list down, put it where the people who build links can see it, and treat an unfamiliar value as a mistake rather than a new category.

The convention is worth writing down even in a one-person business, because the person who has to read the report in six months has forgotten which of the two spellings was the real one.

Where tagged links go wrong

Tagging internal links. A tagged link between two pages of your own site starts a new session and overwrites the original source, so the campaign that actually brought the visit disappears and the internal banner takes the credit. Tag links that arrive from elsewhere, never links that move somebody around inside the site.

Tagging a link the platform already tags. Most ad platforms can append their own parameters, and several append them by default. Doing both produces duplicated or conflicting values, and the one that wins depends on the order they land in. Decide which system owns the tagging and turn the other off.

Losing the parameters in a redirect. A short link, a consent wall or a country redirect that rebuilds the URL instead of forwarding it drops the query string, and the traffic arrives as direct with no trace of where it came from. Test the whole path from the ad to the destination, not just the destination.

Putting anything personal in a field. These values end up in analytics reports, in server logs and in the referrer header of the next request. An email address, a customer number or an order reference in a campaign parameter is that data leaking into three systems that were never meant to hold it.

Treating the tags as attribution. A tag records the last link somebody clicked. It says nothing about the three touches before it, and a report built purely on these five fields will credit the bottom of the funnel for everything the top of it started.

How this builder assembles the URL

The destination is parsed as a real URL before anything is appended, which has three consequences worth knowing. A destination that already carries a query string keeps it, and the parameters are added alongside rather than replacing it. A parameter that is already present is replaced rather than duplicated, so re-tagging a link that was tagged before does not produce two campaign values. And the encoding is the browser's own, so a value with an accent or an ampersand in it is escaped correctly rather than breaking the link quietly.

An address that is not yet a valid URL produces no output at all. Half a URL with five parameters on the end is not a link anybody should paste into an ad, and returning one would be the tool's single most expensive failure mode.

Every field is optional except the destination. A link tagged with a source and a medium and nothing else is a perfectly good link, and five fields filled in for the sake of filling them in is how a report ends up with a hundred campaign values that mean nothing.

A short checklist before you paste

Read the assembled link once. Does the campaign value match the name the campaign has in the ad account? Is every value lowercase, with one separator and no spaces? Does the medium come from the short list your reports group by? Does the destination resolve without a redirect that would drop the query string? Is there anything in any field that describes a person rather than a link?

Five seconds of that, once per campaign, is the difference between a report that answers a question and a report that has to be cleaned before it can be read.

Questions

More free tools

Put frontier AI to work on every ad account you run.

Tempio connects your ad accounts into one workspace and hands your own AI the numbers and the tools. Every change it writes is a draft until you approve it, or until a rule you wrote does.

Request early access
  • Read and draft by default. Approve is a separate permission you grant.