Website Analytics

How to Measure Marketing Campaigns Without Cookies

You do not need to identify anyone to know which campaign worked. Here is how to measure campaigns with tagged links and server-side counting instead of cookies.

On this page
  1. What You Are Actually Trying to Learn
  2. Step 1: Tag Every Link
  3. Step 2: One Redirect Per Campaign
  4. Step 3: Define One Conversion
  5. What You Give Up, Honestly
  6. Compare Like With Like
  7. A Setup You Can Build This Afternoon

Campaign measurement does not require identifying anyone. It requires knowing which link a visit arrived through, and whether that visit did the thing you cared about.

That is a much smaller ask than the identity-based model most attribution was built on, and it happens to be the part that still works now that browsers have restricted the rest.

What You Are Actually Trying to Learn

Strip a campaign report down and there are three questions.

How many people arrived from this campaign? Did they do the thing? Which campaign produced more of the thing per unit of effort?

None of those require following a person across sites or across weeks. They require a tagged arrival and a defined action, both of which you can measure on your own site with no persistent identifier at all.

UTM parameters are the standard way to carry campaign information in a URL. They are just text appended to the address, read by your analytics on arrival, and involve no storage on the visitor’s device.

Three of them do the work: the source (where the link lives), the medium (what kind of channel it is), and the campaign (which push this belongs to).

The discipline that matters more than the choice of names is consistency. Decide your conventions once, write them down, and never let “newsletter” and “email” both exist as mediums. Inconsistent tagging is the single most common reason campaign reports are useless, and it is entirely self-inflicted.

Two habits keep it clean. Lowercase everything, because most tools treat Email and email as separate values and you will end up with a report split across capitalisation. And keep the list of allowed values short enough to remember, since a taxonomy nobody can recall is a taxonomy nobody follows once the campaign gets busy.

Step 2: One Redirect Per Campaign

Tagging solves attribution on arrival. A redirect adds a click count that nothing can strip.

Point each campaign at its own short URL on your domain, and have that URL forward to the tagged destination. Now every click passes through your own server and is counted there, whether or not the visitor runs a blocker, and whether or not the destination page loads successfully.

Use a 302 rather than a 301 so you can repoint the campaign later without fighting browser caches. DevDome Redirect Manager sets the type per rule and counts clicks per rule, and it is free with no rule limit, so one redirect per campaign is not something you have to ration.

The gap between your redirect click count and your analytics arrival count is itself informative: it is roughly the share of clicks that never became a measured pageview, through blocking, bounces during load, or people leaving before the page rendered.

Step 3: Define One Conversion

This is the step people skip and then wonder why the report says nothing.

Pick one action that means the visit was worth something: a newsletter signup, an outbound affiliate click, a contact form submission, a purchase. Just one, for now.

Without it, you have arrival counts and no way to say which campaign was better, because more visitors is not the same as better visitors. With it, every campaign gets a comparable number.

For content and affiliate sites, the outbound click is usually the right choice, and it is also the number most damaged by client-side tracking. Capturing it server-side, as DevDome Analytics does, means the conversion side of your campaign report is not quietly missing the same visitors your arrival count already caught.

What You Give Up, Honestly

Two things, and it is worth being straight about them.

Cross-visit attribution. If someone clicks your ad today and buys in three weeks, cookieless measurement will not connect those. Last-click within a session is what you get.

Cross-site journeys. You cannot see what a visitor did before arriving or after leaving.

Here is the perspective that makes those losses easier: both were already deteriorating badly. Browsers have been expiring and blocking the identifiers those models depend on for years, so the multi-week attribution reports many sites still produce are extrapolating from data that is a fraction of what it once was. Losing a number you could not trust is a smaller loss than it appears on a slide.

Compare Like With Like

The one rule that keeps campaign reporting honest.

Every campaign gets the same treatment: its own redirect, its own consistent tags, the same conversion definition. Then differences between campaigns mean something.

The moment you measure your email campaign one way and your social campaign another, any comparison between them is measuring your tooling rather than your marketing. That mistake produces more wrong conclusions than any browser privacy change ever has.

A Setup You Can Build This Afternoon

Write down your tagging conventions on one page. Create one redirect per active campaign under a consistent prefix. Pick your conversion action and confirm it is being recorded. Then run one campaign through the whole thing end to end and check the numbers appear where you expect.

That last step is the one to insist on. A measurement setup that has never been tested with a real click is a set of assumptions, and campaign season is a bad time to discover which of them were wrong. Click your own link, from your phone, and follow it all the way through to the conversion.

Disclosure: DevDome publishes this blog and makes the products it mentions. We describe what they do rather than promise results.

Key takeaways

  • Campaign measurement needs a tagged arrival, not a persistent identity.
  • UTM parameters on the link carry the campaign name with the visitor.
  • A redirect per campaign gives you a click count nothing can block.
  • Cookie based attribution was already unreliable before the privacy changes.
  • Decide your one conversion action first, or the numbers have no meaning.

Sources

  1. Google Analytics Help: collect campaign data with custom URLs — the standard UTM parameter names and how they are read
  2. MDN: third-party cookies — browser restrictions that broke cookie based attribution

Links last checked August 28, 2026.

Frequently asked questions

Without cookies, how do I know if the same person came back?

You largely do not, and for campaign measurement that matters less than it sounds. The question a campaign asks is whether this campaign brought people who did the thing you wanted, and that is answerable from tagged arrivals and the actions that followed in the same visit. Multi-visit attribution was always the shakiest part of the model.

Do UTM parameters need consent?

Parameters in a URL are not storage on someone's device, which is the act most cookie rules attach to. What you then do with the data still falls under general data protection rules, so the practical question is what you store and for how long, not whether the link had a parameter on it.

Will my campaign numbers be lower than before?

Some will be higher and some lower. Arrival counts usually go up, because tagged links and server counting are harder to block than a cookie based tool. Multi-session attribution goes down, because you are no longer crediting a conversion to a click from three weeks ago on the basis of an identifier the browser may have expired anyway.

How do I compare campaigns fairly?

Use the same measurement for all of them. The most common mistake is comparing an email campaign measured one way against a social campaign measured another and concluding one performed better. One redirect per campaign, one conversion definition, applied to everything.

DevDome Team WordPress plugin builders

The DevDome team builds lightweight, performance-first WordPress plugins and free tools for site owners, founders and marketers. We write about the exact problems our plugins solve, in plain language for people who run real sites.