Revenue
Related events: order.attributed
The Attribution object
Attributes
objectstringattributionbrandstringThe brand the object belongs to (
br_…).marketstringMarket code (ISO country, e.g.
FR).periodstringcurrencystringnullablefromstringnullabletostringaiobjectnullableShow child attributes
ordersstringrevenuestringaverage_basketstringshare_of_revenuestringshare_of_ordersstringprevious_ordersstringprevious_revenuestringrevenue_changestring
storeobjectnullableShow child attributes
ordersstringrevenuestringaverage_basketstring
surfacesarray of objectproductsarray of objectfirst_touchobjectnullableOrders the Skoup pixel joined to their visit: the buyer's first AI contact.
Show child attributes
window_daysstringordersstringai_ordersstringai_sharestringai_revenuestringsurfacesarray of object
livemodebooleantruefor live data,falsefor the test-mode sandbox.
{
"object": "attribution",
"brand": "br_034CyfRFSXUqzrbzV6MAfZ",
"market": "FR",
"period": "90d",
"currency": "EUR",
"from": "string",
"to": "string",
"ai": {
"orders": "string",
"revenue": "string",
"average_basket": "string",
"share_of_revenue": "string",
"share_of_orders": "string",
"previous_orders": "string",
"previous_revenue": "string",
"revenue_change": "string"
},
"store": {
"orders": "string",
"revenue": "string",
"average_basket": "string"
},
"surfaces": [
{}
],
"products": [
{}
],
"first_touch": {
"window_days": "string",
"orders": "string",
"ai_orders": "string",
"ai_share": "string",
"ai_revenue": "string",
"surfaces": [
{}
]
},
"livemode": true
}The Order object
Attributes
idstringUnique identifier of the object (prefixed, opaque).
objectstringordersourceenumThe store an order was received from. Shopify today (orders/create webhook); WooCommerce / PrestaShop land here with their plugins.
Possible values:
shopifyorder_numberstringnullableordered_atstringcurrencystringsubtotalstringnullabletotalstringitems_countintegercountrystringnullableai_surfacestringnullableKey of the AI surface the order is attributed to (chatgpt, claude, gemini, perplexity…), null = not attributed.
attribution_signalenumnullableWhich of the store's origin fields proved the AI surface of an order. NULL on the order = no AI signal (the referrer host is still kept). | | |---| |
referrer<br/> The session's referrer is an assistant's domain. | |utm<br/> The landing URL carries autm_sourcenaming an assistant (ChatGPT tags its links). | |landing_ref<br/> Shopify'slanding_site_ref(?ref=) names an assistant. |Possible values:
referrer·utm·landing_refreferrer_hoststringnullablelanding_pathstringnullablelanding_productstringnullableutm_sourcestringnullableutm_mediumstringnullableutm_campaignstringnullablelinesarray of objectShow child attributes
productstringnullableNull when the line matches no product of the catalogue.
titlestringskustringnullablequantityintegerunit_pricestringnullabletotalstring
livemodebooleantruefor live data,falsefor the test-mode sandbox.createdintegerTime at which the object was created (unix timestamp, seconds).
{
"id": "ord_031DIivuBKog78mwjgnaYz",
"object": "order",
"source": "shopify",
"order_number": "#1042",
"ordered_at": "2026-09-23T09:12:44Z",
"currency": "EUR",
"subtotal": "2399.00",
"total": "2399.00",
"items_count": 1,
"country": "FR",
"ai_surface": "chatgpt",
"attribution_signal": "referrer",
"referrer_host": "chatgpt.com",
"landing_path": "/products/strade-7",
"landing_product": "prod_031DIivuBKog78mwjgnbd3",
"utm_source": null,
"utm_medium": null,
"utm_campaign": null,
"lines": [
{
"product": "prod_031DIivuBKog78mwjgnbd3",
"title": "Strade 7",
"sku": "STR7-M",
"quantity": 1,
"unit_price": "2399.00",
"total": "2399.00"
}
],
"livemode": true,
"created": 1790154764
}The Visibility revenue correlation object
Attributes
objectstringvisibility_revenue_correlationbrandstringThe brand the object belongs to (
br_…).marketstringMarket code (ISO country, e.g.
FR).periodstringcategorystringcurrencystringnullablecategoriesarray of objectweeksarray of objectfixesarray of objectlivemodebooleantruefor live data,falsefor the test-mode sandbox.
{
"object": "visibility_revenue_correlation",
"brand": "br_034CyfRFSXUqzrbzV6MAfZ",
"market": "FR",
"period": "90d",
"category": "string",
"currency": "EUR",
"categories": [
{}
],
"weeks": [
{}
],
"fixes": [
{}
],
"livemode": true
}The Ai subscriptions object
Attributes
objectstringai_subscriptionsbrandstringThe brand the object belongs to (
br_…).marketstringMarket code (ISO country, e.g.
FR).periodstringfromstringnullabletostringnullablelast_synced_atstringcurrencystringnewobjectnullableShow child attributes
subscriptionsstringmrrstringprevious_subscriptionsstring
aiobjectnullableShow child attributes
subscriptionsstringmrrstringshare_of_subscriptionsstringshare_of_mrrstringprevious_subscriptionsstring
tracked_sharestringsurfacesarray of objectweeksarray of objectlivemodebooleantruefor live data,falsefor the test-mode sandbox.
{
"object": "ai_subscriptions",
"brand": "br_034CyfRFSXUqzrbzV6MAfZ",
"market": "FR",
"period": "90d",
"from": "string",
"to": "string",
"last_synced_at": "2026-09-21T02:40:00Z",
"currency": "EUR",
"new": {
"subscriptions": "string",
"mrr": "string",
"previous_subscriptions": "string"
},
"ai": {
"subscriptions": "string",
"mrr": "string",
"share_of_subscriptions": "string",
"share_of_mrr": "string",
"previous_subscriptions": "string"
},
"tracked_share": "string",
"surfaces": [
{}
],
"weeks": [
{}
],
"livemode": true
}The Ai traffic object
Attributes
objectstringai_trafficbrandstringThe brand the object belongs to (
br_…).marketstringMarket code (ISO country, e.g.
FR).periodstringfromstringnullabletostringnullablelast_hit_atstringconversion_metricenumnullablePossible values:
transactions·key_eventsaiobjectnullableShow child attributes
sessionsstringtransactionsstringkey_eventsstringconversion_ratestringshare_of_sessionsstringprevious_sessionsstringsessions_changestring
siteobjectnullableShow child attributes
sessionsstringtransactionsstringkey_eventsstringconversion_ratestring
surfacesarray of objectweeksarray of objectfirst_touchobjectnullableShow child attributes
window_daysstringconversionsstringai_conversionsstringai_sharestringsurfacesarray of object
livemodebooleantruefor live data,falsefor the test-mode sandbox.
{
"object": "ai_traffic",
"brand": "br_034CyfRFSXUqzrbzV6MAfZ",
"market": "FR",
"period": "90d",
"from": "string",
"to": "string",
"last_hit_at": "2026-09-21T02:40:00Z",
"conversion_metric": "transactions",
"ai": {
"sessions": "string",
"transactions": "string",
"key_events": "string",
"conversion_rate": "string",
"share_of_sessions": "string",
"previous_sessions": "string",
"sessions_change": "string"
},
"site": {
"sessions": "string",
"transactions": "string",
"key_events": "string",
"conversion_rate": "string"
},
"surfaces": [
{}
],
"weeks": [
{}
],
"first_touch": {
"window_days": "string",
"conversions": "string",
"ai_conversions": "string",
"ai_share": "string",
"surfaces": [
{}
]
},
"livemode": true
}Retrieve the AI attribution
GET/v1/brands/{brand}/attribution
Orders and revenue attributed to AI surfaces (ChatGPT, Claude, Gemini,
Perplexity…) vs the whole store on a market over a period, by surface
and by product — the figures of the Revenue screen. Attribution is
last-touch, read from the store’s orders (referrer, utm_source,
ref). Totals are null before the first order.
Parameters
brandstringrequiredBrand id (
br_…).
Returns
Returns the attribution object. Raises an error if something goes wrong.
curl
curl https://api.skoup.ai/v1/brands/br_034CyfRFSXUqzrbzV6MAfZ/attribution \
-H "Authorization: Bearer skoup_test_4eC39HqLyjWDarjtT1zdp7dc"{
"object": "attribution",
"brand": "br_034CyfRFSXUqzrbzV6MAfZ",
"market": "FR",
"period": "90d",
"currency": "EUR",
"from": "string",
"to": "string",
"ai": {
"orders": "string",
"revenue": "string",
"average_basket": "string",
"share_of_revenue": "string",
"share_of_orders": "string",
"previous_orders": "string",
"previous_revenue": "string",
"revenue_change": "string"
},
"store": {
"orders": "string",
"revenue": "string",
"average_basket": "string"
},
"surfaces": [
{}
],
"products": [
{}
],
"first_touch": {
"window_days": "string",
"orders": "string",
"ai_orders": "string",
"ai_share": "string",
"ai_revenue": "string",
"surfaces": [
{}
]
},
"livemode": true
}Retrieve the visibility ↔ revenue correlation
GET/v1/brands/{brand}/correlation
AI visibility and AI-attributed revenue side by side, week by week,
with the fixes published each week — for the whole brand or one
catalogue category. Visibility is given raw per model (hits /
runs) plus the all-models share. weeks is empty until the store
sent a first order.
Parameters
brandstringrequiredBrand id (
br_…).categorystring
Returns
Returns the visibility_revenue_correlation object. Raises an error if something goes wrong.
curl
curl https://api.skoup.ai/v1/brands/br_034CyfRFSXUqzrbzV6MAfZ/correlation \
-H "Authorization: Bearer skoup_test_4eC39HqLyjWDarjtT1zdp7dc"{
"object": "visibility_revenue_correlation",
"brand": "br_034CyfRFSXUqzrbzV6MAfZ",
"market": "FR",
"period": "90d",
"category": "string",
"currency": "EUR",
"categories": [
{}
],
"weeks": [
{}
],
"fixes": [
{}
],
"livemode": true
}Retrieve the AI subscriptions
GET/v1/brands/{brand}/subscriptions
New subscriptions and new MRR of a SaaS brand on a market over a
period, read from its Stripe, and the part the AI assistants brought
— as the brand records it in the customer’s or the subscription’s
metadata (referrer, utm_source, landing_url). With the Growth
plan or above, weeks puts the weekly AI visibility (raw counts per
model) next to the new MRR. The blocks are null until Stripe is
connected and synced; SaaS brands only.
Parameters
brandstringrequiredBrand id (
br_…).
Returns
Returns the ai_subscriptions object. Raises an error if something goes wrong.
curl
curl https://api.skoup.ai/v1/brands/br_034CyfRFSXUqzrbzV6MAfZ/subscriptions \
-H "Authorization: Bearer skoup_test_4eC39HqLyjWDarjtT1zdp7dc"{
"object": "ai_subscriptions",
"brand": "br_034CyfRFSXUqzrbzV6MAfZ",
"market": "FR",
"period": "90d",
"from": "string",
"to": "string",
"last_synced_at": "2026-09-21T02:40:00Z",
"currency": "EUR",
"new": {
"subscriptions": "string",
"mrr": "string",
"previous_subscriptions": "string"
},
"ai": {
"subscriptions": "string",
"mrr": "string",
"share_of_subscriptions": "string",
"share_of_mrr": "string",
"previous_subscriptions": "string"
},
"tracked_share": "string",
"surfaces": [
{}
],
"weeks": [
{}
],
"livemode": true
}Retrieve the AI traffic
GET/v1/brands/{brand}/traffic
Sessions and conversions the AI assistants (ChatGPT, Claude, Gemini,
Perplexity…) send to the site, per surface and per week, vs the whole
site — measured by the Skoup script installed on it, the figures of
the « AI traffic » screen — and the conversions whose first touch was
an assistant. The blocks are null until the script brought a visit.
Parameters
brandstringrequiredBrand id (
br_…).
Returns
Returns the ai_traffic object. Raises an error if something goes wrong.
curl
curl https://api.skoup.ai/v1/brands/br_034CyfRFSXUqzrbzV6MAfZ/traffic \
-H "Authorization: Bearer skoup_test_4eC39HqLyjWDarjtT1zdp7dc"{
"object": "ai_traffic",
"brand": "br_034CyfRFSXUqzrbzV6MAfZ",
"market": "FR",
"period": "90d",
"from": "string",
"to": "string",
"last_hit_at": "2026-09-21T02:40:00Z",
"conversion_metric": "transactions",
"ai": {
"sessions": "string",
"transactions": "string",
"key_events": "string",
"conversion_rate": "string",
"share_of_sessions": "string",
"previous_sessions": "string",
"sessions_change": "string"
},
"site": {
"sessions": "string",
"transactions": "string",
"key_events": "string",
"conversion_rate": "string"
},
"surfaces": [
{}
],
"weeks": [
{}
],
"first_touch": {
"window_days": "string",
"conversions": "string",
"ai_conversions": "string",
"ai_share": "string",
"surfaces": [
{}
]
},
"livemode": true
}List AI-attributed orders
GET/v1/brands/{brand}/orders
The store orders attributed to an AI surface, newest first. Test orders are excluded; no customer data is ever returned.
Parameters
brandstringrequiredBrand id (
br_…).surfacestringcountrystringlimitintegerNumber of objects to return, between 1 and 100 (default 20).
starting_afterstringCursor: the
idof the last object of the previous page.
Returns
A dictionary with a data property holding up to limit order objects, newest first, and has_more telling whether another page exists. Raises an error if something goes wrong.
curl
curl https://api.skoup.ai/v1/brands/br_034CyfRFSXUqzrbzV6MAfZ/orders?limit=3 \
-H "Authorization: Bearer skoup_test_4eC39HqLyjWDarjtT1zdp7dc"{
"object": "list",
"url": "/v1/brands/br_034CyfRFSXUqzrbzV6MAfZ/orders",
"has_more": false,
"data": [
{
"id": "ord_031DIivuBKog78mwjgnaYz",
"object": "order",
"source": "shopify",
"order_number": "#1042",
"ordered_at": "2026-09-23T09:12:44Z",
"currency": "EUR",
"subtotal": "2399.00",
"total": "2399.00",
"items_count": 1,
"country": "FR",
"ai_surface": "chatgpt",
"attribution_signal": "referrer",
"referrer_host": "chatgpt.com",
"landing_path": "/products/strade-7",
"landing_product": "prod_031DIivuBKog78mwjgnbd3",
"utm_source": null,
"utm_medium": null,
"utm_campaign": null,
"lines": [
{
"product": "prod_031DIivuBKog78mwjgnbd3",
"title": "Strade 7",
"sku": "STR7-M",
"quantity": 1,
"unit_price": "2399.00",
"total": "2399.00"
}
],
"livemode": true,
"created": 1790154764
}
]
}