115 lines
5 KiB
Markdown
115 lines
5 KiB
Markdown
|
|
# Analysis: Potential Guest Revenue Loss – Airbnb Bookings
|
|||
|
|
|
|||
|
|
### **Objective**
|
|||
|
|
|
|||
|
|
To assess the potential impact on Guest Revenue and Guest Revenue Retained if we lose all income generated by Waiver and Deposit from all bookings with source Airbnb.
|
|||
|
|
|
|||
|
|
### **Context**
|
|||
|
|
|
|||
|
|
- Big portion of our bookings come from Airbnb.
|
|||
|
|
- A potential upcoming change could lead to a drop in revenue from this channel.
|
|||
|
|
- This analysis quantifies the potential loss.
|
|||
|
|
|
|||
|
|
### **Methodology**
|
|||
|
|
|
|||
|
|
- Timeframe analysed: Mar 2024 – Feb 2025
|
|||
|
|
- Data source: DWH
|
|||
|
|
- Key metrics analysed:
|
|||
|
|
- Total Revenue
|
|||
|
|
- Revenue Retained
|
|||
|
|
- Guest Revenue
|
|||
|
|
- Number of Bookings
|
|||
|
|
- Segmentation by source: Airbnb over Total.
|
|||
|
|
|
|||
|
|
### **Key Findings**
|
|||
|
|
|
|||
|
|
- Airbnb’s Guest Revenue (Waiver and Deposit) accounted for 23.0**%** of the Total Revenue in the selected period.
|
|||
|
|
- Estimated **monthly revenue at risk**: **£98,456.**
|
|||
|
|
- Airbnb’s Guest Revenue Retained (Waiver and Deposit) accounted for 14.4**%** of the Total Revenue Retained in the selected period.
|
|||
|
|
- Estimated **monthly revenue retained at risk**: **£38,243.**
|
|||
|
|
- Supporting metrics:
|
|||
|
|
- Airbnb’s Guest Revenue Retained represents 32.2% of Truvi’s Total Guest Revenue Retained.
|
|||
|
|
- The monthly amount of Host Revenue generated by Airbnb bookings amounts to **£60,213**
|
|||
|
|
|
|||
|
|
### Data and analysis
|
|||
|
|
|
|||
|
|
All data used was extracted from the DWH.
|
|||
|
|
|
|||
|
|
- Query 1: All bookings from PMS source in the last year (March 2024 to February 2025) with their guest product and payments
|
|||
|
|
|
|||
|
|
```sql
|
|||
|
|
SELECT DISTINCT
|
|||
|
|
b.id_booking,
|
|||
|
|
b.created_date_utc,
|
|||
|
|
vp.verification_payment_type,
|
|||
|
|
vp.amount_without_taxes_in_gbp,
|
|||
|
|
CASE
|
|||
|
|
WHEN vp.verification_payment_type = 'Waiver' THEN vp.superhog_fee_without_taxes_in_gbp
|
|||
|
|
ELSE vp.amount_without_taxes_in_gbp
|
|||
|
|
END AS superhog_fee_without_taxes_in_gbp,
|
|||
|
|
it.display_name AS PMS,
|
|||
|
|
b.id_user_host,
|
|||
|
|
uh.id_deal,
|
|||
|
|
uh.email,
|
|||
|
|
uh.company_name,
|
|||
|
|
b.id_booking_source,
|
|||
|
|
CASE
|
|||
|
|
WHEN b.id_booking_source = 1 THEN 'Unknown'
|
|||
|
|
WHEN b.id_booking_source = 2 THEN 'Manual'
|
|||
|
|
WHEN b.id_booking_source = 3 THEN 'Airbnb'
|
|||
|
|
WHEN b.id_booking_source = 4 THEN 'Vrbo'
|
|||
|
|
WHEN b.id_booking_source = 5 THEN 'BookingDotCom'
|
|||
|
|
WHEN b.id_booking_source = 6 THEN 'Agoda'
|
|||
|
|
WHEN b.id_booking_source = 7 THEN 'Marriott'
|
|||
|
|
WHEN b.id_booking_source = 8 THEN 'OneStepLink'
|
|||
|
|
ELSE 'Other'
|
|||
|
|
END AS booking_source
|
|||
|
|
FROM int_core__bookings b
|
|||
|
|
INNER JOIN int_core__user_host uh
|
|||
|
|
ON uh.id_user_host = b.id_user_host
|
|||
|
|
INNER JOIN staging.stg_core__integration i
|
|||
|
|
ON b.id_user_host = i.id_superhog_user
|
|||
|
|
AND b.created_at_utc BETWEEN i.created_at_utc AND COALESCE(i.deleted_at_utc, '2050-12-31')
|
|||
|
|
INNER JOIN staging.stg_core__integration_type it
|
|||
|
|
ON it.id_integration_type = i.id_integration_type
|
|||
|
|
LEFT JOIN int_core__verification_payments_v2 vp ON vp.id_verification_request = b.id_verification_request AND vp.payment_status = 'Paid'
|
|||
|
|
WHERE b.verification_request_booking_source = 'PMS'
|
|||
|
|
AND b.created_date_utc between '2024-03-01' and '2025-02-28'
|
|||
|
|
AND b.is_duplicate_booking IS FALSE;
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
- Query 2: Revenue numbers by deal in the last year (March 2024 to February 2025)
|
|||
|
|
|
|||
|
|
```sql
|
|||
|
|
SELECT mam.id_deal,
|
|||
|
|
mam.main_deal_name,
|
|||
|
|
sum(COALESCE(created_bookings, 0)) AS total_bookings,
|
|||
|
|
sum(COALESCE(total_revenue_in_gbp, 0)) AS total_revenue,
|
|||
|
|
sum(COALESCE(total_guest_revenue_in_gbp, 0)) AS total_guest_revenue,
|
|||
|
|
sum(COALESCE(xero_operator_net_fees_in_gbp, 0)) AS invoiced_operator_revenue,
|
|||
|
|
sum(COALESCE(xero_apis_net_fees_in_gbp, 0)) AS invoiced_api_revenue,
|
|||
|
|
sum(COALESCE(revenue_retained_in_gbp , 0)) AS revenue_retained,
|
|||
|
|
sum(COALESCE(waiver_payments_in_gbp, 0)) AS waiver_payments,
|
|||
|
|
sum(COALESCE(deposit_fees_in_gbp, 0)) AS deposit_payments
|
|||
|
|
FROM reporting.monthly_aggregated_metrics_history_by_deal mam
|
|||
|
|
WHERE date BETWEEN '2024-03-01' AND '2025-02-28'
|
|||
|
|
GROUP BY 1, 2
|
|||
|
|
ORDER BY 4 DESC
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
|
|||
|
|
To assess the potential impact of losing all Guest Revenue from Airbnb bookings, we extracted **all bookings where `booking_source = 'PMS'` from March 2024 to February 2025**. This timeframe was chosen to ensure we had **complete and finalized revenue data**.
|
|||
|
|
|
|||
|
|
We then:
|
|||
|
|
|
|||
|
|
- **Filtered the bookings by source = Airbnb**, and aggregated the **number of bookings and total Guest Revenue** in a pivot table, grouped by deal.
|
|||
|
|
- **Extracted total revenue across all deals**, regardless of source, for the same period.
|
|||
|
|
- **Cross-referenced Airbnb revenue with total deal revenue** to calculate the **proportion of revenue coming from Airbnb**.
|
|||
|
|
- This allowed us to **estimate the potential impact** of losing all Guest Revenue generated from Airbnb bookings.
|
|||
|
|
- We also included an estimate of the potential **Host Revenue (Invoiced Operator Revenue)** that could be affected by the loss of Airbnb bookings. Since we don't have direct data to calculate the exact impact, we **approximated it based on the proportion of bookings coming from Airbnb relative to the total number of bookings**.
|
|||
|
|
|
|||
|
|
## Excel Notebook
|
|||
|
|
|
|||
|
|
[Airbnb Payments.xlsx](Airbnb_Payments.xlsx)
|