# Onboarding process

This article covers the process of enabling the menu API for your account and
integrating with it. Below is a detailed overview of the onboarding process
and launch prerequisites. Please reference this page when planning the
integration effort.

![Menu onboarding process](https://developers.google.com/static/actions-center/images/menu-onboarding-process.png)
**Figure 1:** Onboarding process

<br />

The onboarding process consists of three stages:

1. Setup - account configuration and planning of the development process.
2. Development - data feed development and testing.
3. Launch - data evaluation before the launch.

## Setup


On this stage it is important to confirm that your account on [Partner Portal](https://partnerdash.google.com/apps/reservewithgoogle) is fully configured and ready to accept data feeds relevant
for static menu data. If you have an existing active OwG Redirect or RwG
integration to which you are adding the menus metadata, then your existing
account will be reused for this integration. In cases with OwG Direct
integration on this platform or no integration at all, a new account is
created and the access details are shared over email.


Access your account on the [Partner Portal](https://partnerdash.google.com/apps/reservewithgoogle) and navigate to the feeds
configuration page
[Configuration \> Feeds](https://partnerdash.google.com/apps/reservewithgoogle/configuration/feeds). There are two SFTP servers relevant for menu data feed integration:
**Generic** and **Merchants** . Please check that both SFTP servers have the
SSH public key configured. For more information on how to configure SSH keys,
see
[this page](https://developers.google.com/actions-center/verticals/reservations/waitlists/integration-steps/setup).

> [!NOTE]
> **Note:** If your account has an active OwG Redirect or RwG integration, the Entity feed or Merchants should be already fully implemented for that integration. Ensure that all restaurants in the menu feed are listed in the Entity feed or Merchants feed.


The
[Generic SFTP server](https://developers.google.com/actions-center/verticals/reservations/waitlists/add-ons/add-menus/generic-sftp)
can accept various feeds that can follow different data schemas. The feed type
accepting structured menu data is named `google.food_menu` and it
is usually enabled for your account by default at the start of your
onboarding. In case you attempt to submit a feed and see this error message -
*"Feed processing failed. We ran into an internal problem while parsing your feed. 'google.food_menu' is not enabled. Please fix and try again."*, please reach out to your Google point of contact to enable this feed type.


Lastly, please navigate to the
[Configuration \> Contact Information](https://partnerdash.google.com/apps/reservewithgoogle/contactinformation)
page and make sure all your contact details are up to date.

## Development


The development stage contains the main part of the implementation effort -
generating and testing the data feeds. Data feeds have to be created and
submitted to the target SFTP server every day. Feeds submitted are expected to start
processing within an hour after submission. Refer to the data feed
[specification](https://developers.google.com/actions-center/verticals/reservations/waitlists/add-ons/add-menus/menus-feed)
and
[samples](https://developers.google.com/actions-center/verticals/reservations/waitlists/add-ons/add-menus/menus-feed#samples)

when working on generating your feeds. Although the specification is presented
in protobuf format, we recommend uploading feed files in JSON format, because
it is easier to troubleshoot. For that reason the
[feed samples](https://developers.google.com/actions-center/verticals/reservations/waitlists/add-ons/add-menus/menus-feed)
are also provided in JSON format.


One data feed file can be tested quickly using the
[feed validator](https://developers.google.com/actions-center/verticals/reservations/waitlists/add-ons/add-menus/menu-feed-validator)
online tool that verifies if that file corresponds to the specification. The
tool shows whether the file matches the data schema and if not - it outputs
the list of errors. In order to test an entire data feed that consists of
multiple files, upload that feed in the sandbox environment and after the
ingestion is completed, see the results on the [Partner Portal](https://partnerdash.google.com/apps/reservewithgoogle). During the
feed ingestion there are additional validation rules applied to test some
business logic and the quality of data.

![Feed ingestion results](https://developers.google.com/static/actions-center/images/menu-ingestion-results.png)
**Figure 2:** Feed ingestion results

<br />

> [!NOTE]
> **Note:** The `google.food_menu` feed relies on the Merchants or Entity feed in order to associate the menu with the right restaurant. The Entity or Merchant must be correctly matched to a location on Google. For more details see [Merchant Matching and Testing](https://developers.google.com/actions-center/verticals/reservations/waitlists/partner-portal/inventory/merchant-matching) and [Matching guidelines](https://developers.google.com/actions-center/verticals/reservations/waitlists/partner-portal/inventory/merchant-matching-guidelines) articles.

## Launch


The launch stage can be initiated after all integration work is complete and
the production feed reflects correctly the entire inventory of restaurant
menus.

### Launch prerequisites

These conditions have to be met for the integration to launch:

- Data feeds are processed in production environment with 0 errors.
- The production data feed contains the full inventory scoped for this integration at the start of this integration.
- The majority of your merchant data matches with Google Maps locations.
- The production feeds passed data quality evaluation.
- The integration meets all [Food Menu Policies and Requirements](https://developers.google.com/actions-center/verticals/reservations/waitlists/policies/integration-policies#food-menu-policy).

### Data evaluation


After the production data feeds are being ingested without errors, there may
be an internal process to evaluate the quality of menu data. This process aims
to find inconsistencies in the data quality, such as non food related content
in dish descriptions, mismatch in dish names, prices etc. In case of such
findings the feedback will be shared with the development team.