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 days | GET /v1/brands/{brand}/results/timeline?market=FR |
| Everything since Skoup started, with the month before | GET /v1/brands/{brand}/results/timeline?market=FR&period=since |
| Before / after Skoup in three numbers | the same call — read since |
| The fixes on the curve | the same call — markers with kind: fix, then GET /v1/brands/{brand}/tasks/{task} for each task_ids |
| What counts as « chosen » for this brand | the 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 answer | the 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;
completeis false for the current week.period=sincestarts 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.nullwhile the market was never measured —period=sincethen 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_eventnames them on a week the script measured alone,selected_eventslists 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 partverifiedby the publisher’s IP ranges, andsurfaces(per publisher). The reads are the site’s, whatever the market;ai_reads_pageslists 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/runsper model, plus the all-modelsshare. Re-aggregate on the models you care about. sinceis there whatever the period. It compares the first measured week of visibility with the last (rawby_model, plusdelta_pointswith its 95 %intervalon all models:interval_contains_zero: truemeans 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
nullis never 0. A week nobody measured hassessions: null(orcount: null), withsource: null; a week without a sampling hasvisibility: null.0is 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,mixedfor the week the script took over). Orders say their store (shopify,woocommerce), subscriptionsstripe. sincemay name another source than the timeline.since.visits.after.sourcecan begoogle_analyticswhile the last weeks ofweekssayscript: 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 comparebeforeandafterof one block with each other, never with a week of the timeline.- A read is not a visit.
ai_readssits besideai_visits, never added.nulluntil your server forwarded a read (and for the weeks before),0for a week without a read after. - Before the start may be empty. Without Google Analytics history, the visits before Skoup are
null:since.visits.beforeisnull, not a 0 to compare with. - No event. The timeline is computed when you call it; follow
sampling.completedto know when a new week of visibility lands. google,google_ai(andgoogle,google_ai_impressionsin each week) are reserved for the Search Console series:nullfor now.- A direct arrival is not an AI visit.
direct_on_citedcounts the visits with no origin that landed on a page the assistants cite, beside the AI visits, never added. Each week saysdays, the days the script counted:7for a whole week, fewer for the week it was installed and the current one. A weekly average reads only the weeks withdays: 7.
Last updated on