Analytics
Analytics is where you read your traffic. Open Analytics in the sidebar and you get three tabs: Overview, Breakdowns, and Events. Everything is read-only, and every org role (including viewers) sees all of it. No plan gates anything on these pages.
This page covers using the reports: filters, reading the charts, and exporting. For what the numbers mean, see Attribution & match confidence and Clicks, events & analytics data.
Pick a date range
Every tab shows 7d / 30d / 90d / 365d pills in the top-right corner. The default is 30 days.
- The range is part of the URL (
?range=30d), so you can bookmark or share an exact view. - Switching tabs keeps your range.
- Each page shows the exact window in its description, e.g. "last 30 days (Aug 23 – Sep 22, 2026)". Windows are in UTC, not your local timezone; the label tells you the precise dates.
Overview tab
The Overview tab answers "how much traffic, and where is it going?" in one screen.
Read the KPI cards
Five cards sit across the top:
| Card | Number | Subtext |
|---|---|---|
| Clicks | Short-link opens in the window | "incl. N bot clicks" |
| Installs | Devices seen for the first time (reinstalls count) | "first-seen devices (reinstalls count)" |
| Matches | Clicks linked to an app open | "N unmatched" |
| Matched Rate | Share of match attempts that matched | "% of N match attempts" |
| Active Users | Distinct active users in the window | named · anonymous split |
Read the delta chips
Each card carries a chip like "▲ 12% vs prev 30 days" comparing the selected window to the equal-length window before it. Special cases:
- Previous period was 0 and current is above 0 → the chip reads New.
- Current period is 0 and previous was above 0 → ▼ -100%.
- Both periods are 0 → —.
If the comparison can't be computed, chips are hidden and the cards stay up.
Read the charts
- Clicks & matches plots both series over the window. The Daily / Weekly toggle also applies to the Active Users chart below; the choice is shared and saved in the URL (
?bucket=). - Attribution funnel shows four stages: Clicks → Matches → Devices → Identified users, each labeled with a count and "% of clicks". A "↑ vs previous" marker appears where a stage is larger than the one before it.
- Match confidence splits matches into trust tiers, ordered exact → high → medium → low → none. It only renders when at least one tier has data. What each tier means is explained in Attribution & match confidence.
- Active users trend stacks named and anonymous users over the window.
- Top links lists your 5 most-clicked links; clicking a row opens that link's detail page. Top countries shows the 5 highest-click countries as bars with count and share.
Empty state
If the window has no clicks, installs, or matches, you get one card: "No analytics yet / No clicks or matches recorded in this period. / Create a link, share it, and analytics will appear here."
Break down clicks by dimension
The Breakdowns tab slices every click in the window by one dimension at a time. Pick one from the Break down by select:
Country · OS · Device · Browser · UTM Source · UTM Medium · UTM Campaign · Referrer · Channel · Link · Template
Your choice is saved in the URL (?by=country) and survives refreshes and tab switches. The tab shows:
- A horizontal bar chart of the top 10 values. The chart title appends "· top 10" when more values exist. Missing values render as "Unknown".
- A full table below. Generic dimensions show Key / Clicks / Share. When there are more rows than the table fetched, the title says "Top N of M · N total clicks" instead of "All rows (N total clicks)" so you always know if you're seeing a slice.
- An Export CSV button.
Rows with no value in that dimension appear as "Unknown" — they are counted, not dropped.
The template dimension
Choosing Template swaps in a wider table: Template / Channel / Links / Clicks / Matches / Conversions. There is one row per template, including templates with no clicks in the window. Conversions are events recorded by devices that matched through that template's links.
A row can be highlighted with a ◆ marker when the URL carries ?focus=<templateId>. Nothing in the portal sets that parameter today, so you'll only see it on hand-built or shared URLs. Only clicks on templated links are counted here; clicks on links without a template belong to no row.
If you have an old bookmark to /analytics/templates, it now lands here with the Template dimension pre-selected.
Events tab
The Events tab lists your app's custom events by name: a bar chart plus an All events (N total) table with Event name / Count / Share %. The share is calculated against all events in the window, so under truncation the column may sum to less than 100%.
Export with Export CSV.
If nothing appears yet, the empty state shows how to send your first event from the SDK:
optolink.trackEvent("purchase_completed", { plan: "growth" });
Instrumentation details live in the SDK docs.
Export to CSV
Every table on every tab has an Export CSV button next to it. Two things to know:
- The file contains exactly the rows shown, after any top-N truncation. If a breakdown has 40 values, the CSV holds the fetched 20; don't reconcile its sums against the Overview totals.
- The filename encodes the table, dimension, and UTC window, e.g.
optolink-breakdowns-template-aug-23-sep-22-2026.csv.
When something goes wrong
- A failed query shows a banner with a Retry button.
- On the Overview tab, if only the previous-period comparison fails, the delta chips hide but every card and chart stays.
- An invalid value in the URL (say
?range=7d) quietly falls back to the default rather than erroring; if a shared link looks wrong, check the range pills.