Marketing, Advertising & AdTech// definition

Click identifiers: the URL parameters that let a server-sent conversion find the ad that caused it

In short

A click identifier is an opaque string the ad platform appends to your landing-page URL at the moment of the click. It is a join key: the value that lets a conversion recorded hours or weeks later be matched back to the exact click that caused it. Campaign tags describe traffic and join to nothing, so losing a tag costs you a label while losing the identifier costs you the match.

Key takeaways

  • A click identifier is a join key issued by the platform; a UTM tag is a label you write yourself and nothing joins to it.
  • Treat the value as opaque. Never parse, truncate, lowercase or re-encode it — a mangled identifier is the commonest cause of a low match rate.
  • Capture it on the landing page and copy it onto the order row. A value that lives only in a session dies before a delayed conversion happens.
  • The lifetime you request is not the lifetime you get: browser policies cap script-written cookies at days, not the 2 years you set.
  • It identifies one click, not one person, and it is not the deduplication key for a conversion sent twice.

A click identifier is a parameter the ad platform adds to your landing-page URL as it forwards a click — gclid on Google, fbclid on Meta, and a different name on every other network. The value is opaque: meaningless to you, meaningful to the platform, which can resolve it to the impression, creative, campaign and account behind that click. It is the only mechanism by which a conversion your server reports days later attaches to a specific ad rather than to a channel.

The distinction worth holding is class, not vendor. Names change and new ones appear whenever a platform adds a surface. What does not change is the behaviour: issued at click time, opaque, single-purpose, expiring. Anything with those 4 properties is a join key and belongs on your order record. Everything else on the URL is description.

Join keys and descriptive tags are not the same class of parameter

Parameter classIssued byWhat it joins toConsequence of losing it
Platform click identifierThe ad platform, at click timeOne specific click in the platform's logsA server-sent conversion cannot be matched. The sale lands in direct or organic
Campaign tags: utm_source, utm_mediumYou, when the destination URL is builtNothing. Labels your own analytics groups onTraffic lands in an unassigned bucket in GA4. Matching is unaffected
Your own visitor or session idYour site, on first page viewRows in your own warehouseInternal joins break and sessions fragment. Matching is unaffected
Platform cookie from its browser tagThe platform's tag, on your pageThe same click, via the browser not the URLBrowser-path attribution degrades. The server path still matches
What each parameter on a landing-page URL is actually for

Rows 1 and 2 get conflated constantly, usually by a team that has spent a year perfecting a UTM convention and believes it is doing attribution. It is doing labelling, which is useful — but a URL arriving with a full tag set and no click identifier has already lost the ability to close the loop, and that loss shows up later as one of the causes ranked in the ad platform counting more conversions than you do.

The four properties that define the class

  • Issued at click, not before. The value does not exist until someone clicks, so it cannot be embedded in a creative or printed on a poster.
  • Opaque. No readable structure, no stable length. Nothing inferred from the string is safe, and any field that reformats it destroys it.
  • Single-purpose. It answers one question — which click was this — and is not a user id, a session id or a consent record.
  • Expiring. Your storage and the platform's matching window are both time-bounded, and the shorter of the 2 sets your real ceiling.

Where the value has to live for a delayed conversion to match

A same-session purchase needs almost nothing — the platform's browser tag handles it. The design problem is everything else: a form filled today and qualified next week, a quote signed by phone, a booking that converts on arrival. The identifier has to survive the gap between the click and the moment money exists, which means moving it out of the browser and onto a record.

  1. Capture on the landing page, before anything else runs. Read the query string on first paint, and check the parameter survives every 302 — to a locale path, a marketing domain, a consent gate. A redirect that rebuilds the URL is where it usually vanishes.
  2. Write it to first-party storage with an explicit overwrite rule. Decide once whether a later click replaces an earlier one, and store the capture timestamp so the rule can be revisited.
  3. Copy it onto the order, lead or booking row at creation. This is the step that matters: a value living only in a cookie is gone when the conversion happens in another system.
  4. Carry it into the CRM as a first-class field, not a note. If human qualification is what makes the conversion reportable, the identifier travels with the record through every stage in HubSpot or Salesforce.
  5. Include it in the server-sent conversion. It is the strongest matching signal available; the rest of the payload is ordered by matching power in assembling a server-sent conversion a platform will match.

Step 4 is where most of the engineering sits, and it is rarely a tagging job: it touches the form handler, the CRM object model and whatever queue sits between them, the sort of plumbing we treat as product work in internal tools and operations software. Step 1 fails more often than teams expect, and that diagnosis is the click id is gone by the time the form submits.

Storage lifetime needs its own caution. A cookie expiry is a request, not a guarantee: browser tracking-prevention policies cap cookies written by client-side script far below the 2 years teams usually set, and treat a cookie set in an HTTP response from your own domain differently again. Read the current caps from Apple's and Google's own documentation rather than a blog post, and see what the browser does to your identifiers for which mechanism shortens what. The same decision governs whether returning visitors keep arriving as new ones.

A campaign tag tells you what you called the traffic. A click identifier tells the platform which click it was. Only one of those survives a week and a change of system.

Four things a click identifier is not

  • Not a user identifier. It identifies one click: the same person clicking twice produces 2 values, and a shared device produces values belonging to different people.
  • Not a deduplication key. A browser copy and a server copy need a separate shared event id, and when that goes wrong you get conversions counting twice after the server goes live.
  • Not consent. Persisting the value is itself storage, so a denied ad-storage state leaves nothing to persist — which is why consent travels as a typed field on every event.
  • Not indefinitely matchable. Platforms match inside a published click-to-conversion window, commonly configurable between 7 and 90 days. A conversion sent after it closes is accepted and attributed to nothing.

Every join in advertising runs on a clock. On the buy side it is how long the identifier is stored and how long the platform will still match it; on the sell side it is the auction timeout that decides whether bids arrive after the auction has closed. Both are designed against rather than hoped about. The surrounding decisions sit under tracking, consent and event pipelines, in our marketing and advertising practice.

Frequently asked questions

Short answers to the follow-ups this page tends to raise.

What are click ID parameters in ad tracking?

They are opaque values an ad platform appends to your landing-page URL when it forwards a click, so a conversion reported later can be matched to that exact click. Each platform issues its own under its own parameter name. You cannot generate one and cannot interpret one; the only correct handling is to store it unmodified and send it back with the conversion.

What is the difference between a click ID and a UTM parameter?

A click ID is a join key issued by the platform; a UTM parameter is a label you write yourself. The platform can resolve a click ID to a specific click in its logs, which is what makes server-sent matching possible. Nothing resolves a UTM tag — it exists so your own analytics can group traffic, and it is entirely under your control, which is exactly why it proves nothing to the platform.

How long does a click identifier stay usable?

Two clocks apply and the shorter wins. The first is your storage: browser policies cap how long a cookie written by client-side script survives, often to days rather than months. The second is the platform's click-to-conversion window, published in its documentation and usually configurable. Check both against current vendor documentation, because both have moved repeatedly.

  • click identifiers
  • attribution
  • conversion tracking
  • url parameters
// shipped work

The work behind this page

Builds from our portfolio that this page draws on.

Read next

Working on something in this space?

Tell us where you are in a sentence or two. We'll tell you honestly whether we're the right team, and what a sensible first slice of the work looks like.

Start the conversation