This page has one row per widget on the Know dashboard, in the order they appear on screen, so you can scroll the dashboard and this page side by side. Every widget’s date range comes from the one picker in the Know header — with a single exception, Broken links, which is called out below.
The widget table
Fourteen cards, thirteen slots: Top growth and Top decline are drawn by one component into one grid row, so they share position 7.
| # | Widget heading | Subtitle / eyebrow | Question it answers | Backing endpoint or metric | Columns or series | Empty state text | Minimum tier | Behavior below tier |
|---|---|---|---|---|---|---|---|---|
| 1 | Top insights | (eyebrow) Top insights · what Leed sees this month | What should I look at first? | GET /api/know/insights | One card per insight: kind, stat, headline, detail | Insights powered by Leed | Free | — |
| 2 | (KPI row) | — | How did the headline numbers move? | GET /api/know/dashboard; sparklines from GET /api/know/kpi | Page Views · Unique Sessions · Unique Visitors · Average Page Views Per Session · Leads | Cards render with — | Free | — |
| 3 | Page views over time | Real traffic across the selected range | When did the traffic happen? | GET /api/know/kpi?metric=pageViewsMetric | One series, “Page views” | Not enough data to chart this range. | Free | — |
| 4 | Where readers spend time | Share of engaged minutes | Which kind of content holds attention? | GET /api/know/content-types | Donut plus a legend of content type and share | No engaged time recorded in this range. | Free | — |
| 5 | Top performing pages | by lead conversions | Which pages produce leads? | GET /api/know/conversions-by-page | Page · Sessions · Leads · CR | No lead conversions in this range. | Free | — |
| 6 | Journey funnel | Sessions entering on {content type} | Where do sessions drop out? | GET /api/know/journey-funnel | Sessions · Engaged · Explored 3+ pages · Converted | Not enough session data for a funnel yet | Free | — |
| 7 | Top growth | — | Which pages improved most? | GET /api/know/movers | Page · conversion rate · change | No page grew vs the prior period yet. | Free | — |
| 7 | Top decline | — | Which pages fell back most? | GET /api/know/movers | Page · conversion rate · change | No page declined vs the prior period yet. | Free | — |
| 8 | Search gaps | — | What did readers search for and not find? | GET /api/know/search-gaps | (none — always empty) | No search gaps detected | Free | — |
| 9 | Sessions by channel | (right-aligned) inbound attribution | Which channels sent sessions? | GET /api/analytics?metric=inboundAttributionMetric | Top five utm_source values with share bars | No attributed channels in this range. | Growth | Upgrade banner in the card body; the query is never issued |
| 10 | Top referrers | (eyebrow) Top referrers · (right) by sessions | Which sites send me traffic? | referrerHostMetric, limit 8 | Host with a share bar and a session count | No referrers in this range. | Free | — |
| 11 | Most viewed videos | by unique viewers | Which videos get watched? | videoSummaryAnalyticsMetric, limit 8 | Video · Viewers · Watch time · Avg / viewer | No video views in this range. | Growth | The request is refused and the card shows the empty text — see the warning below |
| 12 | Sessions by geography | (eyebrow) Sessions by geography | Where in the world are readers? | sessionsByStateMetric + sessionsByCountryMetric | A US state choropleth and a world choropleth | Regions with no sessions render as neutral land | Free | — |
| 13 | Broken links | from the latest link crawl · (right) N found | Which external links are dead? | GET /api/brokenlinks | Page · URL · Status · Message | No broken links detected. | Free | — |
Widgets 1 to 8 and 13 sit on /know alone. Widgets 9 to 12 are the only ones that go through the general metric API, which is why they are also the only ones that can return a plan gate.
Top insights
The insights strip runs two heuristics against the selected range and emits at most one card each. Both are computed server-side from real form fills and real bounces; neither is a model output, despite the “Insights powered by Leed” badge.
OPPORTUNITY finds the page whose conversion rate most beats your site average. Its headline reads “… converts 3.2x the average” and the stat in the corner is that multiple.
RISK finds the highest-traffic page that bounces hard and never converts. Its headline reads “… bounces 74% with zero leads” and the stat is the bounce percentage.
The Refresh control re-runs both against the same range. When neither clears its thresholds, the whole strip collapses to a single centered card carrying the badge Insights powered by Leed and the line “No insights to surface yet. As Leed learns from your content’s real performance, opportunities, risks, and ideas will appear here.”
The exact thresholds both heuristics use
OPPORTUNITY considers only pages with 8 or more sessions in the window. Among those, a page must also have at least 3 form fills and a conversion rate at least 2× the average across that eligible set. The winner is the one with the highest multiple. If the eligible average conversion rate is zero, no card is emitted at all.
RISK considers only pages with 10 or more sessions and zero form fills. Among those, a page must have a bounce rate of 60% or higher. Candidates are ranked by session count first, bounce rate second, and only the top one is emitted.
A bounce here means a session with exactly one page view. It has nothing to do with how long the reader stayed — see how Leed tracks visitors.
One wart worth knowing before you go looking for a bug: an insight headline names the page by its page id, not its title. The card is otherwise correct, and the id is the one in the page’s editor URL.
The third insight card you will never see
The design for this strip had a third card type — unanswered reader search queries — and you will never see it. Leed keeps no log of searches that returned nothing, so the endpoint deliberately emits nothing rather than inventing a card. It is not a permissions problem, a plan gate or a data-volume problem, and no amount of traffic will produce one.
Journey funnel
Four steps, each labeled and drawn as a bar whose width is its share of the first step:
| Step | What it counts |
|---|---|
| Sessions | All sessions that entered on this content type |
| Engaged | Of those, the ones with real active time recorded |
| Explored 3+ pages | Of those, the ones that viewed three or more pages |
| Converted | Of those, the ones that produced a form fill |
The funnel is computed for one content type only — whichever entry content type had the most sessions in the range. That is why the subtitle changes from the generic “Step-by-step path to conversion” to “Sessions entering on Blog” (or whatever your busiest entry type is) once there is data. There is no control to switch content types on this card.
The percentage beside each bar is its share of the first step, not of the step above it, so the numbers only ever fall. When there are not enough closed sessions to build a funnel at all, the card reads “Not enough session data for a funnel yet”.
Top growth and Top decline
Both cards come from the same ranking: every page’s conversion rate in the selected range against its conversion rate in the prior equal-length window, ranked by the size of the movement, top eight. The list is then split — pages that moved up go to Top growth, pages that moved down to Top decline — so the two cards rarely hold four rows each.
A movement of less than half a percentage point in either direction is treated as flat and appears in neither card.
Search gaps — permanently empty, and why
The Search gaps card renders its heading, its magnifying-glass icon, and the text “No search gaps detected”. It will do that on every plan, at every traffic level, for every date range, because the endpoint behind it returns an empty list and marks itself unavailable. There is no zero-result search log in Leed for it to read.
This is not the same thing as saying reader searches are not recorded. When live documentation search is enabled, every query your readers type is logged, including the ones that found nothing — this widget just does not read that log yet. It is listed among the known limitations.
Sessions by channel
The card fetches up to 50 attribution rows for the range, adds up their counts per utm_source, and draws the top five as labeled bars. A row with no source is bucketed as other. That client-side roll-up is why the card shows five channels while the underlying metric has six columns — the list metrics reference gives the full column set, and journeys, funnels and attribution explains what does and does not qualify as an attributed arrival.
Below Growth this card behaves the way a gated surface should: it stays on the page, the heading and the inbound attribution eyebrow still render, and the body is replaced by an upgrade banner reading “Full-journey attribution is available on the Growth plan”. The query is never sent, so nothing 402s in the background.
For what an upgrade banner means and who on your team is allowed to act on it, see when a feature is gated.
Top referrers
Referring hosts, ranked by sessions, top eight, each with a share bar. A session that arrived with no referrer — typed, bookmarked, or from an app that strips the header — is grouped as (direct).
This card is never plan-gated. Note that its heading is drawn as a small uppercase eyebrow rather than the larger card titles used elsewhere on the page; it is a card, not a section of the one above it.
There is a naming trap here that costs people time. The card headed Top referrers is backed by the catalog metric whose own name is “Referrers” — referrerHostMetric. There is a different metric in the catalog actually named “Top Referrers”, and this card does not use it. The pair is disentangled under the two referrer metrics.
Most viewed videos
Four columns — Video, Viewers, Watch time, Avg / viewer — ranked by unique viewers, top eight. The asset id is resolved to the video’s name, and clicking a row opens that asset. Watch time is deduplicated: a section a viewer rewatched counts once, so this figure is deliberately lower than raw seconds played.
Most viewed videos is one summarized view of your media. Per-video retention, pause and replay curves — including for audio, which has no Know widget at all — are covered in media engagement analytics.
Sessions by geography
Two choropleths side by side in one card: a US state map and a world country map, from sessionsByStateMetric and sessionsByCountryMetric. Both request up to 100 rows and both follow the header’s date range.
Regions with no sessions are not blank or missing — they are normalized to zero and painted as neutral land, so an empty map and a map with one visitor in one state look different. Location is approximated from network-level request data; Leed never asks a visitor’s browser for their position.
Broken links
The only widget on Know that ignores the date range. It shows the current state of your site — the results of the most recent external-link crawl — not a window of history, and its subtitle says so. Changing the picker to “Today” or “Previous 365 days” changes nothing in this table.
Four columns: Page, URL, Status, Message. The page cell links into the editor; the count of rows found is shown at the top right. When the last crawl found nothing, it reads “No broken links detected.”
It is also the only widget on the dashboard that does not use the analytics privilege — it reads company data instead. How the crawl runs, what statuses it reports and how to clear an entry are on link health.
The endpoints behind the page
| Endpoint | Widget it feeds | RBAC privilege | Range-scoped? |
|---|---|---|---|
GET /api/know/insights | Top insights | analytics:read | Yes |
GET /api/know/dashboard | The KPI row | analytics:read | Yes |
GET /api/know/kpi | KPI sparklines and Page views over time | analytics:read | Yes |
GET /api/know/content-types | Where readers spend time | analytics:read | Yes |
GET /api/know/conversions-by-page | Top performing pages, and the Leads KPI | analytics:read | Yes |
GET /api/know/journey-funnel | Journey funnel | analytics:read | Yes |
GET /api/know/movers | Top growth and Top decline | analytics:read | Yes |
GET /api/know/search-gaps | Search gaps | analytics:read | Yes, though the result is always empty |
GET /api/analytics | Sessions by channel, Top referrers, Most viewed videos, Sessions by geography | analytics:read | Yes |
GET /api/brokenlinks | Broken links | company:read | No |