Analytics definitions
Understand clicks, QR scans, bots, referrers, geo, privacy mode, and dashboard freshness.
Clicks
A click is a redirect event recorded by the Nimriz edge when a visitor follows a short link. Every successful redirect that reaches the Nimriz evaluation path-regardless of whether a routing rule was applied-is counted as a click.
What is counted:
- Visits to a short link that result in a redirect response.
- QR code scans (which are a subset of total clicks-see QR Scans below).
What is not counted:
- Visits that hit the password form but do not complete the unlock.
- Visits to an expired or disabled link that go to a fallback landing page (these are operational outcomes, not click events).
- Bot-flagged traffic is counted separately and can be filtered in most dashboard views.
QR scans
QR scans are a subset of total clicks. When a visitor scans a QR code generated by Nimriz, the embedded URL includes a special ?nr=qr marker. The Nimriz edge reads this marker and records the event with touch_type = qr_scan instead of short_link_click.
This means:
- Total clicks includes both standard short URL clicks and QR scans.
- QR scans is the count of touch events where the
nr=qrmarker was present. - The
?nr=qrmarker is stripped before the visitor reaches your destination URL-it never appears in your analytics tool or server logs.
Dashboard reports expose a Trigger filter that lets you view data broken down by touch type:
- All triggers-total traffic.
- Short URL-only standard link clicks.
- QR-only QR code scans.
Unique clicks
Unique clicks count distinct visitors over a time period, using daily-rotating hashed identifiers for privacy.
Unique clicks require standard privacy mode. If your workspace, a specific link, or your organization uses strict privacy mode, unique clicks are unavailable because the hashed identifiers needed for deduplication are not collected.
Daily rotation: Unique clicks are computed per-day using hashes that reset each day. This means:
- A visitor who clicks on Monday and again on Tuesday counts as a unique click on both days.
- Unique click totals over multi-day ranges use daily deduplication, not a global single-user count.
- This approach prevents long-term cross-day user tracking while still supporting day-level deduplication.
Bots
Bot-flagged traffic represents clicks classified as automated, non-human requests. Common sources include:
| Source | Why it appears |
|---|---|
| Messaging app link previews | Apps like iMessage, WhatsApp, and Telegram fetch link metadata automatically when a link is pasted in a chat. |
| Security scanners | Antivirus tools, corporate proxies, and phishing scanners fetch links before the user clicks. |
| Social media crawlers | Twitter, LinkedIn, Facebook, and other platforms crawl links to generate preview cards. |
| Uptime monitors | Services like Pingdom, UptimeRobot, or internal health checks may use your short links in synthetic tests. |
| Search engine bots | Googlebot and similar crawlers may index short links they encounter. |
Bot traffic is not necessarily abuse. It is a normal side effect of link sharing. When measuring genuine human engagement for a campaign, filter to bot-excluded traffic in your dashboard.
Referrer
The referrer is the domain that sent the visitor to your short link. It is derived from the HTTP Referer header (note the historical misspelling) sent by the visitor's browser or app.
Referrer data is best-effort and often missing. Common reasons a referrer is blank:
- HTTPS to HTTP navigation-browsers strip the referrer when navigating from an HTTPS page to an HTTP URL.
- Browser privacy settings-browsers set
Referrer-Policy: no-referreror similar headers in private mode or through user preferences. - App-to-browser transitions-clicks from native mobile apps (email clients, social apps) often do not send a referrer to the browser.
- Direct traffic-links typed directly into a browser address bar, shared via SMS, or sent through messaging apps often arrive with no referrer.
Do not treat a missing referrer as an error. Treat it as expected behavior and use UTM parameters to supplement referrer attribution for campaign tracking.
Country, region, city, device, and browser
These fields are derived from request metadata at the Cloudflare edge:
- Country-derived from Cloudflare's geo IP database. Very accurate at the country level; less accurate at city or region level.
- Region-best-effort regional subdivision such as state, province, or equivalent administrative area.
- City-best-effort city resolution from the same request metadata.
- Device category-
mobile,tablet, ordesktop, derived from the User-Agent string. - Browser family-best-effort classification derived from the User-Agent.
- OS family-best-effort classification derived from the User-Agent.
These dimensions are useful for understanding audience trends but should not be treated as precise individual-level data. A corporate VPN, proxy, or CDN can cause country misclassification. User-Agent spoofing can cause device misclassification.
Professional plans use these same best-effort country, region, and city fields for the live QR heatmap in QR Performance and QR-filtered Realtime.
A/B testing reporting
For links with A/B experiments running, clicks are attributed to the stable variant key assigned at click time. This is important:
- Variant keys are permanent identifiers. You can rename a variant's display label later, but historical clicks remain attributed to the original key.
- If you stop an experiment and promote a winner, historical clicks for the old variants are still visible under their original keys in the link's analytics.
- The Nimriz dashboard does not provide statistical significance testing, p-values, or automatic winner suggestions. All promotion decisions are manual.
- A/B reporting shows click counts per variant. To measure conversion rates per variant, combine click data with your conversion tracking data.
Why your numbers may differ from another analytics tool
This is expected. Common reasons:
| Reason | Explanation |
|---|---|
| What is counted | Nimriz counts redirect events at the edge. Other tools (Google Analytics, Plausible) count page views on your landing page. A redirect event does not guarantee a page view-the visitor may bounce, the page may fail to load, or bot traffic may not execute analytics scripts. |
| Bot filtering | Different platforms define and filter bots differently. A traffic source that Nimriz classifies as bot traffic may be counted as a real visit by another tool, or vice versa. |
| Referrer loss | Nimriz records the referrer at the redirect moment. By the time the visitor lands on your page, the referrer may be lost or changed by redirect chains. |
| Reporting lag | Nimriz report rollups aggregate on a schedule. There may be a delay of minutes before a click appears in your dashboard totals, even though it was recorded in real time. |
| Sampling | Nimriz link breakdowns use Nimriz's analytics store counts, which are statistical estimates based on sampling intervals. Very high-traffic links may show rounded or estimated values. |
For attribution accuracy, use consistent UTM parameters on your short link destinations and correlate Nimriz click data with your landing page analytics using the nim_ct conversion tracking parameter.
Troubleshooting
A link is getting traffic but shows zero in the dashboard
- Open Live View for the link to confirm events are arriving in real time. If they are, wait for the next rollup sync-the dashboard report may just be lagging.
- If Live View also shows no events, confirm the link is on the correct domain and that the redirect is being issued by the Nimriz edge (not a cached redirect from a CDN in front of Nimriz).
A campaign is showing almost entirely bot traffic
Links shared heavily in messaging platforms (Slack, iMessage, WhatsApp, Telegram) generate significant link-preview bot traffic. Filter to human-only traffic in the dashboard to see real engagement. This is normal behavior for widely shared links.
A dimension field like Referrer or City is showing as "Unknown"
This is expected. Nimriz groups null, missing, or unresolvable values into "Unknown" buckets rather than dropping rows. Treat "Unknown" as valid data representing traffic where that dimension was not available.