# Feeds overview

## Create feeds

Feeds must be provided to Google on a regular basis for the data to be directly shown on Google.
The following feeds are needed.

| Feed | Description | Frequency |
|---|---|---|
| [Merchants](https://developers.google.com/actions-center/verticals/local-services/e2e/reference/feeds/merchants-feed) | Describes your merchants. | Once every 24 hours |
| [Services](https://developers.google.com/actions-center/verticals/local-services/e2e/reference/feeds/services-feed) | Describes services your merchants provide | Once every 24 hours |
| [Availability](https://developers.google.com/actions-center/verticals/local-services/e2e/reference/feeds/availability-feed) | Available slots for services your merchants provide. A minimum 30 days of coverage must be provided. | Once every 24 hours |

> [!NOTE]
> **Objective:** When you provide service names and descriptions, adhere to our [Content editorial guidelines](https://developers.google.com/actions-center/verticals/local-services/e2e/support#content-guidelines).

In each feed, include
[metadata](https://developers.google.com/actions-center/verticals/local-services/e2e/reference/feeds/feed-metadata) that instructs Google on how to interpret it.

> [!NOTE]
> **Note:** All feeds must be uploaded with processing_instruction `PROCESS_AS_COMPLETE`. `PROCESS_AS_INCREMENTAL` is deprecated and cannot be used.

The feeds format is described with the
[protocol buffer 3 syntax](https://developers.google.com/protocol-buffers/docs/proto3) but you can upload your feeds
as the corresponding JSON format.

Please reference the
[Feed samples](https://developers.google.com/actions-center/verticals/local-services/e2e/reference/feeds/overview) to see the JSON format.

We recommend that you upload the feeds in JSON format.

## Feed file size, sharding, and compression

Please view the following tutorials regarding compression and shards:

- [Compress feed files](https://developers.google.com/actions-center/verticals/local-services/e2e/reference/tutorials/compression)
- [Shard feed files](https://developers.google.com/actions-center/verticals/local-services/e2e/reference/tutorials/sharding)

To determine the size of the feeds, use the following guidelines (a feed can be constituted
of multiple files called "shards"):

- Suggested feed sharding:
  - Merchants feed: 1 shard
  - Services feed: 1 shard
  - Availability feed : less than 20 shards
- Size of feed files and sharding:
  - Keep shard file size below 200 MB (after compression). Use multiple shards if needed.
  - Individual records sent in one shard don't need to be sent in the same shard in future feeds.
  - For better performance, split data evenly among the shards, to make all the shard files similar in size.
  - If necessary, use gzip to compress plain text JSON feeds. However, do so for each individual feed shard.

## Upload the feeds to the SFTP Server

Upload your feeds to the sandbox environment. To do so, refer to the
usernames within the
[Partner Portal feed configuration](https://developers.google.com/actions-center/verticals/local-services/e2e/partner-portal/testing/feeds) page. The Google SFTP server is
available at `sftp://partnerupload.google.com` on port
`19321`.

> [!WARNING]
> **Warning:** Upload your feeds to the production servers only after Google has tested and confirmed your feeds in the sandbox environment.

> [!NOTE]
> **Note:** To access the sandbox, make sure that the [environment switcher](https://developers.google.com/actions-center/verticals/local-services/e2e/partner-portal/overview/environment-switcher) on the top is set to Sandbox and go to **[Inventory \> Inventory](https://partnerdash.google.com/apps/reservewithgoogle/inventory?env=sandbox)**, find a merchant that is either "Ready" or "Live (in Sandbox)" then either click on the link on the rightmost column (if available) or click on the row and click on the "RwG - E2E" link.

We recommend that you give the files you upload unique names. For instance,
it can be helpful to append each filename with a timestamp. This helps to
troubleshoot issues and query for feed status.

> [!NOTE]
> **Note:** Google processes feed files as soon as they're uploaded to the SFTP server. If the feed is sharded across multiple files, they are processed after you upload the last file. If your feed contains errors, an email is sent to you with the [feed error codes](https://developers.google.com/actions-center/verticals/local-services/e2e/reference/feeds/feed-errors).

## Confirm that your data looks correct

Sign in to the Partner Portal. Toggle to the **Sandbox** environment to
find the following pages in the **Dashboards** section.

[Feeds](https://partnerdash.google.com/apps/reservewithgoogle/ingestions?env=sandbox)
:   Shows the feed summary statistics and points out errors during feed
    upload.

To confirm that your data looks correct after your initial upload to the
sandbox environment, check the
**[Feeds](https://partnerdash.google.com/apps/reservewithgoogle/ingestions?env=sandbox)**
page for any feed errors.

Then check the **Inventory Summary** page for any data issues.
Common issues include uploading merchants without any services or uploading services
without any availability slots in the future.

The sandbox frontend, which emulates the live UI experience, shows how the
data will look from the user's perspective. To access it, make sure that the
[environment switcher](https://developers.google.com/actions-center/verticals/local-services/e2e/partner-portal/overview/environment-switcher) on the top is
set to Sandbox and go to
**[Inventory \> Inventory](https://partnerdash.google.com/apps/reservewithgoogle/inventory?env=sandbox)**, find a merchant that is either "Ready" or "Live (in Sandbox)" then either click on the link
on the rightmost column (if available) or click on the row and click on the "RwG - E2E" link. If
there is no merchant with status "Ready" or "Live (in Sandbox)", open a disabled merchant and make
sure to fix all the issues listed on the right (such as making sure future availability have been
uploaded).

> [!NOTE]
> **Note:** Our system matches the merchants that you send us to merchants already listed on Google Maps. In the sandbox, we perform only automated matches for your merchants. In production, the process may involve human review. Therefore, matches in the sandbox don't reflect the matches made in production, which are more stringent.

If you can't access the sandbox frontend, confirm that you are signed in
with an account that has been given access to the frontend. Also be sure that
this is the only account you are signed in to. If you sign in with a
different account and then use the Switch User feature to sign in to the
approved Google account, you are still blocked from the sandbox frontend.

## Upload your feeds to production

Once you are able to consistently upload complete, error-free feeds to the
Sandbox environment you may begin uploading to the Production environment.
At this point your integration will **not** be live.

Please upload a full **Merchant feed** as soon as possible (minimum
1 week before launch), so you can begin matching your merchants to a Google
business listing. Please verify the matching correctness.

Once **all** your production feed data is uploading consistently
and connected to your production system, your feeds are ready for review.

## Google evaluates feeds

Once you upload your feeds, Google processes and evaluates them for quality
and completeness. We look at the following factors:

1. Feeds match the feed specification.
2. Feeds include all the required fields.
3. The total number of merchants in feeds matches the number discussed with Google.
4. At least one service is defined for each merchant.
5. The total number of services in feeds matches the number discussed with Google.
6. We check how many of the services have availability slots open for the next 1-30 days .
7. We check how many of the merchants provided can be matched against features on Google Maps.

> [!NOTE]
> **Note:** As you submit your feeds, work through items 1-5 to ensure a smooth integration.