---
title: "Changelog — what's new in CrunchJunkie"
url: "/changelog"
canonical_url: "https://crunchjunkie.io/changelog"
markdown_url: "https://crunchjunkie.io/changelog.md"
language: "en"
type: "page"
summary: "The latest features, integrations and improvements shipped to CrunchJunkie — AI-visibility tracking, reporting, and AI-traffic attribution updates."
site: "CrunchJunkie"
llms_txt: "https://crunchjunkie.io/llms.txt"
---

# Changelog — what's new in CrunchJunkie
Source: https://crunchjunkie.io/changelog

Changelog

# What's new in CrunchJunkie

Every release, explained plainly. No marketing fluff.

v3.183October 2026

Update

## Search volume now runs on your own DataForSEO account

The Rank Tracker's "Searches a month" column and the prompt-volume beta now read Google Keyword Planner's figures through DataForSEO, on your workspace's own DataForSEO account or its Rank Tracker budget — no longer through a central Google Ads account of ours. DataForSEO bills one request per country and language (up to 1,000 keywords); figures are kept for 30 days and are your workspace's own when they come from your account. On a budget a lookup is charged like a search, at twice DataForSEO's price. The Rank cost card on Billing lists the lookups on one line beside the searches, and the Terms' Rank Tracker section names them. A workspace with neither account sees the column as not available, with what to connect.

v3.195October 2026

Update

## ChatGPT's tracking gap of 8–16 October is marked on AI-traffic figures

From 8 to 16 October 2026, ChatGPT opened many of the links it cites without a tag and without a referrer, so Google Analytics counted those visits as Direct instead of as ChatGPT. A ChatGPT dip in those days is a gap in the measurement, not less interest, and your reports now say so.

-   Charts of AI traffic show a band over 8–16 October (darker where the gap was sharpest, 14–16 October), with its sources. KPI cards, tables and donuts that include ChatGPT get a line underneath when their period, or only their comparison period, covers those days. The same goes for the AI → Conversions tab and its report widgets.
-   It shows when it happened, not how many visits were missed: nobody knows that. The AI summary, Ask Crunch, the MCP connector and the API are told the same, and a switch in the builder hides the band and the line on a widget.
-   The signal "AI visibility and AI-referred conversions both fell" is no longer raised while its periods include those days, and an open one is resolved with that reason. On a Google Analytics property far from UTC, the band can start or end a day off, because days are matched as UTC days.

v3.193October 2026

Update

## Scans waiting to start say so, with an estimate

At busy times a scheduled scan can wait a while before its first check. Until now the scan bar showed it as running, then as waiting for capacity, with no time. It now says "waiting to start", with an estimate such as "about 2 h" from its place in your workspace's queue and how fast our servers worked through scans in the last hour. It is an estimate, not a promise, and none is shown when there is not enough to go on. Assistants see the same through get\_scan\_status, which now also gives an estimate of the time left for a running scan.

v3.192October 2026

Fix

## A scan you start yourself goes first at busy times

At busy times, when many workspaces' scheduled scans run at once, a scan you start yourself (in the app or from an assistant) no longer waits behind other workspaces' scheduled scans. It now gets about as many checks at once as when your browser tab runs it, so it finishes in a fraction of the time. Other workspaces' scheduled scans keep running alongside it and may finish a few minutes later. We make no more calls to the AI engines than before.

v3.190October 2026

Fix

## Merchant Center, Business Profile and GA4 figures that hold up; comparison lines on the right day

Merchant Center: an offer listed under several feed labels or languages counts its free-listing impressions and clicks once, offers no longer in your feed still count towards the totals (grouped as “not in current feed”), a product without an availability is no longer counted as out of stock, and a catalog over 50,000 products says that its counts cover the first 50,000. Google Business Profile: a low-volume keyword reads “< 15”, an upper bound that is not added in, the keyword table names the calendar months it covers, and Reviews and Avg. rating say they are today’s figures. The GA4 map shows no “% of total” for a rate or an average, and a country’s share is of the property’s total, not of the countries shown. Microsoft Ads, GA4 and Search Console line charts compare each day with the same day of the comparison period, even when a day has no data.

v3.189October 2026

Fix

## Figures that could not be read no longer show as 0 or “No data”

When a source could not be read, or does not report a figure, a report now says so instead of showing 0 or an empty widget. In the app it reads “Not loaded”, or “No access” when the platform refused the account; shared links and PDFs say “Data unavailable”. AI summaries, the MCP connector and the API read such a figure as missing, not zero.

-   LinkedIn Ads: Members reached and Cost per 1,000 members reached show their figures in campaign and ad tables instead of 0. Reach, audience penetration and dwell time that LinkedIn does not report (over periods longer than 92 days, by seniority, job function or another demographic, and per day in charts) read “—” with the reason. A table or ad preview that could not be read says “Not loaded”, and a comparison period that was only partly read draws no comparison line instead of a line of zeros.
-   Search Console charts no longer draw a bar of 0 for a comparison period that could not be read, and a chart whose period could not be read says “Not loaded”. Facebook & Instagram: days that could not be read are gaps in the chart, not 0; Facebook Page figures over more than 80 days of which a part could not be read show “—” instead of a smaller total; post tables say “Not loaded” or “No access”.
-   Piwik PRO and Mailchimp charts, Matomo figures when the server answers with a web page instead of data, ChatGPT Ads conversion donuts when conversions could not be read, and ChatGPT Ads figures too large to read in full now say “Not loaded” instead of 0 or “No data”.

v3.188October 2026

Fix

## Unique counts and conversion rates outside Google Ads: no more added-up uniques or rates over 100 %

Figures that count people once are no longer added up over days or campaigns. Matomo unique visitors and Piwik PRO visitors on a scorecard are now the analytics tool’s own count for the whole period; where Matomo gives none, the scorecard shows “—” and says why. Reddit reach is read for the period, or for each day, straight from Reddit, so Frequency is right too. Facebook Page reach over more than one day shows “—” with the reason (the chart still shows each day). Instagram reach and accounts engaged “(30d)” are the last 30 days of the period, and the scorecard names the dates. Conversion rates now divide only what belongs to their base: Matomo counts visits that converted, not conversions; Piwik PRO’s figure is called Conversions / session, because one session can convert several goals; Reddit’s conversion rate shows “—”, because its conversions include view-through ones with no click behind them. The default GA4 funnel now ends with the sessions that had a key event instead of the key events themselves, and a rate or an average is no longer drawn as a funnel step.

v3.186October 2026

Fix

## All channels: cost per conversion and cost per lead count only the channels that report them

In an All channels widget, cost per conversion, conversion rate, cost per lead and lead rate now count only the channels that report conversions (or leads) for the period, the same rule ROAS already follows. Before, the spend of every channel was divided by the results of only some of them: Amazon, Reddit and ChatGPT Ads report no leads, yet their spend was in cost per lead. A channel that reports 0 still counts, because its spend bought nothing. When a channel that spent is left out, the widget names it and its spend, and the comparison shows no prior data when the channels in a figure change between the periods. A channel that reports 0 conversions but leads, like Meta in a lead-gen account, gets a warning under the widget, and the builder offers the lead-gen blend in one click; nothing switches by itself. Figures can move in reports that mix channels with different conversion definitions, and monitoring goals for cost per lead and CPA follow the same rule.

v3.185October 2026

Fix

## Google Ads donuts by device or network: only figures that add up

A Google Ads donut by device or network can only show a figure that is part of a total, such as clicks, cost or conversions. The builder no longer offers a rate, a share or an average (CTR, CPC, impression share, cost per conversion, ROAS) for such a donut, and asking an assistant for one says why and suggests a table instead of adding a donut that would stay empty. Donuts you already have keep showing the reason.

v3.184October 2026

Fix

## Google Ads campaign filter: scoped to its account, and said on every figure it narrows

A report narrowed to chosen Google Ads campaigns now applies the choice to the account those campaigns belong to, and only there. Widgets of the client's other Google Ads accounts show their whole figures instead of nothing, and the All channels totals include every Google Ads account again: the chosen campaigns of the one account, the others in full. Every widget the choice narrows says so under its figures — “Google Ads figures: 2 chosen campaigns of Acme only”, with the campaign names when they fit — and an All channels widget names the accounts it includes in full, in the report, its share link and the PDF. AI summaries, the API and the AI assistant connector are told the figures are not the whole account's. A chosen campaign counts whatever its status, so a campaign removed since keeps its history. The builder's Campaigns picker lists the campaigns of every Google Ads account of the client, grouped by account; an account with more than 200 says “first 200 of …” and the search finds the rest. Reports filtered before keep their choice: each chosen campaign is matched to the Google Ads account it belongs to, and when that cannot be confirmed it is read as the client's first account's, with a note saying so.

v3.182October 2026

Update

## Report editing through assistants: the right granularity, widgets where you ask, and moving one widget

Asking an assistant to show a Search Console, AI Visibility or All channels chart “by month” or “monthly” now makes it monthly: day, week and month are read straight from your words in English, German, Spanish and French, and neither a period such as “the last 12 months” nor “a week ago”, “month-over-month” or “monthly budget” is mistaken for one. Charts of other sources show one point per day, so a weekly or monthly view of them is refused with where to find one instead (for Google Ads, a table by Month or Week), as is a granularity no chart has, such as by quarter. A chart by campaign or device is left alone. The confirmation of every edit compares the widget before and after, setting by setting, so it only says nothing changed when nothing did. A new widget goes where you ask — “in the Google Ads section, right after the Top campaigns table” — and the preview shows where before anything is added; without a place, or with one that names no widget in the report, it goes at the end, and the preview says why. And a single widget can now be moved: after another widget, or to the start or end of a section. When the widget is pointed at, the preview names its old and new place; the confirmation always does. It keeps its settings and joins the section it lands in.

v3.181October 2026

Fix

## Google Ads donuts and country maps no longer add up rates

A Google Ads donut by device or network and a Google Ads map by country added up their figure over the rows that make up each slice or country, rates and shares too (a slice has one row per campaign; a country one per campaign and location type): CTR of 4 % and 1 % read 5 %, impression share of 40 % and 30 % read 70 %. A map by country now adds up clicks, cost, conversions and the other counts as before, works out CTR, cost per click, cost per conversion, conversion rate and ROAS from the added totals, and shows a country’s impression share and the other figures that cannot be added up when one row makes it up, “—” with a line under the map that says why when several do (one campaign can make two, one per location type), and a real 0 as 0. Such a map no longer shows each country’s percentage of a total. A donut of a rate, a share or an average shows why it cannot be drawn instead of slices, since those figures are not parts of a total; a donut of counts is unchanged and never has more than 10 slices, so the app, shared reports, PDFs and AI summaries divide by the same total. A map by ROAS showed clicks; it now shows ROAS.

v3.180October 2026

Fix

## Google Ads breakdown tables and the conversion-action donut show the right figures

Google Ads tables by device, network, day of the week, gender, age or keyword showed 0 for impression share, views and the other figures they did not add up. They now add up views, engagements, calls and the other counts. A row of one campaign or ad group shows its own impression share, 0 % included, a row that adds up several shows “—” with a line under the table that says why, and a figure Google did not return is “—”, never 0. A Google Ads donut by conversion action, such as the one in the “Conversion mix by action” template, showed the split by device; it now shows each conversion action, by conversions or conversion value, and the builder offers it.

v3.179October 2026

Fix

## Google Ads: no added-up impression share when campaigns are filtered

A Google Ads KPI card filtered to several campaigns, by the report’s campaign selection or a widget filter, added up figures that Google reports per campaign only: two campaigns at 40 % and 30 % impression share read 70 %. Impression share and its lost, top and absolute-top variants, the top and absolute-top impression rates, view, engagement, video and viewability rates, average cost per view, unique users and frequency now show “—” over several campaigns, with a line under the widget that says why. A filtered chart or monthly or weekly table does the same on every day, week or month with more than one campaign, and unique users and frequency over several Display or Video campaigns show “—” for the same reason, with or without a filter. Counts and amounts are still added up, and CTR, cost per click, cost per conversion, conversion rate and ROAS are still worked out from the added totals. A report without a filter, and a filter to one campaign, show exactly what they showed before. Filtered charts and tables now also add up views, engagements, calls and the other counts that read 0 there. Asked for a Google Ads table by conversion action, Crunch, and add\_widget and edit\_widget over MCP, no longer put in cost, clicks or a cost per conversion, which Google cannot split by conversion action; they say so instead, and the builder offers only conversion metrics for that breakdown.

v3.178October 2026

Update

## Leave a client's Meta campaigns out of a report by name

In the report builder, “Exclude Meta campaigns” takes terms such as “Energy”: every Meta campaign whose name contains one of them, in upper or lower case, is left out of every figure of the report — its Meta Ads widgets, the all-channels totals, comparisons, share links, PDFs, scheduled emails, the API and the AI assistant connector. Meta works the figures out without those campaigns, so reach and frequency stay right, and every widget it affects says under its figures which campaigns it leaves out. Over MCP, the new update\_report\_settings tool sets the same list, and get\_report\_data names it on each affected widget.

v3.177October 2026

Update

## Merge projects and move prompts between markets from an AI assistant

The MCP connector now does what Settings → Markets does with existing projects: merge\_project merges another client's project of the same brand into this one as a new market, with the app's preview of every count that moves and of reports that would go dark, and unmerge\_project undoes it. update\_tracking\_prompt moves a prompt to another market of its project, update\_scan\_settings gives one market a scan schedule of its own, and list\_prompts shows which markets came from a merge.

v3.176October 2026

Update

## Add a market from an AI assistant

The MCP connector can now add a market the way Settings → Markets does: translate\_prompts drafts a market's prompts in the new language for the user to review in the chat, add\_market adds the market with the reviewed prompts and its own competitor list, and its preview states what one scan of the market uses before anything is saved. add\_tracking\_prompt takes a market, list\_prompts lists a project's markets with each one's active prompts, competitors and schedule, and every prompt now carries its market.

v3.175October 2026

Update

## Add a market: a plain count and current copy

The Add-a-market dialog now says what a scan of the new market uses as a plain count — prompts × runs × engines, naming how many engines are premium and counted 3× — instead of an equation whose printed factors did not multiply to the total. The competitors heading names the market once one is chosen, the schedule note points to the per-market Schedule link that already exists, a line next to the buttons says why Review is still grey, the translation note says the draft is one AI call on your key, Escape closes the dialog and asks first when translated drafts would be lost, and on a trial workspace the dialog says how many of the reviewed prompts were saved under the trial's prompt cap instead of closing silently.

v3.174October 2026

Update

## The Firewall card names the layer that blocks

When the GEO Audit's live probe confirms that a crawler your robots.txt allows is refused anyway, the Firewall & access policy card now names the layer that answered — Cloudflare, Amazon CloudFront / AWS WAF, Akamai, Vercel, Sucuri, Imperva, Fastly, ModSecurity, or the web server itself — read from that response's own headers, with the fix for that layer. A robots.txt edit cannot unblock a WAF; the card, the content brief's first recommendation and the connector's audit now say where the fix goes.

v3.173October 2026

Update

## One menu for workspace and account

The sidebar has one menu now: the workspace block at the top always reads as a control (a visible chevron, a second line with your role and plan) and opens your workspaces — switch, create, manage — followed by your account: settings, the ambassador portal if you have one, the admin if you are one, sign out. The user chip at the bottom of the sidebar is gone, and the duplicate “Current” badge went with it.

v3.172October 2026

Update

## Content briefs never propose a figure to publish

A content brief now names the kind of proof a page needs and where it genuinely comes from — the brand's own data, a study the cited pages name — and never hands over a number to publish. The rule sits in the generator; every brief is checked before it is shown — a figure the evidence does not contain is sent back to the model once and dropped if it returns — and the evaluator and judge fail a brief that still carries one. The docs and the MCP tool say so.

v3.171October 2026

Update

## Deleting a prompt now rebuilds the daily totals

Deleting a tracking prompt (or untracking an SKU) rebuilds the stored daily totals of every day it was measured on, so the Overview's headline figures, report KPIs, MCP metrics and digests agree with the views that count single answers. A short history is rebuilt before the delete answers; a long one follows within a few hours. The delete dialog, the MCP connector and the docs no longer carry the old caveat.

v3.170October 2026

Update

## Text blocks: colours, highlights and callout boxes

The text block's toolbar gains text colours (muted, accent, positive, warning, negative), highlights (lime, green, amber, rose), small or large text, callout boxes (note, tip, warning, important) and a divider line, with the toolbar showing what the selection already carries. Every colour is one of the report theme's own tokens, so it reads in light and dark mode and in the PDF, and the same styling can be set through the MCP tools (add\_text\_widget, edit\_widget with text) as attributes the connector documents.

v3.169October 2026

Update

## Assistants add text blocks to reports

A new MCP tool, add\_text\_widget, adds a text block to a report from the assistant's own writing — an analysis, a summary, next steps — with a title, a width, an optional hidden title and a place: the start or end of the report, or before or after any widget. Nothing is interpreted by AI: the text goes in as written, cleaned exactly as the builder cleans a saved block, and the preview shows the placement, the length, the start of the text and anything that was removed. The result names the new widget, so remove\_widget undoes it; edit\_widget with text still changes an existing block.

v3.168October 2026

Major

## Archive a workspace; move a covered one between plans

A workspace you no longer work in can be archived: everything is kept, nothing runs — no scans, scheduled reports, digests or sends, and the API, connector and webhooks are off for it — and its clients and seats stop counting against the plan. An owner restores it any time, within the plan's room. Owners of several paying workspaces can move a covered workspace from one plan to another under Settings → Workspaces.

v3.167October 2026

Major

## Workspaces share one plan

The owner of a paying workspace on Pro or above can now create workspaces covered by that plan — no second card. Pro includes 3, Agency 10, Scale has no cap. A covered workspace shares the plan's pooled limits (client slots, seats counted once per person, Managed AI checks and overage, the rank budget, assistant messages) while its members, keys, white label, domain, SSO, webhooks and MCP switches stay its own; billing stays in the paying workspace, and a covered workspace can start its own subscription at any time.

v3.166October 2026

Major

## Workspaces: one login, several workspaces

You can now belong to several workspaces with one login — your own and the ones you were invited into — and switch between them from the top of the sidebar or under Settings → Workspaces, which also lists invitations waiting for you. From the Pro plan, the owner or an admin can create more workspaces (Pro 3, Agency 10, Scale without cap), each with its own members, clients, data and plan. Accepting an invitation opens the workspace you joined.

v3.165October 2026

Update

## Shopping: stopping a SKU's tracking asks first

Stopping tracking for a shopping SKU, one or every matching one, now shows how many per-SKU prompts and stored answers go with it (with their first and last day) and asks before the click; the timeline notes the removed prompts like deleted ones.

v3.164October 2026

Update

## MCP: search-scoped content briefs; LinkedIn health check reads the API version

An AI assistant can now ask create\_content\_brief for a brief scoped to one fan-out search of a prompt (search, days and the page's filters), as the Query fan-outs page offers, and read it back with get\_content\_brief; the daily connection health check for LinkedIn Ads also makes one read under the pinned API version, so a retired version shows as Degraded with the fix named instead of Healthy until a report fails.

v3.163October 2026

Fix

## Small fixes: LinkedIn tables, brief page paths, export, Peec engine names

A LinkedIn Ads table that could not be read now says Not loaded, as tiles and charts do, instead of an empty table; the content-brief modal shows page paths decoded (/über-uns, not /%C3%BCber-uns); the client export's content-briefs file names the fan-out search a brief was scoped to; Peec AI rows for Microsoft Copilot, Amazon Rufus, Mistral, Qwen, Baidu and Naver carry their engine names. Share of Voice over answers in which no brand was named at all now reads — (no share to give), never 0 %.

v3.162October 2026

Fix

## Three small fixes: listing button, merge preview, Looker Studio

The rankings set-up names its two buttons apart (Change listing · Change); the market-merge preview now lists the content briefs, timeline notes and signals that move with the prompts, answers and daily figures; Google's Data Studio is called Looker Studio throughout.

v3.161October 2026

Update

## All channels: a lead-gen blend

An All channels widget can now count leads as conversions: one conversion definition for the blend, so Conversions, Conv. rate and Cost per conv. read leads throughout, and a report no longer shows two numbers for one thing. Switch it on in the widget's options, or ask the editor to “count leads as conversions”. The editor also reads “weekly”, “wöchentlich” and “KW” as a weekly chart.

v3.160October 2026

Update

## Billing: gifted client slots are shown

When we add extra client slots to a workspace on a standard plan, the plan's client limit grows by them everywhere (the Clients page, the API, the MCP connector), and the Billing page says how many were gifted.

v3.159October 2026

Fix

## AI Visibility: a day stored twice is counted once

On the days when the daily figures were stored twice (a row without a market beside its stamped twin, a leftover of the first multi-market deploy), the Overview, the trend and the metrics now count that day once, in visibility and in the share-of-voice denominator. A row without a market is the project's own market everywhere, so a mixed day is one population. Projects without such days do not change by a byte.

v3.158October 2026

Update

## AI Visibility: a prompt's language, per prompt and in bulk

On the Prompts tab a prompt with a market now also has a language select: the country's usual language by default, any language we scan in on choice, so English prompts in Spain are asked in English. Market & language for the prompts shown sets both for the whole current list at once.

v3.157October 2026

Fix

## Crawl insights: a deleted project no longer breaks its log drain

Deleting an AI Visibility project whose log drain delivered logs in the last 14 days now asks first: move the log key to another project of the client, so the drain keeps working unchanged, or delete anyway. A drain still posting to a deleted project's ingest URL gets a clear answer (410 Gone, with the date and what to do) instead of an endless 401.

v3.156October 2026

Fix

## AI Visibility: markets, four small fixes

The market control keeps a page's section link when you switch markets; its chips can be moved with the arrow keys; adding a market without a country next to one of the same language is refused with the reason; and adding a market with prompts no longer starts an automatic scan on a never-scanned project — nothing is scanned until you run a scan, as the dialog says.

v3.155October 2026

Update

## Docs: markets inside a project

The AI Visibility guide's section "One client, many markets" now covers the whole model: adding a market, the market control, per-market competitors, a scan schedule per market, and merging another client's project into a market with the undo. Settings → Markets links to it.

v3.154October 2026

Major

## AI Visibility: a scan schedule per market

Each market of a project can now scan on a schedule of its own: Settings → Markets → Schedule, with the same cadence, day and hour controls as the project. A market with its own schedule runs its prompts on its own days, apart from the project's scan; the Markets list shows every market's effective schedule and its last own scan. Markets without one keep scanning with the project, exactly as before.

-   A market's own scan queues behind a scan of the project that is still running, and never replaces one.
-   The project's cadence is measured from the project's own scans; a market's from its own.

v3.153October 2026

Major

## AI Visibility: merge a project into another client's as a market

Settings → Markets of a single-market project now offers Merge into another project: it joins another client's project of the same brand as a new market. The preview shows exactly what moves (prompts, answers, daily figures), what stays and which reports of the old client would go dark before anything is written; the merge runs in one step and can be undone from the markets list, answers scanned since the merge included.

-   Every answer counts in the market it ran in from the day it ran; the figures of the other markets do not change.
-   Owners and admins only; a note on both projects' timelines explains the jump in the answer count.

v3.152October 2026

Update

## AI Visibility: where you stand, market by market

On a project with several markets, the Overview now opens with one card per market: your visibility there with its answer count, the trend over the last eight weeks, the competitor that leads that market and the gap in points, and the way into that market's prompts. Under the cards, the pooled figure across all markets is labelled as a count, never as an average of the per-market rates.

-   Each market is pooled on its own answers; the side-by-side table underneath is unchanged.

v3.151October 2026

Major

## AI Visibility: add a market, and one market control for every tab

A brand that sells into several countries is one project with several markets. Settings → Markets now lists every market the brand is tracked in, and “Add a market” sets up a new one in one step: country and language, the prompts (an AI draft of your existing prompts in the new language, which you review and edit before anything is saved, or none for now), the market's competitors, and what a scan of it will use. Nothing is scanned until you run a scan.

-   The market control sits under the brand name and applies to every tab: All markets, or one. Its state is in the link, so a shared URL opens the same market. Up to four markets show as chips, more as a list.
-   On a single-market project nothing changes except a quiet “Add a market” link under the brand name.
-   Prompts created for a market carry it from the start, and the Prompts tab, the Overview and the Brands page follow the selected market.

v3.150October 2026

Fix

## AI Visibility: the answer language follows the market, and a language change can reach every prompt

A new project takes its answer language from its market (Germany → German), or from your account's language when no market is set. Before, a project that was not given a language explicitly scanned its prompts in English, so a German client got English answers with English sources. The setup wizard now shows the answer language under the market, pre-filled and changeable.

-   Changing a project's language reaches only the prompts that follow the project. Settings now lists the prompts that keep their own language and offers to switch them too, each keeping its market (for example English · Germany → German · Germany). The switch is refused while a scan runs, and the timeline notes the date; earlier answers stay where they ran.
-   On the Prompts tab a prompt asked in a language other than its market's usual one now reads, for example, “Germany · English” instead of just “Germany”.
-   A prompt import stamps only what the file states: a market column alone keeps the project's language, and a row that names the project's own market and language simply follows the project.

v3.149October 2026

Update

## Google Ads + LinkedIn Ads: blended totals first, LinkedIn leads and audience in the standard report

The Google Ads + LinkedIn Ads template and every AI-drafted report with two or more paid channels now open with the blended totals (spend, conversions, leads and cost per lead across channels), then Google Ads, then LinkedIn Ads. Before, the blended section came last and was labelled as Google Ads.

-   LinkedIn Ads reports lead-generation figures as standard: leads, lead form opens, cost per lead and qualified leads next to delivery, plus the audience the ads reached by job function, seniority, industry and company size.
-   Cost per lead is a LinkedIn Ads metric in every widget and in Ask Crunch.

v3.148October 2026

Fix

## Security: email confirmation and password reset at the same moment

When a confirmation link and a password-reset link for the same new account are used at the same moment, the account is now settled in one fixed order, so neither request fails with a server error.

-   If the address was confirmed while a reset link was being used, the reset no longer treats the account as unconfirmed: the two-factor setup, linked sign-ins and API keys its owner had just set up are kept.

v3.147October 2026

Fix

## A firmer bar for projects with few prompts; goals early in a period; summaries that match their cards

A project that tracks only a few prompts now needs a clearer fall in AI visibility before Signals calls it real. Goals no longer read On track on the first day of a month, and report summaries state a change the way the card beside them shows it.

-   Answers to one prompt move together, so the test behind a change in AI visibility groups them by prompt. With only a few prompts, how much the prompts differ is itself a rough estimate. Where those differences set the bar, the test now reads them on Student's t (prompts − 1 degrees of freedom) instead of the normal curve. For a project with five prompts, a fall the old test put at 96.6 % confidence now reads 89.9 % and is no longer raised; with many prompts the bar barely moves. The same applies to competitor overtakes, to the ± beside Visibility where a figure rests on a few scan days and engines (and so to the grey "~ within margin" marks that follow from it) and to the source-type intervals. Open signals are checked again with the new test the next time Signals runs: one whose fall still clears the bar stays open (if not yet acknowledged, it now shows the new test's figures and confidence), and one that only the old test would have kept open closes with a note saying it was closed when we tightened the margin, not that the fall is over.
-   Goals: a total (conversions, leads, clicks, impressions, spend) shows Too early to tell until 3 full days of its period have passed, instead of On track at 0 of 100 on day 1. A target already reached is on track, and a limit already exceeded at risk, from the start. A goal with a target of 0 or below shows No valid target and no longer counts as at risk; new targets must be above 0. In client digests the AI that writes the summary is told that a spend limit above its pace is over budget pace, never behind, and goals that could not be read are named as such instead of being left out without a word.
-   Report summaries: a KPI widget set to show an absolute change now gives the AI summary that change, not a percentage the card does not show, and Ask Crunch's report summary carries the ± of each rate. In the API (get\_report\_data and /reports/{id}/data) the withinMargin field now marks the "~" changes of the Prompt and tag tables as well as the Brand table. The editor's check of a summary's figures no longer flags a figure that moved by less than 1 % since the summary was written.

v3.146October 2026

Update

## Require SSO

Workspaces with single sign-on can now require it. Under Settings → SSO, an owner or admin switches on Require SSO, and members whose email address is on a verified domain then sign in only through your identity provider, so its two-factor rules and its offboarding apply to every sign-in. It stays off until you switch it on.

-   Password and Google sign-in stop working for those members, and their sessions that didn't start with SSO end within about a minute. Members with an address on another domain, such as outside consultants, are not affected. Before it goes on, a confirmation lists every member it affects.
-   The workspace owner keeps a way in if the identity provider is down: their password with two-factor authentication. Each such sign-in is logged and emailed to the owner. The owner of a workspace with single sign-on can now also always use Forgot password.
-   API keys keep working, because they belong to the workspace; a member who leaves, removed by an owner or admin or by deleting their own account, now takes the API keys they created in it with them (revoked), and the prompt says how many first. AI assistants connected from a password or Google sign-in have to be connected again after signing in with SSO.

v3.145October 2026

Fix

## Required 2FA now covers the API and the AI connector

When a workspace owner requires two-factor authentication, a member who had not set it up was sent to the setup page, but could still reach the workspace's data through the API. That is closed now.

-   Until they turn 2FA on, such a member's requests for workspace data are refused with “Your workspace requires two-factor authentication. Set it up in Settings → Security.” Setting 2FA up, signing out and public share links keep working. If any workspace you belong to requires two-factor authentication, you need it to use CrunchJunkie.
-   The same goes for AI assistants connected through the CrunchJunkie connector: they act as that person, so they are refused until 2FA is on, and no new assistant can be connected before then. REST API keys keep working, and only members who meet the requirement can create new ones.
-   When an owner switches the requirement on, members without 2FA are signed out on their next request and taken to the setup after signing in again. Turning 2FA on lifts the block straight away, without a new sign-in.

v3.144October 2026

Fix

## Security: confirming your email, and email changes under single sign-on

Confirming your email address now opens a page where you set your password, and then you're signed in. The password entered at sign-up stops working at that moment and every other session ends, so only the person who confirms the address can use the account.

-   Signing up with Google needs no extra step: Google confirms the address itself, and an account made that way has no password. A reset link that confirms an address works the same way as the confirmation link.
-   Members whose workspace signs them in with single sign-on can change their email only to another address on the workspace's verified domains. An owner or admin can change it to any other address under Settings → Team: the new address confirms the change, the previous address gets a notice, and both steps are recorded in our audit log.
-   While single sign-on works, Forgot password sends these members no password link but an email that points them to single sign-on. A password they already have keeps working.

v3.143October 2026

Fix

## LinkedIn Ads connector moved to LinkedIn's current API version

Every LinkedIn Ads read now sends LinkedIn's API version 202610, supported until 15 October 2027. The version sent before, 202507, had been retired by LinkedIn on 15 July 2026, and a retired version is answered with an error, so LinkedIn Ads widgets could have shown "Not loaded" since then. The accounts, campaigns and analytics fields we read are unchanged between the two versions, so no figure changes.

v3.142October 2026

Fix

## Content briefs from Query fan-outs are written for the search

A brief opened from a Query fan-outs row was the brief of the prompt behind the search, built on every recent answer of that prompt. So a row reading “Cited 0/9 · Named 0/9” could open a brief saying the brand is already named in 4 of 30 answers and is not a gap. The brief now takes the search itself: its evidence is the answers that ran that search in the page's window, the not-a-gap rule reads those answers alone, the header names the search with the prompt under it, and the brief is saved beside the prompt's own. Briefs opened from the Prompts tab are unchanged.

-   The AI drafting the brief now has almost twice the room for its answer and tries once more when a provider cuts it off; a cut-off answer used to read as a failed brief. When it still fails, the admin log records what the provider said.

v3.141October 2026

Fix

## Content brief: a button to try again, and failures that can be traced

When a brief could not be drafted from its evidence, or none of the cited pages could be fetched, the message said to generate the brief again but offered no way to. A Generate the brief again button now sits under that message; the evidence stays, and the brief is tried again from the current answers. Every failed generation is now filed in our error log with the provider's answer, so a run of failures is visible to us. In the list of cited pages, two pages on one site are shown with their paths, so they no longer read as one site listed twice.

v3.140October 2026

Fix

## Filtered Share of Voice on reports and widgets was too low

A KPI card, chart, table or per-engine breakdown that carries a filter (a tag, an engine, a prompt category, a market, a Source lens) recomputes its figures from the matching answers. Its Share of Voice took your brand's mentions of each day and engine over the mentions of every brand in the whole period, once per day and engine, so the pooled figure was the true share divided by the number of day-and-engine slices in the period. Unfiltered figures were right and are unchanged.

-   Filtered Share of Voice now measures the same slices as the unfiltered KPI card and the Brand table: every brand's mentions on the same day, engine and market, added up over the period and divided once. A filtered figure and the Brand table's row for your brand are now measured the same way. Visibility, Mentions, Sentiment and Avg. Position were not affected.
-   Nothing stored changes; every period, past ones included, now reads with the corrected rule, so a filtered Share of Voice for any earlier period can be much higher than what was shown before, wherever the report is read: in the app, over share links, in PDFs and scheduled sends, in the MCP connector's and the API's report data and in Ask Crunch. An AI summary saved before this change may quote the old figure; the report treats it like any summary whose figures have changed.
-   On the Sources tabs and in the citations data of the MCP connector and the API, pages and sites with the same count are now listed in one fixed order (alphabetical) instead of an order that could change between reads.

v3.139October 2026

Update

## Your brand without its legal form: fan-out brand figures and the branded / non-branded splits move

A search or prompt that writes your brand without its legal form now counts as naming it: “pmax Online” names “Pmax Online SL”. That moves figures on several surfaces, as listed below — fan-out brand figures up, the branded / non-branded splits either way. Nothing stored changes; every period, past ones included, now reads with the new rule, so a figure for any date can differ from what was shown before. A note on each affected project's timeline marks the day of the change, and mentions in AI answers are read as before.

-   Fan-out brand figures can rise: the brands panel and the note on searches for your brand on Query fanouts, and the company a follow-up search names in Follow-up insights, now count a name written without its legal form. Never a part of a name: “PMax” alone is Google's Performance Max, not “Pmax Online SL”.
-   The branded / non-branded splits can move up or down for a name with a legal form: the Search Console widgets' split, and the Prompts tab's Branded / Non-branded visibility with the Overview's warning that branded prompts inflate the headline (both classify prompts each time they load). Why: a prompt now counts as branded when it writes the name without its legal form, and the brand terms of the search-query split, which used the name without its legal form in every case, now use it only when that shorter name is switched on — “Online SL” and “Autohaus Berlin GmbH” are matched as written, no longer as “Online” and “Autohaus Berlin”.
-   The same holds for the branded / non-branded split of Rank Tracker keywords.
-   Settings → Brands shows each name's shorter form as “Also matched as”, with a switch: on by default when it keeps a distinctive word and names no place, off when it names a place anywhere or holds only generic words (“Autohaus Berlin GmbH”, “Hotel España SA”, “Online SL”). A brand name that is an ordinary word (“Apple”) matches that word. New prompts are filed by the same switch; flipping it also re-files the prompts that were filed automatically (a category chosen by hand stays), and flipping it back files them by the rule again, so a prompt filed before this change that writes the shorter name can end up as Brand.
-   On Query fanouts: review words have their own theme, “Reviews and ratings”, and “Trust and region” is now “Trust and certification”; a recurring phrase such as “Performance Max” replaces its words; each card shows one Search Console line (a similar query only when it holds two thirds of the search's words and has at least 50 impressions); every row shows “Without you”, the number the table is ordered by, and “Named x/y”; searches appear verbatim; the summary bar uses neutral colours.

v3.138October 2026

Update

## Each market of a client can track its own competitors

A project that tracks a brand in several markets can now give each market its own competitors on the Brands page. A market's list only changes that market's share of voice.

-   On the Brands page, a project whose prompts run in more than one market shows All markets (default) and one tab per market. Every market tracks the default competitors until you choose Use different competitors for it; its list starts as a copy of the default, with its own competitor suggestions from its own answers. Back to the default puts it on the default list again. Your own brand's aliases apply in every market, and a project with one market sees no change.
-   From the next scan, a market's answers are read with its own list, aliases and competitor websites, and its daily figures are measured against it. Other markets, the default list and past figures stay as they are. Each change adds a note to the timeline, labelled with the market, which explains the step in that market's share of voice.
-   Views across all markets stay honest when markets track different competitors: each brand's share of voice is its share in the markets it is tracked in, added up across those markets and divided once, never averaged, and a competitor tracked in some markets only is labelled with them and its number of answers. The Overview, shopping recommendations, report tables, the MCP connector and the API follow this rule; pick a market for that market's own share of voice.
-   The MCP connector's manage\_competitors takes a market to change one market's own list; without one, its preview names the markets the change reaches and the ones that keep their own list. The GEO Audit's crawler benchmark keeps comparing you with the default list.
-   On projects with more than one market, the Share of Voice column of the report's Brand table (with its comparison and change) and Model table was too low: each market's row was divided by the mentions of every market, so with two markets a share of 62.5 % read 31.25 %. Each row is now divided by its own market's mentions, so the column matches the KPI card and the trend. These two columns change wherever the report is read: in the app, on share links, in PDFs and scheduled sends, in the report data of the MCP connector and the API, and in Ask Crunch. AI summaries saved before this change may quote the old figures: the report shows its editors a note with a button to write them again, and a scheduled send treats them like any summary whose figures have changed. Nothing else changes: the KPI cards, the trend charts, the Overview, the visibility metrics of the MCP connector and the API and the client export already measured Share of Voice within each market, client digests do not show it, and visibility, mentions, position and sentiment, the Biggest Movers, Brand × Model and tag tables, projects with one market and every stored figure stay as they were, except that on days stored partly before markets were recorded, the KPI card and the trend now count those rows in the project's own market, as the tables always did.

v3.137October 2026

Update

## Query fanouts, rebuilt around one question

The Query fanouts page now opens with one sentence: how many different searches the engines ran, how many led to an answer that cites you, and how many never did. Every number on the page counts the same searches, and the table reaches all of them.

-   One population: the tabs counted only the 200 searches the table held, while the tiles counted every search in the window. Tabs, tiles, panels and the table now count every search, and the table loads more as you go.
-   “Write for these first” lists the searches that came up most and never led to you, with the sites cited instead, your Google rank, the content brief for the prompt behind each, and the answers that ran it.
-   The words the engines add are grouped into price and cost, comparing options, and trust and region, each with its share of all searches. The brands and sites the engines look for sit side by side, with yours pinned.
-   The method (API, models, scan dates, coverage, the Google column, no search volumes) moved into “How this is measured”. The “rank in Google, uncited in AI” tab is now a filter beside the table, and “See the answers” on Responses lists exactly the answers that ran one search.

v3.136October 2026

Update

## The URLs tab splits by engine, and a domain opens its pages

The URLs tab now has the Domains tab's engine filter, and on the Domains tab a domain's name opens every cited page behind it, with that tab's filters carried over.

-   The URLs tab has the Domains tab's engine and topic filters. An engine means our scans of it and, where the data source includes them, its Peec AI chats, so the engines add up to the all-engines view under every data source. The rows with their appearances and citations, You and Comp, the type mix, the split into your homepage, your other pages and third-party pages, and Cited in AI, not (yet) winning in Google follow the engine you pick. Status, citation rate, last cited and trend stay on every engine, because citation lifetime is stored for all engines together; the tab says so, and a page's own panel splits them by engine. Our Gemini scans name websites, never pages: when every answer of the engine you pick is one of them, the tab says so and links to its websites on the Domains tab instead of showing an empty list. The filters are kept in the page address, so a reload or a shared link opens the same view.
-   On the Domains tab, a domain's name opens its cited pages on the URLs tab, with the engine, topic, period and “Cited for” filters carried over; the icon beside it still opens the website. The URLs tab shows the domain as a chip you can remove, next to the domain's own figures from the Domains tab. They differ from the sum of the page rows by design, and the tab says why: the Domains tab counts an answer once per domain, the URLs tab once per page, and Gemini's answers count for the domain only.
-   The type mix and the ownership split on the URLs tab show their n: the appearances of the pages listed.
-   Labels that showed in English in every language now follow yours: your homepage, your page and third-party on the URLs tab, the topic filter on the Domains tab, and the Type and Source columns of the Cited URLs report table and the issues in the Source health table, in the app, on share links, in PDFs and in the report data the API and the MCP connector return (their column names stay English).
-   Tooltips stay next to what they explain: they follow the page when it scrolls and close when their trigger scrolls out of view. The dead and retracted counts on the Domains tab use the app's own tooltip instead of the browser's, which some setups drew in the top-left corner.
-   The engine filter on the Domains tab and its chart now counts an engine's Peec AI chats too under the Peec AI and blended data sources; it counted our scans only, so under Peec AI an engine showed nothing. The MCP connector's get\_cited\_url takes a model, counted the same way, so its counts can follow one engine; its lifetime block stays on every engine and says so.

v3.135October 2026

Fix

## The project switcher shows every project in full

The list that opens from the brand name at the top of an AI visibility project now opens over the page, not inside the side panel. It is no longer cut off on the right, and the side panel no longer scrolls sideways.

-   Each project shows its brand and, under it, the client's full name, with a short code for its market (DE, US). The language is added when it is not the market's usual one (CH · FR); a project without a market shows its language (EN). A project whose prompts are scanned in several markets shows the first and how many more (DE +2), and names them all to a screen reader; a project imported from Peec AI says so (Peec) instead of a market. Two projects of the same brand, such as one for Germany and one for the US, no longer look the same. Each client is listed once, with the project its overview opens; clients you opened recently still come first, and the project you are in has a tick.
-   It works from the keyboard: the arrow keys move through the list, Home and End go to the first and last project, Enter opens it, and Escape closes the list and returns to the brand name. A screen reader names each project's brand, client and market. On a phone the list opens over the project menu and fits the screen.

v3.134October 2026

Fix

## YouTube videos are counted one by one

Every YouTube video an answer cited through a youtube.com/watch link was counted in one row, youtube.com/watch, and its link opened YouTube's start page. Each video now has its own row, which opens that video, and the history has been recounted that way.

-   A page is still its address without www, without the query string (tracking tags such as utm\_source and every other parameter) and without a #fragment, except on YouTube, Facebook, Google Play and Hacker News, where the parameter that names the page is now kept: youtube.com/watch?v=… is one video, and youtu.be links, m.youtube.com and Shorts, embed and live addresses count as that same video. Facebook posts, videos and photos, Google Play apps and Hacker News threads are counted one by one the same way.
-   Recounted for all history: the URLs tab, the Cited URLs and Trending URLs report tables (in the app, on share links and in PDFs), citation lifetime, content briefs and the MCP connector's get\_cited\_url. Domain figures (the Sources view, the Source domains table, the domains of get\_citations) and AI visibility rates do not change. The type mix and the split into your homepage, your other pages and third-party pages on the URLs tab are counted over the pages listed, so they can shift a little. Saved AI summaries, content briefs and PDFs already sent keep the figures they were written with.
-   Asked for youtube.com/watch itself, get\_cited\_url now says that videos are counted one by one and lists the most used of them, instead of reporting a page nobody cites. A new page type, Video, covers YouTube, Vimeo and TikTok videos in the URLs tab's type filter and type mix and in the report tables; where Peec AI has classified a page, the report tables keep showing Peec AI's class for it, as before. Page types on the URLs tab now show in your language.
-   On a new project, whose answers all come from the current week, the status, citation rate and trend columns no longer read "— → —, n 0/0": the URLs tab says when the first full week ends (Sunday, UTC), and each page says when its first rate can be measured.
-   The Rank Tracker's pages and its Cited by AI column count each video as its own page too: a ranking video is matched with the answers that cite that video.

v3.133October 2026

Fix

## The scan queue, tightened

Small fixes to the scan queue from 3.130: a queued scan no longer waits for hours behind a scan that has stalled, and no check is run twice when your scan takes over from the automatic first scan.

-   A queued scan behind a scan that is driven and gets nowhere (twice in a row, over 15 minutes, without saving an answer) now takes over from it within minutes, instead of waiting for the stalled-scan check, which takes two hours or more. A scan that is only waiting for capacity on our servers is never stopped: the scan bar now says it is waiting, instead of showing a time it could not know. The answers the stalled scan saved in its last 6 hours count, so they are not asked again.
-   Run scan while the automatic first scan of a new project is still checking: your scan replaces it as before, but now starts once the checks it has in flight are in, so none of them runs (or is billed) twice.
-   At its scheduled time, a project with a queued scan now starts that scan as the period's scan, so cancelling the queued scan can no longer leave the period without one.
-   Webhooks: scan.completed for a scan that replaced or took over from others names them in data.replaced; those scans, and a queued scan cancelled before it started, send no event of their own.

v3.132October 2026

Update

## Pause a prompt, and a delete that asks first

The Prompts tab can now pause a prompt: no scan asks it any more, and every answer it already has is kept. Deleting a prompt now asks first and says what is lost.

-   Pause and Resume sit in each prompt's row. A paused prompt is marked Paused, leaves a scan that is queued or running at once and keeps every stored answer, and the Status filter shows the paused or the active prompts on their own. Resume asks it again in every scan started from then on. During the trial, a resume beyond the allowance of active prompts is refused with the reason.
-   The bin no longer deletes on the first click. It opens a dialog that counts the prompt's stored answers, with the dates of the first and the last, and the content briefs written for it. It says that deleting cannot be undone and that views counting individual answers are recalculated without them, and offers Pause instead as the default. Only a second click, on Delete permanently, deletes.
-   Pausing, resuming and deleting each add an internal timeline note, in the app and through the MCP connector, which until now paused prompts without one. The connector's delete preview counts the same stored answers. A read-only member can neither pause, resume nor delete: the server refuses it.
-   Fixed: a prompt paused while a scan ran no longer turns into failed checks that ended the scan as an error, and a scan left with no prompt stops as if stopped by hand. The Overview's topic and tag views keep a paused prompt's past answers, like every other figure. Run scan is off, saying why, when every prompt of a project is paused.

v3.131October 2026

Update

## How to choose prompts, in the docs and next to the prompts

The docs now explain how we choose the prompts we track, and the app links to that wherever you add prompts.

-   The AI visibility docs have a new section, "Choosing your prompts": buyer questions by stage, one wording per intent, prompts that name a brand kept apart, one set per market, how many prompts and how often to scan, what category, tags and intent are for, and when to retire a prompt. Its figures come from our study of 2,160 answers; each count gives the number of answers it is out of, and the study's limits are stated.
-   The setup guide's prompt step, the Prompts page (an info tip next to the heading), Suggest prompts, From keywords and Import link to it: the German docs in German, the English docs in every other language. The MCP connector's suggest\_prompts points to it too. On the German docs index, articles now open in German.

v3.130October 2026

Update

## Run scan always starts a scan

Run scan used to do nothing while your tab was busy with another project's scan. Now it always starts the scan: on our servers, or queued behind the scan of that project that is already running.

-   Started while this tab runs another project's scan, a scan now runs on our servers, alongside the first one: usually within seconds, at most a few minutes later when our servers are busy. It emails you when it is done.
-   Started on a project that is already scanning, the new scan no longer stops the running one. It is queued and starts by itself when that one finishes, and the dialog says roughly when ("about N min", from the running scan's measured pace). A project holds one queued scan, a queued scan uses nothing until it starts, and you can cancel it before then.
-   The scan bar at the bottom lists every running and queued scan of your workspace, with progress, time left and Stop or Cancel, not only the scan this tab started. A tab that wakes up after our servers took its scan over hands the scan back instead of running the same checks a second time.

v3.128October 2026

Fix

## How far a prompt’s change has to go

A report’s Prompt table now says what a change needs to be clear, not only that it isn’t.

-   Under a report’s Prompt table, when changes start with “~”, a note now gives the change that is clear on the rows shown (twice the margin of error of the change, both periods’ margins combined) and the answers per prompt behind it. With a few dozen answers per prompt only large moves are clear, so most changes there start with “~”; the note shows why. AI summaries get the same line.
-   Rank Tracker budget: a search sent at the moment its keyword or client is deleted is now booked like any search deleted while its run goes, and charged at what DataForSEO charged for it. If a fault on our side sends a search a second time, the daily check finds the first one and you are charged for one search; the other is ours.

v3.123October 2026

Update

## Crawl insights by site section

Crawl insights now shows which parts of a site AI crawlers fetch, such as /blog, /products or /docs, and a report can carry the same table. A fetch shows access, never a citation.

-   A new card groups the page fetches by section: the first part of the path, with a language folder such as /de/ kept as a prefix, single top-level pages together and the rest under Other sections. Each section shows its requests and their share, the requests per crawler operator, how many came from an operator's published IP ranges, the number of pages, the share answered 2xx, refused (403/406) or failed out of the fetches that logged a status, and the last crawl.
-   You can name your own sections with path prefixes, such as /de/blog = Blog (DE). They apply to the card, to the new Crawl sections report table (in the app, on shared links and in the PDF) and to get\_crawl\_insights in the MCP connector, which returns the sections when asked with sections: true.
-   Rank Tracker: moving the own site when a client already has three previous own sites no longer fails, and a website changed in the client's settings now always moves it. The oldest previous own site stops being read instead and keeps the positions measured until then; Set-up says since when.

v3.122October 2026

Fix

## Google Ads sign-in problems named for what they are

Two warnings now say what the fix is, and the data location report says when the AI features are off.

-   When a Google Ads account requires 2-Step Verification, or Google's Advanced Protection Program, and the connected Google account does not have it, the report's warning now says so for that account and what to do: once 2-Step Verification is turned on, reports work again, and reconnecting prompts for it.
-   A Google Ads account that Google reports as not found is shown as “No access” only after every manager account the connected user can reach was tried, as for every other refusal.
-   In Settings → Data & residency, a workspace with no AI key and no Managed AI now reads “No AI key”, and the report says the AI features do not run until a key is added. It used to say they ran on CrunchJunkie's account. The privacy policy (section 3.2) now says exactly when new AI-visibility answers are read with your own key: when an Anthropic key is saved as your AI assistant key.

v3.121October 2026

Fix

## Retrieval and Citation trends on the Tag table, and citation lifetime from the first measured week

The extended Tag table's Trend column follows the table's own figure when it has no Visibility column, and a page's citation lifetime lists each model change once and starts where its measurement starts.

-   On an extended Tag table that shows no Visibility column, the Trend column now draws the first Retrieval or Citation rate the table lists, or the rate behind its first Retrievals or Citations count, instead of Visibility. Each point is that rate for one week (or one month on a period of 180 days or more), pooled over the answers it is computed over, with their number: for a Retrieval rate the answers that list what they retrieved, for a Citation rate the answers that retrieved your site; a period with nothing to measure is a gap, never 0; on Peec AI data alone it is per chat, as its column is. Tables with a Visibility column draw Visibility as before. The share link, the PDF, AI summaries and the MCP connector show the same values.
-   In a page's citation lifetime, a model change listed twice for the same engine is listed once, dated by its first answer: Perplexity's move to GPT-6 Luna was answered from 26 September and noticed on 28 September, and appeared on both days. The drill-down, its likely causes and the MCP connector all read the single entry, so a loss is put down to a model change only when the change itself falls inside the weeks compared.
-   A page's drill-down now starts its charts, its table and its engine lines at the first week with any answers for the page, and says from when and how many of the 26 weeks came before; on one page we checked, the 13 weeks from April to June had no answers and are no longer listed. The MCP connector's weekly series starts at the same week (measuredFrom, with historyFrom beside it). No figure changes.

v3.120October 2026

Fix

## Rank Tracker: the own site during a run, a subdomain, and what is left to read

Four follow-ups to the own site that follows the client's website.

-   A domain added, or an own site moved, while a run is going is now read from that run's stored results lists when the run ends. Those checks no longer show as not checked for it until the next run.
-   When the client's website changes to a subdomain of the own site (example.com to shop.example.com), the own site no longer moves on its own, because results on example.com would stop counting. Set-up says the two differ and asks.
-   A previous own site is still read from every search, at no extra cost, and Set-up now says so. A client keeps up to three previous own sites.
-   Set-up shows how many stored results lists are not read for the own site yet, with a button to read on, also after the website was changed in the client's settings.

v3.119October 2026

Fix

## A new market is always a country, and assistants can ask for less

A market saved from now on is stored as a country, and AI assistants can read AI visibility without tens of thousands of characters of rows.

-   The setup wizard asks for the market with the same country list as Settings. It used to take free text, and a market typed as a place, such as “Utah, United States”, matched no country. A market saved from now on, in the app, by import or by an assistant, is stored as a country: a place that names one country is stored as that country, and a value that names none, or a state written as two letters such as “Los Angeles, CA”, is refused with the reason. Existing projects are measured exactly as before. Where a market is still saved as text, Settings now shows that text and what scans read it as, and picking a country stores it and adds a note to the Timeline.
-   In the MCP connector, get\_ai\_visibility\_metrics and get\_visibility\_trend take summary: true for the pooled figures alone, get\_ai\_visibility\_metrics pages its rows with limit and offset, and get\_ai\_answer takes maxTextChars. Without them each tool returns what it did before. In the connector and the REST API, an engine id the project has no answers from now says so and lists the project's engines, instead of reading like a window without scans.
-   A Slack alert from an automation escapes the names and words that come from your data, so none of them can notify a whole channel or turn into a link.

v3.118October 2026

Fix

## Refusals in your language

When CrunchJunkie refuses a save or an action on the pages below, it now gives the reason in your language instead of in English.

-   This covers prompts, brands and competitors, the approvals queue, the report editor, and the AI key and white-label settings: for example a trial's prompt limit, a task without a title, or a report that only owners and admins can delete.

v3.117October 2026

Fix

## Brand-mention accuracy, measured on 215 labelled answers

We read 215 stored answers from five projects one by one and checked every recorded brand mention against the text: 99.2 % of the recorded mentions were right (756 of 762), and 97.7 % of the brands the answers name were recorded (756 of 774). Nothing changes in your figures with this update.

-   Each of the 6 wrong mentions was a name the answer never writes: a word that only looks like the brand, or a related company the answer names instead. The 18 missed names were all in the two projects that track more than a hundred companies each.
-   Stricter rules that fix both are built and stay switched off until a check on real stored answers shows they hold. This changelog will say when they are on, and from which day your figures read differently.

v3.116October 2026

Update

## AI assistant traffic for shops: purchases and revenue per assistant

A new GA4 report template shows what ChatGPT, Perplexity, Gemini and the other AI assistants bring a shop in purchases and revenue.

-   “GA4 — AI Assistant Traffic (Shop)” has one row per AI assistant with sessions, engaged sessions, purchases, purchase revenue, the purchase conversion rate and revenue per session, against the comparison period. Revenue is in the GA4 property's own currency, which the report names, and is never converted.
-   Each rate divides the row's purchases or revenue by its sessions once, and the sessions are shown with it. A shop with no sale in the period shows a real 0; only a GA4 property that has recorded no purchase in the 13 months up to the end of the period says “No purchase data in this GA4 property” instead of 0.
-   A note in the template explains how payment sites such as PayPal, Klarna, Stripe, Shop Pay and Shopify's checkout can hide the AI source, and which GA4 setting stops it.

v3.115October 2026

Update

## Branded vs non-branded search queries

Search Console widgets can now count the queries that name your client's brand, the ones that don't, or both side by side.

-   Each client has brand terms, taken from its name, website and AI Visibility brand names. Add product names and misspellings, untick a term that is too generic, or exclude terms that should never count. Before you save, a preview shows how many of the client's top queries would count as branded.
-   Set a Search Console widget to branded or non-branded queries, or pick the Branded vs non-branded split for a table, donut or line chart. Google filters all of the property's queries, not a sample. CTR and average position are worked out per group from its own clicks and impressions. Queries Google anonymizes are in neither group and get their own row.
-   AI assistants, the API and Ask Crunch can read a report for branded or non-branded queries only, and Draft with AI can build these widgets.
-   Corrected figures: a Search Console filter set to “Does not contain” now leaves those values out (it used to count them, as if it said “contains”), and “Starts with” now matches only the start, a page path right after the site's address. Reports with such a filter now show correct figures, which may differ from what they showed before. A filter that combines OR with “Does not contain”, which Search Console cannot do, now says so instead of showing wrong figures.

v3.114October 2026

Update

## Perplexity's Fast Search, measured and followed; trials now scan on Perplexity

Perplexity moved its web search to Fast Search in early October. We checked what that did to the numbers before following it. New trials now run on Perplexity instead of Gemini, so content briefs work from the first day.

-   Perplexity switched the web search behind the Agent API preset we use to its Fast Search between 1 and 6 October 2026 (Perplexity does not publish the day). We compared answers from three of our own tracked projects before and after, on the same 38 prompts: 25.3 sources per answer on 26–30 September and 25.8 on 7–13 October (96 answers each), and the share of answers naming the brand moved no more than it does between two runs of the same prompt. So scans follow Fast Search, and every project with Perplexity answers on both sides of the switch gets an internal Timeline note that says so. The note does not mark a break in the series, so alerts and signals keep comparing Perplexity across it.
-   Own-key cost estimates (the usage statement under Billing and the pricing page's own-keys example) now price a Perplexity scan from 7 October 2026 at Fast Search's web search fee (US$1.00 instead of US$2.50 per 1,000 searches). How many searches one scan makes is not measured yet, so the estimate counts the upper end of what we observed: US$0.006 per scan in search fees instead of US$0.0075. Earlier scans keep the fee that applied then; 1–6 October keeps the higher one, because the day of the switch is not known.
-   New trials scan on Perplexity instead of Gemini. Gemini names the websites it used but never the pages, so a content brief had nothing to learn from during a trial; Perplexity cites pages. It costs you nothing during the trial, and when the trial ends the free engine switches off and nothing is added to your plan, as before: Managed AI is only ever added when you choose it. A trial that is already running keeps Gemini until it ends. On the Lite scan mode, a trial runs Perplexity in place of Gemini, so it still scans.

v3.113October 2026

Fix

## Peec AI citations now count every citation

On Peec AI data, Citations and Citation Rate now count citations the way Peec AI does: a page an answer cites twice counts twice. They can still differ from Peec AI's own figures where prompts were paused or deleted in Peec AI, because its reports count only its active prompts while the chats already imported for those prompts stay here.

-   The Peec AI import now keeps how often each chat cited each page. On a view that holds only Peec AI data, Citations add those citations up and Citation Rate divides them by the chats that retrieved your domain, on KPI cards, the Overview, the Retrieval & Citations table and the Cited Sources, Cited URLs and Source domains tables, in the app, on shared links and in PDFs.
-   Chats imported earlier knew only which pages they cited. Until they are read again, each of those pages counts once, and the figure says under it how many such chats it holds, so a lower number never passes as Peec AI's own. A saved goal or AI summary that quoted the old Citations figure on Peec AI data will see it change once.
-   Retrievals, Retrieval Rate and Used as source are unchanged, and so is every figure from CrunchJunkie's own scans and from views that mix them with Peec AI data.

v3.112October 2026

Update

## An assistant's confirmation applies only the details you previewed

When an AI assistant changes something through the MCP connector, a confirmation now only applies the same details you previewed.

-   Every action's preview carries a one-time token. The confirmation has to send it back with the same details, within 15 minutes, once, in the same workspace. Otherwise nothing changes and the assistant asks for a new preview.
-   A confirmation without a preview is refused, with a note telling the assistant to show you the preview first. A chat that was already open before this change may need to be started anew to pick it up.
-   For a scan, a content brief or a rankings refresh, the scope and cost worked out at confirmation must also match the preview. If prompts were added in between, the assistant has to preview again and show you the new cost.

v3.110October 2026

Fix

## Safer CSV files, steadier client exports

Two CSV downloads that could carry a formula into a spreadsheet are now safe, and client exports explain themselves when something is in the way.

-   The AI-visibility Overview's CSV and the metric-history CSV in the workspace export now put an apostrophe in front of a text cell that starts like a formula (with =, +, - or @), so a client, brand or prompt name can never run as a formula in Excel or Google Sheets. Every CSV CrunchJunkie writes now uses this one rule, and a value that is only a number, a negative one too, stays a number. The Overview's CSV also keeps a brand name with a comma in its own column and shows accents correctly in Excel.
-   Client exports: Download ZIP checks the file before the download starts, so a problem shows in the dialog in your language instead of as a failed browser download. A large file has up to 13 minutes to download. An export that is slow but still moving is no longer stopped after 6 hours, and one that would be more than one ZIP file can hold (4 GiB, about 4.3 GB) stops as soon as that is clear and says so.
-   Team settings: changing a member's role, removing a member and withdrawing an invite now always apply to the workspace you are looking at, also when you belong to more than one.

v3.109October 2026

Fix

## Blended ROAS counts the accounts that report a value

Two corrections: an honest ROAS across channels, and no emails to clients from a locked workspace.

-   All-channels ROAS is now the conversion value divided by the spend of only the accounts that report a conversion value. The widget says when that is not every active account ("ROAS from the 3 accounts (of 4) that report conversion value"); with no value at all, ROAS shows a dash, never 0. The same rule applies in the app, shared links, PDFs, AI summaries, Goals, client digests, the API and the MCP connector.
-   Two kinds of account drop out of ROAS: a ChatGPT Ads account without purchase events, and a Reddit Ads account whose value field the API refuses. Their spend still counts in Spend. Google, Meta, Microsoft, Amazon and LinkedIn Ads report a value of zero when there is none, so their spend stays in ROAS, lead-gen accounts included. Where one of the two drops out, a ROAS goal reads higher, once. Per-account ROAS and every other metric are unchanged.
-   A locked workspace (cancelled, paused or unpaid) no longer sends scheduled report emails or client digests. The owner gets one email naming the workspace when this starts, and the lock screen says it. Sends resume on their next date once you choose a plan; anything due in the meantime is not sent later.

v3.107October 2026

Major

## Export a client's reports and data

Before you delete a client, you can now take its reports and data with you in one ZIP file.

-   The file holds every report as a PDF, the full AI-visibility history per day, engine and brand with the answers behind each number, prompts, every AI answer with its sources, citation lifetimes, every Rank Tracker check, signals, goals, timeline notes and content briefs, with a README that explains each column and lists what is not included.
-   It is built in the background: the dialog shows the progress, an email says when it is ready, and only the owner or admin who asked can download it, for 7 days. It is stored encrypted in Frankfurt (EU).
-   The delete dialog now says plainly what deleting a client ends: share links, scheduled sends, and that usage already counted stays counted. It offers the export first, and waits while one is running.

v3.106October 2026

Fix

## Rank Tracker: the own site follows the client's website

When a client's website changed in its settings, the Rank Tracker kept reading positions for the old domain, so the new site's rankings showed as not found.

-   The own site now follows a change of the client's website when it was taken from the old website. An own site chosen on purpose stays, and Set-up says when it differs from the website, with a button to read positions for the website instead.
-   The old domain keeps the positions measured for it and stays listed as a previous own site, outside the ten competitors. The new domain's positions are read from the results lists already stored, at no cost.
-   A check that could not be read for a domain now shows as not checked for it, never as not found, and no change is measured against it.

v3.105October 2026

Update

## Admins can export the workspace

Settings → Export your data was for the workspace owner only. Admins can now download the workspace too.

-   An admin's JSON file has the same clients, projects, reports, history and settings as the owner's, without the team member list and the email address on each Google Ads change: those are other people's personal data and stay in the owner's file.
-   Members and read-only seats still can't download the workspace, and the member list CSV under Settings → Team is now for the owner and admins only. Everyone can still download their own personal data under Settings → Export your data.
-   We record who downloads which file and when, and each person can download up to 6 files an hour.

v3.104October 2026

Fix

## Ambassador commission: refunds and disputes

Ambassador commission now follows what happens to a payment after it was booked.

-   A partial refund reverses the commission in proportion to the amount refunded. A refund after payout is deducted from the next payout and shown in the portal as a refund adjustment.
-   Commission on a disputed payment is held until the dispute is decided: a lost dispute reverses it, a closed one releases it. The ambassador is emailed at each step.
-   An estimated Stripe fee is corrected to the actual fee once Stripe has it. A US dollar payment converted at an estimated rate shows that rate's date.

v3.103October 2026

Fix

## Ambassador commission excludes VAT, and shows its working

Ambassador commission is booked on the payment excluding VAT, minus Stripe's actual processing fee, as the ambassador terms say. The ambassador portal shows how each payment's commission was worked out.

-   The base is what the customer paid minus the VAT on the invoice. Until now the VAT was left in that base.
-   Stripe's fee is read from the payment's own Stripe record. A payment in US dollars is converted to euros at the rate Stripe used for it, no longer one to one. Where either can't be read, an estimate is used and marked as one.
-   A new table in the portal lists each paid billing cycle with the payment excluding VAT, Stripe's fee, the rate and the commission, and whether a refund reversed it. The first-commission email says the amount is worked out excluding VAT.

v3.102October 2026

Update

## The ambassador portal, brought up to date

Everything an ambassador sees was checked against the product as it is today and rewritten where it had fallen behind.

-   Ready-made posts lead with AI visibility, take every price, engine count and plan name from the product, and come with the ambassador's link filled in. A post about a feature that is switched off is not offered, and the US-dollar prices show for a US audience.
-   The brand kit shows the current logo and the site's own share cards. Banners and screenshots with the retired logo or old wording are gone until new ones are made.
-   The dashboard explains what commission is paid on, what is reversed and when payouts happen, links to single pages with the ambassador's code, shows paused subscriptions, and tells an ambassador who is also a customer how their referrals are counted.

v3.101October 2026

Update

## One login for customers who are also ambassadors

A CrunchJunkie customer can now become a brand ambassador without a second account. The same login opens their workspace and the ambassador portal.

-   Approving an ambassador whose email already has an account emails that account an offer. The role is added only when the account holder signs in and accepts the ambassador terms; no new account and no password link.
-   The user menu has an "Ambassador portal" link, and the portal has a "Back to my workspace" link. An ambassador without a workspace still sees only the portal.
-   Each referral belongs to one programme, set when the referred person signs up: account credit for a customer referral, ambassador commission for an ambassador referral, never both. Referrals made before someone became an ambassador keep their account credit.

v3.100October 2026

Fix

## Setup drafts category questions, branded prompts filed as Brand, empty figures explained

Fixes from a trial project's first week, each about saying what the data shows and what to do next.

-   The setup guide drafts the first prompts from the details entered (brand, web address, category, competitors and market): open questions a buyer asks before they know the name, plus at most one about the brand. A prompt that names the brand shows whether it is filed as Brand or Discovery, and one click switches it. If no draft comes back, the fields stay empty with an example and a Suggest prompts button.
-   A prompt added without a category that names the brand or one of its aliases is filed as Brand, with a note to change it if it is a general question; a category a person chose is always kept. Prompts stored before are offered for re-filing on the Overview, never moved silently. Topic figures for past periods follow a prompt's current category, so every re-file leaves a note on the timeline.
-   A competitor added as a web address is tracked under its domain, such as greatjourneysnz.com, with the domain as its website. The Brands page renames a competitor and moves its history with it.
-   Source performance says why a figure is missing, such as "No answer retrieved your site yet", instead of "collecting data", and the Overview and report KPI cards count answers, not runs.
-   A content brief that cannot be written says what unblocks it in your workspace (run a scan, tick an engine you can already run, or add a key) with a link. Connecting a key offers to add its engine to your projects and adds nothing without a click. The own-key spend card says it covers scans and CrunchJunkie AI, and the usage statement names deleted clients.

v3.99October 2026

Fix

## French says vous everywhere

The French app, its emails and every French page now address you as vous. Until now most app pages said tu, while reports, the shared report and the free AI-visibility check already said vous.

-   Every French screen, email and signal, the Ask Crunch assistant, the MCP page and the sign-in page use vous and its imperatives, such as "Vérifiez" and "Réessayez", and the emails open with "Bonjour".
-   The meaning, the numbers and the terms are unchanged: French still says scan, rapport and marge d'erreur.

v3.98October 2026

Fix

## Ratings say what happens to them

A thumbs up or down on an Ask Crunch answer used to say it "helps Crunch improve". It now says what happens: the rating is saved, as on content briefs.

-   A content brief's rating now also records which team member gave it, as Ask Crunch ratings already did. A new rating on the same brief replaces the last one.

v3.97October 2026

Fix

## Every signal in your language

Signals were written once, in English, when they were raised, so a German, Spanish or French reader got English in the inbox, in emails and in Slack, and a corrected wording never reached a signal already raised. Every signal is now worded when it is read, from the figures it was raised on, in the reader's language.

-   The inbox, Home, alert emails, the weekly signals overview, Slack and AI drafts word every signal in their reader's language: firewall blocks, dead links, the hosting placeholder, a stopped log drain, a site not being served, broken connections, the GEO score, feed and product-schema gaps, the portfolio pattern, visibility with conversions and Meta Ads stops, beside the rank, citation and visibility signals that already were.
-   Numbers, dates and percentages follow the reader's format, and counts use the right singular or plural.
-   The MCP connector's get\_signals and the REST API's signal list add text: the same words in your language (on the API, ?lang=). Webhooks keep title and detail in English and add text in the workspace's language.
-   A signal raised before this change whose figures lack something its words need keeps the English words it was raised with; nothing is guessed.

v3.96October 2026

Fix

## More of the app and its emails in your language

The project header, Approvals, the content brief, Billing and four emails were in English for everyone. They now follow your language, and German, Spanish and French each use one word for each core term.

-   The AI-visibility project header and its scan dialog, the brand filter on Sources and URLs, the Approvals page, the content brief, Settings → Billing, the founder's welcome email, the alert for spend on your own AI keys, the referral email and the result email of the free AI-visibility check are now in English, German, Spanish and French.
-   One word for each idea in each language: German always says Scan, Bericht and Fehlermarge, Spanish escaneo, informe and margen de error, French scan, rapport and marge d'erreur. German is du throughout, Spanish tú, and French no longer switches between tu and vous on one screen.
-   Error messages say what did not happen and what to do next, instead of "Something went wrong".
-   No emoji in email subjects, no exclamation marks, and no claims we can't back, such as "the highest-leverage fix" or "it takes about 8 minutes".
-   The Google Ads performance report template opens in your language; English users used to get German titles. The MCP page is now fully in Spanish and French.

v3.95October 2026

Fix

## One visibility figure per client, and a status that says why

A client's AI visibility is now the same number on the AI Visibility overview, in the project header, on the Overview at 30 days and on Home: one calculation over the last 30 days. Every status and every count says what it is based on.

-   The AI Visibility overview, the project header and Home now take a client's visibility from one calculation over the same 30 days and show it the same way, to one decimal. The overview shows the project that the client's Overview opens; with two projects it could show the other one. Hover the figure to see how many answers named the brand. The MCP connector, the REST metrics and Ask Crunch now pick a client's project the same way and default to the same 30 days.
-   A client's status lists its reasons on hover. A critical signal someone has acknowledged now counts as At risk, not Off track. A new status, No recent data, shows when no new scan results came in for twice the scan interval (30 days at most) or the last scan failed or was paused before its answers were counted. These clients used to read On track.
-   Counts say what they count. The sidebar badge reads "1 critical", the same number as Critical on the Signals page; Monitoring reads "2 to fix" and Approvals "3 open". Home's client table shows "1 critical" and "2 warnings", and Needs attention says it lists critical signals and warnings.
-   Where a client has no figure, the overview and Home say why: no scan yet, no scans in 30 days, or no answers in 30 days. The overview used to say "No data yet", and Home said "No scans in 30 days" even when a scan had run.

v3.94October 2026

Fix

## API and MCP figures come pooled, with their answers and window

The REST API, the MCP connector and Ask Crunch now return AI-visibility figures the way the app shows them: each brand pooled over a stated window, with the answers behind it and its margin of error, so an assistant quotes the right number.

-   The MCP tool get\_ai\_visibility\_metrics, the API's metrics endpoint and Ask Crunch read one definition. Each brand is pooled over every answer in the window (the last 30 days unless you choose dates), with the answers as n and the ± margin, and the client is shown per engine. A count of rows is no longer labelled a sample size.
-   An engine tracked both by your scans and by imported Peec AI data is counted once, as in the app. Every engine carries its current label, so an id such as grok-3 reads as the model it runs today, and every row says whether it comes from your scans or from Peec AI.
-   Sentiment (0 to 100, 50 is neutral) and average position (1 is named first) now state their scales in the API description, the MCP tools and the docs.
-   The GEO Audit score in the API and the MCP connector now says what it measures: readiness, not how often AI answers name a brand. The MCP page says that AI-visibility figures are as of the latest scan.
-   REST behaviour change for GET /ai-visibility/projects/{id}/metrics: without dates it now covers the last 30 days instead of all history; a range over 180 days is cut to its last 180 and meta.note says so; the default blended source leaves out a Peec AI row when your own scan measured that engine on that day (source=peec returns it); and a date that isn't one, or a dateFrom after dateTo, now returns 400 with the reason.

v3.93October 2026

Fix

## One wording for certainty and cause

Across the app, the docs and the MCP connector, a confidence now appears only where a test computed one, a change within the margin of error reads as unchanged, and no text says what caused a change our data cannot show.

-   Signals, Automations and the alert emails state the real bar (the last 14 days against the 28 days before, at 95% confidence) instead of "significance-gated, so no noise". An empty Signals inbox now says that no change in visibility is raised while scans are paused.
-   The action plan an automation drafts lists what the signal observed and what to check, no longer a "likely cause". The content brief calls its writing signals a 2024 lab benchmark, not research-validated, and the GEO Audit and Shopping pages describe readiness: unblocking AI crawlers lets them read a site, it does not by itself earn citations.
-   The MCP connector's guided workflows and the Claude skill tell assistants to call a fall real only when Signals raised it, to quote its periods, answers and confidence, to judge a week-on-week rise by the report KPI cards' margin rule, and to give no cause the evidence does not show. get\_signals and the REST API now return the periods each signal compared.
-   Tooltips no longer say a rising line means you are gaining ground or that more runs are "more accurate": they name the margin of error. The Perplexity and Meta AI settings notes no longer say every answer is grounded in search.

v3.92October 2026

Fix

## Signals say what they stand on

Each signal now says what its number counts, and shows a confidence only where a test computed one. Signals that kept saying something the data no longer showed now clear themselves.

-   A counted fact, such as a broken connection or a firewall block, no longer reads "Confidence 100%". The number under a signal says what it counts: answers, pages, AI-crawler fetches, products, links or clients, not "runs". Alert emails, Slack and the API say the same.
-   A GEO Audit score drop is raised only once a second audit confirms it, and clears itself when an audit scores within 8 points of the earlier score again. It is a warning only when the fall is 15 points or more and the band drops below Good.
-   The hosting suspension page signal is raised only when the host's page answered at least 20% of the AI-crawler fetches in the last 72 hours, and at least 3 of them. A few crawlers re-fetching the old URL after the site is back are noted on the Crawl insights page, without an alert.
-   "AI visibility and AI-referred conversions both fell" now counts the conversions over the same two periods as the visibility change, in whole days through yesterday, tests the fall in conversions, and no longer says one caused the other. "Paid spend up while AI visibility fell" is retired: paid ads do not buy mentions in AI answers.
-   The visibility alert email to the workspace owner is worded from the signal it belongs to, with the same periods, answers and confidence. Two automation templates no signal could trigger, "New competitor detected" and "Product the AI never recommends", are gone, and each template says what its signal measures.

v3.91October 2026

Fix

## Insights, AI → Conversions, the GEO Audit and the perception email say what the data shows

Text the product writes now states what was observed, with its window and the answers behind it, and no cause the data can't show. An Insights rationale reads "Never named: 0 of 12 answers, last 30 days (12 Sept – 11 Oct)", an action is high priority only with at least 10 answers behind it, and llms.txt is a low-priority option, as the GEO Audit has always described it.

-   AI → Conversions shows the correlation from 20 paired days, with its 95% interval, and names a strength only when that interval excludes 0. The interval allows for both series carrying over from one day to the next, so two slow trends that happen to coincide don't read as a link. Below 20 days it says how many there are and what the project's scan schedule needs to get there.
-   The GEO Audit's quotation, statistics and citation checks name their source as a 2024 lab benchmark, and the score card says what our own study of 81 sites found: no clear link between the score and AI visibility. The AI insights describe what each finding means for crawlers reading the site, not what it does to citations.
-   In the monthly perception email, a term counts as rising or fading only when it was used in at least 3 answers and the change is too large to put down to chance, tested with Fisher's exact test and corrected for the number of terms compared; each comes with its counts. Ask Crunch gets AI visibility per engine with the answers behind it; an engine without answers is no data, not 0%.

v3.90October 2026

Fix

## A change that didn't save now says so

When the app can't save a change, it now says why and shows what is really saved. Until now many buttons sent the change without reading the answer. An approval left the queue as if it had been delivered, a competitor or prompt edit showed until the next reload, and "Run detection now" could say you were all clear when the check had not run.

-   This covers approvals and tasks, competitors and aliases, prompts and suggestions, tags, automations, goals and signals. It also covers the report editor (date range, cover, AI summaries, share link, schedule), the report builder and list, the AI Visibility setup steps and several settings.
-   The message gives the reason when it is known: the admin view and read-only seats can't make changes, there is no connection, you are signed out, or the server's own explanation. Where the form still holds what you typed, it says so.
-   An AI summary that could not be saved stays on screen with "Try again", since the shared link and the PDF show it only once it is saved. An approval that went through but sent nothing, because there was no recipient or the email failed, now says so.
-   When "Run detection now" finds no new signals, it says how many are still open.
-   Stop on a running scan now stops it only once the server has it stopped. If the server refuses, the scan keeps running and the scan bar says why, so a scan never carries on in the background while the screen says it stopped.

v3.89October 2026

Fix

## AI summaries describe changes the way the KPI cards do

An AI summary in a report now gets each figure as the KPI card beside it shows it: a rate's change in points, the card's "~ within margin" where it says so, the answers behind the figure in both periods, and the period itself. Crunch is told to call a change inside the margin of error unchanged and not to name causes the figures don't show.

-   Counts such as Mentions, Retrievals and Citations name the answers in both periods under the figure ("Based on 1,426 runs · 2,940 in the comparison period"), in the app, on shared links and in PDFs. A count rises and falls with the number of answers collected.
-   In the Prompt table, a Δ Visibility inside the margin of error starts with "~", and a footnote says what that means. Sorted by Δ, those prompts count as unchanged, so the real moves come first.
-   In the editor, percentages and amounts in a summary that can't be found in the report's data are named, so you can check them or regenerate before you send the report. The check catches some slips, not all.

v3.88October 2026

Fix

## Client digests report AI visibility every time, and goals are judged against the days gone

A client digest now shows the client's AI-search visibility in every send: the share of AI answers that named the brand over the 7 days (weekly) or 30 days (monthly) up to the day before the send, next to the same span before, with the number of answers behind each figure. Until now it showed visibility only after a 20 % drop between two scans, and otherwise told its AI summary there was no recent data.

-   A difference not clearly beyond the margin of error reads as unchanged, by the rule and in the words of the report KPI cards; a larger one is stated in points. While a visibility signal's fall (the last 14 days against the 28 before) is open, the digest states it with its periods, answers and confidence and never calls visibility unchanged. A period without answers says so instead of showing 0 %. The AI summary gets only these figures, with their dates and sample sizes, and is told not to guess at causes. Goal rows use the metric names and the currency of the report KPI cards.
-   Goals for totals (Conversions, Leads, Clicks, Impressions, Spend) are judged against the target pro-rated to the days that had passed, so 33 conversions on day 10 of a 30-day month against a target of 100 are on track instead of At risk. The Goals tab shows the pro-rated target under the bar. Rates keep the whole target.
-   A goal's direction counts everywhere: in a client digest a CPA above its target reads as worse, not as 120 % of target, and on the AI Visibility overview a target beaten in the good direction no longer counts as off target. The Goals tab, the portfolio health, the MCP get\_goals tool and client digests use one rule.

v3.87October 2026

Fix

## Visibility signals now compare two periods, not two scans

A visibility drop or a competitor overtake is now raised only when the last 14 days and the 28 days before both have enough answers and the change clears a 95% confidence bar. Until now a signal compared the latest scan with the one before at 80%, and every signal said "statistically significant" whatever its confidence was.

-   The bar: at least 40 answers on at least two scan days in each period. A Warning needs a fall of 15% and 3 points at 95% confidence, a Critical signal a fall of 40% at 99%. The confidence groups the answers by prompt, because answers to the same prompt move together.
-   Each signal states both periods with their sample sizes and its real confidence, in your language. Engines and prompts measured in only one period are left out and named. When an engine's model changed inside the periods, the change is checked without that engine; if it shows only with it, the signal is Info and names the engine.
-   Open visibility signals from the old rule were checked again on 11 October. Those below the new bar are resolved with the reason "below the evidence bar". Visibility signals now resolve themselves once the change no longer holds, and the owner's alert email goes once per change. The cross-channel signals use the same visibility rule; "paid spend up while visibility stayed flat" is gone, because paid ads do not buy mentions in AI answers.
-   The project header and the overview now name their period ("18% visibility · last 30 days"). Hover a client's status to see which signals put it there; acknowledged signals still count. The sidebar badge counts open critical signals, the overview tile every severity, and each says so. Recommendations no longer show a confidence.

v3.86October 2026

Fix

## The setup checklist now ticks off what you've done

The "Finish setting up" card on Home and the welcome screen now check each step against your workspace. A step you have done shows a checkmark and "Done", and the card hides itself once all three are done. Until now it listed every step until the workspace had a client and a report, so a workspace with connected data and AI Visibility scans was still asked to connect data and track its AI visibility.

-   The steps, in this order: track your AI visibility (done once a project has scan results), connect your marketing data (any data source on any client, whatever the channel) and build your first report (a report in Deleted does not count). A done step keeps its link, so you can go back to it.
-   Home's report count, its recent reports and Jump back in leave out reports in Deleted.

v3.85October 2026

Fix

## Clearer API key checks

Connecting an OpenAI key now tests each feature the key runs, on the endpoint and the model that feature uses: the AI Visibility scans, CrunchJunkie AI and voice transcription. The result is shown per feature, and when OpenAI refuses one, you see OpenAI's reason and where to fix it.

-   Three refusals now have their own answer: a restricted key that lacks a permission (named, for example Responses: Write), a project that may not use the model, and an organization OpenAI wants verified first. Before, all three read as an invalid key.
-   A key is saved for what works. If the scans work and CrunchJunkie AI doesn't, the scans are switched on and CrunchJunkie AI shows its reason as a warning.
-   The check uses a few tokens on your OpenAI account and never runs a web search. The help page on your own API keys now lists the settings an OpenAI key needs.

v3.84October 2026

Update

## Reports: pages losing AI citations

A new AI Visibility report table, Citation lifetime, lists pages by their citation-lifetime status as of the report period's last two completed weeks: your own pages that lost AI citations, are fading or whose citations ended in the period — or, with the second preset, your tracked competitors' pages that AI answers newly cite. Each row shows the citation rate before and now as citing / eligible answers, the change in points, when the page was last cited, the weeks it was cited and a weekly trend.

-   Two presets in the report builder, in Ask Crunch and in the MCP connector's add\_widget: "Pages losing AI citations" and "New competitor pages cited". You can also pick the pages (your own, your tracked competitors' or all) and the statuses.
-   The same table in the app, on a share link and in the PDF, white-label; a footnote names the weeks it read. An AI summary reads its rows with their sample sizes, and get\_report\_data says as of which weeks.

v3.83October 2026

Update

## Citation lifetime: which of your pages keep, lose or gain AI citations

The URLs view now shows, for every cited page, where it stands in its citation lifetime over the last 26 weeks. A page's citation rate counts only the answers to the prompts, engines and markets that already cited it in the 8 weeks before, so new prompts never dilute it and the week that found a page never makes it look as if it peaked and decayed.

-   Each page gets a status (lost, fading, ended, regained, new, rising, first measured, no recent data, steady or occasional), its citation rate in the 4 weeks before and the last 2 weeks with the number of answers behind each, when it was last cited and a weekly trend. Filter by losing or gaining pages, and sort by status, change or last citation.
-   Statuses take the sample size into account: a page needs enough answers before it is called lost or fading, a drop must hold two weeks in a row, and a week without answers to its prompts reads “no recent data”, never a loss. Most pages honestly read “occasional” until there are enough answers to call a trend.
-   A click on a page opens its drill-down: the weekly rate and answers, model changes, the status per engine, the prompts that cite it, the pages cited instead, and a likely cause where the data shows one (the page returns 404, another page of your site took over, a crawler is blocked, an engine changed model, a competitor's page replaced it). Otherwise it says unknown.
-   In the MCP connector, get\_cited\_url gains the page's lifetime and the new list\_citation\_lifetimes tool lists the pages losing or gaining citations (68 tools). Ask Crunch reads a short summary of the statuses.

v3.82October 2026

Fix

## Page counts: Gemini names sites, not pages

Gemini, which we read through Google's API, names the website a source came from but never the page. Each site it named was counted as a citation of that site's homepage, so homepage counts were too high: on one project, semrush.com's "homepage" was cited in 20 answers, all of them Gemini's. Gemini answers now leave every page figure, both its count and its base, and the URLs view and the report tables say so: how many answers were left out or, when every answer came from Gemini, why there is no page to list instead of "No data for this period". Wherever sources are counted by domain, they count as before.

-   Page figures are the URLs view with its split into your homepage, your other pages and third-party sites; the Cited URLs and Trending URLs report tables, in the app, on shared links and in the PDF; 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. Gemini chats imported from Peec AI name real pages and still count.
-   A project that tracks only Gemini, such as a Managed AI trial, now has no page figures, only domain figures. Homepage counts drop on projects that track Gemini. A content brief no longer analyses a homepage Gemini named as if it were the page the AI cited: when Gemini was a prompt's only source, the brief says why it has no cited page to learn from.
-   A page cited with a link to a quoted passage (#:~:text=…, which some engines percent-encode) now counts as the page itself instead of one row per passage, in AI visibility and in the Rank Tracker. list\_ai\_answers and get\_ai\_answer in the MCP connector mark a Gemini answer's URLs as websites (sourcesNameSitesOnly). get\_cited\_url and get\_citations now read an answer's cited and retrieved pages the way every other figure does, so a Peec AI chat's sources count as the pages it retrieved.

v3.81October 2026

Fix

## Security: passwords set while single sign-on was unavailable

When a workspace's single sign-on is unavailable because its plan lapsed, staff who have only ever used SSO can set a password through Forgot password, so nobody is locked out. That password is now temporary: once SSO works again, it is removed, sessions that signed in with it end, and the person signs in with SSO. We email them once when this happens.

-   A password someone had before is not affected. API keys and MCP connections belong to the workspace, not to a password, and keep working. When a temporary password is removed, the audit log lists the API keys that person created in the meantime, for an owner or admin to review under Settings → API.
-   The SSO sign-in page now answers the same for a domain without SSO and for one whose workspace plan lapsed, so it no longer shows a workspace's plan state. Settings → Security tells staff whose SSO is unavailable how to set a temporary password, instead of saying they sign in with Google.
-   Sign-up no longer creates a password account for an address on a domain whose single sign-on is active: the address gets an email with the SSO sign-in link instead, and the form answers as always. On such a domain, no link to confirm an address is sent any more. When someone first signs in with SSO, or with a Google account that proves the address, to an account whose address was never confirmed, its password and sessions are removed, so nobody can open an account for a colleague's address in advance. Its two-factor settings, API keys and other linked logins go too, unless the Google login that confirms the address is the only one linked: then they were set up by the same person, who keeps them and gets an email. While someone uses a temporary password, their email address can't be changed.

v3.80October 2026

Fix

## AI Overviews: a brand Google named only by a link now counts

SerpAPI, which reads Google AI Overviews for us, sometimes returns a name Google linked without its text: only the link's address comes back. Those brands were not counted. A scan now keeps such links, marks the gap in the answer text with the link's domain in brackets, such as \[example.com\], and counts the link as a mention when its domain belongs to the client or to a tracked competitor.

-   Applies to Google AI Overviews, AI Mode and Microsoft Copilot from 11 October 2026, and only to a link that stands where a list item's or paragraph's name is missing. A mention counted this way counts for visibility and share of voice only, without position or sentiment; the Responses view and get\_ai\_answer in the MCP connector label it. It needs the brand's own domain: the client's, or a competitor domain set in the AI-visibility project's settings, never a shared platform such as facebook.com.
-   Answers stored before 11 October 2026 are left as they were and can miss a brand Google linked. A table row whose name SerpAPI dropped together with its link cannot be recovered.

v3.79October 2026

Fix

## Rank Tracker budget: searches count from the moment they are sent

A correction to when a Rank Tracker search counts against the budget, and to what a search whose result never came back costs.

-   Rank Tracker budget: a search now counts from the moment it is sent, which is when DataForSEO takes the money for it. A search whose result had not come back by the end of its run (DataForSEO did not answer within six hours, the run was stopped, or its keyword or client was deleted while the run was going) was not counted, so the budget could be used past its end. While a run is going, its searches in flight are part of what it holds back.
-   Such a search stays held back after its run until DataForSEO reports what it cost. We check once a day, so the hold is brief, usually a day or two, and it is released when the search is settled. It is then charged like any other search: twice what DataForSEO charged for it. If DataForSEO never reports a cost for it (it answered without one, the search failed with an error DataForSEO does not bill, or there was no result within three days), it is not charged, and the Billing page counts it as not charged.

v3.78October 2026

Fix

## The builder's preview shows the Trend column

Switching on a table's Trend column in the report builder now shows the line in the widget's preview, drawn the way the report draws it. Until now the preview loaded the trend and did not show it.

-   A Brand table with a filter loads about twice as fast on projects that track many competitors, with or without the Trend column. Its figures are unchanged.
-   MCP connector: the description of get\_ai\_answer now says that an answer whose cited list held only Google redirect links returns citedUrls: null next to its real retrievedUrls.

v3.77October 2026

Update

## A Trend column for AI visibility tables

The Prompt, Topic, Tag, Brand and Source domains tables can show a Trend column: a small line per row with the row's Visibility (on Source domains, the domain's share) for each week of the report period, or each month for periods of 180 days or more. Each point is computed from the same answers as the row, over that week only. A week without answers leaves a gap in the line, never a 0, and a week with fewer than 30 answers shows a hollow point. The column looks the same in the app, on share links and in PDFs.

-   Switch it on in the table's settings, or ask for it through the MCP connector's add\_widget or edit\_widget. get\_report\_data returns each row's value per week (null for a week without answers) and the answers behind each one. AI summaries get the same values.
-   New reports from the built-in “AI Visibility — Monthly Deep Dive” template have it on in the source metrics by tag table.
-   In PDFs and printouts a table wider than the page is now fitted instead of cut off at the page edge: headers wrap, cells take less padding and text can shrink to 7 pt; a table still too wide continues in a second block that repeats its first column. Until now such columns were missing on paper.

v3.76October 2026

Fix

## Google redirect links left out of the Responses view

Gemini answers scanned before 9 July 2026 stored their sources as Google redirect links that name no site. The Responses view and the conversation view on the Follow-up page listed those links as sources. They now leave them out and say in one line how many they left out, as the MCP connector's get\_ai\_answer already did.

-   When an answer's cited list holds only such links, its cited side now reads as not known: get\_ai\_answer returns null instead of an empty list, the conversation view no longer lists the redirect link, and content gaps, the MCP connector's prompt details and fan-out citation shares no longer count the pages the answer only retrieved as cited. This is rare: it needs a cited link the scan could not resolve next to real retrieved pages.
-   MCP connector: get\_follow\_up\_insights with a conversationId names the links it left out per answer (groundingRedirectsLeftOut, groundingRedirectsNote).

v3.75October 2026

Fix

## Google redirect links are no source; source figures under a Locale filter

Gemini answers scanned before 9 July 2026 stored their sources as Google redirect links that name no domain. Source Appearance Rate counted such an answer as one that did not show your domain, and the source tables, the MCP connector's citation tools, gap domains, content gaps and fan-out citation shares listed the redirect host as a source. A redirect link is now never a domain, a page or a citation, and an answer that holds only such links is left out of every source and citation figure, numerator and denominator. Source Appearance Rate and Citation Diversity for a period before 9 July change accordingly: both are based on fewer answers, and Citation Diversity on fewer prompts. A period whose answers all hold such links reads "—" for them, not 0. Brand mentions are unchanged.

-   Under a Locale filter, source and citation figures 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 already did. Until now they left those answers out, and the Cited URLs, Owned off-site citations and Follow-up survival tables showed nothing under any Locale filter.
-   MCP connector: update\_scan\_settings now says that a changed scan day or hour also saves its time zone, and passing the time zone, day and hour the project already has changes nothing (changed: false).

v3.74October 2026

Fix

## Scheduled scans on time after a long scan

A correction to when a scheduled scan is due.

-   A scheduled scan is now due a set time after the last scan started, no longer after it finished. A scan that finished more than an hour after its scan time used to push the next one back: during a trial a project then scanned every other day instead of daily, and a project that scans every few days waited a day longer. Since scans share capacity (3.63), a scan can finish hours after its scan time.

v3.73October 2026

Fix

## Retrievals and citations read "—" for a period nothing measured

Retrievals, Retrieval Rate, Citations and Citation Rate count only answers that show what the engine retrieved and what it cited. A period without a single such answer used to read 0 on report KPI cards, in Month and Week tables, on charts, in the MCP connector and in the AI summary's data, for example every month before July 2026, when this split was first stored. It now reads "—", or null in the API and the MCP connector, as the cards on the Overview already did. Citation Rate also reads "—" in any period in which no answer retrieved your domain.

-   Gemini answers from 2 to 9 July 2026 stored their sources as Google redirect links that name no domain, so they counted as answers that neither retrieved nor cited your domain. An answer whose list names no domain is now left out of these four figures, numerator and denominator. In practice this concerns those July days: Retrieval Rate for a period that includes them rises slightly, and the number of answers behind it falls.
-   A monthly or weekly chart of these figures leaves a gap for a period nothing measured instead of drawing 0, and the AI summary's data says "no data" for a missing chart point instead of leaving an empty slot.

v3.72October 2026

Fix

## Trial scans on daylight-saving days, and line breaks in text blocks

Small corrections to when scans run, to what is counted and to how text is saved.

-   During a trial a project scans daily at its scan time, at least a day after its last scan. That day was counted as 23 hours, so on the day after the clocks went forward (a 23-hour day) the scan was skipped. It is now counted in the project's local days: 23 hours across the spring change, 25 across the autumn one. Projects that scan every few days follow the same rule.
-   Rank Tracker budget: when DataForSEO charges a search again on a retry, each attempt counts in the budget period it ran in. Before, a retry after the period turned moved the whole search's cost into the new period. And a keyword you delete while its run is still going no longer holds its cost back twice until the run ends.
-   Text blocks: a line break written as a closing br tag, as some assistants write it over MCP, now stays a line break, as browsers show it. Saving the block used to drop it.

v3.71October 2026

Fix

## Business Profile KPIs and charts say when a read failed; the Peec AI note on period tables

A Business Profile KPI or chart whose read failed used to drop out of the report, and a Reddit Ads video funnel said "No data for this period". Both now say "Not loaded" in the app, or "No access" when the platform refused the account; shared links and PDFs say "Data unavailable". A Business Profile KPI keeps the figures that were read, a failed comparison period means no prior data instead of a change from 0, and the average rating of a location without reviews is "—", not 0.

-   An AI-visibility Month or Week table, and a period-comparison chart, that set periods with Peec AI data only next to periods with our own scans count every figure per answer, so that each column or line keeps one unit, and now say so under the widget, naming the Peec-only periods, as charts have since 3.69.
-   The Prompt table, filtered to one market, keeps the answers stored without a market under the project's market, as the Visibility KPI does; it used to leave them out.
-   An AI assistant that changes a project's scan time through the MCP connector without naming a time zone now saves it in the project's time zone, or the workspace's when the project has none, as the settings page does; for a project without a time zone it used to save UTC.

v3.70October 2026

Fix

## GEO Audit: a block on your articles no longer reads as reachable

The live check of whether AI crawlers can fetch your site now counts the content page it probes, not only the homepage.

-   The GEO Audit fetches your homepage and one content page from your sitemap with each AI crawler's user-agent. Until now only the homepage counted in the score, so a site whose articles refuse ChatGPT-User while its homepage lets it in passed the check. A confirmed block on the content page now fails it with the same weight as one on the homepage, and the finding says what each page did, for example “Homepage reachable for every probed crawler; /blog/x blocked for ChatGPT-User”. A site blocked only on its articles sees its GEO score drop by up to about 6 points on the next audit.
-   Cloudflare is named as the likely cause only when that page's own responses carry Cloudflare's markers and the blocks match its default since 15 September 2026, which blocks agent and training crawlers only on pages that show ads. Otherwise the audit and the Firewall & access policy table speak of a firewall or CDN without naming a vendor.
-   The free GEO audit on our website runs the same two-page probe. It reuses the audit's own fetch of the content page as the baseline, so the probe adds one round of requests, and it is skipped when an audit has already used most of its time.

v3.69October 2026

Fix

## Channel tables say when a read failed; Topic and Tag tables count like the KPI

A Meta Ads, Microsoft Ads, Amazon Ads, Reddit Ads, ChatGPT Ads, Piwik PRO, Mailchimp, Business Profile or Search Console table whose read failed no longer says "No data for this period", which reads like a quiet period. In the app it says "Not loaded", or "No access" when the platform refused the account; shared links and PDFs say "Data unavailable". Donut charts of those channels do the same, and a Business Profile table by surface, device or action no longer shows zeros after a failed read.

-   The Topic and Tag tables call their rate Visibility (it was "Mention rate") and count it like the Visibility KPI with the same filters. On a project with Peec AI data and our own scans, an engine both track now counts once on a day both measured it, so these tables' Visibility and Runs can change there, and Runs go down. An AI summary written over a table whose column was renamed is no longer marked as out of date for the rename alone.
-   A chart whose range has months with Peec AI data only next to months with our own scans counts every point per answer, so that the line keeps one unit, and now says so under the chart, naming the Peec-only months. AI summaries read every chart series, and a per-chat rate, with its unit, so 0.37 per chat is never described as 37 %.
-   Scheduled AI visibility scans set for an hour that daylight saving skips (midnight in Chile, Cuba, Lebanon or Egypt, or 02:00 in Europe) now run right after the clocks jump instead of being missed that day, and an hour that happens twice when the clocks go back scans only once.
-   Saving any project setting no longer moves the scan time into your browser's time zone: the schedule is shown and kept in the project's own time zone (your workspace's for a newly chosen time), and it only changes when you change the day or hour.

v3.68October 2026

Fix

## Report lists without deleted reports, and clearer money and error wording

Corrections to what assistants, the API, emails and reports say when a report is deleted, a price is shown in German, Google refuses access or a figure has nothing to stand on.

-   The connector's list\_reports, Ask Crunch and the REST API's GET /reports no longer list reports that are in Deleted. Pass includeDeleted to list them too, each marked deleted: true or false.
-   In German, Spanish and French every price puts the currency sign after the amount, plan cards included: “149 €” beside “149 US-$”, where the euro card used to say “€149”. A German invoice receipt in dollars now reads “12,50 US-$” instead of “12,50 $”.
-   Google Analytics: a KPI on a property Google refused says “No access”, as that property's tables and charts do, and AI → Conversions asks you to reconnect instead of saying Google may be busy. A chart series that could not be loaded reaches the AI summary as not loaded, so the summary describes no trend for it.
-   Google Ads ROAS shows “—” when there was neither a conversion value nor a conversion, whether Google left the value out or sent 0. A value of 0 next to conversions is still a real 0.00×.
-   Rank Tracker budget: searches of a keyword or client you delete during the period keep counting against the budget. They were paid for, so the budget now shows what is really left.

v3.67October 2026

Fix

## Security: 2FA codes, recovery codes and lapsed plans

A wrong two-factor code now counts towards the sign-in lockout exactly like a wrong password: at sign-in, when you change your password and when you turn 2FA off. A recovery code is used up once, even when two sign-ins send it at the same moment.

-   A workspace without an active Pro, Agency or Scale plan can still list, switch off and delete its webhook endpoints, and switch off, remove the domains of and delete its SSO connection. Creating, testing and configuring still need the plan.
-   Single sign-on pauses without an active Pro, Agency or Scale plan: your team signs in with a password or Google instead, and anyone who has only ever used SSO can set a password through Forgot password.
-   Slack and webhook actions in Automations are checked against the plan each time a rule fires. When the plan no longer includes them they are skipped, and the run log says why.

v3.66October 2026

Fix

## One rule for “~”, and tables cut only after they are sorted

A change in AI visibility now reads the same everywhere, and every metric table holds the top rows by the metric it is sorted on.

-   AI visibility: a change counts as a gain or a loss only when it is at least twice its margin of error, the rule the KPI cards and Home already used. The Overview's competitor table counted any change beyond one plain margin, so it showed a gain or a loss in about 8 % of the cases where Home said “~”. That table, Biggest movers, the change chips of a report's Brand table and the report tables by tag (Brand × Tag, Tag × Month, Brand × Month and Tag) now use the same rule and the same margin, print a smaller change grey with “~” in front, and explain it in the same words.
-   Google Ads tables now have a Sort setting, and the row limit cuts after the order, never before. Until now the query kept the campaigns and ad groups with the most clicks, the search terms with the most impressions and the asset groups with the most conversions, and only then showed them, so a 10-row table sorted by cost could miss the campaign that cost the most. Without a Sort a table keeps its order (campaigns by clicks, and so on). Sorted lowest first, rows with nothing to measure (no impressions, or no conversions behind a cost per conversion) are left out. Placements follow the widget's row limit instead of a fixed 50, conversion actions follow it when the widget has one, and a row's comparison value is now its own: some tables used the previous period's row in the same position, or the first row with the same name.
-   LinkedIn Ads, Piwik PRO, Matomo and Merchant Center tables now have a Sort setting too, applied before the row limit. Piwik PRO and Matomo tables also no longer keep only the rows with the most sessions or visits before ordering by their first metric, and Matomo goal tables read every goal, not only the first ones. A sort saved before these sources offered one is not used until it is picked again, a table without a Sort keeps its order (LinkedIn's own, product count for Merchant Center), and a LinkedIn table without a row limit still shows every row.

v3.65October 2026

Fix

## The GEO Audit says what its agent check measures

Agent readiness checks whether AI agents can reach a site, read it without JavaScript and parse its data: the preconditions, not a test that an agent can complete a task. Its top band is now called “Preconditions met”, and a clean audit now says only that every check in the GEO score passed.

-   GEO fix suggestions and AI insights no longer say Google ignores JavaScript. Google renders pages in a headless browser, later and in a queue; OpenAI's, Anthropic's and Perplexity's crawlers are not documented to render it, so the advice to server-render stays.

v3.64October 2026

Fix

## Webhooks keep flowing, and a stuck Google Analytics request gives up cleanly

Two fixes for things that could hold up work that had nothing to do with them.

-   Webhooks: events still queued for an endpoint that was then disabled (by you, or automatically after repeated failures) are now closed as skipped, and are not resent when the endpoint is re-enabled. Until now they stayed in the queue and could delay deliveries to other endpoints.
-   Google Analytics: a request that gets no answer now gives up after 30 seconds and its widget says “Not loaded”, instead of waiting until the whole report timed out and holding up the property's other widgets. A request that had to wait its turn still gets its retries when the property is busy.

v3.63October 2026

Update

## Scheduled scans for many clients at once

Scans that run without an open tab are now worked through side by side: the background scanner runs every 5 minutes instead of every 10 and takes checks from many scans at once, with workspaces taking turns, so one workspace's large batch no longer holds up another's scan.

-   Within a workspace, a scan someone started (in the app, through an assistant or by an automation) goes ahead of scheduled ones, and scheduled scans run oldest first, so results arrive client by client instead of all at the end.
-   A new project gets a scan slot of its own: a weekday and a night hour in your workspace's time zone, spread so that projects don't all scan in the same hour. Projects that already exist keep their schedule; you can change any slot in the project's settings.
-   What a scan measures is unchanged: the same checks and limits, the same Managed AI budget and spend cap, the same retries.

v3.62October 2026

Fix

## Missing figures show “—”, and a source that fails to load says so

A rate without a basis now shows “—” instead of 0: a cost per conversion with no conversions, a ROAS where the ad platform sent no conversion value, a CTR without impressions, a bounce rate without visits. And when a source does not answer (Google Analytics busy or down, Matomo's goals, Merchant Center's performance report, Brevo's revenue attribution), the widget says it could not be loaded instead of showing 0.

-   Google Analytics: a busy property is asked again a couple of times before we give up, a report sends at most six requests at once per property, and a widget that still could not be read says “Not loaded” in the app and “Data unavailable” on share links and in the PDF. The AI summary and the MCP connector treat it as missing, not zero.
-   Charts leave a gap where a point has no value, in the app as on share links and in the PDF, instead of drawing it at 0. Tables show “—” in the affected columns, and the rest of the row stays.

v3.61October 2026

Fix

## REST API, webhooks and SSO need an active plan

The REST API, webhooks and single sign-on now need an active Pro, Agency or Scale subscription in the workspace, as the app does: active, in its trial, or in the grace period after a failed payment. Until now a canceled plan kept them, API access included.

-   Where the subscription has ended or is paused, API keys get the same 403 plan\_not\_allowed answer as before, webhook and SSO settings can't be changed, and webhook events are not sent: each one is logged as skipped and is not resent later. Nothing is deleted, and the API and webhooks work again once the plan is reactivated.

v3.60October 2026

Update

## The MCP connector on every paid plan

Claude, ChatGPT and other assistants can now connect on every paid plan, Solo and Starter included. Until now the connector needed Pro, Agency or Scale.

-   The connector needs an active subscription in the workspace: active, in its trial, or in the grace period after a failed payment. Where the subscription has ended, the connector says so, and you can still list your other workspaces and switch to one.
-   The REST API, webhooks and single sign-on stay on Pro, Agency and Scale. The developer page, the docs and the comparison pages now say which plan includes what.

v3.59October 2026

Update

## New report template: AI Visibility — Monthly Deep Dive

A built-in template in every workspace's Templates gallery lays out a month of AI visibility the way an agency's Peec AI monthly report does. It works on Peec AI projects and on our own scans.

-   Seven sections in this order: an executive summary; key figures (Visibility, Share of Voice, Sentiment, Avg. Position and Mentions, then Retrievals, Retrieval Rate, Citations, Citation Rate and Source Appearance Rate), each against the previous month; the Prompt table sorted by the change in visibility; the Brand × Tag heat map with a Total column; source metrics per tag with change columns and a Total row; a six-month trend; and the top Source domains and Trending URLs.
-   The template names no tags. The tag tables take the tags on the most prompts, up to eight, and each of their cards in the editor says you can pick and order them yourself. On a client whose prompts have no tags yet, those tables say so instead of showing an empty period.
-   The trend section uses a new date range, Last 6 full months: the six whole calendar months up to last month, so its first and last points are never part-months. It is offered for every widget and report, and Ask Crunch and the MCP connector accept it as last\_6\_months.
-   Opening a template from the Templates gallery now selects that template's own data source, so the new report is saved as an AI Visibility, GA4, LinkedIn or other report, not as Google Ads. The Microsoft Ads and SEO cards now open the Microsoft Ads and Search Console templates.

v3.58October 2026

Update

## AI Visibility reports: Source domains, Trending URLs and a fuller Prompt table

Two new AI Visibility tables and a richer Prompt table bring the sources and prompts sections of a Peec AI monthly report into the report builder. Each follows the widget's filters, Tag included, and reads the same in the app, on a shared link and in the PDF.

-   Source domains ranks domains by their share of chats: the answers that used at least one page of the domain, divided by all answers in the widget's filters. Each row shows that share, its change in points when the report compares periods, Retrievals (on Peec AI data) or Appearances, Citations and a category. Your domain is highlighted, and a footnote gives its rank when it falls outside the table.
-   The category is Peec AI's own classification of the domain (Editorial, UGC, Corporate, Institutional, Reference and others), read by the Peec sync. Your domains and your tracked competitors' domains always read Own and Competitor. On our own scans a fixed list of review, social, reference and news sites is used and marked as ours; other domains stay blank.
-   Trending URLs takes the period's most-used pages (top 20 by default) and shows the ten whose retrievals rose most: previous and current count, the change, the change in percent or "new", the page title from Peec AI and the page type. A footnote names the previous period and says so when it covered fewer prompts.
-   The Prompt table adds each prompt's tags, the day it was first tracked (its first stored answer, which for Peec AI imports is truer than the import date) and the change in visibility in points, and it can be sorted by prompt, visibility or change (a table saved before keeps its weakest-first order). Its Mention rate column is now called Visibility and counts like the Visibility KPI: on a project with both Peec AI data and our own scans, an engine both track was counted twice on a day both measured it and now counts once, so a saved Prompt table's Visibility and Runs can change there, and Runs go down.
-   Ask Crunch and the MCP connector can add and configure the new tables, get\_citations gives each domain its share of chats and category, and get\_cited\_url gives the page title, type and category.

v3.57October 2026

Update

## AI Visibility reports: tag pivots — a Brand × Tag heat map, tables by month and a richer Tag table

Agencies that report AI visibility one product or theme at a time can now build that report from prompt tags, on our own scans and on Peec AI data alike. Every new table pools answers the way the KPI cards do and shows how many answers each figure rests on.

-   Brand × Tag puts your client and its tracked competitors against the tags you choose, in your order, with the change against the previous period under each value, the answers behind every column, an optional Total column for the widget's own filters, and optional heat shading with a legend.
-   Tag × Month and Brand × Month show Visibility per calendar month of the report's range, then the change against the previous month and against the first; a month without answers reads "—", never 0.
-   The Tag table can show Visibility, Retrievals, Retrieval Rate, Citations and Citation Rate per tag, each row equal to the KPI card filtered to that tag, with an optional change column per metric, a Total row, and your own tags in your own order.
-   On Peec AI data, a column with one tag reads Peec AI's own per-tag figures; a column that combines two tags is recomputed from the imported chats, and the widget says so. The tables work in the app, in shared reports, in PDFs, through Ask Crunch and in the MCP connector, and a report template keeps its tags and Tag filters by name, dropping, and naming in the editor, any a client's prompts don't use.

v3.56October 2026

Fix

## Peec AI projects: Retrieval Rate and Citation Rate follow Peec's definitions

From 8 October 2026, Retrieval Rate and Citation Rate on a project with Peec AI data can change. A Peec chat that cited nothing used to drop out of Citation Rate's denominator, which pushed the rate up, and a chat without sources dropped out of Retrieval Rate's. Both now count as zero, for chats already imported too, and a view that holds only Peec AI data uses Peec's own definitions, so the figures match Peec's dashboard.

-   Retrievals counts your pages retrieved across all chats, and Retrieval Rate divides them by every chat (pages per chat, such as 0.37, not a percentage). Citation Rate divides your pages cited in the chats that retrieved your domain by the number of those chats. Peec's "Used as source" is the Source Appearance Rate.
-   Citations counts your pages cited. Peec counts a page each time an answer cites it; the import keeps which pages a chat cited, not how often, so Peec's Citations and Citation Rate can still be higher than ours.
-   The Cited Sources and Cited URLs tables no longer call retrieved pages citations. Their first count is Retrievals on Peec AI data and Appearances (pages retrieved or cited) on our own scans, with a Citations column beside it, in the app, in shared reports, in PDFs and in the MCP connector. The owned off-site citations and the "Cited in AI, not (yet) winning in Google" list no longer count the retrieved pages of a Peec chat that cited nothing.
-   Our own scans keep their definitions. A view that mixes them with Peec AI data counts answers that retrieved or cited your domain, with rates in percent, the same rule Share of Voice follows.
-   A period whose Peec chats retrieved pages but did not cite a single one captured no citations (chats imported before 2 July 2026), so its Citations and Citation Rate show "—", never 0; a Citations cell shows "—" wherever no answer reports its citations. The Sources and URLs views use the same labels, and a line chart gives the per-chat rates their own axis next to percentages.

v3.55October 2026

Update

## Assistants can work in any of your workspaces

If your account belongs to more than one workspace, such as your agency's and the client workspaces you were invited into, you now choose which one your connected AI assistants work in: ask the assistant to switch, or pick it under Settings → Connect AI assistants.

-   Two new MCP tools, 67 in all: list\_workspaces shows your workspaces with your role, plan and switches, and switch\_workspace moves the connector to another of them. Switching changes no data, but like any change it is shown as a preview first and happens only after you confirm.
-   Until you choose, the connector always works in the workspace you joined first. Your role and that workspace's own switches for write actions and AI spend apply there, and every action's preview and result name the workspace it concerns.
-   If you are removed from the workspace you chose, the connector goes back to your first workspace on its next call and says so.

v3.54October 2026

Update

## Assistants and Ask Crunch can rewrite text blocks

An assistant connected over MCP can now replace the text of a report's text block, and Ask Crunch rewrites one when you ask.

-   edit\_widget takes a text block's new text as it is, without AI, shows its start and its length before you confirm, and keeps the block's title, width and Hide title setting. Scripts, event handlers, unsafe links, embedded frames and styling other than text alignment are removed before it is saved, and the previous text comes back so the change can be undone.
-   Text blocks are cleaned the same strict way wherever they are saved, the builder included.
-   A request that isn't about report data, such as changing a text block, is no longer filed as a missing widget, and Crunch no longer says we are adding it. It says what it can't do and where to make the change instead.

v3.53October 2026

Update

## Assistants can work with goals, approvals, share links and sends

The MCP connector now reaches goals, automations, the Approvals queue, the Insights actions, and sharing or sending a report: nine new tools, 65 in all.

-   Read each client's goals with their progress, your automations, the drafts waiting for approval and the Insights page's prioritised actions.
-   Approve or dismiss one drafted action, resolve or snooze a signal, and create, change or remove a goal, each shown as a preview first.
-   Create, change or revoke a report's share link, or e-mail a report once to up to 10 addresses. The preview names every recipient and what becomes public, a password is never shown back, and assistants can send up to 20 reports a day.

v3.52October 2026

Fix

## API and tool calls no longer count as user requests

AI Bot Traffic counts requests to API and tool-call paths, such as an MCP connector, on their own line instead of as people asking about your site.

-   User requests and Top crawled pages leave out /api/ and /mcp paths and the MCP sign-in lookups under /.well-known/; the count and busiest paths show separately, in the API and the MCP crawl tool too. The GEO Audit also words its author-markup finding more carefully, and the docs say to review drafted fixes before shipping.

v3.51October 2026

Update

## Weekly and daily emails arrive in your morning

The Monday signals digest, client digests, the monthly AI-perception email and visibility alerts now go out at a set hour in the workspace's time zone instead of on UTC.

-   The Monday digest arrives Monday at 08:00 workspace time, client digests and the perception email at 09:00 and visibility alerts at 10:00, daylight saving included. What the emails say is unchanged, and each goes out once per period. Workspaces without a valid time zone keep the old UTC times.

v3.50October 2026

Update

## Sort works on more tables

Tables from Google Analytics, Meta Ads, Microsoft Ads, Amazon Ads, Reddit Ads and ChatGPT Ads can be sorted by any metric, and rank movements are coloured.

-   Sort any breakdown table by a metric, highest or lowest first, before the row limit; a Rank Tracking change like ▲ 3 now shows green or red.

v3.49October 2026

Update

## Change your password in Settings

Signed in, you can now change your password without the reset email.

-   Change your password under Settings → Security; other devices are signed out.

v3.48October 2026

Update

## Provider prices checked weekly

The prices behind the own-key cost estimate are now checked against the providers every week.

-   Provider prices behind the own-key cost estimate are now checked weekly; the statement shows when they were last checked.

v3.47October 2026

Fix

## Usage statement

Your usage statement now keeps one unit per column.

-   The usage statement counts own-key usage in scans and hides Managed AI columns for workspaces that don't use it.

v3.46October 2026

Fix

## Grok answers keep their sources

Grok answers now store the sources they cite.

-   Grok answers before 7 October 2026 show none.

v3.45October 2026

Fix

## Signing in again after a password change

Other devices are sent to the sign-in page instead of showing an empty app.

-   The sign-in page says why: your password was changed or your session ended.

v3.44October 2026

Fix

## AI summaries write money in your account's currency

AI summaries and Ask Crunch were never told which currency a figure was in, so one answer could show an amount with a pound sign and the next with a dollar sign.

-   The AI now receives the currency with every money figure and is told to use only that one. A figure with no known currency is written without a symbol, and a blend of channels billed in different currencies says so.

v3.43October 2026

Fix

## AI summaries and Ask Crunch run on current models

AI summaries and Ask Crunch now use current models: on an OpenAI key GPT-5.6 Terra instead of GPT-4o mini, with Managed AI or an Anthropic key Claude Sonnet 5.5 instead of Sonnet 4.6, and on a Gemini key Gemini 3.6 Flash instead of 3.5 Flash. A report's executive summary written on an OpenAI key had come out as two short sentences; the newer models write the full summary the report asks for.

-   The newer models think before they write. We keep that thinking short and give it room of its own, so it never takes space from the summary.
-   Settings → AI & API Keys shows, on each key, the model it now runs for the assistant.
-   On your own OpenAI key, a report summary now costs about 1–3 US cents of OpenAI usage (GPT-5.6 Terra: $2 per million input tokens, $12 per million output tokens).

v3.42October 2026

Fix

## Claude and Gemini answers are no longer cut off

Scans set a limit on how long an engine's answer may be, and for Claude and Gemini it was too low. Claude answers were limited to 1,024 tokens, so most stopped before the end, rarely past 2,700 characters, and some came back empty after the web search. Gemini 3.6 Flash spends part of the same limit thinking before it writes, so many of its answers ended after a few hundred characters. A brand named after the cut, or in an answer that never arrived, was counted as not mentioned, so Claude and Gemini visibility read low.

-   Answers now have room to finish: 8,192 tokens for Claude and for Gemini, which now thinks at its low setting, and 8,000 for ChatGPT and Grok (both 3,000 before). Meta AI keeps its 8,000. A limit is only a ceiling, so a short answer costs what it did. Complete answers are longer: on your own keys Claude and Gemini use more tokens per check, and on Managed AI a check costs you what it did.
-   An answer from ChatGPT, Gemini, Claude, Grok, Perplexity, DeepSeek or Meta AI that arrives empty, or that the engine reports as stopped at a limit, is no longer stored. It counts neither as a mention nor as a miss: the check fails with the reason and does not count against a Managed AI allowance, though on your own keys the provider still bills the call it answered. A later pass of the scan may ask again; an engine that keeps answering like this is stopped for the rest of the scan, with the reason in the scan bar. An answer the engine declined to give is still stored as its answer; one its safety filter cut off partway is not. Google AI Overviews, AI Mode and Microsoft Copilot are unchanged: an empty result there means no AI answer was shown. Sample sizes (n) count only answers that arrived whole, and the free AI-visibility check follows the same rule.
-   Brand names are now read from up to 40,960 characters of an answer, up from 12,000, so a brand named late in a long answer counts. ChatGPT's longest answers already ran past 12,000 characters, so ChatGPT figures can rise a little as well.
-   Expect Claude and Gemini visibility to step up from a project's first scan after this change. That is the measurement catching up, not a change in your visibility, and Claude and Gemini figures from before and after it are not directly comparable. A project with Claude or Gemini answers from before the change gets a note on its Timeline when its first complete answer is stored, dated that day, and drop and overtake alerts, signals and client digests leave Claude or Gemini out of any comparison that spans it. Answers stored earlier are left as they are.
-   Grok's limit was raised too. Some Grok answers stop after their opening lines, and we are checking why before saying more.
-   In the MCP connector, get\_ai\_answer now says why the engine stopped writing (stopReason) and whether that was a normal end.

v3.41October 2026

Fix

## Disconnecting a data source deletes its stored token

Disconnecting a data source now also deletes its stored access token when nothing else uses it. Until now the figures imported through it were deleted, but the token stayed behind.

-   One sign-in can serve several data sources, for example every Google Ads account added with the same Google login. The token stays while any of them is connected and goes with the last one. Deleting a client or your account works the same way.
-   A token another feature still reads also stays: Merchant Center while your AI Shopping catalogue imports through it.
-   Reddit Ads tokens are revoked at Reddit as well. Google and Meta tokens are deleted here but not revoked there: revoking one ends every connection the same person made with that login, here and in other workspaces. To withdraw the access at Google or Meta too, remove CrunchJunkie in that account's settings. For the same reason, disconnecting Merchant Center on the Shopping tab no longer revokes at Google.

v3.40October 2026

Fix

## Disconnecting Peec AI deletes what it imported

Disconnecting Peec AI used to leave the imported answers, figures and prompts in the client's AI Visibility project, although the data-deletion page says data imported through a source goes with it. Now a disconnect deletes everything imported from Peec for that client.

-   Deleted with the stored key: the answers with their sources, Peec's daily and per-tag figures, the fan-out searches and the prompts imported from Peec. A prompt that CrunchJunkie's own scans also ran, or that a content brief was made from, stays and only loses its link to Peec; the brief loses its quotes from Peec answers.
-   Perception analyses and brand suggestions built from those answers are cleared the moment you disconnect, and open signals computed from Peec's data are resolved.
-   Nothing more is imported from the moment you disconnect, not even by a sync already running. Most imports are deleted at once; a very large one takes a few minutes, during which the source shows as Removing under Data sources and every report, shared link and the MCP connector show the client's own scans only.
-   Pressing Connect twice no longer creates a second Peec connection for the same client, and a disconnect removes every Peec connection the client has.

v3.39October 2026

Update

## What happens to a workspace after its subscription ends

Our data processing agreement says a workspace's data is deleted after its subscription ends. That now happens, and never without an email first.

-   30 days after a subscription ends, we email the workspace owner the date the workspace will be deleted, 7 days later. Choosing a plan before then keeps everything, and Settings → Export your data downloads a copy.
-   Paused workspaces keep their data for up to 12 months. After that the owner gets the same email, with 30 days' notice. Resuming at any point keeps everything.
-   Logins that belong to no other workspace are deleted with the workspace. Invoices are kept for as long as German law requires.

v3.38October 2026

Fix

## DeepSeek's URLs: from model memory, not a search

Since 10 September 2026, DeepSeek's model ignores the web search tool our scans send, yet its answers still contain URLs. Those URLs were counted as cited sources. They are now labelled "from model memory, not a search" and left out of every citation and source figure, back to 10 September. DeepSeek's brand mentions still count.

-   Left out of the numerator and the denominator alike: Citation Rate, Retrievals, Citations, Source Appearances, Citation Diversity, top cited domains, the Sources, URLs and Gap views, content gaps, fan-out citation shares, shopping sources, perception's attribute sources, the citation-gap actions, crawl-to-citation figures and source health. Wherever one of these figures is shown, a note says how many answers it left out. New content briefs no longer use those URLs as evidence.
-   On the Responses view these answers carry a "URLs from memory" tag instead of "Web search", and their URLs sit under that label. In reports, shared links and PDFs, a source or citation widget that left answers out says so in a line under it, charts included, and AI summaries are told the same.
-   In the API and the MCP connector, get\_ai\_answer and list\_ai\_answers return those URLs as urlsFromMemory, never as cited or retrieved; get\_citations, get\_cited\_url and the REST citations endpoint leave those answers out and count them in answersFromMemoryExcluded.
-   The Retrieval & citations report table now computes Citation Rate the way the KPI card does: retrieved and then cited, divided by retrieved, over answers that show both lists. It used to divide citations by retrievals, which could go above 100 %.

v3.37October 2026

Update

## Fan-outs: more of each engine's searches, and an honest count of the rest

The Fan-outs page reads every search an engine lists, records when an engine answered without searching, and stops counting your own words and names as an engine's intent.

-   ChatGPT, Grok and Meta AI: every search in a web-search step is read from the list the API now returns, with the older single-search field as the fallback. Perplexity's searches are read for the first time, from the queries its Agent API returns with each set of results.
-   Claude: when a scan falls back to the separate search service, the searches Claude wrote for it are kept too.
-   Each answer now records whether the engine ran no web search, as distinct from an answer that came back without a search list. The page and the MCP tool count both, so a missing list is never read as no search.
-   Words the engines added are compared with the prompt as the engine received it, including the market and language instruction, and with that market and language as the engines write them. Your brand, your competitors and the engines' own names no longer show up as added words. Your own brand is recognised in any capitalisation; a competitor's name of up to four letters only exactly as you entered it, so a competitor called "Box" does not hide the word "box". The brands panel still counts a competitor's name in any capitalisation and marks the lower-case ones.

v3.36October 2026

Fix

## A report in Deleted no longer opens through its share link

Moving a report to Deleted used to leave its share links working, so a client could keep opening a report you had deleted. Now a report in Deleted no longer opens through its share link; restoring it brings the link back.

-   Whoever opens the link sees “This link is not available”, the same as for a link you removed. The report's figures and its PDF can't be fetched through the link either, and the browser tab and the link preview no longer name the client or your agency.
-   Restoring the report from Deleted brings every link back as it was, with its password and settings, so there is nothing to send again.
-   When you delete a report, the confirmation now says that its shared links stop working until you restore it, and Public dashboards in Settings no longer lists a report that is in Deleted.

v3.35October 2026

Fix

## Dollar prices: “$” in the US, “US$” where a local dollar exists

Prices in US dollars showed “US$” to everyone on the pricing page, and a bare “$” in billing, in onboarding and on the Managed AI meter, which in New Zealand, Canada or Australia reads as the local dollar. A dollar price now carries a plain “$” only where the US dollar is the local currency.

-   In English a visitor in the US sees “$165”, and a visitor in New Zealand, Canada, Australia or anywhere else sees “US$165”, as do emails, where the country is not known. German, Spanish and French put the sign after the amount: “165 US-$”, “165 US$” and “165 $US”, or “165 $” in the US. Prices in euros are unchanged.
-   The country is the one CrunchJunkie already reads from your connection to choose between euros and dollars. On the pricing pages it travels in the existing currency cookie, cj\_currency, which now also holds the country while prices are in dollars (for example USD:NZ). The cookie table in the privacy policy says so. No new cookie, no tracking.
-   This covers the pricing pages and the cost calculator, billing (plan, packages, invoices, changing plan, the paused screen, the Managed AI meter and banner), onboarding, the package offer page and the usage statement.
-   The Rank Tracker's costs follow the same rule: the estimate before a run, the cost of each rank check, and the DataForSEO balance in the Signal that warns when it runs low.

v3.34October 2026

Update

## Query fan-outs: Peec AI's recorded searches, as a separate source

For a client imported from Peec AI, the Query fanouts page and the MCP connector now also show the sub-queries Peec recorded in its own chats: mostly in the engines' apps, logged out, and for some engines through the model's API. They are labelled as Peec's and never added to our own.

-   A switch on the page, Our capture / Peec, appears for Peec-imported clients. The Peec view separates web searches from Peec's shopping lookups, lists the products Peec recorded, counts Peec chats rather than answers, and marks the engines Peec ran through an API.
-   Imported in the background every hour, apart from Sync and the daily refresh: the first import reads the last 90 days, each later one continues from the last whole day read in full and re-reads the three days before it. A large history takes a few hours, and the page says while it is catching up. Rows older than 400 days are deleted every day, and disconnecting Peec deletes all of them at once. CrunchJunkie reads only what the client's own Peec project holds, with the client's key, and scrapes nothing itself.
-   Never pooled: our fan-out counts, signals, Search Console column and Content Briefs read only our own capture. In MCP, get\_query\_fanouts takes fanoutSource "peec" (default "native"), peecQueryKind search or shopping, and limit.
-   The Peec connection is now watched like every other connector: each Peec response is checked for deprecation notices, and Peec's API specification is compared every day for changes to the calls we make.

v3.33October 2026

Fix

## Google Ads: an account you can no longer read says so

When the connected Google user lost access to an ad account, for example after being taken off the manager account, that account's widgets came back empty and its KPI tiles read 0, which looked like a quiet month. They now say the figures are missing.

-   In a report in the app such a widget reads “No access”, with the account and Google's error code, or “Not loaded” when Google refused the request for another reason; the builder preview names the account. After the next daily check the report shows a banner, and the client's Google Ads source on Clients reads “No access” instead of Connected. The banner and the label are for your team only.
-   On shared links, in present mode and in the PDFs CrunchJunkie renders, the widget reads “Data unavailable” and says the data is missing, not zero, without naming the account or the reason. If that PDF render fails and the report page falls back to your browser's print, the PDF shows your team's wording instead. An “All channels” widget that had to leave an account out says so underneath: by name for your team, as a count for clients.
-   AI summaries leave such a widget out and note only how many accounts had no data for the period, never why. A summary written while an account could not be read counts as out of date once its figures can be read again, so a scheduled email writes it again.
-   For each Google Ads account, CrunchJunkie now searches once for a manager account that can read it and keeps the one that answered, instead of trying every manager account again on each request. Once access is granted again, the figures can take up to 10 minutes to come back, and the banner clears after the next daily check.
-   For developers: in GET /api/v1/reports/{id}/data such a widget is null, and meta.unavailable gives the reason (no\_access or error) and Google's code. The MCP tool get\_report\_data returns the same under \_meta.unavailable.

v3.32October 2026

Fix

## KPI tiles show a change from 0, and “No prior data” only when there is none

A KPI tile could not show a change from a previous value of 0: lost impression share going from 0 % to 12 %, or conversions from 0 to 5, showed no change on the tile while the table below showed it. The report data now tells a real 0 apart from a missing comparison, and tiles follow the same rule as tables.

-   From a real 0, a rate changes in points (+12.0 pts), and the Absolute and Both formats show the absolute change (+5). There is no percentage change from 0, so none is shown, as in tables.
-   “No prior data” means there is nothing to compare with: no comparison period, a comparison period the source could not be read for, no earlier scan, audit or rank check, or a figure that only exists as it stands today. Merchant Center catalog counts, the Business Profile review total and rating, and Facebook and Instagram follower totals no longer compare today's number with itself, and a GEO score compares with the previous audit only when the report has a comparison period.
-   A widget set to compare with nothing shows neither a change nor “No prior data”. When a source cannot be read for the current period, its figures show “—” instead of 0, with no change, and a widget none of whose figures could be read says the data could not be loaded. An “All channels” widget leaves that account out of its KPIs and its chart and names it for your team (clients see how many accounts were left out), and a goal shows “—” instead of adding 0 for it.
-   The same in the app, on shared links, in PDFs and in the builder preview. AI summaries are told that there is no prior data instead of reading a 0, and summaries written before this change are not marked as outdated because of it.
-   For developers: in GET /api/v1/reports/{id}/data and the MCP tool get\_report\_data, a KPI's prev is null when there is nothing to compare with (no comparison period, no earlier data, a comparison period that could not be read, or a figure that only exists as it stands today) and a number, 0 included, when the comparison period was measured. Every KPI widget carries prevNull: true. A blended prev is null when a channel that counts now has no previous value. A KPI's value is null when there is no figure: the read failed, or the value cannot be computed (for example cost per conversion with 0 conversions).

v3.31October 2026

Update

## Query fan-outs: Search Console in two tiers, brands and recurring words in the searches

The Query fan-outs page now says how its searches were made, matches more of them to your Search Console honestly, says so when Search Console could not be read, and shows which brands and word sequences the engines keep searching for.

-   A line at the top names the source: searches each model ran via its provider's official API, with no login and no memory, for your market, with the model and the scan dates. They are not a transcript of anyone's session in ChatGPT or another assistant app.
-   The Google column matches a search when it is the same string once only quotes, case, accents and punctuation are ignored, so an engine's "crunchjunkie" in quotes now meets your crunchjunkie row. A search with an operator such as site: or -term is narrower than its words and never counts as an exact match. A shorter Search Console query whose every word is in the search shows separately as a similar query, in its own words and with the engine's operator, never as your rank; with several, impressions are added up and the position is weighted by impressions. A Google rank only exists for searches people also type into Google.
-   When Search Console cannot be read, the page names each property and why (access refused, or an error from Google's API) instead of showing no matches. Before, an expired connection looked like a connected one with nothing in common.
-   New panels: brands named inside the searches (yours and each competitor's, in searches and answers) and recurring two- and three-word sequences, each as n of all searches. Filters for prompt type (Shopping, from the prompt's category) and topic (prompt tags), with a group-by-topic view. The MCP tool returns the same, takes a limit of up to 200 rows (50 by default) and the same filters.

v3.30October 2026

Update

## The app on a phone

On a phone the app had no layout of its own. Its menus kept their desktop width side by side, so on a project's settings the project menu covered the Discard button, the Save bar could not be reached, and the trial badge sat over the last field. Below 768 pixels the app now has a phone layout. On a computer nothing changes.

-   The main menu and an AI Visibility project's menu open from buttons in a slim bar at the top and close when you pick a page. They work from a keyboard too, and Escape closes them.
-   Nothing floats over the page any more on a phone or a tablet: the trial status sits in a bar at the top, live chat opens from the menu, and Ask Crunch stays in the page header.
-   The Save bar on a project's settings and the running-scan bar span the screen, and their buttons stay in reach, also while a scan runs.
-   Pages no longer scroll sideways. Wide tables scroll inside their own box. The reports list leaves out its Type column on a screen narrower than 1024 pixels, and on a phone it shows the Last updated date, the Frequency or the deletion date under the report name. A report shows KPI tiles two to a row on a narrower screen.

v3.29October 2026

Update

## Meta Ads: an alert when an ad account stops delivering

Once a day CrunchJunkie reads every connected Meta ad account's status and its last eight days, and tells you in Signals when one has stopped delivering after a normal week, or when Meta reports a status in which its ads cannot run, such as an unsettled balance or a disabled account.

-   Judged on the account's own day, three hours after its midnight. A normal week means spend on at least 5 of the 7 days before, a median of at least 100 impressions a day, and delivery on the same weekday a week earlier, so a weekdays-only account is not flagged at the weekend. A planned day off, such as a public holiday, can still raise it.
-   The signal names the campaigns that were delivering and what they spent. It stays open while the account is dark, clears itself on the first day it delivers again, and once dismissed stays dismissed for that stop. An automation can send it by email, to Slack or to a webhook the same morning.
-   Goals and the cross-channel signals show no data when a source they depend on did not answer, instead of a total that silently leaves a channel out, and a Meta connection whose login has expired is not asked at all.
-   Only the daily impressions and spend the check needs are stored, for two weeks. An account Meta keeps refusing is checked less often; after five refusals the check stops and the owner gets one email. It resumes as soon as Meta Ads is reconnected.

v3.28October 2026

Update

## AI summaries can point to Google Ads account changes

An executive summary of a month in which the budget was raised could not say so: only the two change presets read the Google Ads change history. Now the other summaries read the period's account changes too, when the report has Google Ads figures and the account was changed in the period.

-   Read by the executive summary, Campaign insights, Wins, Issues, Action plan, a custom question, and “Analyse widget above/below” on a Google Ads widget. The summaries written for a scheduled email and for a monthly copy read them the same way.
-   Only the 12 most significant changes go in: budget, bidding and status first, then keywords and targeting, minor edits such as renames last. They come from the stored change history of the report's Google Ads account, never from Google live. Who made a change is a role, such as a person or a script, never an email address.
-   Crunch mentions a change only where it plausibly explains a movement in the figures, and then says it coincides with or likely contributed to it, never that it caused it.
-   The “Based on” line under a summary says how many account changes it read, for example “· 12 of 45 account changes”, or “· 3 account changes” when it read them all.

v3.27October 2026

Update

## The usage statement shows what your AI checks cost

The usage statement under Settings → Billing counted scans and checks, but no money. It now shows what the checks cost you, in the currency each cost is billed in, and keeps the two kinds of cost apart.

-   Checks on your own provider keys show “≈ cost on your own provider bill” in US dollars on every row, on the total, in the PDF and in the CSV: each scan's tokens at the provider's list price when the scan ran, plus its search fees, with the day the price table was last reviewed. It is an estimate. Your provider's bill is authoritative and can differ, mostly through search and grounding fees, cached tokens, discounts and monthly plans such as SerpAPI's. Scans from before 3 July 2026, when the ledger began recording whose key ran a scan, show “—” and are not counted.
-   Managed AI checks read “included” on the total, or show the overage so far in your billing currency, euros or dollars: the same figure as the meter above. It appears once, because overage belongs to the whole period. The dollar estimate and the overage are never added together.
-   The CSV gains two columns at the end, own\_key\_est\_cost\_usd and own\_key\_cost\_note, so sheets built on the old file keep working. The billing meter shows the estimate under its BYOK figure, and the connector's get\_usage returns it as byokCost.
-   “Last 30 days” and “Last 90 days” now count whole UTC days ending today, from 00:00 UTC, the way the rest of the app counts days, and “Previous period” covers at most 31 days. Totals for those ranges can come out slightly lower than before, because the first day no longer starts at the hour you opened the page.

v3.26October 2026

Fix

## A refused AI key now says why

When Google refused a Gemini key, we said the key was probably older than 28 May 2026 and should be replaced. That was wrong for a new key whose Google project had a billing problem, the Gemini API switched off, or a key restriction. Now the key check, the Home page and the scan alerts all name Google's actual reason, with the step that fixes it.

-   Gemini: the reasons named include a billing account that is disabled, closed or not finished, Prepay credit at $0, the Generative Language API switched off, a website, IP or app restriction on the key, an API restriction that leaves out Gemini, a free tier Google won't serve, a project Google has blocked, a quota of 0 for the model, and a key that was cut off when copying. The 28 May cut-off is now named only when Google says the key itself is not valid.
-   Every other provider (OpenAI, Anthropic, xAI, Perplexity, DeepSeek, Meta AI, SerpApi) now says whether the key is invalid, the account has no credit, the provider is only rate-limiting it, or the provider couldn't be reached, instead of “Invalid key” for all of them. When the answer fits none of these, you see the provider's own words, with any key removed.
-   A key the provider is only rate-limiting is saved, with a note, rather than refused.
-   These messages are now in your language. Until now the message shown when saving a key was always in English.

v3.25October 2026

Update

## AI summaries in reports stay with their numbers

An AI summary in a report used to remember only the name of its period. A summary written for “last month” in September still counted as current in October, so a scheduled PDF could print August's commentary over September's numbers. And a summary written on the 1st kept its figures after Google Ads had credited late conversions for the same month, next to tables that already showed the new ones. Summaries now record the dates and the figures they were written from.

-   When a summary was written for another period, the report, the shared link and the PDF fold it down to one line naming that period; a rolling period that has only moved on keeps its text under a dated note. When the figures of its own period, or its comparison period, have changed since, it stays, under a line giving the day it was written. Readers see that line only for a material change (3 %, and at least one for conversions and counts), so late-reporting data does not leave a note for weeks.
-   Before a scheduled email goes out, and when you press Send for the report's own period, a summary that no longer fits the period being sent is written again, with the same task and in the report's language, so the PDF and the link carry current text. Where it can, this happens in the hours before a scheduled send, so the email is not held up. A switch in the schedule panel turns it off and shows roughly what it uses: one assistant message per summary per send on Managed AI, listed as "Report emails" in the usage statement. Report emails stop at 80 % of the month's messages so your team keeps the rest; a summary that can't be written again is marked as above when it no longer matches.
-   White-label: the CrunchJunkie mascot no longer appears on AI summaries in shared links, PDFs and present mode, the same as the logo and the name.
-   A report template no longer carries the AI summary of the report it was saved from, so a report made from it for another client starts without one.

v3.24October 2026

Update

## Report emails and PDFs name the period they cover, in the report's language

A report email said “here's your Google Ads report for last month”, and its PDF was headed “Last month”, which stops being true the day the next month starts. Both now name the period itself, such as “September 2026” or “1 – 15 Sept 2026”, in the report's language. The PDF of a German report also printed English words and English decimal points next to German numbers. It now reads German throughout, and Spanish and French reports read Spanish and French.

-   The subject and the message name the resolved period: the attached PDF's, or, without a PDF, the one the link opens on. Scheduled emails use the period of the day they are sent for. The suggested message no longer tells the client to download a PDF from the link when the PDF is attached; the line under the button says which applies.
-   The PDF's page header and file name give the client, the report and the period once each. A report called “Acme · Google Ads Report · September 2026” is no longer headed “Acme · Acme · Google Ads Report · September 2026 · Last month”. A cover subtitle that repeats the title is left out.
-   KPI tiles now show the change of a rate in percentage points and the change of a count or an amount in percent, as the tables already did. A CTR that went from 2.1 % to 2.5 % reads +0.4 pts on the tile and in the table, not +19.0 %. The widget's Comparison format setting still overrides this. GEO audit scores are scores out of 100 and change in points too. Tiles do not show a change from a previous value of 0 yet, because a tile cannot tell that 0 from missing data; tables do, in points or as an absolute change.
-   Chart legends, table headers, metric names, change chips and the shared view's own buttons and messages follow the report's language and its number format, for example “+0,4 Pkt.” and “+25,0 %” in German. In tables, a rise in lost impression share, invalid clicks, unsubscribes or bounces is now red, as it already was on the tiles.
-   A PDF downloaded or emailed right after choosing “N days up to today” covered the previous month instead of those days, and changing the comparison then saved that placeholder, which the live link and scheduled emails read as the previous month. Both now use the days on screen, and the placeholder is never saved. A report that already has it saved keeps sending the previous month, as it always did, and now shows the previous month in the app too.
-   Charts are drawn without animation in a PDF and in a print, so a donut is no longer captured half-drawn. A chart card no longer repeats its title as its caption, such as “Clicks by device” twice.

v3.23October 2026

Update

## Dates and scheduled emails follow the workspace time zone

Report date ranges and scheduled emails now follow the workspace's time zone, set under Settings → Preferences, where every time zone can be picked, Pacific/Auckland included. Until now both ran on UTC. In Auckland that meant "yesterday" was the day before yesterday until 1 pm, and on the 1st of a month "last month" was the month before last.

-   Date ranges are counted in the workspace's time zone wherever a report is read: in the app, on shared links, in PDFs and scheduled emails, in the API and in the MCP connector. For a workspace far from UTC a range can therefore move by a day compared with before. Each source still reads the dates in its own reporting time zone, as before: Google Ads in the ad account's, GA4 in the property's, Search Console in US Pacific time. AI visibility keeps counting UTC days, because scans are stored by UTC day.
-   New email schedules send on their day and hour in the workspace's time zone, daylight saving included. Existing schedules keep running on UTC, as they were set. The schedule panel shows what that time is in your zone and the next send, and switches a schedule to your zone with one click.
-   Scheduled emails are now prepared and sent up to six at a time instead of one after another. A send that cannot go out at its hour is retried every hour for up to a day on a weekly schedule and three days on a monthly one, instead of being skipped for the period. A retry never sends a report twice.
-   Fixed: saving a schedule after it had sent could make the report go out a second time in the same period.

v3.22October 2026

Fix

## Clients whose reports were shared can now be deleted

Deleting a client failed with “Could not delete client.” as soon as one of its reports had been shared, or sent on a schedule, which shares it too: the share link held on to the report, and the report to the client. A client is now deleted in one step with everything that belongs to it, and if any part fails, nothing is deleted.

-   What goes with it: its reports with their share links and schedules, its data sources and the figures imported through them, its goals and its AI Visibility history. The confirmation now says so.
-   Its Rank Tracker keywords and ranking history go too.
-   Open signals about the client are marked resolved, automations set up for that client alone are removed with their pending approvals, and a scan still running for it is stopped. AI checks it has already used still count in this month's usage.
-   The same fix for Delete permanently in Deleted reports, which failed for any report that had been shared or sent.

v3.21October 2026

Update

## Google ranking updates, marked on the charts

Search Console charts in reports now show when Google rolled out a ranking update: a shaded band from the day it began to the day Google said it was complete, with its name and dates under the chart. The band shows timing only, not a cause. A line can move during an update for reasons of its own, and an update can move nothing.

-   The dates come from Google's Search Status Dashboard: core, spam and other ranking updates for web search. Discover updates are left out, because the charts show web search, and so are incidents Google calls a ranking issue rather than an update. An update that is still rolling out is marked as ongoing.
-   On by default, in the app, on shared links and in PDFs. To hide the bands on one chart, switch off Show Google ranking updates in its settings.
-   Fixed: Timeline notes shared with the client now appear under every AI Visibility line and bar chart, in the app, on shared links and in PDFs. Before, the app showed them only under line charts and the shared link only under bar charts.
-   In the Rank Tracker the same bands sit on the chart above the keyword table and on rank charts in reports, for Google desktop and mobile. Bing, Google's local list and Google Maps get none.

v3.20October 2026

Fix

## AI traffic from GA4 now counts tagged links

AI traffic from GA4 recognised a visit by the host an assistant sent it from. When a link carries a utm\_source, GA4 files the visit under that tag instead, and assistants have started tagging their links: links ChatGPT cites have been seen tagged utm\_source=openai, and Gemini links utm\_source=gemini (Plausible, September 2026). Those visits were missing from AI traffic and from AI → Conversions. They are counted now.

-   A session counts as AI traffic when its source belongs to an assistant, as a host or as a tag, or when GA4 itself has given it the medium ai-assistant. New on the list: the gemini, openai, chatgpt and copilot tags, plus copilot.com, pplx.ai, x.ai and meta.ai. A session that meets both rules is counted once.
-   Clicks tagged with a paid medium (cpc, ppc, paid and the like), a display medium (display, banner and the like), an email medium or affiliate are not counted, even under an assistant's name, so a ChatGPT Ads click tagged utm\_source=chatgpt with a cpc medium stays with ChatGPT Ads. An ad click that carries no tag arrives as the assistant's host and cannot be told apart from an earned one. A click tagged with an assistant's host and a paid medium, such as utm\_source=chatgpt.com with cpc, used to be counted as AI traffic and no longer is.
-   Tables and donuts by AI Source show one row per assistant: gemini.google.com and the gemini tag, in whatever case it was typed, both read as Gemini. GA4 calculates each row over all of the assistant's sessions, so Users and rates are its own figures, not sums or averages. openai.com, x.ai and bing.com are company sites or hosts that are not only an assistant, and keep their own names.
-   Reports ask GA4 when they are opened, so this applies to earlier periods too: AI sessions, conversions and revenue for past months can be higher when you reopen a report than they were before, and lower only where clicks tagged with an assistant's host and a paid, display, email or affiliate medium had been counted. Saved AI summaries and PDFs already sent keep their figures.

v3.19October 2026

Fix

## Perplexity now answers on GPT-6 Luna

Since 26 September 2026, Perplexity has answered our scans with OpenAI's GPT-6 Luna (before: GPT-5.6 Luna). We ask Perplexity through a preset of its Agent API, and Perplexity decides which model a preset uses; in September it moved the preset to the GPT-6 family.

-   A newer model answers differently, so expect a step in your Perplexity numbers on 26 September. It is the measurement following the product, not a change in your visibility, and Perplexity figures from before and after that date are not directly comparable.
-   Every project that scans Perplexity gets a model note on its Timeline for that day. Our weekly model check first saw the switch on 28 September and put the note there; such notes are moved to 26 September, the day of the first answer from the new model.

v3.18October 2026

Update

## Google Ads change history

Reports can now show what changed in a Google Ads account during the period, and who changed it. Google keeps this history for 30 days; CrunchJunkie now stores it every night, so any report period can show it.

-   A new Change history widget: date, campaign and ad group, the old and new value (budget €50 → €80) and who made the change — a person, an automated rule, a script or an applied Google recommendation.
-   Filter by level and by who made the change. It follows the report period or its own date range, and always states the total.
-   Your team sees the email of whoever made a change. Shared links and PDFs show “Your agency” instead.
-   Add it from the widget palette, or ask Crunch or Draft with AI for it — it is never added to a report by default. Crunch AI summaries read it with role labels, never an email address.

v3.17October 2026

Update

## AI summaries in monthly copies

A monthly copy now arrives with its AI summary. It is written for the copy's month from the copy's own numbers, so a shared link or PDF of the copy carries it from the start.

-   Each AI widget is written with its own task in the report's language, as the report writes it when the copy is opened; a widget with a saved custom question is asked that question, as Send would ask it.
-   It runs on the workspace's AI key, or on Managed AI within the plan's monthly assistant messages: one message per summary.
-   If a summary cannot be written then (no AI key, the month's assistant messages used up, a provider error or no data yet), the widget stays empty and is written from the copy, as before. The copy email and the Create now panel say which it was.

v3.16October 2026

Update

## Monthly report copies

A report can now copy itself at the start of each month, for agencies that keep one report per client per month. Set it up under Monthly copy in the report.

-   Pick the day of the month. On that day, in the workspace timezone, the report is copied with the month that just ended as fixed dates. A comparison with the previous period becomes the whole previous month, so a September copy compares September with August.
-   The name follows a pattern with placeholders for the month, year, client and report name. A name that already contains a month, such as "Google Ads Report - Juli 2026", is turned into the pattern for you, and the month is written in the report's language.
-   Each month of a report is copied once, even when a run repeats or the rule is set up again, and a day missed through an outage is made up later in the same month. The copy has no schedule of its own.
-   Reports → Scheduled lists the rules beside the scheduled emails, with the next copy and the last one. Whoever set up a rule gets an email when the schedule makes a copy.

v3.15October 2026

Update

## Rank Tracker without a DataForSEO account

The Rank Tracker can now run on CrunchJunkie's DataForSEO account, paid from a monthly budget, for workspaces that would rather not open an account of their own.

-   Choose a monthly budget under Billing. Each search is charged to it at twice what DataForSEO charges.
-   A run starts only when the budget left covers the most it can cost, so it never stops half way. Billing shows what was charged, by client, list and day.
-   Your own DataForSEO account, when connected, always comes first.
-   A signal warns before the budget runs out, and when a scheduled run could not start.

v3.14October 2026

Fix

## Rank Tracker: like-for-like changes, the full results page, AI Overview sources

Google answers the same search with a short results page or a full one, and they are different result sets: on 2 Oct the short page for "ads agentur hamburg" put an SEO agency first and a Facebook-ads agency second, the full one showed the Google Ads agencies a searcher expects. The Rank Tracker now measures like with like and asks for the full page.

-   A change is measured against the last check that got the same kind of page; a check of the other kind in between is skipped. On our own mobile list on 2 Oct, "not comparable" fell from 37 of 60 keywords to 11; those 11 had only ever had short pages before.
-   A search asked for 60 results or more that comes back as the short page is asked once more, ten minutes later. The evidence panel says when that happened and how many results the first answer had. The second ask is billed like any check, and the most a check can cost includes it.
-   AI Overviews that Google loads after the page now come with their sources, so "cited" or "not cited" can be read where it said "sources not read". This adds $0.0006 to each Google check.
-   Clearer page: the chart shows the keywords that rank, with how many of the checked keywords that is above each bar; the sparkline draws checks of the other page kind as hollow points; ranking pages wrap at / and -; the last check is dated in words.

v3.13October 2026

Fix

## Search Console tables show the rows that matter

A Search Console table used to keep its top rows by clicks, whatever it showed first, and where clicks tied (every query without a click) the cut was arbitrary. It now orders the rows by what the table shows, then applies the row limit.

-   Tables and donuts are ordered by their first metric, best first (for Avg. Position, position 1 first), and a tie goes to the row with more impressions. A 500-row table of queries by impressions now holds the 500 queries with the most impressions.
-   The Sort setting works on Search Console tables and donuts: any metric the widget shows, highest or lowest first, applied before the row limit.
-   The Sort setting now appears only where a table follows it. Before, it showed on every widget and only the AI Visibility brand ranking read it.
-   In the comparison period a row is looked up among all of that period's rows, so a query that ranked lower last month shows last month's numbers instead of "—".
-   Assistants and the API can fetch one widget instead of the whole report: widgetIds on get\_report\_data and on GET /v1/reports/{id}/data.

v3.12October 2026

Update

## Rank Tracker: the pages behind every domain, and which ones AI cites

In Found in the results, a domain now opens to its pages that rank: each page with its title, the keywords it ranks for and its position, next to where the client's own site is on the same results list.

-   For a directory or a list article, the opened domain shows the exact page worth being listed on.
-   For clients with AI Visibility, a Cited by AI column counts how many of the last 30 days' AI answers cited a page of the domain, with the number of answers it is counted among.
-   Opened domains mark the exact pages AI engines cited, and a filter narrows the list to the domains that rank and are cited.
-   All of it reads stored results and answers: no search is sent and nothing is charged.

v3.11September 2026

Update

## ChatGPT Ads: purchases, purchase value and ROAS

Since OpenAI changed its reporting API in September, ChatGPT Ads conversions showed a dash in every report: the API now accepts only whole days in the ad account's timezone, and our requests used UTC days. The connector now asks for the account's days, and it reports the purchase data OpenAI added at the same time.

-   New metrics: Purchases, Purchase value, Cost per purchase and ROAS, plus Conversions split into click-through and view-through. An account that has never sent a purchase event shows a dash, not a zero.
-   Conversions count within 30 days of a click or 1 day of a view, dated by the day of that click or view. OpenAI moved its defaults to these windows in September; CrunchJunkie now sends them with every request, so a later change to the defaults cannot move your reports.
-   Conversion rate divides click-through conversions by clicks, because a view-through conversion has no click behind it.
-   Daily charts and the Day table show conversions, and ChatGPT Ads purchase value counts towards conversion value and ROAS in all-channel reports.
-   All ChatGPT Ads numbers, not only conversions, now follow the ad account's days instead of UTC, so each day lines up with Ads Manager.

v3.10September 2026

Major

## Rank Tracker: alerts you can trust, and rankings in the digests

The Rank Tracker now raises signals — and only for changes a second check has confirmed. One check is one sample; an alert on a single reading cries wolf.

-   When the weekly check would raise a signal, those keywords are checked again within the hour. Only what both readings agree on is raised: keywords leaving or entering the top 10 or top 3, a competitor moving above the client on page one, a different page ranking, and Google's AI Overview starting or stopping to cite the site.
-   The second reading costs a few cents on your DataForSEO account, is its own line in the cost ledger, and never changes a position, a chart or a report.
-   Four ready-made automations under Search rankings, including an AI Overview citation lost → action plan for your approval. Alerts go out within minutes of the confirmation, by email (in each recipient's language), Slack or webhook.
-   Warnings before the checks stop: a DataForSEO balance that will not last three more weeks, or a scheduled run that stopped or lost many checks.
-   The Monday digest has a Rankings section per client, and a client digest can include rankings (opt-in, approved again before it goes out).

v3.9September 2026

Update

## Managed AI: Perplexity now counts as one check

From 30 September a Perplexity answer uses one check of a Managed AI package, not three. Since its move to the Agent API in August, Perplexity has run on a much cheaper model, so the premium weighting no longer fits it.

-   Premium engines are now ChatGPT, Claude and Grok, at three checks each. Every other engine, Perplexity included, counts one.
-   The recommended Balanced setup (ChatGPT, Perplexity, Gemini, Google AI Overviews) now uses six checks per prompt and pass instead of eight, so the same package covers a third more scans.
-   Checks counted before the change stay as they were. The usage statement marks the Perplexity row when a period holds both.
-   Perplexity no longer needs the premium switch in Settings → Billing: on a Managed AI package it now runs with premium models turned off, at one check an answer.

v3.8September 2026

Major

## Rank Tracker: Google, Bing and local positions

Track where a client's site stands for the keywords you choose, on your own DataForSEO account. Every position keeps the results list it was read from.

-   Google and Bing, desktop and mobile, from a country, a city or a postcode, checked once a week with a manual refresh in between. Bing can be pointed at a country or region only; a city keyword is searched for the whole country and says so.
-   Local results as three separate lists: the local pack, the longer list behind it and Google Maps. A business is matched by its Google business id or its website, never by its name.
-   Up to ten competitors per client at no extra cost: their positions are read from the same results list.
-   The cost is shown before anything runs. DataForSEO charges your account per page of results; we add nothing and set no keyword limit.
-   Rankings in reports (a new data source with KPI, chart and table widgets) and ten tools for AI assistants through the MCP connector.

v3.7September 2026

Fix

## GEO Audit: a full page sample on every site

Three accuracy fixes to the GEO Audit. Scores can move on your next audit because more of the site is read; stored audits are unchanged.

-   The audit now finds pages through every sitemap a site publishes: sitemap indexes (the WordPress default), sitemaps declared in robots.txt, and the homepage's own links when there is no sitemap. Before, a site with a sitemap index was measured on its homepage alone. A leading language folder such as /de/ no longer counts as one section, so the sample spreads across blog, services and case studies.
-   A page that refuses or fails our request (403, 429, a server error, no answer) is left out of the sample instead of being scored as a bad page; a 404 from your own sitemap still counts. The free audit no longer scores a site whose homepage answers with an error or a hosting placeholder. It says so instead.
-   Agent Resource Discovery follows the current spec (v0.91): the audit looks for ard.json and rel="ard" as well as the earlier ai-catalog.json, and tells you which one Lighthouse 13.5 can see. Still display-only, never scored.

v3.6September 2026

Major

## Mailchimp, refresh-first briefs, an assistant allowance

A new email connector, a Content Brief that checks your existing pages before proposing a new one, and a clear monthly allowance for the assistant on the included AI.

-   Mailchimp joins as the 15th connector. Sign in with Mailchimp or paste an API key, then report sent campaigns by campaign, audience or send day: delivered, opens net of Apple Mail Privacy Protection (the proxy-excluded figure, with the machine opens shown separately), clicks by people not links, bounces, unsubscribes, complaints and store revenue. Rates are pooled, never averaged.
-   Content Briefs now start with a decision: when Search Console is connected, the brief checks whether a page of yours already ranks in Google's top 20 for the searches behind the prompt and opens with “Refresh this page” (URL, position, query, impressions) or “New page”. Without Search Console it claims nothing.
-   Ask Crunch, report analysis and automatic summaries on the included AI now have a monthly message allowance per plan (from 150 on Solo to unlimited on Scale; 60 during a trial). Teams on their own AI key are unaffected. The billing page shows used and remaining. Perception re-analysis waits an hour between runs unless the fact list changed.

v3.5September 2026

Fix

## Accuracy: whole answers, own domains, citation markers

Three corrections to how AI answers are read and reported. Each one can move a number; none of them changes stored answers.

-   Mention extraction now reads the whole answer — up to 12,000 characters instead of the first 4,000. Brands named late in a long answer (typically Meta AI and Perplexity) are now counted. From 25 September 2026 visibility and mention figures can step up slightly; scans before that date are unchanged.
-   Citation markers an engine writes into its answer (Perplexity's “\[web:3\]”, bare “\[3\]”, ChatGPT's “【3†source】”) are removed before the extraction model reads the text. A marker could be mistaken for a brand name; the stored answer itself is untouched.
-   The Cited URLs widget in reports and PDFs now classifies your pages against your whole own-domain list — every Owned domain, the audit domain, the client website and any brand alias written as a domain — exactly like the in-app URLs view. A second site you added as an alias no longer shows as third-party in the report.

v3.4September 2026

Update

## Single sign-on, and Meta AI on its newest model

Your team can now sign in with the company login, and the Meta AI engine follows the model Meta is rolling out to its users.

-   Single sign-on (SSO) over OpenID Connect on Pro, Agency and Scale: connect Google Workspace, Microsoft Entra ID, Okta or any OIDC provider in Settings → SSO, prove your email domain with a DNS record, and your team signs in with the company login. New colleagues are added to the workspace on their first sign-in; password login keeps working. SAML is available on request on Scale.
-   Meta AI is tracked on Muse Spark 1.3 from 18 September 2026 (before: 1.1). A newer model answers differently, so expect a small step in your Meta AI numbers on that date — it is the measurement following the product, not a change in your visibility.
-   Our public profiles on GoodFirms, SoftwareSuggest and WebCatalog are now part of the verified-profile list AI engines read (llms.txt and the site's structured data).

v3.3September 2026

Major

## Real PDF files, attached to every report email — and a new Query fan-outs page

The PDF export was rebuilt from the ground up, and the fan-outs page now tells you what the engines assume behind your prompts.

-   Download PDF produces a finished file in one click — no print dialog: a full-page cover, your widgets on the grid they have on screen, each section on a new page, a running header with client, report and period, and page numbers. Portrait or landscape; identical from the app and from a live link.
-   Scheduled and one-time report emails now carry that PDF as an attachment (on by default, with an "Attach PDF" switch), next to the live link that always shows current numbers.
-   Printing from the browser is fixed too: the header and footer bands are reserved on every page, so section banners and widget titles never disappear under them; charts inset their end points, label each point and scale their axes to the data.
-   Query fan-outs, redesigned: a headline strip (answers with fan-outs, distinct searches, site: lookups with your own count, dated searches), then the two signal panels, then a denser table with engine dots. Every tile, panel and column has a click tooltip that says what the number is and how to use it.
-   Three fan-out signals read straight off the engines' own searches: the words an engine added beyond your prompt (the intent it assumes — click a word to filter), the sites it looked up directly with a site: operator (your domain flagged when it is on the list), and the searches it dated with a year.
-   MCP: get\_query\_fanouts returns the same signals (site, siteOwn, years, added) per search plus a window-wide summary.

v3.2September 2026

Update

## Peec parity, date ranges on Sources, and editing reports by pointing at a widget

A run of accuracy and workflow releases across AI Visibility and reporting.

-   Sources and URLs: pick any date range — the presets or a custom from–to window — and the Domains list, the chart and the URLs page all read the same slice, remembered per client.
-   Peec AI parity: a report widget filtered to a Peec tag shows Peec's own figures — brand list, Share of Voice, sentiment and position — imported once a day instead of recomputed from the chats.
-   Peec brand lists mirror automatically: every sync links Peec's brands to your competitors by name, alias or domain, adds the ones you don't track yet, and re-reads the chats — so a spelling difference can no longer show a top competitor at 0 %.
-   Edit with Crunch on any report widget: a pencil on every data widget opens the assistant bound to that widget, and sections can be added, renamed, moved or removed in plain language, with undo.
-   Ask Crunch shows its work — the workspace lookups behind an answer — and keeps your saved prompts as team chips.
-   Prompt discovery can start from Search Console: with a property connected, suggested prompts are grounded in the queries that already bring you traffic — labelled as Google demand, not AI demand.
-   MCP: the connector can now change a prompt's category, intent or active flag (update\_tracking\_prompt) — 34 tools in total, every write preview-confirmed.
-   Your light/dark choice now sticks: it is applied before the first paint, survives every reload, follows you across tabs, and the Settings buttons select a mode instead of toggling.

v3.1August 2026

Major

## Google Business Profile — and a date range on every widget

A new local-reporting connector, plus far more control over the period each widget reports on.

-   Google Business Profile connector — profile views, calls, direction requests, website clicks, the searches that found you, and reviews with average rating, in the same report as your ads.
-   Per-widget date ranges: any widget can report on its own window instead of the report's — with comparison presets for the previous period, previous month or the same period last year, or a fully custom from–to range.
-   Conversion actions can be broken out by All conversions per action, and the table now honours your campaign and widget filters — so "conversions by action for campaigns containing X" matches Google Ads exactly.
-   Faster metric picking: search a widget's metrics by full name — typing "all conversions" now finds the abbreviated "All conv.", not just an exact match.

v3.0August 2026

Major

## One brand, every AI engine, every market

AI visibility went deeper on every axis — a tenth answer engine, true multi-market tracking for a single brand, and analytics for the AI crawlers hitting your site.

-   Meta AI is now the tenth tracked answer engine, alongside ChatGPT, Gemini, Claude, Perplexity, Grok, DeepSeek, Google AI Overviews, Google AI Mode and Microsoft Copilot.
-   One client, many markets: set the market per prompt and track a single brand across every country it sells into — each prompt is scanned and pooled in its own market, never averaged into one meaningless figure.
-   New Markets comparison on the Overview — visibility, share of voice, sentiment and average position side by side per market — plus a switcher to scope the whole page to a single market.
-   Filter the Overview by prompt topic or tag, so a themed slice of prompts recomputes every metric on just those runs.
-   AI bot traffic: see which AI crawlers (GPTBot, ClaudeBot, PerplexityBot and more) actually reach your site, verified against each provider's published IP ranges — because access is not the same as a citation.

v2.9July 2026

Major

## Reddit Ads reporting — live

Reddit Ads is now connectable end to end: OAuth connect, account picker, and every data point Reddit's reporting API serves — in reports, shared links, PDFs, the builder and Draft with AI.

-   Every available data point: the connector negotiates the field set with Reddit's API per account — metrics your account doesn't report show an em dash, never a fake zero
-   ~54 metrics: per-event pixel conversions (purchases, sign-ups, leads, add to cart, page visits…), app installs, video depth and community engagement
-   New video engagement funnel widget (views → 3s → 25/50/75/100%), plus the new "Reddit Ads — Conversions & Video" template alongside Full Overview
-   Scan transparency: click the failed-checks badge on Prompts for a per-engine breakdown — failed checks retry up to 3× and are never billed
-   Timeline notes now record prompt additions and removals (including through the MCP connector), so pooled-average steps stay explainable

v2.8June 2026

Major

## AI Visibility — brand-level deep dive

Each brand now has its own dedicated visibility workspace with a persistent left-nav panel. Overview, Responses, Sources, Insights, Prompts, and Settings are each their own route — no more hunting through tabs.

-   Brand-level routes at /visibility/\[clientId\] with section sub-nav
-   Responses page: filter by All / Mentioned / Not mentioned / Mention gap
-   Sources page: domain bar chart with citation counts
-   Insights page: prioritised action cards with category filtering
-   Sidebar auto-highlights AI Visibility when inside any brand route

v2.7May 2026

Major

## Google AI Overviews tracking

CrunchJunkie can now track whether your clients appear in Google AI Overviews — the AI-generated summaries at the top of search results. Requires a SerpAPI key.

-   New model: Google AI Overviews via SerpAPI
-   Visibility, position, and citation data for AI Overview appearances
-   Shown alongside ChatGPT, Gemini, and Perplexity in trend charts

v2.6April 2026

Major

## Competitive quadrant chart

A new scatter chart plots all tracked brands on a Visibility vs Sentiment axis — instantly showing who leads, who lags, and who is controversial. Only appears when two or more brands have data.

-   Quadrant labels: Leaders, Niche, Controversial, Laggers
-   Hover tooltips with exact scores
-   Uses the same brand color palette as trend lines

v2.5March 2026

Update

## Dark mode

Full dark mode support across every page — reports, dashboard, monitoring, and AI Visibility. Toggle it in Settings; your choice is remembered in this browser.

-   All CSS custom properties respect data-theme='dark'
-   Charts, cards, and modals all dark-mode aware
-   Charts, tables and PDF exports all follow the active theme
-   Preference remembered per browser

v2.4February 2026

Update

## Prompt performance sparklines

The Overview tab now shows a sparkline bar for each tracked prompt — 14 days of daily mention rate visualised as a bar column. Green = mentioned in more than half of runs, grey = not mentioned.

-   Trend arrow (up/down) comparing first and second half of the period
-   Mention rate percentage at the right edge
-   Sorted by highest mention rate by default
-   Colour-coded category dots (Discovery / Brand / Competitor)

v2.3January 2026

Update

## Grok and DeepSeek support

Two new AI models are available for visibility tracking: Grok (xAI) and DeepSeek. Both require an API key added in Settings → AI Visibility Keys.

-   Grok 3 via xAI API
-   DeepSeek Chat
-   Both appear in model filter dropdowns and trend charts

v2.2December 2025

Fix

## Report delivery and scheduler fixes

Several edge cases in the monthly scheduler were causing reports to send with stale data or not send at all for workspaces in certain timezones.

-   Fixed UTC vs local timezone offset in cron schedule
-   PDF generation no longer fails when a widget has no data for the period
-   Re-send button in delivery log now works for failed sends
-   Improved error messages when an integration token expires mid-run

v2.1November 2025

Update

## AI Visibility perception tab

A new Perception tab shows the descriptive terms AI models actually use when they mention a brand — pulled verbatim from each answer, ranked by frequency per brand, with the terms distinctive to a single brand highlighted.

-   Tag cloud sized by frequency — bigger = mentioned more often
-   Shown per brand including competitors
-   Filters to the selected time window
-   Attribute extraction runs server-side on each scan result

v2.0October 2025

Major

## AI Visibility launch

CrunchJunkie now tracks how often your clients appear in ChatGPT, Gemini, and Perplexity responses. Daily automated scans, trend charts, and competitor benchmarking — the first agency-grade AI visibility tool.

-   Visibility %, Avg. Position, Sentiment, Share of Voice metrics
-   Multi-model tracking: ChatGPT (web search), Gemini, Perplexity Sonar Pro, Claude
-   Competitor benchmarking on the same chart
-   Prompt management by category (Discovery / Brand / Competitor)
-   Daily and weekly automated scan schedules
-   CSV export of all snapshot data

## Want early access to new features?

Every plan gets access to the full product. We ship fast and tell customers first.

[Start 14-day trial](https://app.crunchjunkie.io/auth?mode=signup)
