Privacy practice ·

What UTM and click IDs carry when you forward a link

The string after the question mark is not just a longer URL. When a coworker, a support agent, or a customer forwards a campaign link, utm_source, fbclid, and igshid travel with it into chat history, ticket archives, and access logs. The sections below split what walks out by parameter type, and spell out a strip boundary you can check on the spot. This is not a how-to for the Privacy Cleanup form.

Compare query fields Strip list you can check Open immediately
00 / Contents

First, which layer walks out

This article only answers what tracking parameters take with them when a campaign link is forwarded. It is not the form on Privacy Cleanup, and it is not a handbook for tagging ads with UTM values.

01 / Carry

What a second hop carries

The first click is for the ad platform. The second forward usually no longer needs that tracking string — and still hands over the full query.

A marketer drops a landing page into a customer Slack channel. Support pastes the “campaign page” into a Zendesk ticket. A coworker copies a social share URL into an internal thread. Almost nobody looks past the question mark first. That long tail in the address bar looks like noise. It is a query string. The browser sends it as part of the request; chat apps, mail, and ticket systems store it as ordinary text.

This is not the same layer as “why a URL # fragment never reaches the server.” A fragment stays in the current tab and never enters the HTTP request line. A query parameter does. The existing piece Why URL hash fragments never reach the server only explains the hash. This article fills in the question mark: what usually walks out on a second hop is not the path, but the searchable, archivable fields after it — fields a downstream host can read again.

Google Analytics’ URL-builder help is blunt about the intended path: when a user clicks a referral link that carries UTM tags, those parameters are sent to Analytics and show up in the Traffic acquisition report. For a campaign team, that is the feature. For the person who forwards the same URL, it becomes something else: you hand the next channel a label for “which campaign this click came from,” plus any click ID the platform appended on its own. That channel does not promise a single, private read for the intended recipient.

One line to keep

The question on a second hop is not “does this URL still open.” It is “does the query still hold an identifier the other side does not need, and that you do not want left behind.” Path plus business fields such as id or q usually stay. utm_* and click IDs usually should not ride along again.

02 / Types

Three kinds of parameter are not the same

Sitting after the same question mark does not mean they carry the same information. Split them as a human-readable campaign label, a platform-issued click token, and a sharer mark.

The first kind is UTM. Google’s list includes utm_source, utm_medium, and utm_campaign, plus optional fields such as utm_term, utm_content, and utm_id. The values are plaintext you or a tagging tool wrote in — newsletter, email, sep-sale. They describe a campaign, not a user’s account. After a forward, though, the recipient, anyone who joins the channel later, and anyone who can export the thread can see which campaign and which channel the link was built for. Analytics treats case as a different value: utm_source=google and utm_source=Google split into two rows. To a person reading the paste, both are readable labels.

The second kind is a click ID. Ad platforms append it when someone taps an ad. The value is a long token, not meant to be read by a human. gclid comes from Google Ads auto-tagging and joins a click back to a conversion. fbclid is appended by Meta and is often read again by a pixel or a conversions API. The same family includes ttclid, msclkid, and twclid. You did not choose those values, and you cannot recover a campaign name from the string itself. They identify this click, not this campaign. Forwarding an address that still holds fbclid hands over a lookup key for that ad click.

The third kind is a sharer mark. Newsletter tools are the clearest English-language case: Mailchimp’s mc_cid names a campaign, while mc_eid is an encoded subscriber id that can be joined back to a list record. Instagram and Threads share URLs have long carried igshid or a similar private field. Community write-ups and Apple’s own Link Tracking Protection treatment list igshid as a tracking parameter, not a page selector. A check you can do without any reverse-lookup recipe: delete the question mark and everything after it; the post or landing page often still opens, and the sharer mark is gone. This article will not walk through, or repeat, any method for turning a parameter back into an account. The fact you can see on the spot is enough: some share links carry “who tapped Share,” not only “which campaign.”

UTM
A campaign label people can read

utm_source=newsletter names a channel. After a forward, the campaign name is visible to the whole channel.

Click ID
A platform-issued click token

fbclid and gclid join back to one click. Pasting the raw URL hands over that lookup key.

Sharer mark
May point at the person who shared

igshid, mc_eid, or a private field. Drop the query and the page often still opens.

Starting with iOS 17, Safari’s Link Tracking Protection strips URL parameters it treats as tracking when a link is opened from Mail, Messages, or Private Browsing. Apple’s public wording is that the identifying extra is removed and the rest of the link still works. Independent tests — including AppsFlyer’s LTP bulletin and later community tables — report that gclid and fbclid are stripped, while UTM tags are usually kept. Apple does not publish a full strip list, and community lists move with each system release. So “this iPhone dropped the click ID” is not “every channel is safe.” Slack, Teams, a normal Safari window, Gmail’s in-app browser, and the string you paste into a ticket will not do that job for you.

03 / Residue

Where the residue lands

Once a parameter leaves the address bar, it becomes searchable text, an archived attachment, or the Referer on the next request.

Chat windows are built so you can find things again. After you paste a full campaign URL into a channel, the message body, the client cache, and the server-side search index each keep a copy. Three months later, a search for utm_campaign or fbclid can still surface that message. Recall rarely deletes the other side’s already-read push or a history that has already synced. This is not about trusting coworkers. They need the landing page. They do not need a token for that ad click.

Tickets and email keep the link as evidence. Once support pastes a user’s “this campaign page will not open” URL into a ticket, agents, escalation queues, and any outsourced viewer open the full address again. A full-page screenshot in a photo roll, or an address bar in a meeting recording, is a second, pixel-level channel. Keys should not go into chat — we covered that in After a cloud env-var leak, why the new key should not go back into chat. Tracking parameters are a milder leak. The residue shape is the same: the channel stores the exact characters you pasted.

Chat and tickets
A searchable full address

Fields after the question mark stay as plain text. People who join later can search them too.

Access logs
Query parameters on the request line

Their origin — or a reverse proxy you run — can still log the full URL after TLS ends.

Referer
Sometimes hands the query to the next hop

Default policy is stricter than it used to be. You still cannot assume every downstream host gets only a hostname.

The access-log layer is easy to hide behind an HTTPS slogan. Transport encryption stops a person on the wire from reading plaintext. The origin, and any reverse proxy you control, still sees the request line after TLS terminates. At that layer, a query parameter is no different from a path: both are in the HTTP request. A fragment is not. “We already use HTTPS” does not erase ?fbclid= from an access log.

Referer is the third path. Modern browsers default to Referrer-Policy: strict-origin-when-cross-origin: same-origin requests still send the full URL, query included; cross-origin requests usually send only the origin. The older default, no-referrer-when-downgrade, sent the full address on many cross-site loads. web.dev’s referrer guidance lists “leaking path and query across sites” as an explicit risk. You cannot require every downstream page to set a strict policy. Stripping trackers before the second hop is more reliable than hoping the other host “does not log the source.”

Boundary

This article is about not copying a tracking identifier onto a new channel. It is not “delete the chat and you take the parameter back.” The other side may already have opened it, screenshot it, or saved it.

04 / Choice

What to keep, what to strip

Deleting everything after the question mark will break product pages, search results, and pagination. Split business fields from trackers.

Keep the fields that point the page at the right resource. id=128 selects a product. q= is a search term. page=2 is pagination. YouTube’s t= is a timestamp. Those are not campaign labels. Blindly “delete everything after the question mark” often works on a social share URL. On commerce and admin deep links, it drops you on a home page or an error.

Strip the fields that describe traffic source, identify a single click, or point at a sharer. The whole utm_* family, common click IDs, and attribution fields from commerce or content platforms — spm, mc_eid, igshid, refer_share_id — belong here. They do not decide which item opens. They decide who gets credit for this open.

When the call is unclear, start narrow: remove only utm_* and common click IDs, then see whether the page still points at the same resource. Only then decide whether to drop analytics fields and platform attribution. That is not a slogan. It is two settings you can compare by result.

Keep the path and business query 01 id, q, pagination, and timestamps usually decide which resource opens.
Strip UTM and click IDs first 02 Campaign labels and click tokens have no job on a second hop.
Then look at platform attribution 03 spm, igshid, mc_eid, and refer_share_id often name a share path or a sharer.
Open the cleaned URL once yourself 04 If the same resource still opens, you did not delete a business field by mistake.

UsePwd Privacy Cleanup follows that boundary in the current tab. The default drops utm_*, common click IDs, and a set of commerce and content-platform attribution fields. pathname plus id and q stay. If you are unsure about collateral damage, turn on conservative mode: UTM and click IDs only. One URL per line, 100 maximum; a line over 8 KB is skipped. Next to the result, the page lists the parameter names actually removed this time, so you can check on the spot instead of taking a verbal “it’s clean.” Parsing and stripping stay in this tab. The source text is not sent as an HTTP body and is not written to analytics. Open it and use it — no sign-up.

05 / Check

How to check the strip on the spot

The goal is not to prove “nobody in the world can see this.” It is to prove the leftover fields are business parameters, the dropped fields are trackers, and this input never entered a request body.

  1. 01
    Prepare a fake dirty URL

    Do not use a live campaign or a real user’s share link. For example: https://www.example.com/item?id=128&utm_source=newsletter&utm_medium=email&utm_campaign=sep-sale&fbclid=IwAR0example&igshid=YmMyMTA2M2Y. You should be able to recognize that id=128 must stay.

  2. 02
    Open Privacy Cleanup and clear the box

    Go to Privacy Cleanup and confirm you are on Clean Link. The page works as soon as it opens. Clear the input if you need to, so this paste is not mixed with the last one.

  3. 03
    Run a full cleanup, then read the list

    Paste and clean. The result should still hold id=128. The strip list beside it should show utm_source, utm_medium, utm_campaign, fbclid, and igshid. A missing business field, or a tracker that is still present, means the URL is not ready to send.

  4. 04
    Run conservative mode once for contrast

    Conservative mode only strips utm_* and common click IDs. If the sample also has commerce attribution, the two lists will differ in length. Both modes keep the path and the business query you still need. Use that difference to decide whether the narrow rule is enough.

  5. 05
    Open the Network panel and look for the source text

    Press F12 and switch to Network. During cleanup, you should not see an API that posts the whole dirty URL as a request body. Production may send page-view analytics to /tj/; the payload is page and button names, not the URL you pasted. Local preview does not send analytics.

These steps sit next to the Security page, they do not replace it. Security answers whether plaintext leaves the browser. This article only splits query parameters and names the layer a second hop carries. Neither page is a substitute for the form on Privacy Cleanup. If a ticket body still holds phone numbers, ID-like strings, or API keys, the same page’s redaction tool can mask common formats locally. It follows common patterns and cannot promise a complete catch — read the outbound text yourself. UsePwd does not claim GDPR certification.

06 / Limits

What cleanup cannot stop

Reading “strip the trackers” as “the share is anonymous” misses a few boundaries you can check just as directly.

A short link that has not expanded 01 Cleanup sees the current line. Expand the redirect, then look at the query on the landing URL.
Records already sent 02 Cleanup does not rewrite chat history, mail attachments, or ticket archives. It only handles the next paste.
Sign-in state and page content 03 The other person may still see a personalized page under their own account. You stripped URL parameters, not the site’s session.
A machine already under someone else’s control 04 If an extension can read the page, or remote access can read the clipboard, local cleanup is no longer a boundary. That is outside a browser tab.

Cleanup-then-forward fits pages you mean to publish or send to more than one person: a campaign landing page, a product URL, a social share, a “user sent this URL” line in a ticket. It is the wrong tool for a one-time secret channel. A whole secret, a rotated API key, or a short-lived code should go through Burn-Link: plaintext is encrypted in this tab with AES-256-GCM, the id rides in ?id=, the key rides after #, and both create and read work immediately. The server only stores ciphertext. Do not treat those two tools as the same guarantee.

File backup is a third path. Local encryption of a single file up to 5 GB goes through the File Encryption Box, writes .lock / .enc, and does not upload the file by default. Whether a passphrase is strong is a different question: generate 6–128 characters in the Password Generator, then use Password Audit to score it locally against the public leaked-password list shipped with the page. The audit is not a web-wide lookup, and the password is not uploaded. Those pages, like this article, work immediately — no sign-up. The top bar only has a language switch.

Before the second hop, look at what the query is carrying: a campaign label, a click token, or a sharer mark. If you can tell those three apart, you will not read a parameter-mechanics article as a warranty that “cleaned means anonymous.”

07 / FAQ

Questions that come up on a second hop

The four items below stay inside this article’s boundary. They do not repeat the buttons on the cleanup page.

Can I delete the whole query 01 Often yes on a social share URL. Not on a business link that needs id, q, or a page number — strip trackers only.
Does HTTPS hide this from logs 02 No. HTTPS protects the wire. After TLS ends, the origin still sees query parameters on the request line.
Doesn’t an iPhone strip this for me 03 Only in Mail, Messages, and some Safari contexts. Slack, Teams, and tickets will not. UTM tags usually remain.
Do I need an account to clean a URL 04 No. Open and use it. Source text is not uploaded and is not written to analytics. There is no account or vault.
08 / Next

When you finish, check the strip list

The article answers what tracking parameters take with them when a campaign link is forwarded. To compare the parameter names actually removed, open Privacy Cleanup — no sign-up.