Menu Integration

Overview

This integration is used to receive menus and updates using the Menu API endpoints. Every store on an Ordering Platform must have its own individually configurable menus. A menu is constructed using the following entity types:

Menu

The Menu is the top-level entity that contains all the menu items and categories. It represents the entire set of offerings available to customers.

Use a menu to group one or more categories with corresponding category times into a single view. Most of the time there is only one menu active in a store at a time. A store can optionally have separate menus for different fulfillment types (delivery, pick-up).

Category

A Category can group one or more menu items (type=item) into a single logical section of the menu. (eg. Breakfast, Dinner). Categories help organize the menu for easier navigation.

Item

An Item represents everything that a user might select from a store (e.g. an appetizer; a can of soda; a dessert; a pizza topping; a condiment). An item can be a menu item or a modifier.

Modifier

Modifiers are options that can be added or modified for a particular menu item, like "Extra Cheese," "No Onions," or "Medium Rare." Modifiers allow customization of menu items.

Modifier Group

Modifier Group is a collection of related modifiers. For example, a "Toppings" group might include modifiers like "Pepperoni," "Mushrooms," and "Olives. "A Modifier Group, groups items together in order to be selected as a customization under a parent item (e.g. “Pizza Toppings” modifier group might have “Mushroom” and “Peppers” items as options within it). Different modifier groups can optionally leverage the same items.

Tag

Tags are labels or attributes applied to Menu Items or Categories for easier filtering or searching, like "Vegetarian," "Gluten-Free," or "Spicy."

Menu Flow

A menu has 2 flows:

  1. Menu Sync
    Grubtech's menu management functionality, does not allow any feature to change menus from the food aggregator's end to Grubtech. Menus can only be changed inside Grubtech. All partners must create the menu in grubCenter irrespective of the food aggregator they are associated with. Grubtech always pushes the menu to the food aggregator's side by syncing the menu through the Upload Menu endpoint.
  2. Item 86ing or Unavailability
    Item unavailability is done from the customer support portal (grubOps). When kitchen staff mark an item as unavailable or available this notification is pushed to the online ordering platform where the item can be removed from the menu. If not, a customer can order an unavailable item which can result in the order getting rejected. Only Grubtech is aware of the item unavailability as the kitchen staff use the customer support portal or KDS to mark an item as unavailable. Since Grubtech has the information, we will push it to an online ordering platform where it will be indicated that these items are unavailable for the specified locations. Once an unavailable item becomes available, the kitchen staff will access the customer support portal and mark it as available. That notification also will be pushed to the online ordering platform. This is performed through the Update Availability endpoint.

APIs

These 2 endpoints should be implemented on the order platform to provide the capability for gOnline to push menus and menu related updates to the order platform.

Menu Flow in an online ordering platform.

Use to push a new menu to a store using the Upload Menu endpoint. A call to this endpoint overwrites any existing menus for that store.

Use to update the availability of a single item at a store using the Update Availability endpoint. A call to this endpoint updates the status of the specified item at the specified store.

Testing Menus

Use grubCenter to create and upload your menu. Refer the section on Test Tools for more details.

  • Refer grubCenter to navigate to the grubCenter Administration Application.

If you need additional test stores and menus created for your account, you can use grubCenter to perform that action.

Testing Item Availability

Use the Virtual KDS to change the item status between available and unavailable which is also known as 86ing. Both menu items and modifiers should be tested for availability updates.

  • Refer Virtual KDS to navigate to the Grub KDS Sample Kitchen Display System.

Note About Taxes

Grubtech currently supports tax inclusive pricing only. Support for tax exclusive pricing is under development and will be released in a future update.

Avoid Manual Updates and Change Approval

To prevent data sync issues, partners who manage their store menus via Grubtech should not make updates on the Ordering Platform directly. You should not have to go through a manual change approval process to update the store menu on the Ordering Platform as well.

When going live in a production environment, work with your internal contacts and Grubtech partner manager to ensure menu integrated stores are excluded from the manual menu update processes and change approval processes. In case you encounter issues caused by a manual menu update, overwrite the menu by uploading a new menu via the API. If the issue persists, submit a technical support request for help.

Once gOnline sends a new menu or menu item update, the Ordering Platform must update the menu in real time.

🚧

Warning! Out of sync menus can cause orders to be rejected for a store. The order platform must maintain a 98% acceptance to submitted ratio to avoid being de-listed.

Avoid Long Processing Times

To prevent order processing issues, a new menu posting must be completed within 30 seconds of posting including cache invalidations. A menu item availability or pricing update should be completed within 5 seconds including cache invalidations.

🚧

Warning! Out of sync menus can cause orders to be rejected for a store. The order platform must maintain a 98% acceptance to submitted ratio to avoid being de-listed.

Next Steps

Once your menu is fully set up, see the Order Integration Guide for steps to send orders to Grubtech, and exchange status updates for orders.