This guide will be removed on April 29, 2022. Please use our new, easier-to-use Toast technical documentation site. All updated content is on the new site.

MenuItems, MenuGroups, MenuOptionGroups, and Menus

The Toast POS represents menus using the following data objects:

  • A MenuItem represents a single base product or product option. A final line item will correspond to a base MenuItem and any number of optional MenuItems made available by MenuOptionGroups associated with the base MenuItem. These MenuOptionGroups can be attached to the MenuItem itself or inherited from a MenuGroup of which the MenuItem is a member.

  • A MenuOptionGroup is a collection of optional MenuItems that modify an associated base MenuItem. For instance, a "Burger" MenuItem might have a MenuOptionGroup called "Condiments" containing "Pickle", "Cheese", and "Tomato" MenuItems. If there's only one burger on the Menu, the "Condiments" group will probably be attached directly to the "Burger" MenuItem. If the Menu contains a whole MenuGroup of various burgers, all of which can be ordered with pickles, cheese, or tomato, the MenuOptionGroup might instead be attached to the MenuGroup, and inherited by all the MenuItems in it.

  • A MenuGroup is a named logical grouping of MenuItems and MenuGroups. A MenuOptionGroup attached to a MenuGroup provides the options in that MenuOptionGroup to all MenuItems in the MenuGroup, and to any of its child MenuGroups that have the inheritOptionGroups flag set to true.

  • A Menu is the top-level representation of a group of products. A given restaurant might, for instance, have a "Lunch" Menu and a "Dinner" Menu. Menus contain any number of MenuGroups, and cannot contain MenuItems directly.

Toast also offers pre-modifiers, which can supply additional information about a modifier, and pre-modifier groups. For more information, see the reference documentation for the configuration API.