POS File Syntax

The root element of the Points of Sale file is <PointsOfSale>. This element has no attributes and takes one child element, <PointOfSale>. A Points of Sale file can have any number of <PointOfSale> child elements.

Each Point of Sale (POS) that you define in the Points of Sale file is contained in a <PointOfSale> element. This element takes a single attribute, id. The id attribute defines a unique identifier for a POS. You can use the value of id to filter eligible POSs for a matching hotel. You do this by using the <AllowablePointsOfSale> element in a Transaction message.

The Points of Sale file uses the following syntax:

<?xml version="1.0" encoding="UTF-8"?>
  <PointOfSale id="pos_id">
    <DisplayNames display_text="pos_display_name" display_language="language_code"/>
    <Match status="[ yes | never ]"
      sitetype="[ localuniversal | mapresults | placepage ]"
      device="[ desktop | mobile | tablet ]"
    <Phone number="phone_number">
      <Fee type="per_minute" value="fee_amount" currency="currency_code"/>
      <Fee type="booking" value="fee_amount" currency="currency_code"/>

  <!-- The dynamic POS URL -->


The following table describes the child elements of the <PointOfSale> element:

Element Required Description
<DisplayNames> Optional Contains ad display text for Online Travel Agencies (OTAs). This element takes the following attributes:
  • display_text: Contains the text that displays in an ad. It must only be the name of the partner.
  • display_language: A two-letter language code that specifies the display language of the ad. The value of this attribute must match a supported language specified by the <Match> element.

The following example shows a display name for a French OTA:


Omit the <DisplayNames> element for Central Reservations System (CRS) suppliers (also known as integration partners) and Direct Suppliers (such as hotel owners or chains). For these types of partners, ad text is taken from the hotel's <Name> element in the Hotel List Feed.

<Match> Required Defines filters for whether your ad is displayed based on various characteristics of the end-user or hotel. For example, you can specify that an ad is displayed only to users in a certain country.

This element takes the following attributes:

  • status: Determines whether a match includes or excludes results for the specified criterion. Valid values are "yes" (must match) or "never" (must not match).
  • country: Matches on the Google domain associated with the end-user and the hotel. This attribute takes a two-letter country code (ISO 3166-1 alpha-2). For example, "US" or "FR" (in upper case).
  • language: Matches on the end-user and hotel's language. This attribute takes a two-letter language code (in lower case). For example, "en" or "fr".
  • currency: Matches on the end-user and hotel's country's currency. This attribute takes a three-letter currency code. For example, "USD" or "EUR".
  • sitetype: Matches on the Google property on which a user viewed your hotel-pricing data. This attribute takes the following values:
    • "localuniversal": The user found the ad through organic search, typically by searching on google.com.
    • "mapresults": The user found the ad through maps.google.com.
    • "placepage": The user found the ad through plus.google.com/local.
  • device: Matches on the type of device that the end-user uses to search. This attribute takes one of the following: "mobile", "desktop", "tablet".

    NOTE: You cannot set status to "never" if device is set to "tablet".

For example:

<PointOfSale id='test1'>
  <Match status='yes' country='US'/>
  <Match status='yes' currency='USD'/>
  <Match status='yes' device='mobile'/>
  <Match status='yes' language='en'/>

You can combine attributes of the <Match> element to simplify your matching rules, as the following example shows:

<PointOfSale id='test1'>

For more information, see POS Matching Rules.

<Phone> Optional

Adds Click to Call functionality to the ad. This element takes a single required attribute, number. Set number to the phone number of the call center, including "+" and the country code. For example, "+18008675309".

In addition, the <Phone> element requires two <Fee> child elements that specify fees charged to the end-user for a call. These fees are assessed by the advertiser specifically for booking over the phone.

The <Phone> element uses the following syntax:

<Phone number="phone_number"/>
  <Fee type="per_minute" value="cost_per_minute"
  <Fee type="booking" value="total_fee" currency="currency_code"/>

The per_minute fee specifies the cost, for each minute in duration, of the phone call. The booking fee specifies a flat cost for the call. Set the value attributes to $0 if there are no fees.

You can define one <Phone> element only for each POS, and cannot have a <Phone> element and a <URL> element in the same POS definition.

For more information, see Using Click to Call.

<URL> Required Defines a link to your site where the end-user can book a room. You can insert dynamic information about the user and their itinerary as query string parameters. For example, you can include the hotel ID by using the PARTNER-HOTEL-ID variable in the URL:

When this link is constructed and displayed to the end-user, Google replaces the PARTNER-HOTEL-ID variable with the appropriate hotel ID. When the end-user clicks through to your site, your site can then extract and process the values of all query string parameters to create a smooth user experience.

You can define only one <URL> element for each POS.

For a complete list of variables allowed in the POS URL, see Building Dynamic URLs.

You cannot have a <Phone> element and a <URL> element in the same POS definition.

The Points of Sale File schema defines the structure and constraints of a Points of Sale file. For more information, see Schemas.