Understanding your analytics
What every number on the Analytics page means, how far back the data goes, and what is deliberately not counted.
Reviewed 24 Oct 2026
Two views of the same data
The Analytics page covers your whole account: every link together, plus a ranking of which ones are doing the work. Each individual link also has its own version of the page, reached by clicking through from your Links table or by picking the link in the command palette.
Use the account view to see whether things are working. Use a link view to find out why. On the account page you can narrow the report by folder, tag, or custom domain, save that combination as a view, share a read-only link to it, and click any breakdown row, on either report, to filter the whole page to that value: a chip in the toolbar names it, and its x clears it. Click Total clicks, Visitors, or Conversions above the trend to plot that figure. Export CSV sits in the toolbar with the date range on both reports (Starter and above) and follows the window on screen.
The numbers
Referrer and browser breakdowns need Pro
| Metric | What it counts |
|---|---|
| Total clicks | Every human visit to your links in the selected period. A lifetime count, when shown, covers all time rather than this period, and refreshes hourly. |
| Change | The badge beside a figure, against the period before. Under 2% reads as steady and stays grey; under 20% colours the arrow and number; 20% or more fills the badge green or red, so the moves worth a look stand out. While the range ends today, the change compares complete days: today joins it once the day is over, and the period before leaves out its matching day, so a morning does not read as a drop. Today on its own has nothing complete to compare yet. |
| Daily uniques | Visitors counted once per day across your workspace, then summed: NOT distinct people over the period. One person who clicks three links on two days counts twice, not six times: the fingerprint is scoped to the workspace, so the links do not multiply it, but it is re-cast at midnight UTC so the days do. A tilde means the window was shortened; the caption names how many days it covered. For an exact per-visitor count, turn on Audience analytics. |
| QR scans | Clicks that arrived from a QR code generated in ShortZen. A subset of total clicks, not added on top. |
| Click trend | Clicks per day across the period, unless you change the bucket or the measure, both of which switch above the chart. See "Reading the trend chart" below. |
| Activity calendar | A Calendar view of the same daily click trend. Account page only, and only when the range is 14 days or longer. |
| Top links | Your links ranked by clicks in the period. |
| Countries | Where clicks came from, approximated from the network. |
| Devices | Phone, tablet, or desktop. |
| Referrers | Which site the visitor was on when they clicked. Pro and above. |
| Browsers | Which browser they used. Pro and above. |
| Operating systems | Windows, macOS, iOS, Android, and so on. On every plan, like device. |
| Cities | Coarse city from the network edge. Missing when the header is absent. |
| Hour of day | When clicks happened: on the visitor's own clock wherever the clicks carry one, in UTC where they do not. One histogram, not two: the panel title and the peak-hour caption name which clock is on screen. Daily totals cannot go finer than an hour. |
| Day of week | The same daily totals folded onto Monday to Sunday, in UTC. On the account page you can also filter the report to selected weekdays (`dows` in the URL). Totals, rankings, and the trend then cover only those UTC days. |
| Routing rules | Which Smart Routing rule handled the click. Pro and above. Unmatched clicks group as default. |
| Campaigns | One list with a switch for Campaign, Source, and Medium. Tagged on the link groups results by the UTM tags saved on each link when you created it, not by query strings on the short URL the visitor clicked. One Export menu covers every list (Starter and above). |
| Campaigns on the click | utm_campaign, utm_source, utm_medium, utm_content, and utm_term read from the short URL the visitor clicked. This is the Campaigns panel's other mode. Pro and above. Empty for clicks recorded before this existed. |
| Returning clicks | Clicks whose visitor hash was seen before this period. Only when Audience analytics is on. Does not replace Daily uniques. |
| Conversions / CVR | Pixel or API conversion events in the period, and conversions divided by clicks. Available from Business. A link's own report counts the conversions attributed to that link, over that link's clicks, and names the goals they fired. An empty period means no pixel or API events, not missing data. |
| Turned-away requests | Requests that reached a link but not its destination, grouped by what turned them away. A sentence under the trend, on every plan. Not counted as clicks and not added to them: a refusal is the absence of a click. |
Asking a narrower question with a segment
The breakdowns tell you how many clicks came from Germany and how many came from a phone. A segment tells you how many were both. Open Segment above the report, pick a dimension and a value, and add up to five conditions, and every one narrows the report further. Conditions combine with "and", not "or", because that is the shape a real question has: you want to know how German mobile visitors behave, not how visitors who are either German or on a phone behave. Picking a second value for a dimension you have already used adds it, so Country in DE, NL matches a click from either. Conditions across dimensions still combine with "and".
Segments read individual clicks, so they stop an hour earlier
A segment travels with the report. It is part of the URL, so a bookmark keeps it; it is saved with a view; and a shared report carries it, states it above the numbers, and puts it in the share's name so two shares of the same period are not indistinguishable. The one thing it does not travel with is CSV export: that file is daily totals per link, which carry no click-level detail, so a segmented export is refused rather than quietly handing you the unfiltered rows.
What a segment does not narrow
| Section | Why a segment cannot filter it |
|---|---|
| Campaign, source and medium | These group your LINKS by the UTM tags you saved on them when you created them. Nothing about them is read from the click, so a click-level condition has nothing to filter. |
| Conversions and conversion rate | Conversion events carry their own scope and are counted separately from clicks. |
| Daily uniques | The estimate keeps a compact statistical summary with no dimension attached, so it cannot be split by country or device. On the account report with Audience analytics on, an exact count within the segment is shown instead. |
These are left empty on purpose
How daily uniques are estimated
It is an estimate, deliberately. ShortZen counts distinct visitors using a method that keeps a compact statistical summary rather than a record of who visited. That means the number is accurate to within a small margin and no individual visitor identity is retained. A workspace that opts into Audience analytics additionally stores a hashed first-party cookie so it can tell new visitors from returning ones. That hash is a separate figure, not a replacement for this estimate.
Why not exact?
What is not counted
Automated traffic is identified and excluded: crawlers, scanners, link previewers, monitoring tools. Your numbers reflect people.
This is why your test click may not appear
How far back the data goes
Your plan sets a retention window. Ask for a range longer than that and the page shows you what it has and tells you plainly that the range was shortened, so a chart does not quietly imply it is covering more ground than it is.
- Analytics history, by plan
- Free 30 · Starter 90 · Pro 365 · Business 730
History outside the window is gone, not hidden
Choosing a date range
Presets cover today, yesterday, 7 days, 30 days, 90 days, this month, and the last 12 months, and you can set a custom range. Thirty days is the default, or seven on a plan that keeps less than sixty days of history, so that there is a previous period to compare with: it is long enough to show a trend and short enough to still be about now. Account and per-link analytics use the same windows.
Reading the trend chart
The trend is not fixed to one shape. Two controls sit on its title row: one changes the bucket the days are folded into, the other changes what is being measured. Each appears only when there is more than one answer to offer.
The first is the time grain: Daily, Weekly, or Monthly, on every plan. The same daily figures are folded into bigger buckets, so nothing is re-measured: a weekly point is simply its seven days added up. Weekly is offered once the range is three weeks or longer and Monthly once it is a quarter or longer, because below that a bucket has too few points to read as a trend. A long range opens on a coarser grain by default, since a year plotted as daily points is a smear rather than detail, and you can move it back. Buckets are UTC and weeks start Monday, matching the day-of-week histogram. Filtering to selected weekdays removes the control entirely: a week bucket contains all seven days, so it would silently include the ones you excluded.
The second chooses what is on the vertical axis: Clicks, Visitors, Conversions, or Conversion rate. It appears only when your workspace can answer more than one of them. Visitors needs Audience analytics turned on; Conversions and Conversion rate need conversion tracking, available from Business. A workspace measuring neither sees the same chart as before. The panel heading names whichever measure is plotted, so a chart of conversion rate is not labelled as clicks. You can also plot a headline figure by clicking its label: Total clicks, Visitors, or Conversions. A dot beside the label marks the one on the chart.
Two measures carry a caveat
Sharing a report
Share on the account Analytics toolbar mints a read-only link anyone can open without logging in. The link carries the current date window, the folder, tag, domain and weekday filters, and any segment. A preset stays rolling (last 30 days stays the last 30 days); a custom range is pinned. Revoke it from the same toolbar and the public page 404s. The page is not indexed.
A share also ends on its own. Every new one is minted with a 90-day life, and the copy confirmation says so at the moment you mint it. When that passes, the public page 404s exactly as a revoked one does. The length is not something you pick: there is no per-share end date, and the same 90 days applies to every share on every plan. Shares minted before end dates existed carry no expiry and keep working until they are revoked.
How many shares a workspace can hold live at once comes from its plan. The number is in the plan table below, and every plan includes at least one. It counts live shares only: revoking one frees its slot straight away, and an expired one stops counting too. If a client needs the report for longer than a share lasts, mint a fresh one when the old one dies, or send them a CSV export instead: a file does not expire and does not stay open to anyone holding the URL.
| Limit | Free | Starter | Pro | Business |
|---|---|---|---|---|
| Links / month | 30 | 500 | 2,000 | 10,000 |
| Tracked clicks / month (alert only) | 2,000 | 25,000 | 100,000 | 500,000 |
| Custom domains | 1 | 3 | 10 | 50 |
| Link-in-bio pages | 1 | 3 | 5 | 10 |
| Team seats | 1 | 1 | 3 | 10 |
| Webhook endpoints | None | 1 | 5 | 20 |
| UTM presets | 3 | 10 | 50 | 200 |
| Folders | 10 | 25 | 100 | 500 |
| Tags | 20 | 50 | 200 | 1,000 |
| Saved analytics views | 3 | 10 | 30 | 100 |
| Shared analytics reports | 1 | 3 | 10 | 20 |
| Bulk CSV rows / import | None | 100 | 500 | 2,000 |
| One-time import allowance | None | 2,000 | 10,000 | 50,000 |
| API calls / hour | 300 | 1,200 | 5,000 | 20,000 |
| Analytics history | 30 | 90 | 365 | 730 |
| Smart routing rules / link | None | None | 20 | 50 |
| Links per bio page | 10 | 100 | 100 | 100 |
| Webhook deliveries / month | None | 2,000 | 20,000 | 100,000 |
When the numbers look wrong
Start with the line under the trend. When requests reached a link but not its destination, the report says how many were turned away and what turned them away: the link was paused, it was deleted, its expiry date passed, it is scheduled and not live yet, it hit its click limit, it was flagged unsafe, or a password gate was shown. That line is on every plan, Free included, because a link that has hit its click limit is exactly the case where the owner needs telling. Turned-away requests are not counted as clicks, so the answer to "the trend went to zero and I do not know why" is usually sitting one sentence below the chart.
| You see | Usually because |
|---|---|
| A click you just made is missing | The redirect records the click straight away, but the roll-up these figures read from runs hourly. Wait up to an hour, then refresh. |
| Fewer clicks than your own logs show | Automated traffic is excluded here and typically is not in raw logs. |
| A chart shorter than the range you asked for | The range exceeded your plan's retention window. The page says so above the chart. |
| Daily uniques nearly equal to total clicks | Normal for a link shared once to a wide audience. Repeat visits on the SAME day are what pull the two apart. A return visit tomorrow counts again. |
| No referrer data | Referrers need Pro or above. Many clicks also legitimately have no referrer: those from a QR code, a messaging app, or a typed address. |
| A link that was working stopped | Read the turned-away line under the trend: it names the reason. A pause, an expiry date, or a start date still ahead are all settings on the link. A click limit reached is the link's own cap, which you can raise or clear. No line at all means requests are not arriving, so check the short URL you handed out. |
| Clicks and turned-away requests do not add up | They are not meant to. A refusal is the absence of a click, not a kind of click, so the two are counted separately and neither is a share of the other. |
Step by step
Work out why a campaign did not land
Before you start
- A campaign whose links carry consistent UTM tags, or at least a folder or tag grouping them.
- The campaign inside your plan's retention window.
Steps
Open Analytics and set the date range to the campaign period.
Match it to the campaign, not to a round 30 days, or the comparison is against the wrong baseline. If the campaign lives in a folder or tag, apply that filter so the totals are only those links.
Look at Top links first.
You learn whether the problem is spread across the campaign or concentrated in one link.
Open the worst-performing link's own analytics page.
Check the click trend for its shape.
A spike then nothing means distribution reached people once. A flat line near zero means it did not reach them at all. These are completely different problems.
Check devices.
A campaign that is overwhelmingly mobile but pointed at a page that is poor on mobile explains itself.
Check countries against who you were targeting.
On Pro and above, check referrers.
You see which channels actually delivered, as opposed to which ones you sent to.
Compare against Campaigns to see this campaign next to others.
What you should see
A specific answer rather than a general sense that it went badly: the channel that underdelivered, the device that was mishandled, or the audience that did not see it.
How to check it worked
- You can name which link, channel, or segment accounts for the shortfall.
- You have a number to compare the next campaign against.
Edge cases
- The campaign is older than your retention window.
- Only the part inside the window is available. Nothing recovers the rest. Set a reminder to export at the end of future campaigns.
- Campaigns is empty.
- The links carry no UTM tags. That section is built from them. Tag the links next time, ideally from a preset.
- Clicks look healthy but conversions did not follow.
- The problem is past the redirect. ShortZen can tell you people arrived; your own site analytics has to tell you what they did next.
If something goes wrong
- The links were not tagged and you cannot separate the channels.
- You cannot reconstruct it after the fact. From now on, one link per channel, each with UTM tags from a saved preset. The attribution comes free after that.