Experience products are eligible to serve on the various experiences modules
such as the ones on Attraction POIs or Activities and tour search results.
Optimizing experience products in your feed increases the chances of the
products being shown and reduces the chances of the product being disabled due
to data quality related issues.

## Provide prices in multiple currencies when possible

If the product on the landing page can be transacted in different currencies,
you can improve the accuracy of prices shown on Google by providing multiple
currencies for that product in the Feed. Accurate prices helps to:

- Build user trust
- Improves conversion rates after the user lands on the page
- Reduces the chance of products being disabled due to large price discrepancies between the landing page and what Google is serving.

> [!NOTE]
> **Note:** If a single currency is provided, The price is converted to the user currency (as determined by user location) using exchange rates at the time of serving.

You can implement multiple currency support with the following steps:

1. Find the list of currency and their prices supported for your product
2. Determine a currency as the default currency in cases when user chooses a currency which isn't supported (we strongly recommend using the local currency of the product as most users are in country)
3. In the product feed, for each `product/option`, create the price_option list in JSON such that:
   - Each `price_option` entry contains a price for a different currency
   - Each `price_option` has `geo_criteria` set with the country the currency is associated with (e.g. AUD with AU, CHF with CH, EUR with all Euro countries).
   - The last `price_option` should be the default currency with no `geo_criteria` set.

Example JSON

    "price_options": [
      {
        "id": "adult-usd",
        "title": "ADULT",
        "price": { "currencyCode": "USD", "units": "75" },
        "geo-criteria": [{ "country_code": "US", "is_negative": "false"}].   //geo-criteria must be used to show users from which country will see this price.
      },
      {
        "id": "adult-cny",
        "title": "ADULT",
        "price": { "currencyCode": "CNY", "units": "300" },
        "geo-criteria": [{"country_code": "CN", "is_negative": "false"}]
      },
      {
        "id": "adult-eur",   // Except for the last price_option, all other price options should have geocriteria set to limit which countries this currency should be used. This is an example of EU countries
        "title": "ADULT",
        "price": { "currencyCode": "EUR", "units": "70" },
        "geo-criteria": [{"country_code": "AT"}, {"country_code": "BE"}, {"country_code": "CY"}, {"country_code": "EE"}, {"country_code": "FI"}, {"country_code": "FR"}, {"country_code": "DE"}, {"country_code": "GR"}, {"country_code": "IE"}, {"country_code": "IT"}, {"country_code": "LV"}, {"country_code": "LT"}, {"country_code": "LU"},{"country_code": "MT"}, {"country_code": "NL"},{"country_code": "PT"}, {"country_code": "SK"}, {"country_code": "SI"}, {"country_code": "ES"}]
      },
      {
        "id": "adult-default",
        "title": "ADULT-USD",
        "price": { "currencyCode": "USD", "units": "75" }     // Last price_option should default, we recommend using currency from location of product.
      }
    ]

## Provide accurate POI information

Accurate point of interest information allows experience products to serve on
relevant Google place sheets and various place sheet specific Ads. For products
(or options) to be considered related to an attraction:

- the location of the attraction must be provided using the `related_location` field
- the `relation_type` of the location should be set as `RELATION_TYPE_ADMISSION_TICKET` if the product includes admission to the point of interest.

Setting the related_location field correct for experience products tells Google
whether entry to the attraction is provided when the user purchases the product
and enables the products to show when users filter for products that include
entry.

Multiple related location entries can be provided for pass type products that
provide entry to multiple locations.

The following example JSON representing a tour which visits two locations where
one of the location includes entry:

    "related_locations": [
      {
        "location": {
          "location": {
            "place_info": {
              "name": "Colosseum",
              "phone_number": "+39 063 99 67 700",
              "website_url": "https://colosseo.it/",
              "coordinates": {
                "latitude": 41.8902102,
                "longitude": 12.4922309
              },
              "structured_address" {
                "street_address": "Piazza del Colosseo, 1",
                "locality": "Roma",
                "administrative_area": "RM",
                "postal_code": "00184",
                "country_code": "IT"
              }
            }
          }
        },
        "relation_type": "RELATION_TYPE_ADMISSION_TICKET"
      }, {
        "location": {
          "location": {
            "place_info": {
              "name": "Mutitjulu Waterhole",
              "coordinates": {
                "latitude": -25.3511774,
                "longitude": 131.0326859
              }
            }
          }
        },
        "relation_type": "RELATION_TYPE_RELATED_NO_ADMISSION"
      }
    ]

Additional details on how locations and points of interest work in Things to do
can be found in the [Location and point of interest](https://developers.google.com/actions-center/verticals/things-to-do/guides/partner-integration/location) section.

> [!NOTE]
> **Note:** The accuracy of the information provided is checked against the landing page of the product. Any locations found missing on the landing page are disabled from serving for that product and an error is shown in TTD Center.

## Provide accurate product title and description to better help Google to correctly understand your product

Google uses a mix of machine learning techniques on the product title,
description and included features provided in the feed to understand the product
to better serve the products in the most appropriate modules.

To optimize your feed, we recommend providing more and precise information to
describe your products (such as highlights section, must-knows, inclusions, and
exclusions). We also typically recommend doing so at the option level.

Languages that overmarket the product is not recommended and may result in the
product being incorrectly categorized and potentially disabled from serving.

## Provide multiple images when possible

Experience products require at least a single image to serve, however it is
recommended that multiple images are provided when possible. Google uses
multiple images in a number of ways including:

- Displaying multiple product images in a carousel
- Google can choose the highest quality image to serve to the user, which can provide a better user experience.
- Google can serve an alternate image in cases where:
  - A particular image does not fit within Google guidelines, such as being too blurry or inappropriate.
  - To not clash with other products using similar images.

For more information on how to improve your images, see
[Image and photography guidelines](https://developers.google.com/travel/things-to-do/guides/partner-integration/image-guidelines).

> [!NOTE]
> **Note:** If you are providing images with an order of preference, make sure the field `use_media_order` is set so Google takes into account the order at time of serving.

## Add fields which provides additional UX treatment and improve ranking

Optional informational fields such as `fulfillment_type`, `confirmation_type`
gets additional UI treatment on certain surfaces. Seeing this additional
information builds user trust, generates additional interest and improves the
overall user experience. The completeness of the data provided is used as part
of our quality metrics and is taken into account as part of product ranking.

Following fields are particularly important for Experiences products:

- ratings
- fulfillment_type
- confirmation_type
- product_features
- option_features (if product_features are not provided)
- text_features
- related_media (required if participating in TTD Ads)

## Ensure detailed product descriptions are provided

Detailed product descriptions are shown to users on certain modules when the
user clicks the product. High quality product description increases user
engagement and improves CTR. Google also makes use of product descriptions when
determining if a product should show for certain categorical searches.

## Restechs only: Ensure brand_name field is set

If you need to send products sold under different brands, make sure
the `product/brand_name` field is set correctly. Things to do make use of
this field when the name of the seller is shown to users.

> [!NOTE]
> **Note:** If this field is unset, then the default business name of the partner is used.

## Restechs only: Make sure product is marked as INVENTORY_TYPE_OPERATOR_DIRECT when appropriate

If you represent the tour operator, make sure the `inventory_types` field
is correctly set. For products that deeplink directly into the landing page of
the actual operator of the experience, make sure
`INVENTORY_TYPE_OPERATOR_DIRECT` is provided in order to receive special UX
treatment.

> [!NOTE]
> **Note:** This feature is enabled on a per partner basis. Check with Google during the onboarding process to make sure this is correctly configured for you.

## Optimization checklist

The following checklist summarizes the best practices for experience products

- General optimizations:
  - Price represent the amount required for any single adult to participate
  - Price provided is the higher of the resident versus non-resident prices
  - Total group price is provided for products with minimum no. participants
  - Detailed product description is provided
  - Product content is localized
  - Multiple currency provided
- Experience optimizations:
  - Locations which the experience reaches are provided as part of `related_location`
  - related location is marked as include admission when product includes admission as part of the price
  - Ensure product title and description are accurate and complete
  - Provide multiple product images
  - If images are in order make sure `use_image_order` is set to true
  - `cancellation_policy` provided
  - `fufilment_type` is provided
  - `confirmation_type` is provided
  - `ratings` are provided if available
  - Restech only: `brand_name` field provided
  - Restech only: `INVENTORY_TYPE_OFFICIAL` / `INVENTORY_TYPE_OPERATOR_DIRECT` is correctly set