Browse developer documentation
Reports
Sales
Read recorded payments and refunds, newest first, with observed attribution details.
/api/v1/stats/salesAccess: Workspace key or OAuth analytics:read · Permission details
Query parameters
| Field | Type | Description |
|---|---|---|
site | string | Website ID or domain. Required when the workspace has more than one website. |
period | string | UTC date selection. from and to override period. Values: realtime, today, yesterday, 7d, 30d, 90d, 12m, wtd, mtd, qtd, ytd, all. Default: |
from | string | Inclusive start date. Supply to as well. |
to | string | Inclusive end date. Supply from as well. |
compare | string | Comparison range. Values: previous_period, mom, qoq, yoy, none. Default: |
model | string | How recorded sources share revenue credit. Values: first_touch, last_touch, linear, time_decay. Default: |
filters | string | URL-encoded JSON array of up to twenty visitor filters, for example [{"dim":"country","op":"is","value":"US"}]. Dimensions: source, channel, campaign, entry_page, page, hostname, country, device, browser, os, goal. Operators: is, is_not. Values are exact strings up to 500 characters. All filters must match the visitor across available history; report dates then select activity for that cohort. Unmatched payments are excluded. Crawler counts remain website-wide; spend requires every filter to be source/channel/campaign. Preserve filters when paging. |
limit | integer | Row limit for reports that support it. Default: |
cursor | string | Opaque next_cursor from the previous page. Preserve the original website, report, dates, model and funnel selection. Never construct a cursor. |
Request examples
Examples run from your server or terminal. Configure ATTRIBOO_TOKEN privately for authenticated requests. Replace example website IDs and values with your own. The examples make real requests when you run them.
curl "https://www.attriboo.com/api/v1/stats/sales?site=site_example&from=2026-10-01&to=2026-10-07&compare=none" \
-H "Authorization: Bearer $ATTRIBOO_TOKEN"Response
Illustrative response. Fields below are inside the data object. Optional coverage, notes and continuation fields vary by report.
| Field | Type | Description |
|---|---|---|
site | object | Website ID, domain and currency. |
period | object | Resolved UTC boundaries; to is the exclusive timestamp after the selected end date. |
sales | array | Report records. See the fields below. |
next_cursor | string | null | When provided, pass this value to continue; null means the last page. Some small-site reports omit this field. |
coverage | object | When provided, describes completeness, snapshot time and row coverage. Row limits apply to this page, not to headline totals. |
site fields
| Field | Type | Description |
|---|---|---|
id | string | Website ID. |
domain | string | Website domain. |
currency | string | Three-letter currency. |
period fields
| Field | Type | Description |
|---|---|---|
from | string | Inclusive UTC start. |
to | string | Exclusive UTC end. |
label | string | Human-readable date selection. |
compare | string | Comparison selection. |
attribution_model | string | Revenue-credit model. |
sales[] fields
| Field | Type | Description |
|---|---|---|
id | string | Stored transaction ID. |
provider | string | Payment provider. |
external_id | string | Provider transaction ID. |
type | string | one_time, subscription_new, subscription_renewal or refund. |
amount | integer | Signed integer cents; refunds are negative. |
currency | string | Transaction currency. |
customer_email | string | null | Customer email or null. Treat as private data. |
transacted_at | string | UTC transaction time. |
attributed | boolean | Whether a preceding observed source was linked. |
first_touch | string | null | First source or null. |
last_touch | string | null | Last source or null. |
touches | integer | Preceding observed touches. |
self_reported_source | string | null | Survey answer or null. |
{
"status": "success",
"data": {
"site": {
"id": "site_example",
"domain": "shop.example.com",
"currency": "USD"
},
"period": {
"from": "2026-10-01T00:00:00.000Z",
"to": "2026-10-08T00:00:00.000Z",
"label": "Custom",
"compare": "none",
"attribution_model": "first_touch"
},
"sales": [
{
"id": "tx_example",
"provider": "stripe",
"external_id": "order_123",
"type": "one_time",
"amount": 5000,
"currency": "USD",
"customer_email": null,
"transacted_at": "2026-10-01T12:00:00Z",
"attributed": true,
"first_touch": "Google Organic",
"last_touch": "Direct",
"touches": 2,
"self_reported_source": null
}
]
}
}Behavior and limits
Money is integer cents in site.currency. Percentages use a 0–100 scale.
An unattributed payment is still a payment. Importing history does not recreate unobserved visits.
Keep customer_email and visitor identifiers in authorized private systems.