---
title: "Store analytics overview"
method: GET
path: "/v1/analytics/overview"
tags: ["analytics"]
---

# Store analytics overview

`GET /v1/analytics/overview`

## Request

- Base URL: `https://api.octaneai.com`
- URL: `https://api.octaneai.com/v1/analytics/overview`
- Auth: HTTP bearer

## Query parameters

- `from` string, date, nullable: First day, inclusive, in tz; 29 days before `to` when absent
- `to` string, date, nullable: Last day, inclusive, in tz; today when absent
- `tz` string
- `channel` string, nullable
- `device` string, nullable
- `new_returning` string, nullable
- `country` string, nullable

## Headers

- `if-none-match` string, nullable

## Response `200`

Analytics for the range. ETag identifies the cached response.

- AccountOverview
  - `range` AnalyticsRange, required
    - `start` string, date, required: First day of the range, inclusive, in timezone
    - `end` string, date, required: Last day of the range, inclusive, in timezone
    - `days` integer, required
    - `timezone` string, required: IANA name of the timezone the days are counted in; UTC unless the request named one
  - `filters` AnalyticsFilters, required
    - `channel` string, nullable, required: The channel filter applied: direct | organic_search | paid_search | organic_social | paid_social | email | sms | affiliate | display | paid_other | referral | ai_assistant | other | shared_results; null for all
    - `device` string, nullable, required: The device filter applied: mobile | tablet | desktop; null for all
    - `new_returning` string, nullable, required: The visitor filter applied: new | returning; null for all
    - `country` string, nullable, required: The country filter applied, ISO 3166-1 alpha-2; null for all
  - `freshness` Freshness, required
    - `as_of` string, date-time, nullable, required: When the numbers for past hours were last brought up to date, UTC ISO 8601; today's visits and orders are always counted live; null before the first update
    - `next_refresh_at` string, date-time, nullable, required: When the next update is due, UTC ISO 8601; null when none is scheduled or the numbers are read live
    - `stale` boolean, required
    - `pending` boolean, required: True until every update behind these numbers has run once, so they may be incomplete
    - `closed_days_through` string, date, required: The last day whose numbers are settled: yesterday in the request's timezone
    - `today_live` boolean, required
  - `series` OverviewPoint[], required
    - `views` integer, required: Visits that opened the quiz on the store, whether or not the shopper answered anything; previews are not counted
    - `starts` integer, required: Visits where the shopper answered or stepped forward at least once
    - `completions` integer, required: Visits that finished the quiz: reached its last page and answered whatever that page requires
    - `email_opt_ins` integer, required: Visits where the shopper submitted an email address
    - `phone_opt_ins` integer, required: Visits where the shopper submitted a phone number
    - `consent_denied` integer, required: Visits where the shopper had declined tracking on the store
    - `unique_viewers_approx` integer, required: An estimate of how many different people opened the quiz; someone who came back counts once
    - `orders` integer, required: Shopify orders linked to the quiz by its cart, the checkout or the email the shopper gave, by the day they were placed
    - `orders_inside_window` integer, required: Linked orders placed within the store's order-matching window after the visit began; orders of items the quiz carted count up to 90 days
    - `revenue` Money, required
      - `amount` string, required: A decimal string, as "79.97"
      - `currency` string, required: ISO 4217 code
    - `avg_time_to_complete_ms` number, nullable, required: Average milliseconds from the first answer to finishing, over visits that finished on a later page than their first answer; null without one
    - `median_time_to_complete_ms` number, nullable, required: Median milliseconds from the first answer to finishing, an estimate over visits that finished on a later page than their first answer; null without one
    - `revenue_by_bucket` ProductBucketMoney, required
      - `added_from_quiz` Money, required
        - `amount` string, required: A decimal string, as "79.97"
        - `currency` string, required: ISO 4217 code
      - `shown_bought_later` Money, required
        - `amount` string, required: A decimal string, as "79.97"
        - `currency` string, required: ISO 4217 code
      - `bought_not_shown` Money, required
        - `amount` string, required: A decimal string, as "79.97"
        - `currency` string, required: ISO 4217 code
    - `day` string, date, required
  - `totals` OverviewTotals, required
    - `views` integer, required: Visits that opened the quiz on the store, whether or not the shopper answered anything; previews are not counted
    - `starts` integer, required: Visits where the shopper answered or stepped forward at least once
    - `completions` integer, required: Visits that finished the quiz: reached its last page and answered whatever that page requires
    - `email_opt_ins` integer, required: Visits where the shopper submitted an email address
    - `phone_opt_ins` integer, required: Visits where the shopper submitted a phone number
    - `consent_denied` integer, required: Visits where the shopper had declined tracking on the store
    - `unique_viewers_approx` integer, required: An estimate of how many different people opened the quiz; someone who came back counts once
    - `orders` integer, required: Shopify orders linked to the quiz by its cart, the checkout or the email the shopper gave, by the day they were placed
    - `orders_inside_window` integer, required: Linked orders placed within the store's order-matching window after the visit began; orders of items the quiz carted count up to 90 days
    - `revenue` Money, required
      - `amount` string, required: A decimal string, as "79.97"
      - `currency` string, required: ISO 4217 code
    - `avg_time_to_complete_ms` number, nullable, required: Average milliseconds from the first answer to finishing, over visits that finished on a later page than their first answer; null without one
    - `median_time_to_complete_ms` number, nullable, required: Median milliseconds from the first answer to finishing, an estimate over visits that finished on a later page than their first answer; null without one
    - `revenue_by_bucket` ProductBucketMoney, required
      - `added_from_quiz` Money, required
        - `amount` string, required: A decimal string, as "79.97"
        - `currency` string, required: ISO 4217 code
      - `shown_bought_later` Money, required
        - `amount` string, required: A decimal string, as "79.97"
        - `currency` string, required: ISO 4217 code
      - `bought_not_shown` Money, required
        - `amount` string, required: A decimal string, as "79.97"
        - `currency` string, required: ISO 4217 code
    - `start_rate` number, nullable, required: Starts as a percentage of views, 0 to 100; null without views
    - `completion_rate` number, nullable, required: Completions as a percentage of starts, 0 to 100; null without starts
    - `aov` Money, required
      - `amount` string, required: A decimal string, as "79.97"
      - `currency` string, required: ISO 4217 code
    - `median_quiz_to_checkout_ms` number, nullable, required: Median milliseconds from the start of the visit to the order, for orders of items the quiz put in the cart; null without one or for a range over 92 days
    - `avg_quiz_to_checkout_ms` number, nullable, required: Average milliseconds from the start of the visit to the order, for orders of items the quiz put in the cart; null without one or for a range over 92 days
    - `median_came_back_to_buy_ms` number, nullable, required: Median milliseconds from the visit to the order, for orders of a product the quiz showed and the shopper added later; null without one or for a range over 92 days
    - `avg_came_back_to_buy_ms` number, nullable, required: Average milliseconds from the visit to the order, for orders of a product the quiz showed and the shopper added later; null without one or for a range over 92 days
  - `data_start` string, date, nullable, required: The first day the store has analytics numbers: its first recorded visit or order, or the day analytics was last reset; null before any

## Other responses

- `304`: If-None-Match matches the cached response; no body is sent.
- `401`: The key is missing, malformed, revoked or expired.
- `403`: The store's plan has no API access, or the key lacks the scope.
- `422`: A request parameter is invalid.
- `429`: The key's or the store's bucket is full; Retry-After says when to try again.
- `503`: Request limits could not be checked for the body, or the store's details could not be read.
- `504`: The request timed out.

---

[API](https://skmtc.dev/octaneai/apis/octane-ai-merchant-api.md) - [All operations](https://skmtc.dev/octaneai/apis/octane-ai-merchant-api/llms.txt) - [OpenAPI document](https://skmtc.dev/octaneai/apis/octane-ai-merchant-api/revisions/dc2d1aa2b7c6?raw)
