Analytics
Get an analytics summary
Return bounded operational totals for the authenticated Store. Orders,
modern products, and native-currency revenue are counted over complete UTC
calendar days. Revenue remains in integer minor units and is never
converted or combined across currencies. Malformed stored currency codes
appear honestly in one null-currency bucket. Customer details, provider
data, and legacy ProductCache rows are excluded. Requires
analytics:read; this operation is read-only and safe to retry.
end_date is the inclusive final day and must be before the current UTC
date. It defaults to yesterday. period defaults to 30d. The response
reports the half-open query bounds [starts_at, ends_before). Correct a
422 using the reported parameter, replace a key after 401, add the scope
after 403, and retry 429 responses after retry_after seconds.
Authorisation
Bearer token required. Include in the
Authorization header.
Query parameters
Closed set of supported complete-day reporting periods.
Example: 30d
Inclusive final UTC date in YYYY-MM-DD format. Defaults to the previous UTC day.
Example: 2026-07-19
curl https://web.signcustomiser.com/api/v3/analytics/summary?period=30d&end_date=2026-07-19 \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_TOKEN'{
"data": {
"object": "analytics_summary",
"period": "30d",
"starts_at": "2026-06-20T00:00:00Z",
"ends_before": "2026-07-20T00:00:00Z",
"order_count": 18,
"product_count": 21,
"revenue": [
{
"currency": "AUD",
"amount": 248900,
"order_count": 16
},
{
"currency": "NZD",
"amount": 31100,
"order_count": 2
}
]
},
"links": {
"self": "https://web.signcustomiser.com/api/v3/analytics/summary?period=30d&end_date=2026-07-19",
"documentation": "https://www.signcustomiser.com/help/api/"
},
"meta": {
"api_version": "v3",
"request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}
}{
"type": "https://www.signcustomiser.com/help/api/problems/missing_api_key",
"title": "Missing API key",
"status": 401,
"code": "missing_api_key",
"detail": "Provide a store API key as a bearer token.",
"request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}{
"type": "https://www.signcustomiser.com/help/api/problems/insufficient_scope",
"title": "Insufficient scope",
"status": 403,
"code": "insufficient_scope",
"detail": "This operation requires the analytics:read scope.",
"required_scopes": [
"analytics:read"
],
"granted_scopes": [],
"request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}{
"type": "https://www.signcustomiser.com/help/api/problems/invalid_parameter",
"title": "Invalid query parameter",
"status": 422,
"code": "invalid_parameter",
"detail": "The period parameter must be one of: 7d, 30d, 90d, 365d.",
"errors": [
{
"parameter": "period",
"code": "unsupported_value",
"detail": "The period parameter is unsupported.",
"allowed_values": [
"7d",
"30d",
"90d",
"365d"
]
}
],
"request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}{
"type": "https://www.signcustomiser.com/help/api/problems/rate_limited",
"title": "Too many requests",
"status": 429,
"code": "rate_limited",
"detail": "You have exceeded the request limit for this API key.",
"retry_after": 60,
"request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}