Skip to main content

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

Open AnalyticsIn your workspace. You are asked to log in first if you are not already.

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

Countries and devices are on every plan. Referrer breakdown and browser breakdown are Pro and above. See the table below for what each metric covers.
MetricWhat it counts
Total clicksEvery human visit to your links in the selected period. A lifetime count, when shown, covers all time rather than this period, and refreshes hourly.
ChangeThe 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 uniquesVisitors 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 scansClicks that arrived from a QR code generated in ShortZen. A subset of total clicks, not added on top.
Click trendClicks 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 calendarA Calendar view of the same daily click trend. Account page only, and only when the range is 14 days or longer.
Top linksYour links ranked by clicks in the period.
CountriesWhere clicks came from, approximated from the network.
DevicesPhone, tablet, or desktop.
ReferrersWhich site the visitor was on when they clicked. Pro and above.
BrowsersWhich browser they used. Pro and above.
Operating systemsWindows, macOS, iOS, Android, and so on. On every plan, like device.
CitiesCoarse city from the network edge. Missing when the header is absent.
Hour of dayWhen 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 weekThe 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 rulesWhich Smart Routing rule handled the click. Pro and above. Unmatched clicks group as default.
CampaignsOne 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 clickutm_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 clicksClicks whose visitor hash was seen before this period. Only when Audience analytics is on. Does not replace Daily uniques.
Conversions / CVRPixel 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 requestsRequests 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

The rest of the page reads a daily rollup. A segment cannot: a rollup counts each dimension separately, so it can tell you the German total and the mobile total but has no record of which clicks were both. Segmented figures therefore come from the clicks themselves and stop at the last completed hour, where the unsegmented ones are up to date to the hour. Every plan can filter by one value by clicking a row; combining conditions, and filtering by referrer, browser, routing rule or campaign, are Pro and above.

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

SectionWhy a segment cannot filter it
Campaign, source and mediumThese 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 rateConversion events carry their own scope and are counted separately from clicks.
Daily uniquesThe 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

Showing the whole workspace's figures under a segmented heading would be worse than showing nothing, because you would have no way to tell which numbers the segment applied to. The page names them beneath the trend instead.

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?

Counting exactly would mean keeping something that identifies each visitor. We would rather give you a number that is very slightly approximate than build a profile of the people who click your links. Visitor IP addresses are anonymised before anything is stored.

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

Fetching a link from a script or a command-line tool usually looks automated and is excluded on purpose. Test from a real browser if you want the click to count.

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

Upgrading extends the window from that point forward; it does not recover data that has already aged out. If you will need this year's numbers next year, export them to CSV while they are still there.

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

Visitors is daily only. A day's visitor count is a distinct count within that day, so adding two days together would give a number of people that did not exist, so the grain control drops back to Daily rather than drawing a figure nobody can stand behind. Conversion rate is worked out inside each bucket rather than summed, and the most recent bucket runs ahead of itself: conversions are recorded the moment they are reported, while clicks arrive from the hourly roll-up. There are two overlays: the previous period, and the rest of your traffic beside a segment. Both are click counts, so they are offered on the Clicks measure only.

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.

Source: the plan registry, the same figures billing reads.
LimitFreeStarterProBusiness
Links / month305002,00010,000
Tracked clicks / month (alert only)2,00025,000100,000500,000
Custom domains131050
Link-in-bio pages13510
Team seats11310
Webhook endpointsNone1520
UTM presets31050200
Folders1025100500
Tags20502001,000
Saved analytics views31030100
Shared analytics reports131020
Bulk CSV rows / importNone1005002,000
One-time import allowanceNone2,00010,00050,000
API calls / hour3001,2005,00020,000
Analytics history3090365730
Smart routing rules / linkNoneNone2050
Links per bio page10100100100
Webhook deliveries / monthNone2,00020,000100,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 seeUsually because
A click you just made is missingThe 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 showAutomated traffic is excluded here and typically is not in raw logs.
A chart shorter than the range you asked forThe range exceeded your plan's retention window. The page says so above the chart.
Daily uniques nearly equal to total clicksNormal 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 dataReferrers 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 stoppedRead 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 upThey 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

  1. 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.

  2. Look at Top links first.

    You learn whether the problem is spread across the campaign or concentrated in one link.

  3. Open the worst-performing link's own analytics page.

  4. 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.

  5. Check devices.

    A campaign that is overwhelmingly mobile but pointed at a page that is poor on mobile explains itself.

  6. Check countries against who you were targeting.

  7. On Pro and above, check referrers.

    You see which channels actually delivered, as opposed to which ones you sent to.

  8. 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.

Try it on a real link

The free plan needs no card and has no time limit.