Booking attribution overview
Report on ad conversion from sponsored content
Since advertisers use sponsored listings to drive visibility and bookings, reporting on conversions that are driven or influenced by a sponsored listing is essential to communicate the value of their ad spend. That value is determined by the bookings that happen after ads were seen or clicked. We report on both impression-driven and click-driven attribution, using a last-touch, 7-day attribution method.
Integrating with Rapid Lodging Sponsored Listings API requires you to send us conversion information attributed to sponsored listing clicks—even if the rate that was booked following a click was not an Expedia Group rate. The booking information should be provided regardless of whether the most recent click before the booking was on a sponsored listing or an organic search result.
There are two ways to provide conversion information back to us:
Data clean rooms
Data clean rooms (DCRs) offer a safe environment in which to analyze performance across shared data sets without exposing raw user-level data. This solution also lightens the load on your organization's development team by removing the need to build and maintain the logic of which booking information should be sent to Expedia Group and which should not.
We use an Amazon Web Services (AWS) clearn room solution for data transfer.
Sample AWS identity and access management policy
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "CleanRoomsCollaborationAccess",
"Effect": "Allow",
"Action": [
"cleanrooms:ListCollaborations",
"cleanrooms:GetCollaboration",
"cleanrooms:GetConfiguredTable",
"cleanrooms:ListConfiguredTables",
"cleanrooms:CreateMembership",
"cleanrooms:GetMembership",
"cleanrooms:ListMemberships",
"cleanrooms:StartAnalysis",
"cleanrooms:GetAnalysisTemplate",
"cleanrooms:ListAnalysisTemplates",
"cleanrooms:GetSchema",
"cleanrooms:ListSchemas"
],
"Resource": "*"
},
{
"Sid": "AllowReadAccessToGlueDataCatalog",
"Effect": "Allow",
"Action": [
"glue:GetDatabase",
"glue:GetDatabases",
"glue:GetTable",
"glue:GetTables",
"glue:GetPartition",
"glue:GetPartitions"
],
"Resource": [
"arn:aws:glue:REGION:YOUR_AWS_ACCOUNT_ID:catalog",
"arn:aws:glue:REGION:YOUR_AWS_ACCOUNT_ID:database/YOUR_DATABASE_NAME",
"arn:aws:glue:REGION:YOUR_AWS_ACCOUNT_ID:table/YOUR_DATABASE_NAME/YOUR_TABLE_NAME"
]
},
{
"Sid": "AllowReadAccessToS3Data",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:GetObjectAcl",
"s3:GetBucketLocation",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::YOUR_BUCKET_NAME",
"arn:aws:s3:::YOUR_BUCKET_NAME/YOUR_PREFIX/*"
]
}
]
}Clean room usage checklist
Before pushing your data to a clean room, you should check that this information is included:
- Your AWS account information
- Configured identity and access management roles and permissions
- All property IDs mapped to Expedia Group's property IDs.
- Prepared and registered Glue tables, which define the schema for accurate interpretation
- Invitation to join collaboration
- Validated schemas
- Customer IDs
- Encrypted (hashed) PII (personally identifiable information), usually email addresses
Conversion data
The data required by advertisers includes multiple parameters to report the value of the sponsored booking.
| Field | Required | Description | Sample value |
|---|---|---|---|
booking_date_time | Yes | Date and time the booking was made, using UTC time zone format. | 2024-12-25T12:30:00Z |
customer_id | Yes | Unique identifier for the user (used to join with other ad interaction events from this user). This is the ID set up and consistently provided by the publisher from all ad requests through to the bookings. | e4dda90a-f31b-47f2-be4f-7e7289d224fa |
property_id | Yes | Expedia Group property ID for the booking. ONLY Expedia Group property IDs are accepted. | 8906878 |
number_of_room_nights | Yes | The total number of nights booked, regardless of number of rooms. For example, if the traveler booked 2 rooms for 3 nights, the room nights value would be 3. | 3 |
number_of_rooms | — | Total number of rooms booked. | 2 |
gross_booking_amount | Yes | Final price paid by the traveler. | 200.00 |
currency | Yes | The currency the gross_booking_amount is provided in. | GBP |
customer_email_hash | — | SHA-256 encryption of the customer's email. Could be used to perform cross-site connection (between Expedia Group and a given publisher) for more robust performance attribution. Value can be null. | — |
Booking Notification API endpoint
If you choose not to or are ineligible to use a DCR to communicate booking attributions with Expedia Group, you can use our Booking Notification endpoint instead.
Endpoint details
Like a DCR, the Booking Notification API reports booking data tied to a prior view or a click beacon triggered on a sponsored listing. You'll send attribution information to this API at the end of the booking journey on a regular basis. We recommend daily, but within 8 days of a sponsored listing view or click is acceptable.
Only send a request to the Booking Notification API when the booking is confirmed successful.
Sequence of events
Sequence is essential for the Booking Notification endpoint results. Do not change the sequence of events listed below when you make a request to the Lodging Sponsored Listings API.
- When a traveler performs a search on your site, you'll make 2 requests: 1 to the Lodging Sponsored Listings API to check availability and 1 to the Lodging Shopping Availability endpoint for Expedia Group availability and rates. Order doesn't matter here, but both must be called before moving on.
- The Lodging Sponsored Listings API runs an auction for sponsored listings.
- Sponsored results will be returned in the response if there is available inventory. The response will also include click, view, and render beacons.
>> Read more about Tracking - Sponsored listings are displayed on your site in the ranked order received back from Expedia Group. You choose whether to display the Expedia Group rate with the sponsored listing or a rate from another source.
- The render beacon (if using) is triggered as soon as the ads are rendered on the page by the browser.
- The view beacon is triggered when the sponsored listing comes into the viewport.
- The click beacon is triggered when the traveler clicks on the sponsored listing displayed on the search results page.
- Request the Booking Notification endpoint after a booking is completed and confirmed. No action is required if the booking is then cancelled.
Sequence flow chart

API details
Explore the endpoints on this page, then use testing software to get an understanding of how the examples and schema definitions compare to the actual output.
Note: Your launch manager will provide you with specific parameters to include in the header when calling this endpoint. If you don't include those parameters, your calls will be rejected.