← Blog

Privacy · Analytics

Link Analytics Without Tracking Users: How TraceNull Counts Clicks, Not People

Published April 2026 · 8 min read · By the TraceNull Team

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

What we never store

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:

  1. You need a lawful basis for processing (consent, legitimate interest, etc.)
  2. You must provide a privacy policy that discloses the processing
  3. Data subjects have the right to access and delete their data
  4. 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.

header_down -X-Forwarded-For header_down -X-Real-IP header_down -Referer header_down Referrer-Policy "no-referrer"

Layer 2: Node.js Application

When a short link is resolved, the Express route handler does exactly two things:

  1. Looks up the slug in the SQLite database
  2. 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.

// Simplified redirect handler app.get('/:slug', async (req, res) => { const link = db.prepare('SELECT * FROM links WHERE slug = ?').get(req.params.slug); if (!link) return res.status(404).send('Not found'); // Increment counter — no IP, no UA, no timestamp per click db.prepare('UPDATE links SET clicks = clicks + 1 WHERE slug = ?').run(req.params.slug); // Strip referrer and redirect res.setHeader('Referrer-Policy', 'no-referrer'); res.redirect(301, link.target_url); });

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:

MetricWhat It ShowsPersonal Data Involved
Clicks todayInteger count of redirects in the current UTC dayNone
Clicks (7d)Rolling 7-day totalNone
Clicks (30d)Rolling 30-day totalNone
Clicks (year)Rolling 365-day totalNone
Active shortsCount of non-expired short linksNone
/go redirects vs. slug clicksSeparated counts by redirect typeNone

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:

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:

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.

1

Create three short links in TraceNull, each with different UTM parameters: utm_source=newsletter, utm_source=twitter, utm_source=blog.

2

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.

3

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.

4

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