Follow the steps below to build a data warehouse integration with Toast.
This type of integration provides restaurants with greater visibility into key information that will help them run their business.
This document describes how to build a general data warehouse. For more detailed information about how to report on specific types of data, see Building a sales report and Building labor reports.
To follow these instructions, you must have the following scopes:
-
cashmgmt:read
-
config:read
-
labor.employees:read
-
labor:read
-
menus:read
-
restaurants:read
-
orders:read
Review and implement the instructions in How to build a Toast integration.
The closeoutHour
value in the General
object returned by the restaurants API contains the
restaurant's closeout hour.
The default closeout hour is 4:00 a.m. local time unless a Toast
employee changes this setting. The businessDate
value on API
data changes after the closeoutHour
.
Consider daylight savings time when interacting with the closeout hour.
Reporting on sales depends on restaurants' usage of menu items and the overall structure of orders.
To understand Toast menu concepts before you begin development, review menu hierarchy information.
To review order structure, see Orders API overview.
The following table provides suggested information that you can display in different types of reports. For more information about the difference between orders, checks, menu item selections, and payments, see Orders API overview.
Report type |
Object |
Values |
---|---|---|
Order data |
Orders |
Consider displaying the following reporting information for orders:
|
Checks |
Consider displaying the following reporting information for checks:
|
|
Menu item selections |
Consider displaying the following reporting information for menu item selections:
|
|
Payments |
Consider displaying the following reporting information for payments:
|
|
Cash transactions |
Cash entries |
Consider displaying the following reporting information for cash entries:
|
Deposits |
Consider displaying the following reporting information for cash deposits:
|
|
Labor data |
Time entries |
Consider displaying the following reporting information for time entries:
|
After you decide what to display in your reports, build a retrieval of transactional information. Below are recommendations for how to retrieve transactional data.
Information type |
Transactional information |
Additional information |
||
---|---|---|---|---|
Orders |
Retrieve all orders from the previous day using the
|
Use the |
||
Payments |
Retrieve all payments from the previous day using the
|
Use the Retrieve payments at least six
hours after the restaurant's |
||
Time entries |
Retrieve all time entries from the previous day using
the |
Use the |
||
Cash transactions |
Retrieve all cash transactions from the previous
business day using the |
Use the cash management API to retrieve all cash transactions from the previous business day, such as when employees open the cash drawer, add cash to the cash drawer, and retrieve their day's tips in cash. |
Consider loading historical order information for each restaurant location one time when that location begins to use your integration.
Toast support recommends retrieving twelve weeks of historical data.
Consider including the configuration information shown in the table below in your reporting integration. After deciding which configuration information you want to display, set up a daily poll to the configuration API and menus API to retrieve it.
To reduce the amount of data that you receive when you poll the configuration API:
-
Use the
lastModified
query parameter so that you only retrieve entities modified after the specified timestamp. -
Only retrieve a new menu when you determine that your existing menu is outdated. For more information about when to retrieve a new menu, see Determining if a restaurant's menu data has gone stale.
Consider including the following configuration in your analytics integration.
Information type |
Configuration |
Additional information |
---|---|---|
Reporting categories |
Revenue centers from the configuration API. More information Sales categories from the configuration API. More information |
See Toast Central for more information about revenue centers and sales categories. |
Order configuration |
Alternative payment types from the configuration API. More information Dining options from the configuration API. More information Discounts from the configuration API. More information Service charges from the configuration API. More information Tax rates from the configuration API. More information |
These pieces of configuration are often associated with orders. They describe how the order was placed and how its price was calculated. |
Menu information |
Menu information, such as menu group names, menu item names, and item tags from the menus API. |
The menus API returns menu item names and other menu-related information you may want to display in your reporting platform. |
Restaurant information |
Restaurant services from the configuration API. More information Service areas from the configuration API. More information Tables from the configuration API. More information |
This restaurant information allows your integration to report on when and where orders were placed in your restaurant. See Toast Central for more information about hours and services and service areas and tables. |
Cash configuration |
Cash drawers from the configuration API. More information No sale reasons from the configuration API. More information Payout reasons from the configuration API. More information Void reasons from the configuration API. More information |
Cash configuration allows you to display metadata about the cash transactions at a restaurant. For more information about working with cash entries, see Cash management overview. |
Labor configuration |
Break types from the configuration API. More information Employees from the labor API. More information Jobs from the labor API. More information |
This labor information allows you to display information about restaurant employees, the jobs they do, and the breaks they take. |
Consider suppressing voided orders and deleted time entries from your reports by default. Allow users to actively choose to display these transactions.
Use the voided
value on an Order
object to
determine whether an order was voided.
Use the deleted
value on TimeEntry
objects
to determine whether a time entry was deleted.
After you build a basic data warehouse display of transactional data, consider summarizing Toast information in any of the following ways:
- Order data
-
-
Total sales value
-
Total number of orders
-
Total sales per dining option behavior
-
Total sales per revenue center
-
Total sales per sales category
-
Total sales per item tag
-
Total sales per service period (such as lunch or dinner)
-
Total amount discounted from all orders
-
Total amount discounted as a percentage of total sales
-
Number of voided orders
-
Number of voided orders as a percentage of all orders
-
- Labor data
-
-
Number of total labor hours
-
Total spent on labor
-
Missed breaks
-
- Cash data
-
-
Cash transactions by type
-
Cash drawer value
-