Measurement
How often are my tracked questions asked, and why that cadence?
How often are my tracked questions asked, and why that cadence?
A platform shows no data for a scan — what happened?
A platform shows no data for a scan — what happened?
- No AI Overview shown for these queries — Google did not render an AI Overview for that query. That is a real observation about the query, not an error.
- Rate limit or quota reached / Too many parallel requests — the provider throttled the request.
- Missing or invalid credentials or Account credit exhausted — a provider account problem, surfaced rather than hidden.
- Source timed out — the poll will be retried on the next scan.
- No fallback available for this platform — the primary source failed and this platform has no second route.
What does a dash mean, and why isn't it 0%?
What does a dash mean, and why isn't it 0%?
- A commercial reach figure has no weight behind it, because every question in the slice sits in the ballast tier. There is no commercial signal to report, so the tile is omitted rather than showing 0%.
- A question-shape rate has no question that clears the minimum of three recorded answers. A question polled once contributes a rate of exactly 0% or 100% — a coin flip wearing a percentage sign — so it is held out until it can disagree with itself.
- A “core topics only” column exists for a shape you track no core-topic question of. Bluemoon cannot answer that question for that shape, which is not the same as answering zero.
- Commercial reach has no commercial weight behind it — every question in the slice is peripheral calibration ballast. That slice carries no commercial signal; it is not 0% commercial visibility.
<0.1%. A measured handful of mentions is not the same finding as none at all.Finally, on the question-shape rates, answers that were recorded but not yet scored are excluded from both the numerator and the denominator. An unscored answer is not evidence of absence.Does the commercial intent score predict where I'll be visible?
Does the commercial intent score predict where I'll be visible?
Why does an action's impact read 'not enough data'?
Why does an action's impact read 'not enough data'?
- Not enough data — fewer than 8 recorded answers on the targeted questions in either the before or the after window. A lift computed on three polls is noise, and reporting it would be worse than reporting nothing.
- Measuring — there is enough data, but fewer than 14 days have elapsed since completion. The number is shown, with the day count, and is not yet called measured.
- Measured — the threshold and the elapsed time are both met.
Which platforms does Bluemoon ask, and how is a mention counted?
Which platforms does Bluemoon ask, and how is a mention counted?
- DIRECT — your domain, or one of your exact brand spellings, appears in the answer. This is the unambiguous case and carries full weight.
- IMPLICIT — no exact spelling matched, but a token derived from your brand or domain did. The match is weaker, so it carries reduced weight in the GEO score.
- ABSENT — nothing matched.
Can Bluemoon tell me why I'm not mentioned?
Can Bluemoon tell me why I'm not mentioned?
Agent Edge Network
No hits appear in Agent Analytics — what should I check?
No hits appear in Agent Analytics — what should I check?
- Is
AEN_EDGE_TOKENset as a Vercel environment variable? A local.envfile is not enough. If the token is blank, the middleware returnsNextResponse.next()on the very first line and does nothing — no detection, no telemetry. - Is the middleware actually deployed? Confirm
middleware.tsis at the root of your Next.js app and shows up as an Edge Function in your Vercel project’s Functions tab. - Did you trigger a real browsing AI? Visiting your own site in a browser won’t generate a hit. You need to ask ChatGPT or Perplexity (with browsing enabled) a question that causes their crawler to fetch a URL on your domain.
UA_ONLY and is always passed through to your normal page.A page isn't being served the optimized version — why?
A page isn't being served the optimized version — why?
- The bot must be verified. The middleware verifies the request’s source IP against the vendor’s published CIDR ranges (
IP_VERIFIED). AUA_ONLYmatch is never served the variant. - The bot’s purpose class must be
USER_TRIGGEREDorRETRIEVAL. Other purpose classes pass through, even when the bot is verified. SERVE_MODEmust be"default". The middleware ships in"shadow", which logs requests but always serves your normal page. Change the constant inmiddleware.tsto"default"and redeploy.- An artifact must exist for the URL. If Bluemoon hasn’t generated one yet, the middleware degrades to your normal page — it never fabricates a response.
Is this safe for SEO?
Is this safe for SEO?
isSearchIndex in the Bluemoon botset, the middleware immediately returns your normal page without branching. Googlebot, Bingbot, and Applebot always get your normal page, full stop. The control plane also strips SEARCH_INDEX from a site’s enabled purposes defensively, so it can never be turned on.This matters especially because Google’s AI Overviews run on Googlebot and the same search index as Google Search. Serving Googlebot a different version would be cloaking Google Search itself — a clear policy violation. Bluemoon never does this.For the non-search answer-engine agents that Bluemoon does serve (such as OAI-SearchBot, Claude-SearchBot, and PerplexityBot), the artifact is a pure extraction-and-restructure of your existing page — the same substance, reformatted into answer-first markdown and JSON-LD. A strict-parity grounding guardrail rejects any artifact that introduces content the source page didn’t contain, so nothing is added or invented.See the cloaking firewall guide for the full rule.Can I use Bluemoon without Vercel or Next.js?
Can I use Bluemoon without Vercel or Next.js?
What does the edge token do, and is it the same as my account API key?
What does the edge token do, and is it the same as my account API key?
AEN_EDGE_TOKEN) is a separate, site-scoped credential, distinct from your Bluemoon account credentials. It has the format aen_..., is scoped to exactly one domain, and can be rotated at any time — re-provisioning the site mints a fresh token without affecting the rest of your account.Its job is to authenticate the middleware’s calls to the Bluemoon control plane (Authorization: Bearer <edgeToken>): fetching the botset, fetching artifacts, and posting telemetry hits. Because it’s site-scoped and revocable, the blast radius of a leaked token is limited to that one site’s edge configuration.The token is returned in full only once, at provision time, so copy it straight into Vercel’s environment variable store rather than committing it to your repository. If you lose it, re-provision the site to mint a new one.What is shadow mode and why should I start there?
What is shadow mode and why should I start there?
SERVE_MODE = "shadow") is the default in the downloadable middleware.ts. In this mode the middleware runs the full detection and verification pipeline on every request and logs what it would have served, but always delivers your normal page to every visitor — human or bot.Starting in shadow mode lets you confirm that:- The middleware is deployed and receiving requests.
AEN_EDGE_TOKENis set and the control plane is reachable.- Verified AI crawler hits are appearing in Agent Analytics.
- The artifacts Bluemoon has generated look right — the Agent Analytics artifacts list shows each optimized page with its status and citability score.
"default" and redeploy to start serving the variant. The middleware.ts constant only accepts "shadow" or "default"; richer serve modes such as canary rollouts are configured from the Bluemoon platform (off / shadow / canary:<pct> / default).Which AI agents does Bluemoon detect?
Which AI agents does Bluemoon detect?
- OpenAI:
ChatGPT-User(USER_TRIGGERED),OAI-SearchBot(RETRIEVAL),GPTBot(TRAINING) - Anthropic:
Claude-User(USER_TRIGGERED),Claude-SearchBot(RETRIEVAL),ClaudeBot(TRAINING) - Perplexity:
Perplexity-User(USER_TRIGGERED),PerplexityBot(RETRIEVAL) - Mistral:
MistralAI-User(USER_TRIGGERED) - Classic search (firewall-protected, never served):
Googlebot,Bingbot,Applebot
UA_ONLY, which is never served the variant; IP confirmation yields IP_VERIFIED. The core also defines a higher SIGNED tier backed by Web Bot Auth (RFC 9421 HTTP Message Signatures, Ed25519); the shipped drop-in verifies by IP range.Bluemoon maintains the botset centrally, so you don’t need to track vendor crawler tokens or IP ranges yourself.What's the difference between USER_TRIGGERED and RETRIEVAL purpose classes?
What's the difference between USER_TRIGGERED and RETRIEVAL purpose classes?
USER_TRIGGERED— A human is actively waiting. When a ChatGPT user asks a question with browsing enabled,ChatGPT-Userfetches your page in real time to inform the answer.RETRIEVAL— The crawler is building or refreshing an index for future queries.OAI-SearchBotandPerplexityBotfall here.
TRAININGcrawlers (e.g.GPTBot,ClaudeBot,CCBot) pass through to your normal page.SEARCH_INDEXbots (Googlebot/Bingbot/Applebot) always pass through via the cloaking firewall.
SEARCH_INDEX can never be enabled).Does Bluemoon slow down my site?
Does Bluemoon slow down my site?
NextResponse.next() and steps aside immediately.For a verified AI crawler request the middleware does a little extra work: it fetches the pre-generated artifact from the control plane. This is completely separate from any human session. The botset is cached on the edge for up to one hour, so that lookup does not hit the control plane on every request.How do I update an optimized artifact after editing a page?
How do I update an optimized artifact after editing a page?
- Open Agent Analytics in the Bluemoon app.
- Find the page you’ve edited.
- Use the Regenerate action, which flags the artifact stale so the engine rebuilds it from your page’s current content.
stale and the edge passes crawlers through to your normal page until the engine rebuilds it back to fresh — you can watch that status flip (and the updated citability score) in the artifacts list. See the Agent Analytics guide for the served → cited loop.