> ## Documentation Index
> Fetch the complete documentation index at: https://storekit.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Explore: Build Your Own Sales Report

> Use Explore in the storekit dashboard to compare orders, revenue, refunds, channels, stores and service times with custom charts and date ranges.

Explore lets you build a sales report by choosing a measure, a breakdown, a time interval and filters. Open it from **Analytics** → **Explore** in the dashboard sidebar.

<video autoPlay muted loop playsInline controls src="https://mintcdn.com/storekit/YinHNTwOVfTj8j5d/videos/explore-walkthrough.mp4?fit=max&auto=format&n=YinHNTwOVfTj8j5d&q=85&s=9f0ec1e9f7e90bc71c8b09d2d0a67c75" />

The walkthrough steps through Peak hours, busiest day, delivery vs pickup by week, average order value by channel, and pre-order vs ASAP by day in a pivot, then copies the link.

## What Explore Can Answer

* Which day of the week or hour has the most orders or revenue.
* When order activity peaks across the week, using a day-by-hour heatmap.
* How revenue, order value, refunds or service times vary by store, channel, fulfilment or order timing.
* How a measure changes by hour, day, week or month.
* Which orders make up a value in a table, by opening its order drilldown.

## The Controls

| Control | What it does |
| - | - |
| **What to show** | Groups the measure, breakdown and time-interval controls. |
| **Measure** | Chooses the number shown in the chart and table. The fixed list is in [Measures](#measures). |
| **Split by** | Breaks the result into groups such as stores or days of the week. Choose **No breakdown** to leave it unsplit. |
| **Then split by** | Adds a second breakdown when the selected **Split by** value supports one. Choose **No secondary** to leave it unset. The allowed combinations are listed below. |
| **Show per** | Sets the time interval for time-based views: **Hour**, **Day**, **Week** or **Month**. |
| **Only include** | Filters by **Store**, **Fulfillment** or **Channel**. Leaving a filter empty includes all values. |
| **Count orders by** | Switches between **Order date** and **Due date**. **Order date** is the default. **Order date** counts an order on the day it was placed; **Due date** counts pre-orders on the day they are due, with days starting at 5 AM. |
| Date range picker | Chooses a preset period or a custom date range. The comparison picker beside it offers comparisons supported by that period. |
| **Chart** | Changes the chart type. **Heatmap** is available only when the two breakdowns are **By Day of Week** and **By Hour of Day**, in either order. |
| **Customize** | Opens the controls on smaller screens. On larger screens, the controls remain visible beside the chart and table. |
| **Options** | Contains the **Count orders by** setting. |
| **Reset** | Resets the measure, breakdowns, chart, order-date mode, table view and filters. It does not reset the period or comparison. |
| **Copy link** | Copies a URL for the current report settings, including the store selection and custom date-range boundaries. |
| **Table** / **Pivot** | Switches the results table. **Pivot** appears when a valid second breakdown is selected and shows both breakdowns. |
| **Export CSV** | In **Table** view, downloads the data table as a CSV file. |

Click a data-table row to open the matching orders in a drilldown panel.

## Fixed Options

### Measures

The **Measure** list is fixed at 14 options.

| Measure | URL value | Notes |
| - | - | - |
| **Revenue** | `gross_revenue` | |
| **Orders** | `active_order_count` | |
| **Avg Order Value** | `avg_order_value` | |
| **Discounts** | `gross_discount` | |
| **Refunds** | `refund_amount` | |
| **Refund Count** | `refund_count` | Number of refund transactions, not refunded orders. |
| **Refund Rate** | `refund_rate` | Refund transactions as a share of orders. An order refunded more than once counts once for each refund. |
| **Rejection Rate** | `rejection_rate` | Percentage of orders rejected by the venue. |
| **Avg Acceptance Time** | `avg_acceptance_time` | Average time from order placement to venue acceptance (minutes). |
| **Avg Completion Time** | `avg_completion_time` | Average time from acceptance to completion (minutes). Orders without a completion time are excluded. |
| **Items per Order** | `items_per_order` | Average number of line items per order. |
| **Tips** | `active_total_tip` | |
| **Delivery Fees** | `active_total_delivery_fee` | |
| **Service Charges** | `active_total_service_charge` | |

### Breakdowns

The **Split by** list is fixed:

| Breakdown | URL value |
| - | - |
| **No breakdown** | `none` |
| **By Fulfillment** | `fulfillment` |
| **By Channel** | `channel` |
| **By Store** | `venue` |
| **By Pre-order / ASAP** | `order_timing` |
| **By Basket Size** | `basket_size` |
| **By Day of Week** | `day_of_week` |
| **By Hour of Day** | `hour_of_day` |

**Then split by** is limited to these fixed combinations:

| Split by | Then split by |
| - | - |
| **By Fulfillment** | **By Channel**, **By Store**, **By Pre-order / ASAP**, **By Day of Week** |
| **By Channel** | **By Fulfillment**, **By Store**, **By Pre-order / ASAP**, **By Day of Week** |
| **By Store** | **By Fulfillment**, **By Channel**, **By Pre-order / ASAP** |
| **By Pre-order / ASAP** | **By Fulfillment**, **By Channel**, **By Store** |
| **By Basket Size** | **By Fulfillment**, **By Channel**, **By Store** |
| **By Day of Week** | **By Hour of Day**, **By Fulfillment**, **By Pre-order / ASAP** |
| **By Hour of Day** | **By Day of Week** |

**No breakdown** has no second-breakdown options.

The **Then split by** selector also has a fixed **No secondary** option.

### Charts and Time Intervals

The fixed chart types are **Line**, **Bar**, **Stacked**, **Area** and **Heatmap**. **Heatmap** is enabled only for the **By Day of Week** and **By Hour of Day** pair. The chart shows the chosen measure in each weekday-and-hour cell.

The fixed **Show per** intervals are:

| Label | URL value |
| - | - |
| **Hour** | `hour` |
| **Day** | `day` |
| **Week** | `week` |
| **Month** | `month` |

### Fulfillment and Channel Filters

The **Fulfillment** filter has these fixed options: **Delivery**, **Pickup**, **In-Store**, **Curbside**, **Catering Delivery** and **Catering Pickup**.

The **Channel** filter has these fixed options: **Web**, **App** and **Kiosk**.

### Periods and Comparisons

The date-range picker has these fixed preset periods, as well as **Custom range**:

| Period label | URL value |
| - | - |
| **Today** | `today` |
| **Yesterday** | `yesterday` |
| **Last 7 days** | `7d` |
| **Last 14 days** | `14d` |
| **Last 30 days** | `30d` |
| **Last 90 days** | `90d` |
| **Last 365 days** | `365d` |
| **All time** | `allTime` |
| **Week to date** | `weekToDate` |
| **Month to date** | `monthToDate` |
| **Quarter to date** | `quarterToDate` |
| **Year to date** | `yearToDate` |
| **Last week** | `lastWeek` |
| **Last month** | `lastMonth` |
| **Last quarter** | `lastQuarter` |
| **Last year** | `lastYear` |
| **Custom range** | `custom` |

The comparison choices depend on the selected period. These lists are fixed:

| Period | Comparison choices |
| - | - |
| **Today** or **Yesterday** | **No comparison** (`none`), **Previous day** (`previous`), **Same day last week** (`week`), **Same day 4 weeks ago** (`month`), **Same day last year** (`year`) |
| **Last 7 days**, **Last week** or **Week to date** | **No comparison** (`none`), **Previous week** (`previous`), **4 weeks ago** (`month`), **Same week last year** (`year`) |
| **Last 14 days**, **Custom range** or any other period | **No comparison** (`none`), **Previous period** (`previous`), **4 weeks ago** (`month`), **Previous year** (`year`) |
| **Last 30 days**, **Last month** or **Month to date** | **No comparison** (`none`), **Previous period** (`previous`), **4 weeks ago** (`month`), **Same month last year** (`year`) |
| **Last 90 days**, **Last quarter** or **Quarter to date** | **No comparison** (`none`), **Previous period** (`previous`), **Previous quarter** (`quarter`), **Same quarter last year** (`year`) |
| **Last 365 days**, **Last year** or **Year to date** | **No comparison** (`none`), **Previous period** (`previous`), **Previous year** (`year`) |
| **All time** | **No comparison** (`none`) |

The default comparison value is `month`. For a 30-day period, it compares the selected dates with the same dates shifted back 28 days—an earlier period, not a calendar month. If that comparison is not available for the chosen period, Explore uses **No comparison**.

## Built-In and Saved Views

Explore includes four built-in views:

| View | What it shows |
| - | - |
| **Overview** | The default revenue view. |
| **Peak hours** | **Orders** split by **By Day of Week** and **By Hour of Day**, shown as a heatmap. |
| **Channels** | Results split by **By Channel**, shown per **Week**. |
| **Stores** | Results split by **By Store**, shown per **Week**. |

The **Peak hours** built-in view displays a heatmap of orders by day and hour:

![Peak hours heatmap of orders by day and hour in Explore](https://mintcdn.com/storekit/YinHNTwOVfTj8j5d/images/explore/peak-hours.png?fit=max\&auto=format\&n=YinHNTwOVfTj8j5d\&q=85\&s=a10b71ef0f8503bce03667948b056eb9)

Use **+ Save view** to save the current measure, breakdowns, filters, chart and other report settings under a name. Saved views are stored in this browser for the signed-in user; they are not shared with teammates. A saved view keeps its report settings but not the date period or comparison, so applying it leaves the current period and comparison in place.

## Questions You Can Answer

Each link opens a report with the listed settings. These examples use the most recent 90 days.

| Question | Settings | Ready view |
| - | - | - |
| Which day of the week is busiest? | Measure **Orders**; **By Day of Week**; **Bar**. | [Open orders by weekday](https://dashboard.storekit.com/sales?measure=active_order_count\&breakdown=day_of_week\&chart=bar\&period=90d\&compare=none) |
| Which hour is busiest? | Measure **Orders**; **By Hour of Day**; **Bar**. | [Open orders by hour](https://dashboard.storekit.com/sales?measure=active_order_count\&breakdown=hour_of_day\&chart=bar\&period=90d\&compare=none) |
| When are the peak hours across the week? | Measure **Orders**; **By Day of Week**, then **By Hour of Day**; **Heatmap**. | [Open the peak-hours heatmap](https://dashboard.storekit.com/sales?measure=active_order_count\&breakdown=day_of_week\&secondary=hour_of_day\&chart=heatmap\&period=90d\&compare=none) |
| How does delivery compare with pickup by week? | Measure **Revenue**; **By Fulfillment**; **Show per Week**; **Stacked**; include **Delivery** and **Pickup**. | [Open the delivery and pickup trend](https://dashboard.storekit.com/sales?measure=gross_revenue\&breakdown=fulfillment\&group=week\&chart=stacked\&fulfillment=Delivery%2CPickup\&period=90d\&compare=none) |
| How does average order value vary between kiosk, web and app orders? | Measure **Avg Order Value**; **By Channel**; **Show per Week**; **Line**. | [Open average order value by channel](https://dashboard.storekit.com/sales?measure=avg_order_value\&breakdown=channel\&group=week\&chart=line\&period=90d\&compare=none) |
| Which stores are performing differently over time? | Measure **Revenue**; **By Store**; **Show per Week**; **Line**. | [Open the store comparison](https://dashboard.storekit.com/sales?measure=gross_revenue\&breakdown=venue\&group=week\&chart=line\&period=90d\&compare=none) |
| How long do orders take to accept or complete on each weekday? | Measure **Avg Acceptance Time** or **Avg Completion Time**; **By Day of Week**; **Bar**. | [Open acceptance time by weekday](https://dashboard.storekit.com/sales?measure=avg_acceptance_time\&breakdown=day_of_week\&chart=bar\&period=90d\&compare=none) · [Open completion time by weekday](https://dashboard.storekit.com/sales?measure=avg_completion_time\&breakdown=day_of_week\&chart=bar\&period=90d\&compare=none) |
| Which channel has the highest refund rate? | Measure **Refund Rate**; **By Channel**; **Show per Week**; **Line**. | [Open refund rate by channel](https://dashboard.storekit.com/sales?measure=refund_rate\&breakdown=channel\&group=week\&chart=line\&period=90d\&compare=none) |
| How do pre-orders and ASAP orders vary by weekday? | Measure **Orders**; **By Day of Week**, then **By Pre-order / ASAP**; switch the table to **Pivot**. | [Open pre-orders and ASAP by weekday](https://dashboard.storekit.com/sales?measure=active_order_count\&breakdown=day_of_week\&secondary=order_timing\&view=pivot\&period=90d\&compare=none) |
| How does order volume vary by basket size? | Measure **Orders**; **By Basket Size**; **Bar**. | [Open orders by basket size](https://dashboard.storekit.com/sales?measure=active_order_count\&breakdown=basket_size\&chart=bar\&period=90d\&compare=none) |
| How do tips and service charges change over time? | Measure **Tips** or **Service Charges**; **No breakdown**; **Show per Week**; **Line**. | [Open tips over time](https://dashboard.storekit.com/sales?measure=active_total_tip\&group=week\&chart=line\&period=90d\&compare=none) · [Open service charges over time](https://dashboard.storekit.com/sales?measure=active_total_service_charge\&group=week\&chart=line\&period=90d\&compare=none) |

The busiest-day recipe above displays orders by day of the week as a bar chart:

![Orders by day of week as a bar chart in Explore](https://mintcdn.com/storekit/YinHNTwOVfTj8j5d/images/explore/busiest-day.png?fit=max\&auto=format\&n=YinHNTwOVfTj8j5d\&q=85\&s=a0a500564101e1e2e7b9bda56440f515)

## Linking to a Pre-Filled View

The dashboard URL is `https://dashboard.storekit.com/sales`. In-dashboard links use the path form `/sales?…`. Query values are case-sensitive.

| Parameter | Allowed values and default | Invalid-value behaviour |
| - | - | - |
| `period` | The preset values in [Periods and Comparisons](#periods-and-comparisons); default `30d`. | The value is not validated. An unknown period falls back to a 30-day date range. A valid `from` and `to` pair takes precedence. |
| `compare` | Use the value in brackets next to each label in [Periods and Comparisons](#periods-and-comparisons); default `month`. | Validated for the selected period. An unsupported value falls back to **No comparison**. |
| `stores` | Comma-separated venue IDs for one or more stores; omit it to include all stores. | Unknown IDs are dropped. If no IDs are valid, all stores are included. |
| `from` | Start of a custom date range in `YYYY-MM-DD` format. Use it with `to`; the start must be on or before the end. | An invalid, one-sided or reversed date range is ignored; the selected `period` applies instead. |
| `to` | End of a custom date range in `YYYY-MM-DD` format. Use it with `from`; the end must be on or after the start. | An invalid, one-sided or reversed date range is ignored; the selected `period` applies instead. |
| `measure` | The `URL value` entries in [Measures](#measures); default `gross_revenue`. | Not validated. Use only the listed values. |
| `breakdown` | The `URL value` entries in [Breakdowns](#breakdowns); default `none`. | Not validated. Use only the listed values. |
| `secondary` | `none` or a value allowed for the selected breakdown in [Breakdowns](#breakdowns); default `none`. | Not validated as a query parameter. Use only a listed pair. |
| `group` | `hour`, `day`, `week` or `month`; default follows the selected period. | Unknown values are dropped, so the period's default interval is used. |
| `chart` | `line`, `bar`, `stacked`, `area` or `heatmap`; default `line`. | Not validated. Use only the listed values; `heatmap` requires the weekday-and-hour pair. |
| `fulfillment` | Comma-separated: `Delivery`, `Pickup`, `InStore`, `Curbside`, `CateringDelivery`, `CateringPickup`; default no filter. | Unknown values are dropped; valid values remain. |
| `channel` | Comma-separated: `Web`, `App`, `Kiosk`; default no filter. | Unknown values are dropped; valid values remain. |
| `store` | `online`, `dineIn` or `catering` for every store of that type (the **Quick select** options), or comma-separated store IDs; default all stores. | Store IDs outside the account are dropped; valid IDs remain. Ignored when `stores` is also in the link. |
| `mode` | `transactional` or `operational`; default `transactional`. These select **Order date** and **Due date**, respectively. | Not validated. Only the exact value `operational` activates **Due date**; other values behave as **Order date**. Use one of the two listed values. |
| `view` | `table` or `pivot`; default `table`. | Not validated. Use only the listed values. **Pivot** needs a valid second breakdown; other values render the standard table. |

Use `stores` with comma-separated venue IDs to keep a store selection in the link. Use `from` and `to` together to keep a custom date range.

Select **Copy link** in the controls to copy the current report URL. In the second example, replace `12345` with the venue ID for your store.

```text theme={null}
https://dashboard.storekit.com/sales?measure=active_order_count&breakdown=day_of_week&chart=bar&period=90d&compare=none
https://dashboard.storekit.com/sales?measure=active_order_count&breakdown=day_of_week&chart=bar&stores=12345&from=2026-10-01&to=2026-10-31&compare=none
https://dashboard.storekit.com/sales?measure=active_order_count&breakdown=day_of_week&secondary=hour_of_day&chart=heatmap&period=90d&compare=none
https://dashboard.storekit.com/sales?measure=gross_revenue&breakdown=fulfillment&group=week&chart=stacked&fulfillment=Delivery%2CPickup&period=90d&compare=none
https://dashboard.storekit.com/sales?measure=avg_order_value&breakdown=channel&group=week&chart=line&period=90d&compare=none
https://dashboard.storekit.com/sales?measure=active_order_count&breakdown=day_of_week&secondary=order_timing&view=pivot&period=90d&compare=none
```

## What Explore Does Not Do

Explore has no product-, category- or menu-item-level measures or breakdowns. For sales by product or category, open **Analytics** → **Reports** and choose **Products** or **Categories**; see [Sales Reports](https://storekit.com/docs/guides/reports/sales-reports.md).

Explore can export the current data table with **Export CSV**, but it has no control for scheduling or emailing an export.


## Related topics

- [Sales and accounting reports in storekit](https://storekit.com/docs/guides/reports/overview.md)
- [Sales reports: revenue, products, and order trends](https://storekit.com/docs/guides/reports/sales-reports.md)
- [Build Your Own Tools on storekit](https://storekit.com/docs/guides/build/overview.md)
- [Payout Reconciliation Sheet](https://storekit.com/docs/guides/build/recipes/payout-reconciliation.md)
- [Out-of-Stock Log and Morning Digest](https://storekit.com/docs/guides/build/recipes/out-of-stock-log.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.