Template Quản Lý Spa & Salon Google Sheets [Đặt Lịch + Khách Hàng 2026]
![Ảnh minh họa bài viết: Template Quản Lý Spa & Salon Google Sheets [Đặt Lịch + Khách Hàng 2026]](/og-image.jpg)
Quản Lý Spa, Salon Bằng Sổ Tay: Nỗi Đau Quen Thuộc Của Cơ Sở Nhỏ
Bạn mở một spa nhỏ, một salon tóc, hay một thẩm mỹ viện vừa và vừa đủ khách. Lịch hẹn ghi vào một cuốn sổ để ngoài quầy lễ tân. Mọi thứ ổn cho đến khi khách bắt đầu đông lên.
Rồi những vấn đề bắt đầu xuất hiện. Hai khách đặt cùng một khung giờ với cùng một kỹ thuật viên (KTV) — trùng lịch, một người phải về tay không và không bao giờ quay lại. Khách đặt lịch tuần trước nhưng đến ngày quên mất, bạn cũng quên nhắc — đó là một ca no-show, một khung giờ vàng bị bỏ trống. Cuối tháng tính lương, bạn ngồi cộng tay từng phiếu dịch vụ để biết KTV nào làm được bao nhiêu, mất cả buổi tối mà vẫn sai số. Và câu hỏi quan trọng nhất — dịch vụ nào đang bán chạy nhất, khách nào sắp đến sinh nhật, bao nhiêu phần trăm khách quay lại — thì bạn hoàn toàn không có câu trả lời.
Phần mềm quản lý spa chuyên nghiệp thì đắt, phức tạp, và thường tính phí theo tháng — quá sức với một cơ sở mới mở. Giải pháp nằm ở một công cụ bạn đã có sẵn và hoàn toàn miễn phí: Google Sheets. Bài viết này hướng dẫn bạn xây dựng một template quản lý spa/salon hoàn chỉnh với 6 sheet, công thức tự động tính doanh thu, dashboard trực quan, và cả đoạn Apps Script nhắc lịch hẹn tự động.
Tổng Quan Template: 6 Sheet Quản Lý Toàn Bộ Cơ Sở
Template được thiết kế theo nguyên tắc nhập một lần, dùng nhiều nơi. Bạn chỉ nhập dữ liệu thô ở sheet Lịch Hẹn và Dịch Vụ, mọi báo cáo còn lại tự động tổng hợp bằng công thức. Sáu sheet bao gồm:
- 1. Lịch Hẹn — trái tim của hệ thống, ghi mọi cuộc hẹn theo ngày, giờ, KTV, trạng thái.
- 2. Khách Hàng — hồ sơ từng khách: lịch sử chi tiêu, số lần đến, phân loại VIP, ghi chú da/tóc.
- 3. Dịch Vụ — danh mục dịch vụ với giá, thời lượng, tỷ lệ hoa hồng KTV.
- 4. Nhân Viên (KTV) — thông tin KTV và doanh thu, hoa hồng tự tính theo tháng.
- 5. Doanh Thu — tổng hợp theo ngày, theo tháng, theo dịch vụ, theo KTV.
- 6. Dashboard — màn hình tổng quan: doanh thu hôm nay, no-show, KTV top, dịch vụ hot.
Hãy đi sâu vào từng sheet, kèm cấu trúc cột cụ thể và công thức bạn copy-paste được ngay.
Sheet 1: Lịch Hẹn — Hết Trùng Lịch, Hết No-Show
Đây là sheet bạn mở mỗi sáng và nhập mỗi khi có khách đặt. Cấu trúc cột gồm:
- Ngày | Giờ | Khách | SĐT | Dịch vụ | KTV phụ trách | Thời lượng | Giá | Trạng thái | Ghi chú
Cột Trạng thái dùng Data Validation (dropdown) với 4 giá trị cố định: Đặt, Đến, Hủy, No-show. Đây là cột quan trọng nhất để tính tỷ lệ no-show và lọc khách thực đến.
Bảng lịch hẹn mẫu một ngày trông như sau:
| Ngày | Giờ | Khách | SĐT | Dịch vụ | KTV | Thời lượng | Giá | Trạng thái |
|---|---|---|---|---|---|---|---|---|
| 09/06/2026 | 09:00 | Nguyễn Lan | 0901234567 | Chăm sóc da cơ bản | Trang | 60 phút | 350.000 | Đến |
| 09/06/2026 | 10:30 | Trần Mai | 0912345678 | Gội đầu dưỡng sinh | Hoa | 45 phút | 180.000 | Đến |
| 09/06/2026 | 13:00 | Lê Hương | 0923456789 | Triệt lông nách | Trang | 30 phút | 250.000 | No-show |
| 09/06/2026 | 15:00 | Phạm Thu | 0934567890 | Nhuộm tóc thời trang | Hoa | 120 phút | 650.000 | Đặt |
Conditional Formatting theo trạng thái giúp bạn nhìn lướt qua là nắm ngay tình hình. Vào Format > Conditional formatting, áp dụng cho cột Trạng thái:
Đến→ nền xanh lá (khách đã hoàn thành, đã tính doanh thu).Đặt→ nền vàng (lịch sắp tới, cần chuẩn bị và nhắc khách).Hủy→ nền xám (khách chủ động hủy).No-show→ nền đỏ (khách quên đến — cần theo dõi và gọi lại).
Dùng rule "Text is exactly" cho từng giá trị. Chỉ mất 2 phút cài đặt nhưng tiết kiệm hàng giờ mỗi tuần.
Sheet 2: Khách Hàng — Hồ Sơ 360 Độ Tự Động Cập Nhật
Sheet này biến những con số rời rạc ở Lịch Hẹn thành chân dung từng khách. Cấu trúc cột:
- SĐT (khóa định danh) | Tên | Ngày sinh | Lần đầu đến | Tổng chi tiêu | Số lần đến | Dịch vụ ưa thích | Phân loại (VIP/Thường) | Ghi chú da/tóc
Điều hay là Tổng chi tiêu và Số lần đến không cần nhập tay — chúng tự tính từ sheet Lịch Hẹn bằng SUMIF và COUNTIF. Giả sử SĐT khách nằm ở ô A2:
# Tổng chi tiêu của khách (chỉ tính các ca "Đến")
=SUMIFS('Lịch Hẹn'!H:H, 'Lịch Hẹn'!D:D, A2, 'Lịch Hẹn'!I:I, "Đến")
# Số lần khách đã đến
=COUNTIFS('Lịch Hẹn'!D:D, A2, 'Lịch Hẹn'!I:I, "Đến")
Cột Phân loại có thể tự động hóa: khách chi tiêu trên một ngưỡng (ví dụ 5 triệu) thì gán VIP.
=IF(E2>=5000000, "VIP", "Thường")
Trong đó E2 là ô Tổng chi tiêu. Cột Ngày sinh sẽ là vàng cho việc chăm sóc — chúng ta sẽ dùng nó để gửi lời chúc và ưu đãi sinh nhật ở phần sau. Cột Ghi chú da/tóc là nơi KTV ghi tình trạng da khô, da nhạy cảm, tóc đã uốn hóa chất — giúp lần sau phục vụ chuẩn xác hơn, khách cảm thấy được quan tâm thật sự.
Sheet 3: Dịch Vụ — Danh Mục Chuẩn Hóa Giá Và Hoa Hồng
Sheet Dịch Vụ là "bảng giá gốc" để các sheet khác tham chiếu. Cấu trúc:
- Mã DV | Tên dịch vụ | Nhóm | Thời lượng | Giá | Hoa hồng KTV (%) | Ghi chú
| Mã DV | Tên dịch vụ | Nhóm | Thời lượng | Giá | Hoa hồng KTV |
|---|---|---|---|---|---|
| DV01 | Chăm sóc da cơ bản | Da liễu | 60 phút | 350.000 | 15% |
| DV02 | Gội đầu dưỡng sinh | Tóc | 45 phút | 180.000 | 20% |
| DV03 | Triệt lông nách | Triệt lông | 30 phút | 250.000 | 12% |
| DV04 | Nhuộm tóc thời trang | Tóc | 120 phút | 650.000 | 18% |
Cột Nhóm cho phép bạn phân tích doanh thu theo mảng (Da liễu, Tóc, Triệt lông, Massage...). Cột Hoa hồng KTV % là cơ sở để tính lương — mỗi dịch vụ có thể có tỷ lệ khác nhau tùy độ khó và chi phí vật tư. Khi nhập lịch hẹn, bạn có thể dùng VLOOKUP để tự điền giá từ mã dịch vụ, tránh nhập sai:
=VLOOKUP(E2, 'Dịch Vụ'!B:E, 4, FALSE)
Sheet 4: Nhân Viên (KTV) — Lương Và Hoa Hồng Tự Tính
Đây là sheet giải quyết nỗi đau "ngồi cộng tay cuối tháng". Cấu trúc:
- Mã KTV | Tên | Chuyên môn | Lương cơ bản | Doanh thu tháng | Hoa hồng | Số khách phục vụ
Doanh thu tháng của mỗi KTV được tính bằng SUMIFS — cộng tất cả ca "Đến" mà KTV đó phụ trách trong tháng. Giả sử tên KTV ở ô B2 và bạn lọc theo tháng 6/2026:
# Doanh thu tháng của KTV
=SUMIFS('Lịch Hẹn'!H:H, 'Lịch Hẹn'!F:F, B2, 'Lịch Hẹn'!I:I, "Đến",
'Lịch Hẹn'!A:A, ">="&DATE(2026,6,1),
'Lịch Hẹn'!A:A, "<="&DATE(2026,6,30))
# Số khách KTV đã phục vụ trong tháng
=COUNTIFS('Lịch Hẹn'!F:F, B2, 'Lịch Hẹn'!I:I, "Đến",
'Lịch Hẹn'!A:A, ">="&DATE(2026,6,1),
'Lịch Hẹn'!A:A, "<="&DATE(2026,6,30))
Hoa hồng đơn giản nhất là tính trên doanh thu nhân với một tỷ lệ trung bình. Nếu KTV hưởng 15% trên doanh thu:
# Hoa hồng = doanh thu tháng * tỷ lệ
=E2 * 0.15
Tổng thu nhập của KTV trong tháng đơn giản là =D2 + F2 (lương cơ bản cộng hoa hồng). Vậy là cuối tháng bạn chỉ cần mở sheet này, mọi con số đã sẵn sàng — không còn ngồi cộng phiếu đến nửa đêm.
Sheet 5: Doanh Thu — Tổng Hợp Đa Chiều
Sheet Doanh Thu tổng hợp số liệu theo nhiều góc nhìn để bạn ra quyết định:
- Theo ngày/tháng: tổng doanh thu từng ngày, từng tháng để theo dõi xu hướng.
- Theo dịch vụ: dịch vụ nào mang về nhiều tiền nhất, dịch vụ nào ế.
- Theo KTV: bảng xếp hạng KTV theo doanh thu.
Doanh thu một ngày cụ thể (ví dụ ô A2 chứa ngày cần tính):
=SUMIFS('Lịch Hẹn'!H:H, 'Lịch Hẹn'!A:A, A2, 'Lịch Hẹn'!I:I, "Đến")
Doanh thu theo từng dịch vụ (tên dịch vụ ở ô A2):
=SUMIFS('Lịch Hẹn'!H:H, 'Lịch Hẹn'!E:E, A2, 'Lịch Hẹn'!I:I, "Đến")
Để tìm Top dịch vụ bán chạy, kết hợp SORT và bảng doanh thu theo dịch vụ. Nếu bảng tổng hợp dịch vụ nằm ở vùng A2:B20 (cột A tên dịch vụ, cột B doanh thu):
=SORT(A2:B20, 2, FALSE)
Hàm này sắp xếp giảm dần theo cột doanh thu, đưa dịch vụ "hot" nhất lên đầu. Đây chính là dữ liệu đầu vào cho Dashboard.
Sheet 6: Dashboard — Toàn Cảnh Spa Trong Một Màn Hình
Dashboard là nơi bạn mở mỗi sáng để nắm tình hình mà không cần lật qua 5 sheet kia. Các chỉ số chính:
- Doanh thu hôm nay và doanh thu tháng
- Số lịch hẹn trong ngày và trong tháng
- Tỷ lệ no-show — chỉ số sức khỏe vận hành
- KTV top doanh thu
- Dịch vụ hot nhất
- % khách quay lại
Doanh thu hôm nay dùng TODAY() để tự cập nhật mỗi ngày:
=SUMIFS('Lịch Hẹn'!H:H, 'Lịch Hẹn'!A:A, TODAY(), 'Lịch Hẹn'!I:I, "Đến")
Tỷ lệ no-show là số ca no-show chia cho tổng số ca đã lên lịch (không tính ca đang chờ). Đây là chỉ số quan trọng — no-show cao nghĩa là quy trình nhắc lịch của bạn chưa tốt:
# Tỷ lệ no-show = số ca No-show / tổng số ca (Đến + No-show + Hủy)
=COUNTIF('Lịch Hẹn'!I:I, "No-show") /
(COUNTIF('Lịch Hẹn'!I:I, "Đến") +
COUNTIF('Lịch Hẹn'!I:I, "No-show") +
COUNTIF('Lịch Hẹn'!I:I, "Hủy"))
Định dạng ô kết quả thành phần trăm (Format > Number > Percent). Nếu tỷ lệ vượt 10%, đã đến lúc siết chặt việc nhắc lịch.
Phần trăm khách quay lại đo lường lòng trung thành — đây là chỉ số sống còn của spa/salon vì chi phí giữ khách cũ rẻ hơn nhiều so với tìm khách mới. Tính bằng số khách đến từ 2 lần trở lên chia cho tổng số khách. Nếu cột "Số lần đến" ở sheet Khách Hàng nằm tại F:F:
# % khách quay lại = số khách đến >= 2 lần / tổng số khách
=COUNTIF('Khách Hàng'!F:F, ">=2") / COUNTA('Khách Hàng'!A2:A)
Bổ sung một vài biểu đồ (Insert > Chart): biểu đồ cột doanh thu theo ngày, biểu đồ tròn cơ cấu doanh thu theo nhóm dịch vụ. Dashboard giờ trông như một phần mềm quản lý thực thụ — nhưng hoàn toàn miễn phí.
Apps Script: Tự Động Nhắc Lịch Hẹn Trước 1 Ngày
No-show thường đến từ việc khách đơn giản là quên. Một tin nhắn nhắc trước một ngày có thể cắt giảm no-show đáng kể. Google Sheets cho phép bạn làm điều này tự động bằng Apps Script.
Vào Extensions > Apps Script, dán đoạn mã sau. Nó duyệt qua sheet Lịch Hẹn, tìm các ca có ngày là ngày mai và trạng thái là Đặt, rồi gửi email nhắc:
function nhacLichHenNgayMai() {
const sheet = SpreadsheetApp.getActiveSpreadsheet()
.getSheetByName('Lịch Hẹn');
const data = sheet.getDataRange().getValues();
// Tính ngày mai (bỏ phần giờ để so sánh theo ngày)
const ngayMai = new Date();
ngayMai.setDate(ngayMai.getDate() + 1);
ngayMai.setHours(0, 0, 0, 0);
// Bỏ qua hàng tiêu đề (i = 0), bắt đầu từ hàng 2
for (let i = 1; i < data.length; i++) {
const ngayHen = new Date(data[i][0]); // cột A: Ngày
ngayHen.setHours(0, 0, 0, 0);
const tenKhach = data[i][2]; // cột C: Khách
const sdt = data[i][3]; // cột D: SĐT
const dichVu = data[i][4]; // cột E: Dịch vụ
const gioHen = data[i][1]; // cột B: Giờ
const trangThai = data[i][8]; // cột I: Trạng thái
// Chỉ nhắc các ca đặt cho ngày mai, chưa hủy/đến
if (ngayHen.getTime() === ngayMai.getTime() && trangThai === 'Đặt') {
const noiDung =
'Xin chào ' + tenKhach + ',\n\n' +
'Spa xin nhắc lịch hẹn của bạn vào ngày mai lúc ' + gioHen + '.\n' +
'Dịch vụ: ' + dichVu + '.\n' +
'Vui lòng đến đúng giờ. Nếu cần đổi lịch, hãy gọi cho chúng tôi.\n\n' +
'Cảm ơn bạn!';
// Gửi qua Gmail (cần cột email, hoặc thay bằng API Zalo OA)
Logger.log('Nhắc ' + tenKhach + ' (' + sdt + '): ' + dichVu);
// MailApp.sendEmail(emailKhach, 'Nhắc lịch hẹn spa', noiDung);
}
}
}
Để chạy tự động mỗi sáng, thiết lập một Trigger theo thời gian: trong Apps Script, vào Triggers (biểu tượng đồng hồ) > Add Trigger > chọn hàm nhacLichHenNgayMai, loại Time-driven > Day timer > khung 7–8 giờ sáng. Mỗi sáng hệ thống tự gửi nhắc cho mọi khách có hẹn ngày mai.
Nâng cấp gửi qua Zalo OA: Email có tỷ lệ mở thấp ở Việt Nam, trong khi tin nhắn Zalo gần như chắc chắn được đọc. Bạn có thể thay MailApp.sendEmail bằng lệnh gọi API Zalo Official Account để gửi tin nhắn ZNS. Chúng tôi đã có hướng dẫn chi tiết tích hợp Google Sheets với Zalo OA — xem bài Google Sheets + Zalo OA: tự động gửi tin nhắn hàng loạt 2026 để biết cách lấy access token và gửi tin nhắn từ Apps Script.
Tích Hợp Google Forms: Khách Tự Đặt Lịch Online
Thay vì khách phải gọi điện và bạn ghi tay, hãy để khách tự đặt lịch online. Tạo một Google Form với các trường: Họ tên, Số điện thoại, Dịch vụ muốn đặt (dropdown lấy từ sheet Dịch Vụ), Ngày mong muốn, Giờ mong muốn, KTV ưa thích (tùy chọn).
Liên kết Form với Sheets: trong Google Form, vào tab Responses > biểu tượng Sheets > chọn liên kết tới spreadsheet của bạn. Mọi câu trả lời sẽ tự động đổ vào một sheet "Form Responses". Bạn chỉ cần kiểm tra và xác nhận, rồi copy sang sheet Lịch Hẹn (hoặc dùng Apps Script để tự động đồng bộ).
Lợi ích: khách đặt lịch 24/7 kể cả ngoài giờ làm việc, lễ tân bớt việc nghe điện thoại, và mọi thông tin được ghi chuẩn ngay từ đầu — không nghe nhầm tên hay số điện thoại.
Mẹo Giữ Chân Khách: Biến Spreadsheet Thành Công Cụ Marketing
Dữ liệu khách hàng bạn đang tích lũy không chỉ để quản lý — nó là mỏ vàng để giữ chân khách. Vài cách khai thác:
- Chăm sóc sinh nhật: Dùng cột Ngày sinh ở sheet Khách Hàng, viết một công thức hoặc Apps Script lọc ra khách có sinh nhật trong tuần, rồi gửi lời chúc kèm voucher giảm giá. Công thức lọc sinh nhật trong tháng hiện tại:
=FILTER('Khách Hàng'!B:B, MONTH('Khách Hàng'!C:C)=MONTH(TODAY())). - Membership / tích điểm: Thêm một cột "Điểm tích lũy" tính theo tổng chi tiêu (ví dụ 10.000đ = 1 điểm). Khi đủ điểm, khách đổi quà hoặc giảm giá. Điều này tạo lý do để khách quay lại đúng cơ sở của bạn thay vì sang chỗ khác.
- Nhắc lịch chăm sóc định kỳ: Với các dịch vụ cần làm lặp lại (nhuộm tóc, chăm sóc da, triệt lông theo liệu trình), dùng cột "Lần đến gần nhất" để nhắc khách quay lại sau một khoảng thời gian hợp lý.
- Phân loại VIP để ưu tiên: Khách VIP được ưu đãi đặt lịch giờ đẹp, quà tặng riêng, hoặc dịch vụ thử miễn phí. Lòng trung thành được nuôi dưỡng bằng sự khác biệt nhỏ.
Kết Luận: Bắt Đầu Đơn Giản, Mở Rộng Dần
Bạn không cần đầu tư một phần mềm quản lý spa đắt đỏ ngay từ ngày đầu. Với Google Sheets và template 6 sheet trong bài này, bạn đã có một hệ thống đủ mạnh để quản lý lịch hẹn không trùng, theo dõi doanh thu từng KTV, đo tỷ lệ no-show và khách quay lại — tất cả miễn phí và tùy biến theo đúng nhu cầu cơ sở mình.
Lời khuyên thực tế: đừng cố làm hoàn hảo cả 6 sheet ngay. Hãy bắt đầu với sheet Lịch Hẹn và Dịch Vụ trước — chỉ riêng việc hết trùng lịch và nhìn rõ lịch trong ngày đã thay đổi cách bạn vận hành. Khi đã quen, thêm dần công thức tự tính doanh thu, rồi Dashboard, rồi Apps Script nhắc lịch. Mỗi bước nhỏ là một giờ làm việc được giải phóng.
Khi cơ sở phát triển lớn hơn — nhiều chi nhánh, hàng nghìn khách, cần phân quyền nhân viên — đó là lúc cân nhắc nâng cấp lên phần mềm chuyên dụng. Nhưng cho đến lúc đó, Google Sheets là người bạn đồng hành đủ tốt để bạn tập trung vào điều quan trọng nhất: chăm sóc khách hàng thật tốt.
Chia sẻ bài viết:
Tuân Hoang
Đội ngũ SheetStore
Google Workspace Certified, 5+ years experience
Bạn thấy bài viết hữu ích?
Đăng ký nhận thông báo khi có bài viết mới.

