Follow the steps below to build an inventory tracking integration with the Toast platform.
To follow these instructions, you must have the following scopes:
-
config:read
-
menus:read
-
restaurants:read
-
orders:read
-
Setup
Complete initial integration setupReview and implement the instructions on the Getting Started section.
Review menu hierarchyInventory tracking depends on usage of menu items. To understand Toast menu concepts before you begin development, review menu hierarchy information.
-
Ingredient management
Build purchase tracking functionalityRestaurants may want to compare ingredient purchases with ingredient usage to understand how much of each ingredient they discard. Your integration should have a place in which restaurants can enter the date they purchased an ingredient and the volume they purchased. It should also allow restaurants to record when they discarded the remainder of an ingredient.
Retrieve menu itemsUse Toast's menus API to retrieve all menu items that the restaurant sells. Your inventory functionality should allow restaurant administrators to map recipes to menu items using the recipe management functionality you build
Build recipe management functionalityRestaurants may want to report on specific ingredient volumes and sales. For example, your integration's functionality should allow restaurant administrators to record that a ham and cheese sandwich requires bread, ham, and cheese. Then when a guest orders a ham and cheese sandwich, your reports can reflect the amount of bread, ham, and cheese that a ham and cheese sandwich the restaurant used in this sale.
Build close-out inventory entryRestaurants often want to record the total volume of each ingredient that remains at the end of the day. Your integration should have close-out inventory entry functionality that allows restaurants to record this information. This functionality should also evaluate how much of each ingredient was wasted. For example, if a restaurant has 50 burger patties at the beginning of the day, sells 30 hamburgers, and has 18 patties at close-out, your integration should record that there were two patties lost.
-
Sales reporting
Determine closeout hourThe
closeoutHour
value in theGeneral
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 thecloseoutHour
.Consider Daylight Savings Time when interacting with the closeout hour.
Plan your displayThe following table provides suggested information that you can display in different types of inventory reports. For more information about the difference between orders, checks, item selections, and payments, see Orders API overview.
Object
Values
Orders
Consider displaying the following reporting information for orders:
-
Order source
-
Opened date
-
Paid date
-
Closed date
-
Voided status
Checks
Consider displaying the following reporting information for checks:
-
Display number
-
Tab name
-
Total amount
-
Refunded amount
-
Applied discount name(s)
-
Applied discount amount(s)
Menu item selections
Consider displaying the following reporting information for item selections:
-
Menu item name (use
displayName
value onSelection
object) -
Applied modifier names (modifiers may be nested arbitrarily deep on a menu item)
-
Price
-
Applied discount name(s)
-
Applied discount amount(s)
-
Sales category name
-
Menu item tags
-
Menu item SKU
Payments
By reporting on payments, you help restaurant administrators understand their profit margins on ingredients and menu items. Consider displaying the following reporting information for payments:
-
Amount
-
Refund information
-
Type
-
Payment status
Set up a recurring order retrievalRetrieve all orders from the previous day using the
/ordersBulk
endpoint of the orders API. See Getting detailed information about multiple orders for more information. Use thestartDate
andendDate
query parameters to retrieve orders by theirmodifiedDate
timestamp.Consider a one-time historical order backfill per locationConsider loading historical order information for each restaurant location one time when that location starts using your integration. Toast support recommends retrieving twelve weeks of historical data.
Retrieve restaurant configuration informationConsider including the configuration information shown in the table below in your inventory 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 you receive when polling the configuration API, use the
lastModified
query parameter so that you only retrieve entities modified after the specified timestamp. In addition, 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.Add additional business logicConsider suppressing voided orders from your reports by default and allowing users to actively choose to display these transactions. Use the
voided
value on anOrder
object to determine if an order was voided.Track sales across enterprise groupsMany restaurant groups the enterprise module of the Toast platform to share entities across many locations. To track sales of the same item across multiple restaurant locations, use the
masterId
value in the menus API to tie sales together across locations. For more information, see multiLocationId values.Build your inventory report display and summariesAfter building a basic data warehouse display of transactional data, consider summarizing inventory and sales in any of the following ways:
-
Inventory data:
-
Total sales per ingredient in dollars or currency value
-
Profit margin per ingredient
-
Total volume of each ingredient used
-
Wastage per ingredient
-
-
Sales data:
-
Overall sales value in dollars or currency value
-
Total number of orders
-
Total sales per sales category
-
Total sales per item tag
-
-
-
Predictive capabilities
Evaluate future purchase decisionsYour integration will be particularly helpful for restaurants if you use the data you mine to produce advice about the inventory purchases they should make in the future. Is the restaurant about to run out of flour? Should they stock up on burgers on Fridays if burgers tend to sell well on Saturdays? Should they remove a certain item from their menu if it has not sold well in months? Are they undercharging for avocados? Consider how you can help restaurants make smart purchase decisions in the future and make optimal use of their current inventory today.
Congratulations on building an inventory tracking integration, allowing restaurants to stay aware of their ingredient usage and potential cost savings.