Get started with Transaction Messages

Note

This beta release of Hotel Price Ads is available to select participants only. For information about participating in the beta release program, please contact your account manager or enroll here.

If you create hotel ad campaigns in Microsoft Advertising, use transaction messages to update your itinerary data (pricing and availability).

Before you can send Microsoft transaction messages, you must contact your account manager to sign up.

Different modes for sending Microsoft your itinerary data

Microsoft supports the following modes that you can use to provide your itinerary data.

  • Push mode
  • Pull mode
  • Pull mode with hints

With the push mode, you send Microsoft your unsolicited updates at the intervals you choose. To use this mode, you must provide the IPv4 addresses (or address ranges in CIDR format) of all servers that you will use to send transaction messages. For information, see Pushing Transaction Messages to Microsoft.

With the pull mode options, Microsoft sends you Query messages that specifies the hotel itinerary data you should return. The difference between the two pull modes is the amount of data that you send to Microsoft. With pull mode, you return data for all itineraries and all hotels. But with pull with hints, you tell Microsoft what data changed and it requests only that data. For information, see Having Microsoft Pull Transaction Messages.

What's a transaction message

A transaction message is an XML document that contains pricing and availability data for one or more hotel properties. For each hotel property, specify one Result element for each Checkin and Nights combination (also know as an itinerary) in your advanced booking window. If you allow five days advanced booking and stays of up to three-nights, your message would contain 15 Result elements. The following example shows one day's worth of itineraries.

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-05-25T20:44:56-04:00" id="de0be689-d094-406e-
8027-724309deb373">
  <Result>
    <Property>13579</Property>
    <Checkin>2017-05-26</Checkin>
    <Nights>1</Nights>
    <Baserate currency="USD">100.00</Baserate>
    <Tax currency="USD">10.00</Tax>
    <OtherFees currency="USD">4.00</OtherFees>
  </Result>
  <Result>
    <Property>13579</Property>
    <Checkin>2017-05-26</Checkin>
    <Nights>2</Nights>
    <Baserate currency="USD">200.00</Baserate>
    <Tax currency="USD">20.00</Tax>
    <OtherFees currency="USD">8.00</OtherFees>
  </Result>
  <Result>
    <Property>13579</Property>
    <Checkin>2017-05-26</Checkin>
    <Nights>3</Nights>
    <Baserate currency="USD">300.00</Baserate>
    <Tax currency="USD">30.00</Tax>
    <OtherFees currency="USD">12.00</OtherFees>
  </Result>
</Transaction>

You may specify up to 180 days advanced booking with stays of up to 14 nights. For example, if the message's timestamp is 2017-06-10, the last Checkin date that the message may specify is 2017-09-08.

The document must use UTF-8 encoding.

Read more

Validate the message before sending it

Before sending Microsoft the transaction message, use the Transaction XSD to validate the message. This saves time and round trips by catching document syntax errors and constraints imposed by the XSD.

The following example shows using xmllint to validate the message contained in SampleTransaction.xml.

xmllint.exe --schema transaction.xsd SampleTransaction.xml

Note

There are constraints not defined by the XSD that may generate errors at the time Microsoft processes the message. Be sure that your message complies with all constraints defined in this document.