Overview
The ARI Transaction (Property Data) message defines the information about each
property's room types and packages (or rate plans). Each room type data includes
a unique identifier (RoomID
), localized name, description, and URLs to room
photos. Each package data includes a unique identifier (PackageID
), localized
name, description, occupancy, and value-adds.
You can use a Transaction message to do the following:
- Define data for one or more properties.
- Define room type and package information for each property.
- Control product offerings.
Also, you can set actions to do the following:
Add a room type and package to a property.
Remove a room type and package from a property.
For examples of transaction messages, see Transaction (Property Data) Examples.
Required and optional elements
The XML Reference provides descriptions of the required and optional elements. For details on attributes and child elements, see Transaction (Property Data) Elements & Attributes.
Syntax and schemas
Use the Transaction (Property Data) Syntax example as a reference when you create the Transaction message to ensure you are following the correct format.
You can use a third-party XML tool such as xmllint to validate your feeds with the published schemas before submitting them to Google. For the Transaction message schema, see Hotel Ads schemas.
Guidelines
Use the following guidelines for a Transaction message:
- Actions:
delta
: Use to add or update new room types and packages (rate plans).overlay
: Use to replace all room types and packages for a property with a new set. Must include information for all room types and rate plans that you still want to sell.- Language support:
Specify one to two languages (English, and a local language for the property if needed) for the Name, Description, and Caption fields. You can add more than two languages if needed.
- Room types and packages:
When updating a room type or package, you must send all of the related information for that room type or package. For example, when you add a photo you must also include the name and description.
<AllowablePackageIDs>
and<AllowableRoomIDs>
are optional, and if unset, any combination of room type and rate plan can be made. You still have to send availability and rates with the room type and rate plan IDs. These elements let you control products as well as deactivate combinations your system no longer supports.Send Google a Transaction message update whenever there is a change in room types or packages, or important details about room types or packages that need to be added.
Example
This section provides a basic example of an ARI Transaction message using
required and optional elements. To add or update room types and packages, you
use an action for either delta
to add or update room types and packages, or
overlay
to replace all room type and package definitions (deletes old
entries).
You need to specify one to two languages (English, and a local language for the property if needed) for the Name, Description, and Caption fields. Then, add property data information, including links to photos.
For <PropertyID>
and<RoomID>
, use the same IDs you use within your system
for rate plans and room types (respectively). Consistency with your system is
critical for ensuring that Google is correctly displaying your prices and data.
Once you prepare your file, you must send it to Google via a POST message
to the following endpoint: https://www.google.com/travel/hotels/uploads/property_data
To learn more about how to push/POST the message, see Pushing messages.
The following example shows how to set the Transaction message using a delta
action:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="202X-XX-XXT00:00:00-0X:00" id="12345678" partner="partner_key">
<PropertyDataSet action="delta">
<Property>PROPERTYID</Property>
<RoomData>
<RoomID>ROOMID</RoomID>
<Name><Text text="ROOM NAME" language="en"/></Name>
<Description>
<Text text="ROOM DESCRIPTION TEXT" language="en"/>
</Description>
<Capacity>4</Capacity>
<PhotoURL>
<Caption><Text text="ROOM PHOTO CAPTION TEXT" language="en"/></Caption>
<URL>https://LINK TO PHOTO</URL>
</PhotoURL>
</RoomData>
<PackageData>
<PackageID>BASE</PackageID>
<Name><Text text="Internet Special" language="en"/></Name>
<Description><Text text="Direct Booking through Hotel Website" language="en"/></Description>
<Refundable available="true" refundable_until_days="2" refundable_until_time="12:00"/>
</PackageData>
</PropertyDataSet>
</Transaction>
For more examples, such as how to use the overlay
action, add a room type
and package to existing property data, and remove existing room types and
packages, see Transaction (Property Data)
Examples.
How-tos
This section provides solutions to scenarios you might encounter while sending Transaction messages.
Scenario 1: How to remove room type data
How do I remove existing room type and/or package data?
Description
You have sent multiple room types, including King and Queen rooms, for the property. All Queen room types are unavailable during a remodel and only King room types are currently available.
Solution
- You don't need to update the nightly availability, rates, or inventory for the room type and package IDs that have been removed or deactivated.
- If the room type or package has been removed or deactivated, send a new
Transaction message with
action="overlay"
which only includes the room types and packages that are still active and excludes the removed room type or package.
Sample
This XML snippet shows how to use the overlay
action to remove a room type.
Here is the original delta
action which includes King and Queen room types:
<PropertyDataSet action="delta">
<Property>Property_1</Property>
<RoomData>
<RoomID>King</RoomID>
<Name>
<Text text="King" language="en"/>
</Name>
<Capacity>2</Capacity>
</RoomData>
<PackageData>
<PackageID>Standard</PackageID>
<Name>
<Text text="Standard" language="en"/>
</Name>
<Description>
<Text text="Standard rate" language="en"/>
</Description>
<Refundable available="true" refundable_until_days="7" refundable_until_time="18:00:00"/>
<BreakfastIncluded>0</BreakfastIncluded>
</PackageData>
<RoomData>
<RoomID>Queen</RoomID>
<Name>
<Text text="Queen" language="en"/>
</Name>
<Capacity>2</Capacity>
<!-- Additional RoomData child elements omitted. -->
</RoomData>
</PropertyDataSet>
You can then set overlay
to remove the Queen room type and keep the King
room type:
<PropertyDataSet action="overlay">
<Property>Property_1</Property>
<RoomData>
<RoomID>King</RoomID>
<Name>
<Text text="King" language="en"/>
</Name>
<Capacity>2</Capacity>
</RoomData>
<PackageData>
<PackageID>Standard</PackageID>
<Name>
<Text text="Standard" language="en"/>
</Name>
<Description>
<Text text="Standard rate" language="en"/>
</Description>
<Refundable available="true" refundable_until_days="7" refundable_until_time="18:00:00"/>
<BreakfastIncluded>0</BreakfastIncluded>
</PackageData>
</PropertyDataSet>
Scenario 2: How to control products using AllowablePackageIDs
How do I control products (combinations of room types and packages) when packages are grouped by room type?
Description
You have certain packages that are only available to certain room types. For example, if your property has four room types (including Presidential suite), and six different packages, but only a few packages are eligible for the presidential suite, you can specify eligibility.
Solution
Send an updated Transaction message that specifies which products are included
in the package using <AllowablePackageIDs>
.
Sample
This XML snippet shows how to use <AllowablePackageIDs>
to specify packages
used with a certain room type. Here, the Penthouse suite room type allows only
the Penthouse all-inclusive package or the Free breakfast package while the
King suite room type allows only the King all-inclusive package or the
Pet friendly package.
<RoomData>
<RoomID>penthouse_suite</RoomID>
<AllowablePackageIDs>
<AllowablePackageID>penthouse_all_inclusive</AllowablePackageID>
<AllowablePackageID>free_breakfast</AllowablePackageID>
</AllowablePackageIDs>
<!-- Additional child elements omitted. -->
</RoomData>
<RoomData>
<RoomID>king_suite</RoomID>
<AllowablePackageIDs>
<AllowablePackageID>king_all_inclusive</AllowablePackageID>
<AllowablePackageID>pet_friendly</AllowablePackageID>
</AllowablePackageIDs>
<!-- Additional child elements omitted. -->
</RoomData>
<PackageData>
<PackageID>penthouse_all_inclusive</PackageID>
</PackageData>
<!-- Additional child elements omitted. -->
<PackageData>
<PackageID>free_breakfast</PackageID>
</PackageData>
<!-- Additional child elements omitted. -->
<PackageData>
<PackageID>king_all_inclusive</PackageID>
</PackageData>
<!-- Additional child elements omitted. -->
<PackageData>
<PackageID>pet_friendly</PackageID>
</PackageData>
Scenario 3: How to control products using AllowableRoomIDs
How do I control products (combinations of room types and packages) when room types are grouped by package?
Description
A room type and package combination is no longer sold as a product or you want to control what is included in a new package. For example, you want to specify only certain room types, such as King and Queen rooms with an ocean view, with a package.
Solution
Send an updated Transaction message that specifies the exact products included
with the package using the <AllowableRoomIDs>
element.
Sample
This XML snippet shows how to use <AllowableRoomID>
to specify oceanview King
and Queen room types in the package.
<PackageID>RO</PackageID>
<AllowableRoomIDs>
<AllowableRoomID>king_oceanview</AllowableRoomID>
<AllowableRoomID>queen_oceanview</AllowableRoomID>
</AllowableRoomIDs>