Skip to Content
GuidesResults

Results

Results answers « does Skoup work? » in one call: for a brand on a market, week by week, whether the AI assistants see it (visibility), send visitors to it (AI visits) and whether those visits choose it — AI orders for an online store, AI subscriptions for a SaaS, the key events of the AI visits (bookings, calls, sign-ups) otherwise. Markers put the start of Skoup, the fixes the measure proved, the integrations and the write-backs on the same axis.

I want to…

I want to…Call
The three floors of the last 90 daysGET /v1/brands/{brand}/results/timeline?market=FR
Everything since Skoup started, with the month beforeGET /v1/brands/{brand}/results/timeline?market=FR&period=since
Before / after Skoup in three numbersthe same call — read since
The fixes on the curvethe same call — markers with kind: fix, then GET /v1/brands/{brand}/tasks/{task} for each task_ids
What counts as « chosen » for this brandthe same call — read outcome_kind (orders, subscriptions, key_events)
One catalogue category (online store)GET /v1/brands/{brand}/results/timeline?market=FR&category=Gravel — names in categories
The pages assistants read to answerthe same call — weeks[].ai_reads and ai_reads_pages; the detail in GET /v1/brands/{brand}/agent-reads

Scope: revenue:read. Every plan. An assistant reads the same timeline with the MCP tool get_results_timeline.

How it is built

  • One axis. The weeks are those of the visibility trend (Monday to Sunday, UTC), oldest first; complete is false for the current week. period=since starts 4 weeks before the start of Skoup so the traffic history shows before the first measure.
  • The start of Skoup (started_at) is the end of the brand’s first sampling on the market. null while the market was never measured — period=since then falls back on 90 days.
  • « Chosen » follows the brand: AI orders and revenue for an online store, AI subscriptions and new MRR for a SaaS with Stripe connected, the key events of the AI visits otherwise (a SaaS without Stripe included) — by_event names them on a week the script measured alone, selected_events lists the events the site counts (null = every named event).
  • Read by assistants (ai_reads): the pages ChatGPT, Perplexity, Claude… read to answer someone, as your server forwards them (Skoup Analytics › AI agent reads) — fetches, the part verified by the publisher’s IP ranges, and surfaces (per publisher). The reads are the site’s, whatever the market; ai_reads_pages lists the pages read most over the axis.
  • A category narrows visibility (answers citing one of its products) and orders (its order lines) — never the visits, which stay the site’s.
  • Visibility stays raw: hits / runs per model, plus the all-models share. Re-aggregate on the models you care about.
  • since is there whatever the period. It compares the first measured week of visibility with the last (raw by_model, plus delta_points with its 95 % interval on all models: interval_contains_zero: true means the move is within the noise), and the weekly average (per_week) of the 4 complete weeks before the start with the last 4, for the visits and the outcome. Visits and key events are compared with the same tool on both sides: Google Analytics when it measured both windows (even while the Skoup script measures the recent weeks), the script otherwise; each side averages only the weeks that tool measured in full. When no tool covers both windows, each side keeps the timeline’s source and names it.

Pitfalls

  • null is never 0. A week nobody measured has sessions: null (or count: null), with source: null; a week without a sampling has visibility: null. 0 is a measured week without any.
  • One source per day, never added. AI visits come from the Skoup script from its first day, from Google Analytics before; each week says which (script, google_analytics, mixed for the week the script took over). Orders say their store (shopify, woocommerce), subscriptions stripe.
  • since may name another source than the timeline. since.visits.after.source can be google_analytics while the last weeks of weeks say script: Google Analytics only counts the visitors who accept its cookies, the script everyone, and a before / after across the two would show a false rise. Always compare before and after of one block with each other, never with a week of the timeline.
  • A read is not a visit. ai_reads sits beside ai_visits, never added. null until your server forwarded a read (and for the weeks before), 0 for a week without a read after.
  • Before the start may be empty. Without Google Analytics history, the visits before Skoup are null: since.visits.before is null, not a 0 to compare with.
  • No event. The timeline is computed when you call it; follow sampling.completed to know when a new week of visibility lands.
  • google, google_ai (and google, google_ai_impressions in each week) are reserved for the Search Console series: null for now.
  • A direct arrival is not an AI visit. direct_on_cited counts the visits with no origin that landed on a page the assistants cite, beside the AI visits, never added. Each week says days, the days the script counted: 7 for a whole week, fewer for the week it was installed and the current one. A weekly average reads only the weeks with days: 7.
Last updated on