Structuring Services Feed

  • Price is a mandatory field for services and can be displayed as an exact amount, a starting price, a range, or not displayed at all.

  • While service descriptions are optional, they are highly recommended unless the service name is self-explanatory or the description is identical to the name.

  • Service descriptions longer than 120 characters will be truncated.

  • Ranking hints influence the display order of both service categories and the services within them, with lower scores indicating higher priority.

  • Add-on services can be listed as their own category if they can be booked independently.

Services Price Interpretation

Price is a required field. Please take a look at the examples(as displayed to the user) to determine how to represent prices in the feed.

Examples

Price Interpretation:

INTERPRETATION_EXACT As displayed to user: $39.99

  
{
  "service_price": {
    "price_interpretation": "INTERPRETATION_EXACT",
    "min_price": {
      "price_micros": 39990000,
      "currency_code": "USD"
    }
  }
}
  

As displayed to user: Free

  
{
  "service_price": {
    "price_interpretation": "INTERPRETATION_EXACT",
    "min_price": {
      "price_micros": 0,
      "currency_code": "USD"
    }
  }
}
  

Price Interpretation:

INTERPRETATION_STARTS_AT As displayed to user : From $0.00

  
{
  "service_price": {
    "price_interpretation": "INTERPRETATION_STARTS_AT",
    "min_price": {
      "price_micros": 0,
      "currency_code": "USD"
    }
  }
}
  

As displayed to user: From $25.00

  
{
  "service_price": {
    "price_interpretation": "INTERPRETATION_STARTS_AT",
    "min_price": {
      "price_micros": 25000000,
      "currency_code": "USD"
    }
  }
}
  

Price Interpretation:

INTERPRETATION_RANGE: As displayed to user: $15.00 - $25.00

  
{
  "service_price": {
    "price_interpretation": "INTERPRETATION_RANGE",
    "min_price": {
      "price_micros": 15000000,
      "currency_code": "USD"
    },
    "max_price": {
      "price_micros": 25000000,
      "currency_code": "USD"
    }
  }
}
  

Price Interpretation: INTERPRETATION_NOT_DISPLAYED

As displayed to user: No price will be displayed to the user

  
{
  "service_price": {
    "price_interpretation": "INTERPRETATION_NOT_DISPLAYED"
  }
}
  

Service description is highly recommended, but is optional as we recognize that some services are self-explanatory, and not all merchants provide it. If a service description is identical to the service name, we recommend that the description should be empty to prevent redundancy. However, this will not be enforced.

Examples

When a services description is provided for a services:

  
{
  "localized_service_description": {
    "value": "Consultation to learn more about your hair coloring needs and schedule the reservation.",
    "Localized_value": {
      "locale": "en",
      "value": "Consultation to learn more about your hair coloring needs and schedule the reservation."
    }
  }
}
  
Screenshot of a type of service with a drescription

When no services description is provided for the services:

Screenshot of a type of service without a description

When a services description is provided but is longer than 120 characters, the description will be truncated:


{
  "localized_service_description": {
    "value": "Keratin smoothing treatments repair damage, block humidity, and reduce frizz while restoring the hair’s strength & vibrance for healthier hair. Treatment times may vary.",
    "Localized_value": {
      "locale": "en",
      "value": "Keratin smoothing treatments repair damage, block humidity, and reduce frizz while restoring the hair’s strength & vibrance for healthier hair. Treatment times may vary."
    }
  }
}

Service Category and Ranking Hints Ranking hints affect both the ordering of services within a service category, and the ordering of the categories themselves. The ranking hint for a category is assumed to be the minimum ranking hint of any item in the category. Note that other factors may also influence the final ranking, such as price, user history, etc. The recommended approach is to define a total ordering on all the services, by assigning each one a unique integer ranking hint and ensuring that ranking hint values don’t overlap between categories. For example, if we want the preferred ordering of categories and services to be: Add-ons can be added as its own category, only if they can be booked independently (without a primary service)

Example

  
{
  "data": [
    {
      "merchant_id":"merchant-1",
      "service_id": "services-1",
      "localized_service_name": {
        "value": "Classic Shave"
      },
      "localized_service_category": {
        "value": "Barber"
      },
      "service_price": {
          "price_interpretation": "INTERPRETATION_STARTS_AT",
          "min_price": {
              "price_micros": 25000000,
              "currency_code": "USD"
          }
      },
       "service_duration": {
          "duration_interpretation": "INTERPRETATION_EXACT",
          "min_duration_sec": 4500
      },
        "action_link": [
        {
          "url": "https://www.rwgpartnerwebsite.com/appointment/service-1/in-person-1",
          "language": "en"
        }
      ],
      "ranking hint": {
        "score": 1
      }
    },
    {
      "merchant_id":"merchant-1",
      "service_id": "services-2",
      "localized_service_name": {
        "value": "Beard Trim"
      },
      "localized_service_category": {
        "value": "Barber"
      },
       "service_price": {
          "price_interpretation": "INTERPRETATION_STARTS_AT",
          "min_price": {
              "price_micros": 20000000,
              "currency_code": "USD"
          }
      },
       "service_duration": {
          "duration_interpretation": "INTERPRETATION_EXACT",
          "min_duration_sec": 1500
      },
        "action_link": [
        {
          "url": "https://www.rwgpartnerwebsite.com/appointment/service-1/in-person-1",
          "language": "en"
        }
      ],
      "ranking hint": {
        "score": 2
      }
    },
    {
      "merchant_id":"merchant-1",
      "service_id": "services-3",
      "localized_service_name": {
        "value": "Massage Shampoo"
      },
      "localized_service_category": {
        "value": "Shampoo"
      },
       "service_price": {
          "price_interpretation": "INTERPRETATION_STARTS_AT",
          "min_price": {
              "price_micros": 15000000,
              "currency_code": "USD"
          }
      },
       "service_duration": {
          "duration_interpretation": "INTERPRETATION_EXACT",
          "min_duration_sec": 1500
      },
        "action_link": [
        {
          "url": "https://www.rwgpartnerwebsite.com/appointment/service-1/in-person-1",
          "language": "en"
        }
      ],
      "ranking hint": {
        "score": 3
      }
    },
    {
      "merchant_id":"merchant-1",
      "service_id": "services-4",
      "localized_service_name": {
        "value": "Buzz Cut"
      },
      "localized_service_category": {
        "value": "Haircuts"
      },
       "service_price": {
          "price_interpretation": "INTERPRETATION_STARTS_AT",
          "min_price": {
              "price_micros": 35000000,
              "currency_code": "USD"
          }
      },
       "service_duration": {
          "duration_interpretation": "INTERPRETATION_EXACT",
          "min_duration_sec": 3000
      },
        "action_link": [
        {
          "url": "https://www.rwgpartnerwebsite.com/appointment/service-1/in-person-1",
          "language": "en"
        }
      ],
      "ranking hint": {
        "score": 4
      }
    }
  ]
}
  
Screenshot of different types of services
Screenshot of the services within a page