Privacy · Analytics
Link Analytics Without Tracking Users: How TraceNull Counts Clicks, Not People
Every URL shortener promises analytics. Click counts, geographic breakdowns, device fingerprints, referrer sources, time-of-day heatmaps — the works. But here's the uncomfortable truth most services won't tell you: those analytics come at a cost. Not to you, but to every person who clicks your link.
Traditional link shorteners build a surveillance profile for every single click. They store IP addresses, derive locations, log browser fingerprints, and often sell that aggregated data to third parties. For the person clicking, a "short link" becomes a tracking pixel with a redirect attached.
At TraceNull, we asked a different question: What's the minimum viable analytics a marketer actually needs, and can we deliver it without storing a single byte of personal data?
The answer is yes. Here's exactly how we do it.
What We Actually Track (And What We Don't)
TraceNull's Business plan includes click analytics for your shortened links. Let's be precise about what that means:
What we count
- Total redirect count — how many times your short link was clicked
- Time-windowed aggregates — clicks today, over 7 days, over 30 days, and over the past year
- Link type separation — we distinguish between
/go?url=referrer-strip redirects and short-link slug clicks, so you know which feature is driving traffic - Active short links count — how many of your links are currently live and not expired
What we never store
- IP addresses
- User-Agent strings
- Browser fingerprints
- Geographic location data
- Referrer headers (we actively strip these)
- Cookies or session identifiers
- Any data that could identify a unique visitor
Key distinction: We count events, not entities. A click is an anonymous counter increment — there is no "visitor" object in our database, no user profile, no way to correlate click #47 with click #48, even if they came from the same person.
Why Most Link Analytics Are a GDPR Liability
Under the General Data Protection Regulation (GDPR), an IP address is personal data. Full stop. The European Court of Justice confirmed this in the Breyer v. Bundesrepublik Deutschland ruling. If your URL shortener logs IP addresses — even "temporarily" — it's processing personal data, which means:
- You need a lawful basis for processing (consent, legitimate interest, etc.)
- You must provide a privacy policy that discloses the processing
- Data subjects have the right to access and delete their data
- You need a Data Processing Agreement (DPA) with the shortener service
Now imagine you're an affiliate marketer sharing links on social media. Every person who clicks your Bitly or TinyURL link has their IP logged by a third-party service. Did you get their consent? Did you disclose this in a privacy policy? Can you fulfill a deletion request for data you don't even control?
The honest answer for most marketers is: no, no, and no.
Regulatory reality check: If you use a URL shortener that logs IP addresses and you share those links in the EU market, you may be jointly responsible for that data processing under GDPR Article 26 (joint controllers). Fines can reach €20 million or 4% of annual global turnover.
The Architecture: How Anonymous Counting Works
Building analytics without tracking sounds simple — "just increment a counter" — but doing it correctly at the infrastructure level requires deliberate choices at every layer. Here's how TraceNull's stack handles it.
Layer 1: Caddy Reverse Proxy
Before a request even reaches our application, Caddy is configured to strip identifying headers. We remove X-Forwarded-For, X-Real-IP, and the Referer header at the proxy level. The application server literally cannot see the visitor's IP address because we engineered it out of the request pipeline.
Layer 2: Node.js Application
When a short link is resolved, the Express route handler does exactly two things:
- Looks up the slug in the SQLite database
- Increments an integer counter column on that row
There is no request logging middleware. We don't use Morgan, Winston, or any access log that could capture IP data. The counter is a bare UPDATE links SET clicks = clicks + 1 WHERE slug = ? — a single atomic SQL operation.
Layer 3: Meta Tag Fallback
For the /go?url= referrer-stripping endpoint, we serve a minimal HTML page with a <meta name="referrer" content="no-referrer"> tag and a JavaScript redirect. This ensures the referrer is stripped even in edge cases where the HTTP header approach might be ignored by older browsers.
Three layers of referrer stripping. Zero layers of tracking. That's the TraceNull approach.
Time-Windowed Stats Without Timestamps Per Click
You might wonder: if we don't log individual click events with timestamps, how do we show stats for "today" vs. "7 days" vs. "month"?
We use rolling aggregate counters rather than event logs. Instead of storing a row per click with a timestamp (which could be correlated with external data to re-identify users), we maintain bucketed counters that roll forward automatically.
Our admin stats dashboard — recently expanded to separate /go redirects from short-link clicks — queries these aggregates directly. The result is a clean summary view:
| Metric | What It Shows | Personal Data Involved |
|---|---|---|
| Clicks today | Integer count of redirects in the current UTC day | None |
| Clicks (7d) | Rolling 7-day total | None |
| Clicks (30d) | Rolling 30-day total | None |
| Clicks (year) | Rolling 365-day total | None |
| Active shorts | Count of non-expired short links | None |
| /go redirects vs. slug clicks | Separated counts by redirect type | None |
This gives you everything you need to measure campaign performance — is the link getting traction? Is traffic growing or declining? Which links are active? — without creating a surveillance ledger of individual human behavior.
"But I Need More Detailed Analytics"
Fair question. If you need geographic breakdowns, device types, or conversion funnels, we'd argue those should be measured at the destination, not the redirect layer. Here's why:
- Your site, your consent flow. When visitors land on your website, you control the cookie banner, the privacy policy, and the consent mechanism. You can ethically collect analytics with proper disclosure.
- UTM parameters fill the gap. TraceNull's UTM builder lets you tag links with
utm_source,utm_medium, andutm_campaignparameters. Your destination analytics tool (Plausible, Fathom, Matomo, or even Google Analytics with consent) can attribute traffic to specific campaigns. - Separation of concerns. The redirect layer should do one thing: redirect fast and clean. Loading it with tracking JavaScript, cookie syncing, and fingerprinting slows down the redirect and violates user trust.
Pro tip: Combine TraceNull's click counts with UTM-tagged destination analytics for full campaign measurement. You get link-level volume data from TraceNull and on-site behavior data from your analytics tool — without any privacy-invasive tracking at the redirect layer.
The Business Case for Privacy-First Analytics
Beyond ethics and compliance, there's a hard business reason to choose privacy-first link analytics:
- Trust signals convert. When your audience sees a TraceNull link — or when you disclose that your links don't track visitors — you build trust. In affiliate marketing, trust is the entire game.
- No DPA overhead. Since TraceNull doesn't process personal data on behalf of your link clickers, you don't need to negotiate a Data Processing Agreement for the redirect layer.
- Future-proof compliance. Regulations are tightening globally — the EU AI Act, US state privacy laws, Brazil's LGPD, India's DPDP Act. Services that never collected the data in the first place don't need to scramble when new rules drop.
- Lighter infrastructure. No personal data storage means no breach notification obligations for click data, no data retention schedules, and no subject access requests to fulfill for link visitors.
What This Looks Like in Practice
Let's walk through a real scenario. You're running an affiliate campaign promoting a SaaS product across three channels: newsletter, Twitter, and a blog sidebar.
Create three short links in TraceNull, each with different UTM parameters: utm_source=newsletter, utm_source=twitter, utm_source=blog.
Deploy the links. TraceNull generates short slugs (e.g., tracenull.cc/a9, tracenull.cc/b3, tracenull.cc/k7) that strip referrers on click — protecting your visitors from being tracked by the destination site's third-party scripts.
Monitor volume in TraceNull. Your dashboard shows that /a9 got 340 clicks this week, /b3 got 89, and /k7 got 1,200. You know where to double down.
Analyze conversions on your destination. Your Plausible or Fathom dashboard shows which UTM source drove actual signups. You correlate TraceNull click volume with on-site conversion rates.
At no point did any visitor get fingerprinted, IP-logged, or cookie-tracked by the redirect layer. You got the data you needed. Your audience kept their privacy. Compliance was never in question.
Privacy Isn't a Limitation — It's a Design Constraint That Produces Better Tools
When you remove the option to vacuum up personal data, you're forced to think harder about what metrics actually matter. Vanity metrics like "unique visitors" at the redirect layer don't drive business decisions — click volume and conversion attribution do. And you can have both without surveillance.
TraceNull's analytics are intentionally minimal. We count clicks, separate redirect types, and give you time-windowed summaries. That's it. No dashboards full of data you'll never act on. No compliance landmines buried in your link infrastructure.
Just clean numbers for clean links.
Ready for Analytics That Respect Your Audience?
TraceNull Business gives you click analytics, custom domains, password-protected links, QR codes, and a full API — all without storing a single IP address. Start shortening links the privacy-first way.
View Business Plan