Docs

Metrics glossary

Plain-language definitions of every metric you'll meet across reports, AI visibility, and the GEO Audit.

How to read this glossary

Every number in CrunchJunkie comes straight from the source it belongs to — Google Ads, GA4, Meta, and the rest report their own metrics, and we surface them unchanged rather than recalculating them behind the scenes. The definitions below explain what each metric means and how it's normally derived, so you can explain any figure to a client with confidence. A quick note on attribution and rounding: platforms count conversions and revenue using their own attribution windows and models, so the same sale can be reported slightly differently by two channels. That's expected, not an error — when you blend channels in one widget, you're adding each platform's own count, not reconciling them into a single source of truth.

Advertising and traffic metrics

Impressions: how many times an ad was shown. Clicks: how many times people clicked it. CTR (click-through rate): clicks divided by impressions, as a percentage — a measure of how compelling the ad is. CPC (cost per click): spend divided by clicks — what you pay, on average, for each visit. Cost (spend): the total amount spent in the period. Conversions: the count of valued actions the platform attributes to your ads (a purchase, lead, sign-up — whatever you've set up to track). CPA (cost per acquisition): spend divided by conversions — what each conversion costs you. ROAS (return on ad spend): conversion value (revenue) divided by spend, usually shown as a ratio such as 4.0× — for every euro spent, four came back. These efficiency metrics are the ones clients care about most, which is why they make good scorecards with a comparison period attached.

GA4 analytics metrics

Sessions: visits to the site — a single user can have several. Engaged sessions: GA4's count of sessions that lasted longer than ten seconds, had a key event, or had two or more page views — its definition of a visit that genuinely went somewhere. Engagement rate: engaged sessions divided by total sessions, as a percentage; it's GA4's modern replacement for the old "bounce rate" thinking, read the opposite way (higher is better). Key events: GA4's term for the events you've marked as important (formerly "conversions" in older GA). Revenue: the monetary value GA4 records against purchase or other revenue events. Users: the number of distinct people, as opposed to sessions. Reading volume (sessions, users) alongside quality (engagement rate) and outcome (key events, revenue) gives a fuller picture than any single metric on its own. A funnel widget's steps are counts of sessions that narrow down, each a part of the one above it, so its percentages never pass 100 %. A Key events step counts the sessions with at least one key event, not the key events themselves (one session can fire many), and it is labelled that way. A rate, an average, a duration or revenue is no funnel step: it is left out and the note under the funnel names it. Only Sessions, Engaged sessions and sessions with a key event draw as steps, in that order, because each is a part of the one before it. Any other count, such as Transactions, Users or Events, is left out and named in that note even when it is smaller, because it is not a part of the sessions above it.

AI visibility metrics

These come from AI Visibility scans, not ad platforms, and they count EARNED mentions only — never paid placements such as ChatGPT Ads, which are a separate channel and separate spend. Visibility %: how often your brand appears across all tracked prompts and models — your overall earned presence in AI answers. Share of Voice: your slice of total brand mentions versus the competitors you track — who owns the conversation in your category. Sentiment: how positively or negatively a mention describes you, scored across the answers where you appear. Average Position: where your brand tends to land within an answer when it does appear (earlier and more prominent is better). Citation Diversity: across how many of your tracked prompts your own domain is actually cited — breadth, not a raw count a single prompt can dominate — shown as "cited in N of M prompts", so being cited widely reads stronger than being cited once. Margins and sample sizes in a report. Every rate carries the answers it rests on, and every Visibility its margin of error in percentage points (the "±" of the Visibility card, one standard error). The per-engine table (dimension Model) shows, for your brand, each engine's Visibility, its ±, the answers behind it (n), the change against the comparison period and then position, sentiment, share of voice and mentions (an engine's row matches the Visibility card with that engine's answers alone, with or without a filter on the widget); a change inside the combined margin is marked "~" (within margin), not a rise or a fall. The "You vs competitors" table prints each brand's ± next to its Visibility and says under the table that all brands were measured on the same n answers (or, with per-market competitors or a competitor added part-way through a filtered period, gives each brand its own Answers column). Its Rank column states each brand's place by Visibility among all brands measured in the period, the ranking Brand Rank reads: #2, or #2–#4 where the 95 % intervals overlap, so brands that cannot be separated share a range; a dash where a brand's margin is unknown. A brand whose 95 % interval (the interval Brand Rank is judged by, worked out from its mentions and answers, so on a small sample not simply 1.96 × ±) overlaps yours is marked "≈": it cannot be shown to differ from you, so it is not ranked against you, and the rows stay in the order of their figures, which is not a ranking among them. A null figure is a dash, never a zero. Sentiment and Average Position need ten mentions. A mean of fewer than ten mentions is not stated: on the Sentiment and Average Position cards, in the Brand, per-engine, Prompt and Tag tables, in the Overview, in the AI summary's data, in the MCP connector and in the REST API, the figure is a dash (null in the APIs) with the number of mentions it would rest on, and a line under the widget says so. Average Position counts the mentions that carried a rank in a list, Sentiment the mentions that carried a score, not the answers. It is the same ten as Perception: a brand with fewer than ten described mentions has no Perception card in a report. A period with no mention at all is plain "no data". On a chart such a point is a gap: not drawn as a value, not as 0, and the line breaks there rather than joining across it (a lone point between two gaps shows as a dot, a bar chart shows no bar). A day, a week and a month are each judged on the mentions they pool, so a weekly point can stand where its days could not. Hovering a gap says what it rests on, and one line under the chart says how many points of how many were left out, with the floor and the period, on the report, the share link and in both PDFs. The Overview's Sentiment trend does the same. Its CSV export keeps its columns and adds Mentions at the end of each row; a row's Sentiment or Avg. Position under the floor is an empty cell, never 0, and a last line says so. In the APIs a chart's gap is null, with gapMentions beside the series. In the MCP connector and the API the fields are avgPositionMentions and sentimentMentions, and avgPositionWithheld and sentimentWithheld give the reason when one to nine mentions carried the figure. Every source and citation figure — Retrievals, Citations, Citation Rate, Source Appearances, Citation Diversity, top cited domains, cited URLs, gap domains, content gaps' cited domains, fan-out citation shares, shopping sources, perception's attribute sources, source health and the citation-gap actions — leaves out DeepSeek V4.1 Flash answers, the model DeepSeek has run since 10 September 2026. DeepSeek's current model ignores the web search tool our scan sends, so the URLs in its answers are written from model memory, not found by a search. They are labelled "from model memory, not a search" on the Responses view and in the API, never counted as citations, and left out of the numerator and the denominator alike. Wherever one of these figures is shown — on a screen, in a report widget or chart, in an AI summary's data, or in an API response — a note or a field says how many answers it left out. DeepSeek's brand mentions still count toward Visibility, Share of Voice, Sentiment and Average Position — naming a brand needs no search. Retrievals, Retrieval Rate, Citations and Citation Rate on our own scans count only the answers that show what the engine retrieved and what it cited. Retrievals is the number of answers in which the engine retrieved a page of your domain while searching, and Retrieval Rate divides it by the answers that show what they retrieved. Citations is the number of answers that cited your domain, out of the answers that show what they cited. Citation Rate takes the answers that show both lists and retrieved your domain, and gives the share of them that also cited it. When no such answer retrieved your domain, Citation Rate reads "—", in any month. A KPI card states how many answers its figure is based on (n). An answer without a list for one side is left out of that side's figures, numerator and denominator: answers scanned before 2 July 2026, when the split was first stored; engines that report one side only (Perplexity, Microsoft Copilot and Google's AI Overviews and AI Mode report only what they cited); and Gemini answers from 2 to 9 July 2026, whose sources were stored as Google redirect links that name no domain. A period in which no answer shows a list has no figure: it reads "—" on KPI cards and in tables (Month and Week tables included), in the app, in shared reports and in PDFs; a chart leaves a gap; the AI summary's data says "no data"; the API and the MCP connector return null. It never reads 0. A period in which only some answers show it is computed over those answers alone, and its n says how many. Until 10 October 2026 such a period read 0 on report KPI cards, in Month and Week tables, on charts, in the AI summary's data and in the MCP connector, and the Gemini answers from 2 to 9 July counted as answers that neither retrieved nor cited your domain. A saved AI summary that quoted such a 0 is flagged as "figures changed" once, and the next scheduled send writes it again. Brand Rank and Source Domain Rank (30 October 2026). Two key figures that state a place instead of a rate, for a KPI widget. Brand Rank is your place among the brands you track, by Visibility: each brand's mentions divided by its answers, pooled over the report's dates and the widget's filters, the same Visibility the Brand table shows. Source Domain Rank is your own domain's place among all source domains, by the share of answers that used it as a source, the same share the Source domains table shows; its footnote under that table reads the same ranking. They read "#4 of 87 domains" and "#9 of 13 brands measured"; a lower number is better. The brands measured are those with answers in this period, so the number can differ from the Data basis table's Brands tracked, which counts the competitors tracked now. Brands or domains with the same figure share a place (1, 2, 2, 4). A place is not stated more precisely than the data allows: each brand's Visibility, and each domain's share of answers, carries a 95 % margin, and where the margins of neighbours overlap the figure reads as a range, "#8–#10 of 13", until a single place is the only one the data allows. The margins treat answers as independent, which they are not quite (answers to one prompt on different days are alike), so a range is, if anything, a little narrow. A move against the comparison period reads "+6 places" in the improvement colour and is called a gain or a loss only when the two periods' ranges do not overlap; otherwise the card says "within margin". If your domain was not used as a source at all in the period, Source Domain Rank has no figure and says "not among the sources", never #0 and never last place. The line under the figure says out of how many and where you were; the tooltip gives the answers behind it. Both are for KPI widgets only; the "AI Visibility — Monthly Deep Dive" template has them in its first two key-figure rows. The Data basis and Methodology tables (30 October 2026). A table widget with the dimension "Data basis" states what a report stands on, in one row: the period, the answers (Chats on Peec AI data), the prompts with at least one answer, the brands tracked now, the prompt tags and the engines that answered, counted over the same answers the key figures use (the report's dates, the widget's filters and source). Under it: the markets, the competitor set, and the changes since the comparison period: prompts added with the day of their first answer, prompts that had answers then and none now (CrunchJunkie stores no pause or removal date, so it does not say which), engines and markets that appeared or have no answers now, and brands measured in one period and not the other (a competitor has no created-at date, so it is "measured", never "added"). The same footnote also names what happened inside the period itself: an engine whose first answer came more than a week after the period's first, and prompts whose last answer came more than a week before its last (paused, removed or not scanned since; no date is invented). "No changes" when there are none; if the comparison period holds no answers, no change is stated. In the builder, the three footnotes can be switched off one by one. A table with the dimension "Methodology" ends a report: answers per calendar month of the widget's own dates (give it a trend range such as the last six months and no comparison; a month the range covers only in part is marked), the prompts first answered in the period with their days, what an answer is and which source the numbers come from. Its months count stored answers, so when the daily figures do not hold more than 5 % of them yet, the table says so. Both state a basis; neither is a result. The Market table (30 October 2026). A table widget with the dimension "Market" shows your brand's figures for each market of the project (language and country, for example Germany · German) on one row: Visibility, its ± (one standard error, in percentage points, the same as on the Visibility card), the answers behind it (n), the change against the comparison period ("~" inside the margin: neither a rise nor a fall), then Avg. Position and Sentiment (a dash under ten mentions, with a line under the table saying on how many), Share of Voice and Mentions. Each row is that market's answers alone, divided once: markets are never added up or averaged, which is the point of the table, because a Visibility figure without a Locale filter pools every market. A KPI filtered to "Locale is" one market equals that market's row. A market the project tracks that has no answer in the period is a row with Answers 0 and dashes, not 0.0 %. A project with one market gets one row and a line saying only one market is tracked. An answer or daily figure stored without a market belongs to the project's own market. On Peec AI per-tag figures, rows without a market are counted in the project's own market and the table says so. The rows are your brand's; where markets track different competitors, Share of Voice is measured against each market's own tracked brands, and the table says so. If an engine had a measurement incident, the change leaves it out in both periods, as the Visibility card's does. On Peec AI chats alone the answers column reads Chats. A language without a country beside the same language with one (German beside Germany · German) is a separate row, never merged, and the table says so. The Definitions table (30 October 2026). A table widget with the dimension "Definitions" is the report's glossary: two columns, Term and Definition, with one sentence for each metric and symbol that the other widgets of the report actually use (Visibility, Share of Voice, Avg. Position, Sentiment, Mentions, the rank figures, the source and citation figures, the AI-driven sessions, conversions and revenue of an attribution widget, then Answers, ±, Δ, ≈, "~" and "*"). It reads the report's other widgets, so a metric the report does not use is not listed, and it can sit anywhere in the report. The sentences are in the report's language, in a fixed order (visibility, sources, outcomes), and a report on Peec AI chats alone says Chats and defines Retrievals, Citations and the rates the way Peec AI counts them (per chat). Under the table: the period and the answers (chats) the figures rest on. It holds words, not results: AI summaries leave it out, and the MCP connector and the API mark it as a glossary. Every metric of the AI visibility catalog has a sentence in English, German, Spanish and French. The asterisk on a change (30 October 2026). A change printed with * compares with a period that did not hold the same prompts: some were first tracked after that period began, some gained an engine or a market after it began (judged inside the widget's scope, so a Model or Locale filter narrows it), some have no answer in this period from an engine or a market they had in it, some had earlier answers but none at all in it, and some were answered in it and have no answer in this period (not counted while this period is still running: a scan may be in progress). Part of the change is then the set of prompts differing, not the same prompts doing better or worse. The mark sits on the change of a counted or rated key figure (Visibility included), on the Δ Visibility of the Model and Market tables (each row judged on its own engine or market), on the Visibility change in the Brand table and in the tag tables; the note under the table says how many prompts of each kind, and when. On the month tables each month and each Δ read the prompts of that month, so a prompt that joined in August and was paused before September does not mark September's Δ. The mark only labels: the figures are never changed by it. A start on the comparison period's first day of tracking or the day after is on time: a first scan spilling past midnight, or a prompt added a day later, marks nothing. The mark appears when those prompts together are at least 5 % of the prompts in that scope; below that nothing is marked, and the Data basis table still lists the changes. If the comparison cannot be checked, nothing is marked. Filtered Brand and Model tables (31 October 2026). With a filter on the widget, your brand's row now equals the key figure on the same filter: the same answers, the same Visibility. Each competitor is pooled over the answers that measured it, with its own n, and a competitor added part-way through is named under the table with that n. Share of Voice still compares brands only on the answers that measured all of them, so it sums to 100 % and can differ from the card's Share of Voice. This moves figures on a filtered table where a competitor was added within the period; a report without filters reads the stored daily figures and did not change. The period in a widget's header (31 October 2026). A widget's header names the dates it covers where it used to say "Live data": September 2026, or 1 Sep – 14 Sep 2026. "Live data" remains on the few widgets that answer no dates (a GEO audit's latest scores, the Tracked prompts list), and a widget read from a stored crawl or lookup says "As of". A widget with its own date range prints that range on every render path, even under a quiet header, so a printed page's report-range header cannot speak for it. The Tracked prompts table (30 October 2026). A table widget with the dimension "Tracked prompts" lists the prompts the project tracks now: the prompt, its tags, its market when several are tracked, and the day it was first tracked, with a * on a prompt first tracked after the comparison period began. It holds no visibility figure on purpose: a single prompt rests on too few answers for a rate with a margin of error. The widget's filters do not narrow it. The AI-driven figures of an attribution widget say under themselves that they are a lower bound, because analytics attributes part of AI traffic to direct. With no analytics connected they show a dash and say so, never a zero. Gemini answers scanned before 9 July 2026 stored their sources as Google redirect links (vertexaisearch.cloud.google.com/grounding-api-redirect/…) that name no domain. Such a link is never counted as a domain, a page or a citation, in any figure. An answer whose source list holds only such links is left out of every source and citation figure listed above, numerator and denominator, the way an answer from model memory is, and the MCP connector's get_ai_answer lists none of its sources and, like list_ai_answers, says how many links it left out; its brand mentions still count. An answer with at least one real source keeps its real sources. The Responses view and a follow-up conversation leave these links out of an answer's sources as well and say in one line how many they left out (until 10 October 2026 they listed them). A cited list that holds only such links is read as not known, never as "cited nothing", and the pages the answer retrieved never stand in for it: get_ai_answer then returns citedUrls: null next to the answer's real retrievedUrls. Until 10 October 2026 Source Appearance Rate counted such an answer as one that did not show your domain, and Citation Diversity counted its prompt as one that did not cite you, and the top cited domains, the Source domains, Trending URLs and Cited URLs tables, the MCP connector's citation tools, gap domains, content gaps and fan-out citation shares listed the redirect host as a source. A page that echoes our own scan instruction is never a source either. Microsoft Copilot can only be told the market and language inside its question, so our scan puts a short instruction in front of the prompt, and Bing returned translator pages (spanishdict.com, ingles.com, translate.google.com and similar) whose web address carries that instruction; on one tracked project they were 2 to 5 of the 5 to 8 pages Copilot cited per answer. Such a page is recognised by the instruction text in its address, not by its site, so an ordinary page on the same translator site still counts. It leaves every source and citation figure listed above, for every engine and for answers stored before this rule (citation-lifetime and trend figures follow once their weekly totals are rebuilt, within an hour of a one-off step on our side), and an answer whose source list holds only such pages is left out of those figures, numerator and denominator. Brand mentions are not affected. Where raw answers are shown (the Responses view, the MCP connector's get_ai_answer) these pages appear under the label "a page that echoes our scan instruction, not counted". If Copilot's question is later changed to avoid this, the Timeline carries an internal note on the day, because Copilot figures before and after that day are measured on different questions. Gemini, read through Google's API, names the website each source came from, never the page: since 9 July 2026 a Gemini answer stores the address of the site (before that, the redirect links above). Every figure counted per page leaves Gemini's answers out, from the count and from its base: the URLs view and its split into your homepage, your other pages and third-party sites, the Cited URLs and Trending URLs tables, get_cited_url and the top pages of get_citations in the MCP connector and the REST API, a page's Cited by AI in the Rank Tracker, and the pages read and cited on the AI bot traffic view. The URLs view, the two tables and the API responses say how many answers they left out. Every figure counted per domain keeps them. Until 10 October 2026 each site Gemini named counted as a citation of that site's homepage, which made homepage counts too high on projects that track Gemini. Gemini chats imported from Peec AI name real pages and count everywhere; a project that tracks Gemini alone has domain figures only. A page table whose answers all come from Gemini says why it has no rows instead of "No data for this period", and get_cited_url and get_report_data return emptyReason "sites_only". In the MCP connector, list_ai_answers and get_ai_answer mark a Gemini answer with sourcesNameSitesOnly: its URLs are websites, never the page it cited. A content brief never analyses a homepage Gemini named as the page the AI cited: Gemini's answers still count for whether the brand is absent and which competitors were named, and when Gemini was a prompt's only source the brief says it has no cited page to learn from. A page key ignores the query string and the fragment, and since 10 October 2026 also a link to a quoted passage (#:~:text=…) that an engine percent-encoded, so one page is one row however many of its passages were cited; the Rank Tracker matches its pages the same way. Under a Locale filter, every source and citation figure and the Source domains, Trending URLs and Cited URLs tables keep the answers scanned before locales were stored, read as the project's locale, as Visibility and the Topic, Tag and Prompt tables already did. Until 10 October 2026 they left those answers out, and the Cited URLs, Owned off-site citations and Follow-up survival tables showed nothing under any Locale filter. Mention gap: not a score but a filter — prompts where a tracked competitor is mentioned and you are not. It's the most actionable lens in the product, because each gap is a specific prompt you could realistically start winning. All of these can be filtered by model, by prompt intent (Discovery/Brand/Competitor), and by tag.

The GEO readiness score

The GEO Audit produces a single 0–100 readiness score that summarises how well a site is positioned to be crawled, parsed and cited by AI engines. It's a weighted blend of five categories: AI crawler access (30), content accessibility / SSR (30), structured data (20), technical SEO hygiene (15) and llms.txt (5). Read it as a positioning measure, not a results measure: a high score means "this site has removed the technical barriers to being cited," whereas whether the brand is actually cited is tracked separately by the Visibility % metric on the AI Visibility tab. Keeping the two apart is deliberate — fixing readiness is necessary but not sufficient, and pairing the two tells the honest story.