Follow the steps below to build an analytics integration with the Toast platform.
This integration allows you to provide restaurants with detailed information about sales, labor, inventory, and more.
To follow these instructions, you must have the following scopes:
- 
                                 config:read
- 
                                 restaurants:read 
- 
                                 menus:read 
- 
                                 orders:read 
- 
                                 labor.employees:read 
- 
                                 labor:read 
- 
                                 cashmgmt:read 
You can retrieve a list of your current scopes through your Toast developer portal account. If you lack the required scopes, refer to the Integration partnership process guide for instructions on requesting access.
Review and implement the instructions in How to build a Toast integration.
Use the configuration API to retrieve necessary configuration information you need to build your analytics capabilities. For example, retrieving a list of the dining options for a restaurant so that you can provide human-readable dining option names when presenting information from the orders API.
Use the restaurants API to retrieve general information about the configuration of a restaurant.
To ensure you have the latest restaurant configuration, poll the configuration API and the restaurants API once per restaurant location per day, and update configuration information in your system based on anything that was added, updated, or deleted.
Integrations consuming order information will rely on the 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 successfully retrieve information relevant to orders, familiarize yourself with the structure of an order by reading the Orders API overview and Order object summary. For more information about the orders API, see the reference documentation.
To report on cash transactions, you need to retrieve cash entries and deposits once per day.
- 
                                    For cash entries, use the businessDateparameter of the/entriesendpoint of the cash management API.
- 
                                    For deposits , use the businessDateparameter of the/depositsendpoint of the cash management API.
To display additional information associated with cash transactions, query the following configuration API endpoints at least once per day:
- 
                                    /cashDrawers
- 
                                    /noSaleReasons
- 
                                    /payoutReasons
In addition, query the /employees endpoint
                                    of the labor API at least once per day to retrieve information about the
                                    employees associated with cash transactions.
                           
To report on order information, use the orders updated webhook to receive order updates as they occur.
| Note | 
| You can also use the  | 
To ensure you have the latest menu information, use the menus
                                    webhook or query the /metadata endpoint of the menus API
                                    throughout the day. For more information about understanding menu
                                    updates, see Menus
                                       webhook.
                           
Retrieve a new menu when you determine that your existing menu is outdated.
In addition, query the following configuration API endpoints at least once a day:
- 
                                    /alternativePaymentTypes
- 
                                    /diningOptions
- 
                                    /discounts
- 
                                    /restaurantServices
- 
                                    /revenueCenters
- 
                                    /salesCategories
- 
                                    /serviceCharges
- 
                                    /taxRates
- 
                                    /tipWithholding
- 
                                    /voidReasons
When a restaurant first connects to your integration, they may expect to see some historical information already displayed in your system. Define how many days of historical orders and cash transactions you retrieve when a restaurant first connects to your integration.
To retrieve the orders for these days, use either the
                                    businessDate or startDate and endDate
                                    parameters of the /ordersBulk endpoint of the orders API.
                                    
                           
Toast support recommends retrieving twelve weeks of historical and orders when a restaurant first connects to your integration.
Ensure your integration adheres to the endpoint specific
                                    rate-limit for the /ordersBulk endpoint when retrieving order data. For
                                    more information about Toast rate limits, see Rate
                                       limiting.
                           
When retrieving cash transaction or order information, you need to determine the closeout hour of the restaurant.
The closeoutHour value in the General
                                    object returned by the restaurants API contains the restaurant’s
                                    closeout hour. 
                           
The default closeout hour is 4:00am local time unless a Toast
                                    employee changes this setting. The businessDate value on
                                    order entities changes after the closeoutHour. 
                           
Consider daylight savings time when interacting with the closeout hour.
For more information, see the API reference.