Google partners may provide structured menu data to Google through the Reservations End-to-End integration for use in the Menu section of a restaurant's placesheet on Google Maps Mobile (Android and iOS).

Menu data are ingested using the Generic feeds. Before you begin, take a few minutes to ensure that you have completed the account setup steps and read through Using the Generic feed dropbox article for an overview of the generic feed upload process and an explanation on how to configure your account for generic feed uploads.

Creating and uploading menu feeds

When creating and uploading menu feeds, keep the following in mind:

  • Follow the data specification described in the menu feed to generate the menu data files. Menu data file names should be unique between uploads. It is recommended to include a timestamp in the filename, for example, menu1_1633621547.json.
  • In the fileset descriptor, set the name field to google.food_menu. To see an example of the descriptor file contents, refer to the Descriptor File JSON sample. The names of descriptor files should be unique between uploads. It is recommended to include a timestamp in the filename, for example, descriptor_1633621547.filesetdesc.json. The descriptor file should be uploaded to the generic SFTP dropbox as part of the menu feed.
  • Menu feeds should be uploaded to the generic SFTP dropbox on a daily cadence as full refreshes.
  • Feed SFTP dropbox info can be found in the Configuration > Feeds section of the Partner Portal.
  • Selecting feed dropboxes

    Figure 1: Generic SFTP dropbox info

Working with menu item options

Menu item options can be specified using the MenuItemOption proto. Menu item options are displayed as a flat list under the menu item. See the example below.

Pricing menu items with options

Figure 2: Bread Sticks & Sauce has two menu item options: Sm and Lg

Only required menu item options are supported. A required menu item option is one that the customer must choose when ordering. For example, when ordering a pizza, size is a required option. Menu item options that are optional (i.e. "option to add avocado") are not supported.

Since menu item options are displayed as a single flat list, partners with multiple sets of required options for a single menu item (for example, a latte with size options and milk options) must decide how best to display those options in Google. Google recommends the following heuristics:

  • If only one required option set affects the price, prefer to include that option set in feeds.
  • For all other cases, it is up to the partner to determine how best to represent the menu item options. Creating long lists of options for all possible combinations of options is not recommended.

When including menu item options under a menu item either:

  • The menu item must have at least one offer with a price (for cases when the menu item options don't affect the price).
  • The menu item must have a set of options each priced equally to the total price of the item with that option selected.

The price should be provided only for the menu item or for its options, but not for both.

After menu feeds are launched, your menu feed data may be visible on the restaurant placesheet "Menu" tab. If multiple sources are providing menus for the same restaurant, the merchant can choose a preferred provider in the Google Business Profile menu editor. For more information on how a merchant can select a preferred menu provider, see Manage your menu.

The following Google surfaces display the "Menu" tab on the placesheet:

Product Device
Google Search Mobile Web
Google Search Mobile Native
Google Maps Mobile Native
Our new visual menus are viewable on mobile Google Search and the experience will be expanding to additional surfaces including desktop and Google Maps.

Example menu showing menu items with descriptions

Figure 3: An example of how menu feed content is displayed.

In order to test on desktop, use your browser developer tools to simulate a mobile device.

  1. In the Inventory View, select the merchant and click the placesheet link to view the restaurant placesheet.
  2. Open Chrome Developer Tools (right click Inspect or View -> Developer -> Developer Tools), select the mobile device type Mobile device type and refresh the page.

Best Practices

The following are best practices to follow when developing menu feeds.

  • Associate only one menu to a restaurant.
  • Provide the preferred language as the first language in the TextField. If you are sending multiple LocalizedText objects, currently just the first object in the text list is displayed to users.
  • All menu items should be added to menu sections, don't add menu items directly to the menu object.
  • Provide content using utf-8 encoding. It is not necessary to escape non-ascii characters.
  • Limit feed files or shards to 1,000 as mentioned in Using the Generic feed dropbox.