Docs

Signals & Automations

Your AI-visibility issues inbox, and no-code rules that turn a signal into an alert or action.

What Signals are

Signals is your AI-visibility issues inbox — the things actually worth your attention, across every client, in one place. Instead of making you watch dashboards, CrunchJunkie continuously turns what it already measures into signals: a client's visibility dropping, a competitor named in more of their AI answers than they are, a GEO Audit score falling, a cited source going dead or being retracted, a product feed or product-page schema gap, a broken data connection, or a Meta ad account that has stopped delivering. Recommendations — the "what to fix" list — live on the Insights page instead, so the inbox stays a record of what happened, never a second to-do list. Open Signals from the AI Visibility menu for the agency-wide rollup, or the Signals tab inside a client for just that brand. The point of difference is accuracy. AI answers vary from run to run, so one scan says little. A change in AI visibility is raised only when the last 14 days and the 28 days before both have at least 40 answers on at least two scan days, and the change clears the bar: a fall of at least 15 % and 3 points at 95 % confidence for a Warning, a fall of at least 40 % at 99 % confidence for a Critical signal. Every signal states both periods with their sample sizes (n = answers) and the confidence, for example "Visibility fell from 25.0% (n = 112, 31 Aug – 27 Sept) to 10.7% (n = 56, 28 Sept – 11 Oct). We're 97% confident this isn't sampling noise." An empty inbox means no change in AI visibility cleared the bar. Those changes are measured from scans, so none is raised while a client's scans are paused; each client's page shows when it last ran.

How a change in AI visibility is decided

The periods: the last 14 whole days (UTC) against the 28 days before them. The answers: the ones the Visibility figure on the Overview counts — the latest scan of each prompt on each engine per day, our scans and imported Peec AI data counted once per engine, follow-up questions left out. The project header and the AI Visibility overview show visibility over the last 30 days, so their figure and a signal's figures differ by design; each one names its period. Only what was measured in both periods is compared. A prompt or an engine added or removed in between is left out, and the signal says so. The confidence comes from a test that groups the answers by prompt, because answers to the same prompt move together; treating every answer as independent would overstate it. With only a few prompts, how much the prompts differ is itself a rough estimate, so since 14 October 2026 that part of the test reads it on Student's t (prompts − 1 degrees of freedom) rather than the normal curve: a client with a handful of prompts needs a clearer fall before it is called real. When an engine changed inside the two periods (a new model, from the provider's own answers, the Timeline or our list of known model changes, or a change in how we capture its answers), the comparison runs again without that engine. If the fall holds there, the signal reports it on the other engines and names the one it left out. If the fall shows only with that engine, the signal is Info and names the engine: a new model is not news about the brand. A competitor overtake uses the same periods and answers: the competitor is named in more answers than your brand over the last 14 days, at 95 % confidence, after being at or below it in the 28 days before, with at least 40 answers that track both brands on each side. A visibility signal describes the current state, so it updates itself. It stays open while the fall still holds at 80 % confidence and a 10 % fall, and resolves itself once it does not; the Resolved view then says why. Acknowledging a signal keeps it open until then. The owner's alert email goes once per change, however long it lasts. We checked the noise with a simulation at the usual cadence (weekly scans, two answers per prompt and engine), on data noisier than our customers' real data: about 0.04 to 0.08 false signals per project per month, against 0.33 to 0.43 for the old rule on the same simulated answers, which compared two single scans. A real fall of a quarter is raised within four weeks in about three cases out of four, a fall of 40 % in 95 cases out of 100.

Cross-channel signals (AI visibility × performance)

One signal needs both sides in one place: "AI visibility and AI-referred conversions both fell". It is raised when AI-search visibility falls at its own bar (the last 14 days against the 28 before, at 95 % confidence) and the AI-referred conversions in your GA4 fall over those two periods, counted in whole days through yesterday (today is still running, and GA4 fills it in late): at least 20 % fewer a day, at 95 % confidence on a rate test of the two counts, with at least 20 conversions in the 28 days before, so a tiny account can't trip it. On the conversions alone it turns critical only at a 40 % fall, 99 % confidence and 50 conversions before. It states both sides with their periods and counts, and says that the two fell over the same days, not that one caused the other; whether they are linked is for you to check. It carries no confidence of its own; the visibility side states its own. It stays open while both still hold (the visibility fall at 80 % confidence and 10 %, the conversions 10 % fewer a day at 80 %) and resolves itself after. It only appears for clients with GA4 connected, and because it reads live GA4 data it refreshes on its own schedule (a couple of times a day). The former "Paid spend up while AI visibility fell" signal was retired on 11 October 2026: paid ads do not buy mentions in AI answers, so the reports show spend and AI visibility side by side instead. Automate on it like any signal — a natural fit for the "Draft an action plan" or "Draft a report" actions.

Meta Ads: an account that stops delivering

Once a day (early morning, UTC) CrunchJunkie reads every connected Meta ad account: its status in Meta, and daily impressions and spend for the account and its campaigns over its last eight days. It raises a signal when an account has stopped delivering after a normal week — no impressions on a day after spending on at least five of the seven days before, with a median of at least 100 impressions a day and delivery on the same weekday a week earlier (so an account that runs on weekdays only is not flagged at the weekend). It raises a critical signal when Meta reports a status in which the ads cannot run — unsettled balance, disabled, closing or closed — on an account that spent in the week before. Under risk review, payment being settled, or a failed payment in its grace period are only mentioned when they come with a day of no delivery. A day off on purpose, such as a public holiday, after a normal week raises it too; dismiss it. The day judged is the account's own day, read three hours after its midnight, so a time zone never turns a day still in progress into a false alarm. The signal names the campaigns that were delivering in the week before and what they spent. It stays open while the account stays dark and clears itself on the first day the account delivers again with a status that lets it run. Dismiss it and it stays dismissed for that stop; a later stop is a new signal. Like every signal it can trigger an automation: an email, a Slack message or a webhook the morning it happens. Only the daily impressions and spend the check needs are kept, for two weeks. If Meta refuses an account several days running (an expired login, a missing permission, an account the login lost), the check backs off; after five refusals it stops and emails the workspace owner once. It resumes as soon as Meta Ads is reconnected.

Working the inbox

Each signal carries a severity (Critical / Warning / Info), a plain-language explanation, and an Evidence expander showing the exact metrics or citations that produced it — nothing is a black box. Its words are written when it is read, from the figures it was raised on, in the reader's language: the inbox and Home in yours, emails in the recipient's, Slack and webhooks in the workspace's. A signal raised before 11 Oct 2026 whose evidence lacks a figure its words need keeps the English words it was raised with. You can Acknowledge a signal (you've seen it), Snooze it (it drops out for a week, then returns if still true), or Resolve it (you've handled it). Resolved and acknowledged signals are never re-raised within their period, so the inbox stays clean. Signals that describe a current state — a broken connection, a firewall block, a dead source, a stopped log drain, AI crawlers being served your host's suspension page, a GEO Audit score that stayed down on two audits in a row — also resolve THEMSELVES: once the underlying condition clears, the next detection pass retires the signal, so the inbox always reflects what is true right now, not what was true two weeks ago. Filter by Open, Resolved or All at any time. Signals is read-only and costs nothing — it runs on data you've already scanned, with no extra AI calls. Managing many clients? The AI Visibility overview is your triage view: every client on one screen with its visibility over the last 30 days (the same figure as the project header, the Overview at 30 days and Home), open-signal chips and a health status — Off track (a Critical signal nobody has acknowledged yet), At risk (an acknowledged Critical signal, a Warning, or a goal at risk on the Goals tab), No recent data (no new scan results for twice the scan interval, 30 days at most, or the last scan failed or was paused before its answers were counted) or On track — sorted worst-first so the accounts that need you today float to the top. Hover a status to see the reasons behind it. The "Open signals" tile counts every severity; the badge next to Signals in the sidebar reads "1 critical" and counts open Critical signals only, the same number as Critical on the Signals page. Click any client to work its signals. And a portfolio-level signal fires when the same problem hits many clients at once ("6 of 12 clients show a fall in AI visibility"). Before working them one by one, check what those clients share, such as an engine whose model changed or a common market.

Automations — turn a signal into action

An Automation is a no-code rule: when a signal happens, do something. You pick the trigger (a signal type — e.g. "a competitor overtakes us" — with a minimum severity, for one client or all of them) and the actions. Phase-one actions are notify actions: email (you, your team, or any address), a Slack message (via an incoming-webhook URL), or a generic webhook to Zapier / Make / n8n / your own endpoint. Start from a template — Visibility guardrail, Competitor watch, Source health, Feed & schema health, Broken-connection guard, or Critical-only — and tweak it, or build one from scratch in the When → Then editor. Automations fire only on signals that already passed the bar for their kind — 95 % confidence on the last 14 days against the 28 before for a change in AI visibility, a confirming second check for a change in rankings, a hard fact for a condition such as a broken connection — and each signal triggers a given rule at most once, so you're never spammed. Every rule shows how many times it has fired and when it last did. Set one up under AI Visibility → Automations.

Draft an action plan — with your approval

Beyond notifying, an automation can do a first draft of the work. Add the "Draft an action plan (AI)" action and, when a signal fires, Crunch writes a short, grounded plan for it — a one-line summary of what the signal observed, a few things to check, and three to five concrete next steps — using your own AI key or Managed AI (so it's metered like any other AI feature, and free on your own keys). The plan never names a cause the signal does not show: a signal says what changed, not why. Crucially, nothing is sent to anyone automatically. The draft lands in the Approvals inbox (AI Visibility → Approvals), where you read it and either Approve — which emails the plan to the automation's recipients (or you) — or Dismiss. You're always the one who decides what goes out; there's no autonomous publishing. It's the "data → done" loop, with a human in the loop by design. The inbox doubles as a shared task queue: assign any item to a teammate, give it a due date and a working note, and mark it In progress while you work on it. You can also add your own ad-hoc tasks with "New task" — for follow-up work no automation triggered — and mark them Done when finished, so all your team's open AI-visibility work lives in one place.

Auto-draft a report or a content brief

Two heavier actions take the same draft-then-approve shape, so a signal can hand you a finished deliverable instead of a to-do. Draft a report (AI) builds a white-label report for the signal's client from its connected data sources and AI-visibility signals — the same composition as the report builder's "Draft with AI", including an executive summary. It lands in Approvals; when you approve, Crunch creates a shareable link and emails it to the recipients (on your own verified domain if you have white-label set up). You can open and edit the report in the builder before approving — nothing goes out until you do. Use it on a per-client rule so the report targets the right brand. Draft a content brief (AI) writes an evidence-grounded GEO content brief for the project's single biggest gap prompt — a question where the tracked brand is never mentioned across recent runs — with a target question, recommendations, a suggested structure, schema to add and proof to include, all grounded in what the winning pages actually do. It waits in Approvals until you send it. Both are AI actions, so they're metered exactly like report summaries (free on your own keys, counted on Managed AI), and both are strictly human-approved — CrunchJunkie never publishes or sends a report or brief on its own.

Own page losing AI citations

Coming soon. A signal that tells you when one of your own pages stops being cited in AI answers, read from each page's citation lifetime (AI Visibility → a client → URLs). It is being tested before it reaches any inbox, so nothing about it shows in your Signals, emails or automations yet. The rule it will use: A page counts when, in the 4 weeks before the last 2 completed weeks, it was cited in at least 3 of the weeks, at least 4 times, in at least 12 eligible answers (the answers to the prompts and engines that cited it in the 8 weeks before), at a rate of 20% or more. It is lost when none of at least 8 eligible answers of the last 2 weeks cites it, with answers in both weeks, and that is 1% likely or less at the lower end of its earlier rate; it is fading when its rate falls to 40% of its earlier rate or less, on at least 12 eligible answers, at 99% confidence, in two weekly checks in a row. When the engines that dropped the page changed model and carried 70% or more of its earlier citations, the signal is for information only and names the model change. When one engine drops most of the pages of your site it cites, all at once, the engine changed, not your pages, and no page signal is raised; when five or more pages qualify at once, they become one signal, which stays open, listing the pages cited again, until every one of them has come back (no page among them raises a signal of its own meanwhile). A week without answers to the page's prompts never counts as a loss. A lost page's signal clears itself once the page is cited again, a fading page's once its rate is back above 40% of the rate it was first flagged against (settling at the lower rate is not a recovery), and either one once the page's prompts have had no eligible answer for 4 weeks (no longer measured: its citations ended, or its prompts were removed or paused), and the thresholds are strict on purpose: a page must be established before it can be flagged, and a loss confirmed.

Plans, delivery & the weekly digest

Automations are a paid feature: Starter includes 3 active rules, Pro 10, and Agency and Scale unlimited. Email and in-app signals work on every plan that has Automations; Slack and generic-webhook actions are available on Pro and above, and that is checked each time a rule fires: without an active Pro, Agency or Scale plan they are skipped, and the rule's run log says so. Anyone on your team can create a rule (the same policy as connecting a data source). Prefer a gentler cadence? A weekly Signals digest emails the workspace owner a single low-noise roundup of the week's open signals — no setup required, and no email in weeks when there's nothing worth sending. It arrives on Monday at 08:00 in your workspace's time zone (Settings → Preferences), daylight saving included, and once per week; a workspace without a valid time zone keeps 08:00 UTC. Use Automations for the things you can't miss (they fire as soon as a signal is raised), and let the digest cover the rest. There's also a client-facing version: a Client digest (AI Visibility → open a client → Client digest) is a recurring, white-labelled summary sent to your client under your brand — weekly or monthly. While the workspace is locked (a cancelled, paused or unpaid subscription), no digest goes out and none is sent later; once you choose a plan, the next one goes out at the following 09:00 check (in your workspace's time zone). It shows the client's AI-search visibility over the 7 days (weekly) or 30 days (monthly) up to the day before it is sent (a scan running that morning lands in the next send), next to the same span before, with the number of AI answers behind each figure, judged by the rule of the report KPI cards: a difference not clearly beyond the margin of error reads as unchanged (unless a visibility signal's fall, the last 14 days against the 28 before, is open: the digest then states that fall with its periods, answers and confidence and never calls visibility unchanged), and a period without answers says so instead of showing 0 %. It adds goal progress, judged as on the Goals tab, with the metric names and currency of the report KPI cards, and search rankings if you switch them on. A short plain-language summary is written by AI from those figures only, without guessing at causes, generated once and saved, never regenerated per recipient. When there is nothing to report, that send is skipped until there is. Send a test to yourself, approve the format once, and it recurs on your cadence to the client's contact email (or any addresses you set). On Starter and above it carries your workspace name and logo, with no CrunchJunkie footer unless the client is opted out of white-label; on Solo it is sent as CrunchJunkie. It comes from reports@crunchjunkie.io, and replies go to the workspace owner. The check for due digests runs every morning at 09:00 in your workspace's time zone; what a digest says does not depend on that hour, and each digest still goes out once per week or month.