OTA PortalHarth Living

Kiến thức nền tảng — PriceLabs

Tóm tắt 30 giây

Dùng khi: Cần hiểu PriceLabs đặt giá thế nào cho 7 căn.

  • PriceLabs là chỗ đổi giá thật trên mọi kênh cùng lúc — sửa giá ở đây, không sửa ở extranet.
  • Base là mức giá nền do mình đặt, Min/Max là sàn và trần; PriceLabs có đề xuất Base riêng để so.
  • PriceLabs chỉ đẩy giá đêm, min stay, luật nhận/trả phòng. Chiết khấu tuần/tháng, phí, khuyến mãi phải cài ở từng kênh.
  • Pricing Offset (+4 % cho dòng Booking) là lớp đẩy cuối cùng, không đổi Base.

Bài gốc đã sửa sau ngày viết tóm tắt (28/09/2026), tóm tắt có thể cũ.

Truy cập theo vault/10-rules/ota-readonly-rule.md. Chỉ đọc. ⚠️ Đây là chỗ đổi giá thật trên mọi kênh cùng lúc. Nút "Update My Prices Now" và "Sync Price" thuộc diện cấm tuyệt đối nếu chưa có lệnh.

📘 Tài liệu chính thức đã đọc trọn (27/09/2026): báo cáo gọn Sổ tay PriceLabs (vault/19-Harthliving-OTA/guide/pages/pricelabs-guide.html) · dump 225 bài + mục lục: audits/2026-09-27-pricelabs-helpcenter/index.md. Mục 5 bên dưới: câu "PriceLabs có phải channel manager đẩy XML xuống Booking" đã rõ — PriceLabs là Connectivity provider của Booking (tài liệu tích hợp Booking.com, bước 1a).

1. Vai trò trong hệ thống

PriceLabs là dynamic pricing đẩy giá xuống các kênh. Đây nhiều khả năng chính là channel manager gây ra nhãn XML (edits overwritten) trên lịch Booking — nghĩa là sửa giá phải sửa ở đây, không sửa trong extranet. (suy luận, chưa xác minh — xem mục 5)

2. Quy mô — 36 listing = 25 Airbnb + 8 Booking + 3 VRBO + 0 Agoda

Đọc từ response GET /api/pd_dropdown_options?page_size=25000 (03/09/2026). Giải xong nút thắt "36 là gì".

Kênh trong PriceLabs Số listing Ghi chú
airbnb 25 nhiều hơn 15 listing thấy trên trang Hosting — gồm cả các studio lẻ của 86 Phạm Cự Lượng và Ba Na Hills
bcom 8 ở cấp room, khoá dạng hotelid___roomid, không phải cấp property
vrbo 3 ⚠️ kênh thứ tư chưa từng biết — cả 3 đều ở San Jose, CA
agoda 0 ⚠️ Agoda KHÔNG nối vào PriceLabs

2.1 ⚠️ Agoda nằm hoàn toàn ngoài dynamic pricing

Không có một listing Agoda nào trong PriceLabs. Nghĩa là 6 listing Agoda đang định giá tay / giá tĩnh, không theo thị trường, không đồng bộ với hai kênh kia. → issues.md L-14.

2.2 Bảy căn trong phạm vi — căn nào được PriceLabs quản

Slug Airbnb Booking Agoda
25anthuong11 ✅ 1729647978348243002 ✅ 16927056___1692705601 (đọc 18/09/2026: Min 3.450.000 · Base 4.600.000 · Max 11.500.000 · Sync ON) ❌
181tohienthanh ✅ 1392557018193095807 ✅ 14740288___1474028801 ❌
15nuocman5 ✅ 1598529903924488190 ✅ 15668679___1566867901 ❌
41lehycat ✅ 1530969549011048259 ✅ 15668481___1566848101 ❌
alacarte305 ✅ 1299210095000132691 ✅ 1331150301 + 1331150302 (2 hạng phòng) ❌
alacarte404 ✅ 1299215688434855781 ✅ 15702704___1570270401 ❌
alacarte502 ✅ 1432771761830735457 ✅ 14756473___1475647301 ❌

⚠️ 25anthuong11 trên Booking không có trong PriceLabs ⇒ giá Booking của căn này là giá tĩnh. → L-15. Kiểm lại 11/09/2026: vẫn y nguyên — 36 listing = 25 airbnb + 8 bcom + 3 vrbo, cùng 8 dòng bcom như 03/09.

2.3 Lệch danh sách khác

  • Booking 15995581 "NEW Pool Villa - 6BR,6BA" (36 Dương Tử Giang) có trong PriceLabs nhưng không có trong Group homepage. Chưa rõ vì sao.
  • Booking 15702691 (305 cũ, Closed) và 15702720 (86 PCL, Closed) không có trong PriceLabs — hợp lý vì đang đóng.

2b. Bảng giá — ĐỦ 36/36 dòng

Lấy bằng cuộn container ảo (css-xidosa), không bấm phân trang: bảng chỉ giữ ~10 hàng trong DOM cùng lúc, cuộn thì render tiếp. Nút next-page thực ra đang disabled vì page size đã là 100.

Airbnb — 7 căn trong phạm vi

Căn Min Base Max BR Occ 30P Doanh thu 30P ADR 30P ADR/Base
404 1.350.000 2.179.440 Chưa đặt 2 BR 100 % 49.505.042 1.650.168 76 %
15 MN 3.450.000 4.500.000 Chưa đặt 4 BR 63 % 68.044.495 3.581.289 80 %
502 Chưa đặt 1.688.560 Chưa đặt 1 BR 60 % 20.539.809 1.141.101 68 %
181 THT 2.500.000 3.862.830 Chưa đặt 3 BR 50 % 54.025.843 3.601.723 93 %
305 1.350.000 2.182.970 Chưa đặt 2 BR 20 % 9.396.844 1.566.141 72 %
41 LHC 3.450.000 4.622.500 Chưa đặt 4 BR 20 % 26.100.496 4.350.083 94 %
25 AT 11 3.000.000 4.000.000 Chưa đặt 4 BR 13 % 8.000.000 2.000.000 50 %

Booking — 6 dòng trong phạm vi

Căn Min Base Max BR ghi trong PL Occ 30P Doanh thu 30P ADR 30P
305 hạng 1 1.500.000 2.400.000 Chưa đặt 2 BR 83 % 77.273.906 2.146.497
502 Chưa đặt 1.700.000 Chưa đặt 1 BR 30 % 14.138.322 1.285.302
41 LHC 4.000.000 (gợi ý 3.800.000) 5.500.000 Chưa đặt 1 BR ⚠️ 20 % 22.478.442 3.746.407
181 THT 3.000.000 (gợi ý 2.850.000) 4.200.000 Chưa đặt 1 BR ⚠️ 0 % 0 0
15 MN 3.900.000 (gợi ý 3.705.000) 6.000.000 Chưa đặt 1 BR ⚠️ 0 % 0 0
404 Chưa đặt CHƯA ĐẶT ⚠️ Chưa đặt 1 BR ⚠️ 0 % 0 0
305 hạng 2 Chưa đặt CHƯA ĐẶT ⚠️ Chưa đặt 2 BR — — —

25anthuong11 không có dòng Booking trong PriceLabs — xem L-15.

Năm điều đọc ra

  1. Max Price chưa đặt ở TOÀN BỘ 36 listing. Không có trần giá ở bất kỳ đâu.
  2. Hai dòng Booking không có cả Base: 404 và 305 hạng 2. PriceLabs không tính được giá cho chúng — nghĩa là giá đang đẩy xuống Booking cho hai dòng này là giá cũ nằm im, không phải giá động. → L-21
  3. BA dòng Booking khai sai số phòng ngủ, không phải hai: 181THT (thật 3BR), 15MN (thật 4BR), 41LHC (thật 4BR) — tất cả đều ghi 1 BR. → L-18
  4. 25 AT 11 là listing yếu nhất danh mục: lấp đầy 13 % và giá thực chỉ bằng 50 % giá gốc — kém nhất trên cả hai trục. Cộng thêm nó không có trên Agoda và không có dòng Booking trong PriceLabs. → L-22
  5. Rất nhiều listing ngoài phạm vi chưa đặt Min/Base gì cả: toàn bộ Ba Na Hills, 86 Phạm Cự Lượng, sáu studio 1681…, và một listing 1482…4672 không có tên.

2c. Lấp đầy hợp nhất — cách đọc đúng con số 0 %

Airbnb và Booking dùng chung một lịch, nên lấp đầy hai kênh cộng lại mới ra mức bán thật của căn. Đây là chỗ dễ kết luận sai nhất.

Căn Airbnb Booking Hợp nhất Đọc ra sao
alacarte305 20 % 83 % ≈103 % Kín. Booking gánh gần hết, ở giá cao hơn
alacarte404 100 % 0 % 100 % Kín. 0 % của Booking là HỆ QUẢ, không phải lỗi
alacarte502 60 % 30 % 90 % Tốt
15nuocman5 63 % 0 % 63 % ⚠️ Còn 37 % trống mà Booking không bán được đêm nào
181tohienthanh 50 % 0 % 50 % ⚠️ Còn 50 % trống mà Booking không bán được đêm nào
41lehycat 20 % 20 % 40 % Yếu, nhưng cả hai kênh đều đang chạy
25anthuong11 13 % không có trong PL ≥13 % Yếu nhất

Sửa lại nhận định trước đó: 404 từng bị xếp chung nhóm "Booking chết". Sai — căn đó đã kín 100 % qua Airbnb, nên Booking không còn gì để bán. Chỉ 15nuocman5 và 181tohienthanh mới là ca thật.

2d. Base Price được tính thế nào — và vì sao hai kênh lệch nhau

Base là gì — đã kiểm TRỰC TIẾP trên trang listing (03/09/2026)

Mở app.pricelabs.co/pricing?listings=<id>&pms_name=airbnb&open_calendar=true, khối Configure Prices:

  • Ba ô nhập thật, type=text, không readonly, không disabled: Minimum = 1350000 · Base = 2182970 · Maximum = rỗng.
  • Nút Save & Refresh ngay dưới → giá trị được lưu chứ không phải hiển thị tính toán.
  • Nút Help Me Choose a Base Price → PriceLabs có công cụ đề xuất Base.
  • Khối Base Price History → mọi lần đổi Base đều được ghi lại.
  • Chỉ số Recommended Base Price to Base Price Ratio = 1,01 → PriceLabs tự tính một Base khuyến nghị riêng và so với Base đang đặt.

Kết luận đúng: Base là giá trị lưu trên từng listing, người quản lý sở hữu và bấm lưu — nhưng con số thường do PriceLabs sinh ra qua Help Me Choose a Base Price / Recommended Base Price, rồi được chấp nhận.

Base KHÔNG tự nhảy — đã xác minh bằng tài liệu

Help doc PriceLabs: Base "is not automatically updated by PriceLabs"; đặt xong thì lưu, và "should revisit it seasonally". Khi thuật toán thấy nên đổi, nó gửi nudge — và "Nudges never auto-apply — you always choose to accept or reject."

Ngược lại, giá theo ngày thì hoàn toàn tự động: cập nhật "up to 24 times per day" theo dữ liệu nhu cầu.

Base Price   → người đặt, đứng yên tới khi có người sửa
Giá từng ngày → PriceLabs tự tính lại tới 24 lần/ngày quanh Base đó

Quan sát khớp: Base của 305 giữ nguyên 2.182.970 suốt các lần đọc cách nhau nhiều giờ trong ngày 03/09, trong khi giá theo ngày và Last synced đều đổi. Mọi lần đổi Base được ghi ở Base Price History (mở không được — nút cạnh nhãn đó mang aria-label sai là Add Notes, không bấm vì nhãn mơ hồ).

⚠️ Sửa nhận định cũ. Bản trước ghi "Base do người dùng tự nhập" và lý giải số lẻ bằng "máy suy ra rồi được chấp nhận" — đúng phần sau, sai phần đầu. Số lẻ như 2.182.970 · 2.179.440 (hai căn 2BR A La Carte, lệch nhau đúng 3.530đ) là dấu vết của Recommended Base Price, không phải người gõ.

Rec/Base Price Ratio khác nhau giữa hai dòng của CÙNG một căn — vì sao (đọc 15/09/2026 22:30)

Đọc 14 dòng lúc 21:40: Airbnb 0,83–0,93 · Booking 0,91–1,25 (404 và 25 AT 11 Booking = Unavailable). Ba lý do, đã kiểm:

  1. Chỉ số tính riêng cho từng dòng. PriceLabs coi dòng Airbnb và dòng Booking của một căn là hai listing độc lập; Base khuyến nghị của mỗi dòng đi từ lịch sử bán của chính kênh đó trong 60 ngày (ADR · lấp đầy · pickup 30 ngày) so với thị trường — Help: "After 7 days (or 14–21 days for new listings) of consistent price syncing with the same base price, PriceLabs generates a personalized recommendation… Recommendations update weekly and apply for 7 days." 305: Booking lấp 53 % ở ADR cao hơn → 1,03; Airbnb lấp 23 % → 0,93.
  2. Tử số cũ, mẫu số mới. Rec chỉ tính lại hàng tuần (next_update_date: 305 Airbnb 20/09 · 305 Booking 23/09 · 41 Airbnb 24/09), còn Base thì mình vừa đổi: Airbnb ×1,15 ngày 14/09 (ratio tụt ~13 % chỉ vì mẫu số), Booking đổi sang Base của cha ngày 15/09 (15 MN 6,0 tr → 5,175 tr ⇒ rec cũ ≈ 6,47 tr ÷ Base mới = 1,25; 502 1,7 tr → 1,94 tr ⇒ 0,91). Ba dòng Booking 181/41/15 MN còn được tính với comp set 1 BR tới tận hôm nay (L-18).
  3. Mô hình thị trường chỉ có cho dòng Airbnb. Endpoint api/bph/fetch_base_price_estimator_data (nút Help Me Choose a Base Price, chỉ mở để đọc): dòng Airbnb 305 có market.value = 2.631.611 (bách phân vị 68 trong 145 căn 2 BR Sơn Trà) kèm bảng đóng góp từng yếu tố — Service Fee +343.254 ("Hidden Service Fee", host-only) · Guest Favorite +66.252 · Superhost +44.168 · Review count +72.648 · Amenities −110.420 · Cleaning fee −57.143 · ADR −33.429 · Occupancy +18.782 · Pickup +79.097; dòng Booking 305 cùng căn trả market.value = null, không có bảng yếu tố (Guest Favorite/Superhost/review là thuộc tính Airbnb). ⇒ dòng Booking chỉ có nửa mô hình (hiệu suất riêng kênh), không có nửa thị trường. Dump: audits/2026-09-15-post-mapping-verify/base-price-estimator-*.json.

Cách dùng từ nay: Base đã chép từ cha sang con nên chỉ đọc ratio ở dòng Airbnb (cha); chờ lượt tính lại tuần sau (20–24/09, với Base mới + BR đúng) rồi mới xét nudge. Ratio dòng Booking hiện tại là số cũ trên mẫu số mới — không hành động theo nó. Lưu ý riêng 41 LHC: estimator đặt Base 5.315.880 ở bách phân vị 41/157 căn 4 BR và mô hình yếu tố ra 8.875.292 (percentile 83) — ngược chiều với ratio tuần 0,87; hai công cụ đo hai thứ khác nhau (thị trường theo thuộc tính vs hiệu suất 60 ngày), chưa kết luận.

Base KHÔNG phải giá trung bình

Base = giá của một đêm bình thường (mùa thường, ngày thường, nhu cầu thường). Là đầu vào. Giá trung bình đã bán là cột ADR — kết quả.

⚠️ Rec/Base Price Ratio KHÔNG phải tỷ lệ giá theo ngày

Nhãn đầy đủ trên trang listing là Recommended Base Price to Base Price Ratio:

Rec/Base = Base mà PriceLabs KHUYẾN NGHỊ ÷ Base bạn ĐANG ĐẶT
  • 1,01 (305) → PriceLabs nghĩ Base nên cao hơn 1 %.
  • 0,97 (404) → nghĩ Base nên thấp hơn 3 %.
  • 1,07 (502) → nghĩ Base nên cao hơn 7 %. Đúng bằng số thứ hai trong ô Base của dòng đó: 1.688.560 × 1,07 = 1.807.055 ⇒ số thứ hai là Recommended Base Price, không phải giá hôm nay.

(Bản trước diễn giải nhầm đây là "giá khuyến nghị theo ngày". Sai.)

⚠️ ADR thấp hơn Base phần lớn là do MÙA, không phải bán rẻ

Đọc lịch giá tháng 9/2026 của 305 · Airbnb (Base 2.182.970):

Giá % của Base
Chạm sàn Min 1.350.000 61,8 %
Trung bình tháng 9 1.660.000 76,0 %
Cao nhất tháng 9 2.070.000 94,8 %
ADR 30 ngày qua 1.566.141 71,7 %

Cả tháng 9 đều dưới Base, và có ngày chạm đúng sàn Min. Đây là hành vi đúng của thuật toán trong mùa thấp — Base là giá đêm bình thường, tháng 9 Đà Nẵng không bình thường.

⇒ Tỷ lệ ADR/Base thấp KHÔNG tự nó chứng minh bán rẻ. Chỉ dùng nó để so các căn với nhau trong cùng kỳ, đừng đọc như một mức tuyệt đối. Ca đáng ngờ thật là 25 AT 11 ở 50 % — thấp hơn hẳn phần còn lại.

PriceLabs tính cái gì

Min · Base · Max là ba ô người dùng tự nhập, lưu riêng cho từng listing. PriceLabs chỉ gợi ý một con số lúc onboard rồi thôi; từ đó về sau nó không tự đổi Base.

Thứ PriceLabs tính là giá khuyến nghị theo từng ngày:

giá ngày X = Base × (mùa · thứ trong tuần · lấp đầy của chính mình
                     · nhu cầu thị trường từ comp set · khoảng cách tới ngày ở)
rồi kẹp vào [Min, Max]

Cột Rec/Base Price Ratio chính là hệ số tổng hợp đó. Base là cái neo, không phải kết quả.

Vì sao Airbnb và Booking lệch nhau dù cùng PriceLabs

Mỗi kết nối kênh là một listing RIÊNG trong PriceLabs, có bộ Min/Base/Max riêng. Airbnb 305 và Booking 13311503___1331150301 là hai hàng khác nhau. Không ai đồng bộ Base giữa chúng, nên hai con số là tàn dư của hai lần nhập tay khác nhau, ở hai thời điểm khác nhau — không phải kết quả của thuật toán nào.

Bằng chứng 1 — dấu vết làm tròn. Base của Booking tròn 100.000 ở cả 5/5 dòng; Base của Airbnb lẻ ở 5/7 dòng (2.182.970 · 2.179.440 · 3.862.830 · 1.688.560 · 4.622.500). Số lẻ là dấu vết máy suy ra rồi được chấp nhận; số tròn là người gõ tay.

Bằng chứng 2 — cặp PARENT/CHILD chứng minh cách sửa. Villa 36 Dương Tử Giang đã được nối cha–con trong PriceLabs:

Vai Kênh Min Base
PARENT Airbnb 1614…6321 4.500.000 7.290.170
CHILD Booking 15995581___1599558101 4.500.000 7.290.170

Giống hệt nhau. Nối cha–con là Base tự đồng bộ. Bảy căn trong phạm vi chưa nối, nên trôi mỗi nơi một kiểu. → L-23

(Lưu ý: nối cha–con đồng bộ Base nhưng KHÔNG sửa số phòng ngủ — dòng CHILD của 36 Dương Tử Giang vẫn ghi 3 BR trong khi PARENT ghi 6 BR.)

Bẫy lớn hơn: hai cột Base không so sánh được với nhau

Base Booking là giá khách trả. Base Airbnb hiện tại là giá TRƯỚC phụ thu khách ~14,2% (mô hình split fee). So thẳng hai cột là so hai thứ khác nhau.

Căn Khách trả trên Airbnb Khách trả trên Booking Thực tế
alacarte305 2.492.952 2.400.000 Booking rẻ hơn 3,7 %
alacarte502 1.928.336 1.700.000 Booking rẻ hơn 11,8 %
181tohienthanh 4.411.352 4.200.000 Booking rẻ hơn 4,8 %
41lehycat 5.278.895 5.500.000 Booking đắt hơn 4,2 %
15nuocman5 5.139.000 6.000.000 Booking đắt hơn 16,8 %

Đảo ngược ba trên năm dòng. Cột "Booking đắt hơn" tính trên Base là góc nhìn của host, không phải cái khách thấy. Khách thấy Booking rẻ hơn ở 305, 502 và 181 THT.

Từ 15/09 hai cột mới so được với nhau, vì Airbnb chuyển sang host-only thì Base Airbnb cũng thành giá khách trả.

Phụ thu khách Airbnb lấy ~14,2%, là mức phổ biến — chưa đọc từ tài khoản. Hoa hồng Booking của tài khoản này cũng chưa xác minh nên chưa tính được tiền thực nhận hai kênh.

2e. ADR và Revenue nghĩa là gì — ĐÃ CHỨNG MINH 03/09/2026

Nguồn: tab Booking Insights của listing, bảng Recent Bookings — cột Booked Date · Check In · Check Out · Length of Stay · Rental Revenue · Total Revenue · ADR · Guest Count.

Ba định nghĩa, kiểm trên 4 booking thật của căn 305

ADR            = Rental Revenue ÷ số đêm
Rental Revenue = tiền phòng thuần — KHÔNG gồm phí dọn
Total Revenue  = (Rental Revenue + phí dọn) × (1 − 3%)   = tiền host THỰC NHẬN
Booking Đêm Rental (Rental + 350.000) × 0,97 Total ghi trên PriceLabs
01–03/09 2 2.850.596 3.104.578 3.104.578 ✓
06–13/10 7 9.185.532 9.249.466 9.249.466 ✓
27–29/08 2 2.775.155 3.031.400 3.031.400 ✓
12–15/09 3 4.429.030 4.635.659 4.635.659 ✓

4/4 khớp đến từng đồng. Suy ngược ra phí host = 3,000 % ở cả bốn.

Trả lời ba câu còn treo

  1. ADR KHÔNG gồm phí dọn. Nó là tiền phòng thuần chia số đêm. ⇒ Tỷ lệ ADR/Base so đúng chuẩn: cả tử lẫn mẫu đều là giá phòng một đêm. Lo ngại trước đó không thành vấn đề.
  2. ADR là số GỘP, chưa trừ hoa hồng kênh. Số đã trừ nằm ở cột khác — Total Revenue.
  3. Đối chiếu với Airbnb: khớp. Hai giá trị Total Revenue của PriceLabs xuất hiện nguyên vẹn trong danh sách chi trả của chính Airbnb (/earnings/paid): 3.104.578 ở đợt Sep 2 và 3.031.400 ở đợt Aug 28. PriceLabs nhập dữ liệu Airbnb trung thực, không lệch.

Hệ quả: phí host Airbnb hiện tại = ĐÚNG 3 %

Trước đây đây là giả định khi tính lại giá cho mốc 15/09. Nay đã chứng minh trên 4 booking thật ⇒ phép tính giá mới = giá cũ × 0,97 ÷ 0,845 = ×1,1479 là đúng, không phải ước lượng.

⚠️ Chưa kiểm: Rental Revenue và ADR của các dòng Booking.com có cùng quy ước không. Nếu Booking gộp phí khác đi thì việc so Thực/Gốc giữa hai kênh vẫn lệch chuẩn.

2f. Chiết khấu dài ngày — PriceLabs CÓ tính năng, nhưng KHÔNG đẩy được xuống Airbnb/Booking

Xác minh 03/09/2026 bằng help doc + kiểm trong app.

Hai tính năng PriceLabs có

Tính năng Làm gì Kênh hỗ trợ
Weekly and Monthly discount Giảm giá cho lưu trú theo tuần/tháng. "Discounts apply on top of daily rates" — cảnh báo "Average daily rates can be lower than your set minimum price" VRBO · Bookerville · BookingSync · Guesty · Hostify · MyVR · Tokeet… — KHÔNG có Airbnb, KHÔNG có Booking.com
Length of Stay (LOS) Pricing "adjusts the nightly rate based on how long a guest is planning to stay", áp sau mọi customization khác 20+ PMS (Avantio · Lodgify · Rentals United · Ownerrez…) — KHÔNG có Airbnb, KHÔNG có Booking.com

⇒ Với danh mục này (Airbnb direct + Booking direct), cả hai tính năng đều vô hiệu.

Vậy chiết khấu dài ngày đang nằm ở đâu

Kênh Cơ chế thật Ai sở hữu
Airbnb weeklyPriceFactor 0,95 · monthlyPriceFactor 0,9 trong listing editor Airbnb — PriceLabs không chạm tới
Booking.com Rate plan riêng: Standard Rate · Weekly Rate · Monthly rate — không phải phần trăm Booking. Riêng Monthly rate của 502 gắn nhãn Not XML ⇒ PriceLabs không đẩy vào đó, giá tĩnh
VRBO PriceLabs đẩy được PriceLabs — nhưng 3 listing VRBO đều ở San Jose, ngoài phạm vi

Sửa lại lo ngại nêu trước đó: không có nguy cơ PriceLabs và Airbnb cùng ghi weekly/monthly discount — PriceLabs không thể ghi. Airbnb sở hữu hoàn toàn hai giá trị đó.

Customization của tài khoản này: RỖNG (hết đúng từ 20/09/2026 — xem mục 2i)

Mục Applied Customizations của listing 305 không có mục nào. Thuật toán đang chạy hoàn toàn theo mặc định — không seasonal profile, không orphan-gap, không last-minute, không LOS. (Mới kiểm 305; 6 căn còn lại chưa kiểm.) → L-34

2g. Total Revenue của Booking KHÁC hẳn của Airbnb — đo 03/09/2026

Cùng tên cột, hai nghĩa ngược chiều. Kiểm bằng Booking Insights của dòng 13311503___1331150301:

Airbnb   Total Revenue = (Rental + cleaning) × 0,97   ← TRỪ phí host 3%  = tiền host NHẬN
Booking  Total Revenue = (Rental + cleaning) × 1,08   ← CỘNG 8%          = tiền khách TRẢ
Booking 305 Đêm Rental (Rental + 300.000) × 1,08 Total ghi
14–24/10 10 14.568.344 16.057.812 16.057.812 ✓
19–22/09 3 4.144.444 4.800.000 4.800.000 ✓
23/11–03/12 10 17.055.843 18.744.310 18.744.310 ✓

Hệ số suy ngược = 1,08000 ở cả ba. ADR = Rental ÷ số đêm vẫn đúng như Airbnb.

⚠️ Chưa xác minh 8% đó là gì. Giả thuyết mạnh nhất là VAT 8% (mức áp cho dịch vụ lưu trú tại Việt Nam theo chính sách giảm thuế). Không tìm thấy khai báo thuế trên trang property_policies — cần mở đúng trang thuế của extranet để chốt. → L-36

⛔ Bản 03/09 của mục này SAI — sửa 15/09/2026

Bản cũ suy ra "khách Booking bị cộng thêm 8 %" và dựng bảng "khách thực trả = Base Booking × 1,08". Sai. Đối chiếu trang công khai 15/09 (4/4 căn): khách Booking trả đúng Σ giá đêm PriceLabs đẩy + phí dọn, không cộng gì. 8 % là VAT khai included trên vat_tax_charges.html — nằm bên trong giá; Booking báo về PriceLabs giá phòng đã bóc VAT, nên Total = (Rental + dọn) × 1,08 chỉ là cộng ngược lại. Hệ quả thật duy nhất:

ADR dòng Booking trong PriceLabs = giá khách trả ÷ 1,08 (đã bóc VAT)   ← thấp hơn giá thật ~7–8 %
ADR dòng Airbnb  trong PriceLabs = giá khách trả                        ← số gộp

⇒ So ADR/Rental hai kênh trong PriceLabs phải nhân dòng Booking với 1,08 trước. Hoa hồng Booking đã đọc: 15,00 % trên tổng khách trả gồm VAT + dọn (L-37). Bảng "khách thực trả" đúng, đo trên trang khách 90 đêm × 6 căn, nằm ở audits/2026-09-15-price-parity-airbnb-vs-booking.md — kết quả: khách Booking đang trả ÍT hơn Airbnb trung vị +2,6 % (25 AT 11) tới +17,1 % (41 LHC), ngược với bảng cũ ở 4/5 dòng.

2g-bis. Đọc giá khách thấy từ PriceLabs — dùng endpoint nào (15/09/2026)

Endpoint Dùng để Không dùng để
api/process → graph_data.pricing_array[].price Giá khách thấy từng ngày — đã đối chiếu 9/9 trang công khai Airbnb + Booking khớp đến từng đồng mở/đóng: num_bookings chỉ đếm đơn, không phản ánh ngày khoá tay
api/fetch_last_request_text → Availability[] Mở/đóng thật từng ngày (0 = đóng) giá: mảng Rates là gói đẩy cũ — sau khi nâng Base 15 % ngày 14/09, gói Airbnb vẫn ghi giá cũ (25 AT 11: 3.000.000 trong khi Airbnb đang bán 3.450.000); user_price trong graph_data cũng là số cũ này

2g-bis. Minimum stay — đọc toàn bộ 25/09/2026

🔄 Cập nhật 27/09/2026: 25anthuong11 Booking không còn chạy PriceLabs Recommended — nay gắn profile Huy SJ (cố định 2 đêm, đẩy đủ 541 đêm) và có override min stay 2 đêm 26/09–01/10. 13/14 dòng sync còn lại vẫn tắt min stay. 36 Dương Tử Giang đã tắt sync cả hai dòng. Nguồn: mục 2j.

Lệnh đọc lại (CHỈ ĐỌC): node scripts/ota-pricelabs-minstay.mjs [--nights] [--json <file>]. Snapshot: audits/2026-09-25-pricelabs-minstay.json.

Đọc ở đâu cho đúng — ba bẫy

  1. Đọc response.structured_json.min_stay.data, KHÔNG đọc response.json.update_minstay. Listing chưa từng lưu customization nào (15nuocman5, alacarte502, 25anthuong11 Airbnb…) trả response.json rút gọn, không có một trường min stay nào ⇒ update_minstay ra undefined, đọc ẩu thành "tắt" thì đúng kết quả nhưng sai lý do, và sẽ sai khi có căn bật.
  2. html_hierarchies_applied.min_stay === "None" = không có min stay ở bất kỳ tầng nào (listing · sub-group · group · account). Dùng làm cổng kiểm chéo.
  3. usage_instance_count của profile KHÔNG đáng tin — cả 3 profile đều trả 0 trong khi 36 Dương Tử Giang đang chạy profile Huy SJ. Muốn biết ai dùng profile nào thì đọc structured_json.min_stay.data.profile_id của từng listing.

⚠️ Modal trong giao diện hiển thị lệch bản lưu. Bấm Set Your Minimum Stay trên alacarte305 Airbnb thì modal mở ra với công tắc Apply Minimum Stay Restrictions BẬT và nhãn xanh "Custom minimum stay settings applied", trong khi bản đã lưu là update_minstay: 0, minstay_customizations: null. Modal đang mồi sẵn trạng thái setup, chưa phải trạng thái thật. Đọc API, đừng đọc modal.

Bảng trạng thái — 7 căn trong phạm vi

Căn Airbnb Booking
alacarte305 tắt tắt (cả 2 hạng phòng)
alacarte404 tắt tắt
alacarte502 tắt tắt
181tohienthanh tắt — còn giá trị đã lưu 2 đêm (default_minstay_type: dfd) tắt — còn giá trị đã lưu 2 đêm
41lehycat tắt tắt
15nuocman5 tắt tắt
25anthuong11 tắt ✅ BẬT — PriceLabs Recommended (Short-Term Rental), sàn min_weekday 1 / min_weekend 1, không gắn profile

⇒ 14/15 dòng tắt. Duy nhất 25anthuong11 Booking bật → L-122, L-123. Ngoài phạm vi: 36 Dương Tử Giang (Airbnb + Booking) chạy profile Huy SJ = cố định 2 đêm. 34/37 listing toàn tài khoản đang tắt.

Ba profile có sẵn ở cấp tài khoản — không căn nào trong 7 căn dùng

id Tên Nội dung Ai đang dùng
121894 3 nights minimum Mặc định 3 đêm (weekday + weekend) · Last-minute 2 đêm trong 7 ngày 0 listing
18287 Huy SJ Mặc định cố định 2 đêm 2 listing đang chạy — 36 Dương Tử Giang Airbnb 1614694700651096321 + Booking 15995581___1599558101. Gắn thêm ở 931494923533247426 (guesthouse San Jose) nhưng công tắc TẮT nên PriceLabs không tính
121795 May 2026 Mặc định 3 đêm · Last-minute 2 đêm trong 14 ngày 0 listing

25anthuong11 Booking KHÔNG dùng profile nào — profile_id: null, nó chạy preset PriceLabs Recommended (Short-Term Rental) đặt thẳng trên listing. Preset không xuất hiện trong danh sách Min Stay Profiles.

Trang Dynamic Pricing → Customizations → Min Stay Profiles hiện nhãn "Used across N instances" — N chỉ đếm listing có công tắc BẬT, nên khớp với structured_json.min_stay.data.enabled === true, không khớp với has_profile.

25anthuong11 Booking đang đẩy min stay bao nhiêu — đọc từng đêm

pricing_array[].min_stay của 16927056___1692705601, 541 đêm 25/09/2026 → 18/03/2028:

Min stay Khoảng Số đêm
1 đêm 25/09 → 31/10/2026 37
2 đêm 01/11 → 22/12/2026 52
3 đêm 23/12 → 26/12/2026 4
2 đêm 27/12 → 31/12/2026 5
3 đêm 01/01 → 04/02/2027 35
5 đêm 05/02 → 11/02/2027 (Tết) 7
3 đêm 12/02 → 30/04/2027 78

Tổng: 37 đêm ở mức 1 · 226 đêm ở mức 2 · 266 đêm ở mức 3 · 5 đêm mức 4 · 7 đêm mức 5. Sàn min_weekday 1 / min_weekend 1 là lý do 37 đêm gần nhất tụt về 1 đêm — thuật toán được phép hạ tới sàn để lấp chỗ trống.

max_stay chưa đặt ở đâu cả

pricing_array[].max_stay = -1 trên mọi đêm, mọi listing. Trần lưu trú hiện do chính kênh giữ (Airbnb 365 đêm cho villa, 180 đêm cho A La Carte).

Cả hai kênh đều hỗ trợ — không phải giới hạn kỹ thuật

graph_data.feature_access.show_min_stay = true cho cả airbnb lẫn bcom. Khác hẳn weekly/monthly discount và LOS pricing (mục 2f) — hai cái đó PriceLabs không đẩy được xuống hai kênh này. Min stay thì đẩy được, chỉ là chưa bật.

2h. Tool "Airbnb Fee Change: Update Prices" (banner Update My Prices Now) — đọc 14/09/2026

Drawer phân trang, ghi chỉ ở nút Save Prices (POST /api/airbnb_fee_migration/apply). Preview đọc được không cần mở: GET /api/airbnb_fee_migration?page_number=1 → 7 listing, chỉ Base + Min, hai hệ số without_vat 15 / with_vat 16.6. Trang Before you begin của chính PriceLabs dặn chạy tool Airbnb trước (nâng cleaning fee + chuyển fee), rồi mới Save + Sync ở đây. Cơ chế đầy đủ, bảng số từng căn và checklist bấm: airbnb-hof-migration-2026-09.md. ⛔ Lựa chọn "I'm Already on Host-Only Fee and Adjusted My Prices" xoá tool vĩnh viễn.

2i. Pricing Offset — lớp cuối cùng, KHÔNG đụng Base Price (đo 20/09/2026)

🔄 Cập nhật 27/09/2026 — ba ý "đã đo" bên dưới đã cũ: offset +4 % đã vào gói đẩy 26/09 (tỉ lệ Rates bcom/airbnb trung vị 1,0400 ở cả 7 cặp) và lịch PriceLabs giờ hiện offset: giá từng đêm của dòng Booking = dòng Airbnb × 1,04, fetch_reasons_json ghi "Pricing Offset 4%" ở mục final_adjustments mọi đêm. Cột Base vẫn không đổi theo offset (ý 1 còn đúng). Nguồn: mục 2j.

Nơi đặt: Dynamic Pricing → Customizations (app.pricelabs.co/customization) → tab Customization → Accounts (hoặc Groups / Listings) → nút Edit của kênh → mục Price Offset.

Trạng thái tài khoản này (đọc 20/09/2026 18:40):

Tài khoản Số listing Customization
Airbnb 25 No customizations set up
Booking.com 9 Price Offset · Percent · 4 · công tắc Apply Price Offset BẬT
Vrbo 3 No customizations set up

Trường nội bộ (tên cũ từ thời tích hợp Beds24, đọc trong bundle + fetch_customizations):

pricing_offset = { beds24_increment_on : công tắc (0/1)
                   beds24_increment_type : "percent" | "fixed"
                   beds24_increment : giá trị }

Cơ chế — theo tài liệu chính thức

help.pricelabs.co/…/pricing-offsets-for-mapped-listings:

  • Offset áp lên Recommended Price — giá đề xuất từng đêm, "after all other customizations have been applied", kể cả Fixed Price Overrides và Orphan Discounts.
  • Áp SAU cả Min lẫn Max: "if your offset is a premium, it may make your price go higher your maximum price" ⇒ offset xuyên thủng trần Max.
  • "The final adjusted price will be pushed to the PMS" — tức offset nằm ở bước đẩy, không nằm ở dữ liệu gốc.
  • Listing đã map cha–con: phải đặt ở cấp account hoặc group. "If set at the listing level, it gets removed whenever a change is made to the parent listing."
  • Trần: giảm tối đa 40, tăng tối đa 500 (cả fixed lẫn percent).
Base ──(mùa · DOW · lấp đầy · comp set · DFD)──▶ giá ngày ──kẹp [Min,Max]──▶ Recommended Price
                                                                                  │
                                                                      ×(1+offset) ▼
                                                                          giá ĐẨY xuống kênh

⚠️ Ba điều dễ hiểu sai — đã đo, không phải suy luận

  1. Cột Base Price trên Pricing Dashboard KHÔNG BAO GIỜ đổi theo offset. Base là đầu vào người dùng lưu; offset tác động ở đầu ra. Đã map cha–con nên 7/7 cặp có Min/Base/Max giống hệt nhau giữa dòng Airbnb và dòng Booking — và sẽ mãi như vậy dù offset bao nhiêu. Đây là biểu hiện ĐÚNG, không phải lỗi.
  2. Lịch giá trong PriceLabs cũng không hiện offset. graph_data.pricing_array[].price của 7 dòng bcom trùng khít dòng airbnb cha suốt 60 ngày (tỉ lệ 1,0000 ở 7/7 căn).
  3. Offset chỉ thành hiện thực khi có lần đẩy mới. Đo 20/09/2026: gói đẩy cuối của bcom 305 (CurrentListingTime 2026-09-20 16:00:19) so từng phần tử với gói airbnb 305 (16:21:46) — 198 đêm giá dương, trung vị tỉ lệ 1,00000, biên 0,99997–1,00004, 0 đêm vượt +3 %. Offset đã lưu và đã bật, nhưng chưa vào gói đẩy nào.

Cách kiểm sau khi Sync (chỉ đọc)

Đọc api/fetch_last_request_text?listingId=<id>&pmsName=<bcom|airbnb> (bắt qua CDP khi mở trang listing — gọi thẳng bằng listing_id/pms trả ERR-FLRT-INVALID-PARAMS), lấy data.listing.Rates của cả hai dòng cùng một căn rồi chia từng phần tử. Số âm = ngày đóng (giá trị là −Min). Offset ăn khi trung vị ≈ 1,04. Đối chứng cuối cùng vẫn là giá trên trang khách Booking.

Hệ quả cho chiến lược gộp phí dọn

Offset cấp account = MỘT mức cho cả 9 listing bcom (gồm cả căn ngoài phạm vi: 36 Dương Tử Giang, 305 hạng 2). Muốn mỗi căn một số tiền khác nhau — như bản chốt 20/09 (phí dọn ÷ 4) — phải dựng Group riêng cho từng căn rồi đặt offset ở cấp group; đặt ở cấp listing sẽ bị xoá mỗi lần dòng cha đổi. Xem vault/08-agents/DECISIONS.md mục 20/09.

2j. Ảnh chụp cấu hình đang áp — 27/09/2026 (chỉ đọc)

Báo cáo đầy đủ: https://claude.ai/artifact/LGDaxgGujTga1hLjSqYize (vault/19-Harthliving-OTA/status/reports/pricelabs-current-setup.html) · dữ liệu gốc + ảnh: audits/2026-09-27-pricelabs-current-setup/ · đọc lại bằng scripts/pricelabs-setup-snapshot/.

  • 14/37 listing bật sync = 7 căn × (Airbnb cha + Booking con). 23 dòng tắt sync (San Jose, 86 PCL, 36 DTG, hạng 2 của 305…).
  • Min/Base/Max cha = con ở 6/7 căn; 25 AT 11 lệch: Min Airbnb 2.000.000, Booking 2.200.000. Max ≈ 2,5 × Base ở cả 14 dòng. Base Airbnb đổi 14/09, Base Booking đổi 15/09.
  • Tuỳ chỉnh riêng cấp listing: 181 THT last-minute −5 % phẳng 7 ngày · 41 LHC −10 % giảm dần 4 ngày · 305/404 orphan −20 % cho khe 2–3 đêm (khe 1 đêm không được giảm) · 305/404 chọn last-minute theo thị trường ở cấp listing · 25 AT 11 override 26/09–01/10 (Airbnb −33 %, Booking −24 % + min stay 2) · 25 AT 11 Booking profile min stay Huy SJ. Còn lại là mặc định (market-driven last-minute/far-out/OBA, booking recency, Safety Min 110 % ADR năm trước cho đêm > 180 ngày).
  • Cấp account: Airbnb không có gì · Booking.com Pricing Offset +4 % · không group, không override cấp account.
  • Sync: Default Overnight Sync (GMT), không giờ riêng, không additional sync, Real-time Sync tắt (trang ghi $1/đơn vị/tháng). Lần đẩy cuối 26/09 tự động (UserSync N). Gói đẩy: Airbnb 731 đêm, Booking 760 đêm.
  • Control Panel bật: Group Wizard, Data Widget, Portfolio OBA, Demand Factor, Seasonality, Smoothing, Day of Week, Pricing Offset. Tắt: Sub-groups, POBA weekday/weekend, Custom Seasonal Profile, Weekend Adjustments, Pricing Profiles, Rounding, No Price Updates for Unavailable Nights, Hotel compsets, Adjacent, Custom Safety Min, Min last-minute, Min orphan.
  • Action Center 5 mục: last-minute "quá nhẹ" ở 181 THT và 41 LHC (cả hai kênh) · 502 Airbnb gợi ý hạ Min 1.360.000 → 1.292.000 (hết hạn 28/09).
  • Safety Min làm sàn thật ở 0–250 đêm tuỳ dòng (404 Airbnb 250, 181 THT Airbnb 197); dòng Booking chưa có lịch sử năm trước thì không áp.

3. Bố cục giao diện

Menu chính: Dynamic Pricing · Portfolio Analytics · Market Research · Listing Optimizer · Action Center.

Bảng Pricing Dashboard — cột đo được 03/09/2026: Listings · Calendar · Tags · Action Center · Sync Price · Property Type · Group · Min Price · Base Price · Max Price · BR · City · Total Occ (30P) · Rec/Base Price Ratio · Total Rev (30P) · ADR (30P) · MPI (30N)

  • Min / Base / Max Price là ba chốt chặn của thuật toán — Base là giá gốc, thuật toán chạy trong khoảng Min–Max.
  • (30P) = 30 ngày đã qua (past), (30N) = 30 ngày tới (next).
  • MPI = Market Penetration Index — so mình với thị trường.
  • Bảng nạp bất đồng bộ; đọc ngay sau khi mở sẽ ra một loạt Loading.... Phải đợi nạp xong mới đọc số.

4. Cảnh báo đang chạy

Action Center có 99+ mục và một banner riêng 7. Banner đỏ: ACTION REQUIRED: Airbnb fee change on Sep 15th 2026 — xem airbnb.md mục 1 và issues.md L-01.

5. Chưa biết — cần học thêm

  • PriceLabs có phải channel manager đang đẩy XML xuống Booking không, hay còn bên thứ ba khác.
  • 36 listing gồm những gì (cần mở Add/Re-import Listings, chỉ đọc).
  • Đang chạy chiến lược giá nào, có customization theo mùa / theo ngày trong tuần không.
  • 99+ mục trong Action Center là loại gì, mục nào thực sự cần xử lý.

Nguồn: guide/platforms/pricelabs.md · cập nhật 27/09/2026

Bản chữ cho máy đọc: TXT

Áp dụng cho

Cài đặt hiện tại của từng căn trên PriceLabs:

Cùng chủ đề