Skip to content
1Namecard

How link tracking works without cookies.

By the 1Namecard team

Last updated

8 min read

This guide is general information, not legal advice. Privacy law differs by country and by the facts of your case. Ask your data protection officer or a lawyer about your own situation.

In short

You can count every click, the placement it came from, the device, the country and the city, and an approximate number of unique visitors per day, all without setting a cookie. You cannot follow one person across days or devices. That limit is the price of not identifying anyone.

What you can count with no cookie.

When someone opens a short link, their browser sends a request. That request already carries a lot: the browser name, the language, the page that referred it, and the network address it came from. The host in front of the server adds the country and city it infers from that address. Counting needs nothing more, so nothing has to be placed on the visitor's device.

What one click record holds in 1Namecard
FieldWhere it comes fromExample
Short linkThe key the visitor openedexpo27-rollup
TimeThe server clock14 October, 10:42
Placement?s=, ?src= or ?utm_source= on the requestrollup
Referrer hostThe Referer header, host only, no path or querymail.example.com
Device, browser, operating systemThe user agent stringPhone, Safari, iOS
In-app browserRead from the user agentInside another app
LanguageThe Accept-Language headerde
Country, region, city, time zoneHeaders added at the edge from the network addressDE, Hesse, Frankfurt
OutcomeWhat the visitor was sent toRedirect, fallback, iPhone address
Bot and internal flagsRules on the request, see belowFalse, false
Visitor hashA one-way hash, see the next section32 characters

Each click is one row. Nothing is sampled, so a count is a count of rows. The city is worth a second look: it is looked up from the network address, so the address is used for a moment, and the city is kept. A city is coarse, but it is still location data and your notice should say so.

0

cookies set by a card view or a short link click

How a unique visitor is counted without an identifier.

To tell 100 clicks from 40 people you need something to compare. 1Namecard computes a SHA-256 hash from four things: a secret that stays on the server, the current date in UTC, the network address and the user agent. It keeps the first 32 characters of the result. The address and the user agent go into the hash and are not stored.

Because the date is part of the input, the same person produces a different value tomorrow. There is no table that maps a hash back to an address. So today's visitors can be counted, and yesterday's cannot be matched to them.

One phone, three clicks, two days
WhenWhat the phone doesHashCounted as
Monday 09:05Scans the bannera41c...1 unique visitor
Monday 14:30Scans it again from the same networka41c...Same visitor, 2 clicks
Tuesday 10:00Scans it once more7e02...A new unique visitor

Read the numbers with that in mind. Daily unique visitors are reliable. A weekly figure made by adding seven days overstates people, because someone who returns counts again. Two colleagues on the same office network with the same phone model and software version can share a hash and count once. A visitor whose mobile address changes between clicks can count twice. It is an approximation, and good enough to compare placements.

What you cannot count, and what we store.

What a click record stores and what it does not
We storeWe do not store
Placement, device, browser, operating system, languageThe visitor's IP address in the click record
Country, region, city and time zoneA cookie or an ID on the visitor's phone
A daily-salted hash of address and user agentThe address or user agent that went into the hash
Whether the visit looked like a bot or a team memberA name, an e-mail address or a phone number
The referrer's host nameThe referring page's path or query

So you cannot count a person across days, a person across devices, how many times a named contact clicked or whether last week's visitor is back. If you need that, you need identification, and identification needs a lawful basis and usually consent. A lead form is separate: it holds what the person typed and the consent wording they saw, and it is kept until you delete it. It also records technical details of the submission, which only admins can see.

What the ePrivacy rules and the GDPR say.

Two laws matter, and they ask different questions.

Article 5(3) of the ePrivacy Directive covers storing information on a user's device, or reading information already stored there. It is not limited to cookies. Local storage, device fingerprinting and similar techniques can fall in scope, and it requires consent unless the storage or access is strictly necessary for a service the user asked for. A server that only receives what a browser sends anyway, and writes nothing to the device, is generally seen as outside it. But do not treat that as settled. The European Data Protection Board's Guidelines 2/2023 read the Article widely, name URL and pixel tracking, and say IP-based access can fall inside it in some cases. Ask counsel how your regulator reads it.

The GDPR asks a different question: is it personal data? Recital 26 says to consider the means reasonably likely to be used to identify a person. The Article 29 Working Party's Opinion 05/2014 on anonymisation treats hashing as pseudonymisation, not anonymisation. So a hash of an IP address can still be personal data in some views, even with a salt. The daily salt and the server secret make linking hard, and stop any link across days. They do not make the hash provably anonymous.

A cautious team therefore treats its click table as personal data. That means a stated purpose (counting visits to compare placements), a lawful basis you have written down, a retention period and a way to answer requests. The GDPR guide for events covers lead data, and the security page lists how 1Namecard hosts and separates data.

Filter bots and prefetchers, or the numbers lie.

Who clicks a link that is not a person
SourceWhy it clicksHow to spot it
Link-preview crawlersA chat or social app fetches the link to build a previewKnown user agent names
Search and site crawlersThey follow links to index pagesKnown user agent names
Browser prefetchThe browser loads a likely next page earlyPurpose or Sec-Purpose headers
Mail security scannersThey open links in a message before deliveryClicks seconds after sending, odd locations. Often hard to tell
QR scanner appsThey check the destination for safetyHard to tell. Compare scans with form submissions

1Namecard checks the user agent against a list of crawlers and preview fetchers, and checks the prefetch headers. A match is stored with a reason and left out of every count. Scanners that look like ordinary browsers can still pass. A useful sanity check is to compare clicks with leads: a link with 400 clicks and no form starts has a bot problem or a content problem.

Leave your own team out.

Staff test their own codes, show them to colleagues and open them from the admin. A stand with eight reps can produce hundreds of staff clicks. 1Namecard recognises visits from your own team and leaves them out of the counts. They are stored with a flag, and you can bring them back by ticking Include internal in Analytics or Funnel.

Carry attribution in the address, not in a cookie.

Without a cookie, the memory of where a visit came from has to live somewhere else. The answer is the address. A short link adds ?s= with its key when it sends a visitor to a card. The card page reads it and keeps it in the browser's session storage while the tab is open. When the visitor submits a lead form or meeting request, the placement goes with it, so the lead arrives with its source. Closing the tab clears it.

Be precise about this. Session storage is not a cookie, but it is storage on the device, and Article 5(3) is not limited to cookies. What is stored is a placement word and the buttons tapped, not an identifier. Whether that falls under the exemption for what is strictly necessary is for your counsel. The cookie policy says what 1Namecard stores. The limit is that attribution lasts for a visit: a prospect who scans on Monday, closes the tab and returns on Thursday without scanning has no placement. The UTM guide shows how to tag it as well.

What to tell your privacy notice.

  • Included: What you count: visits to your cards and links, with placement, device type, browser, language and approximate location.
  • Included: Why: to compare placements and measure your marketing. State the lawful basis you chose.
  • Included: How: without cookies on the visitor's device, and with a daily-changing hash instead of a stored IP address.
  • Included: How long: 13 months for click and view records.
  • Included: Who processes it: your hosting and platform providers, as listed in your processor agreement.
  • Included: How a person exercises their rights, and who to contact.
  • Included: A separate line for lead forms: what the person typed, the consent wording and how long you keep it.

Link the notice from every card and form, and keep it consistent with what you configure. The short link guide covers the other fields on a link. Review the notice whenever you change what you collect.

Quick answers.

Can you track links without cookies?

Yes. A server can count clicks, placement, device, language and approximate location from the request itself, and estimate unique visitors per day with a salted hash. It cannot follow one person across days or devices, which is what cookies are for.

Is cookieless tracking exempt from the ePrivacy consent rules?

Not automatically. Article 5(3) covers storing or reading information on the device, so counting that writes nothing there is generally seen as outside it. But regulators read it widely, including for URL and pixel tracking. Ask counsel about your case.

Is a hashed IP address personal data?

It can be. European guidance treats hashing as pseudonymisation, not anonymisation, so a hash of an address may still count as personal data in some views. A daily-changing salt reduces the risk and stops tracking across days, but it does not settle the question.

How do I stop bots from inflating my click counts?

Filter known crawlers and preview fetchers by user agent, ignore prefetch requests, exclude your own team, and compare clicks with form starts. Mail security scanners are the hardest to catch, so no filter is perfect.

Ready for your next show?