Google Analytics

Scroll Depth

Tỷ lệ phần trăm chiều cao trang người dùng cuộn xuống, thường được theo dõi qua sự kiện tự động hoặc tùy chỉnh.

3 lượt xem Cập nhật: 26/05/2026

Scroll Depth là gì?

Scroll Depth (độ sâu cuộn) là chỉ số đo lường phần trăm chiều cao trang web mà người dùng đã cuộn xuống — ví dụ: 25%, 50%, 75% hoặc 100% chiều cao nội dung khả dụng (viewport height + scrollable content). Đây không phải là thời gian ở lại trang, cũng không phải số lần cuộn, mà là mức độ tiếp cận nội dung theo chiều dọc.

Trong Google Analytics 4 (GA4), Scroll Depth không phải là chỉ số mặc định. Nó được thu thập thông qua sự kiện tùy chỉnh (custom event) dựa trên hành vi cuộn của người dùng, thường kết hợp với JavaScript để phát hiện các mốc % nhất định.

Tại sao quan trọng trong SEO?

Scroll Depth không trực tiếp ảnh hưởng đến thứ hạng Google — vì Google xác nhận không dùng dữ liệu hành vi từ GA làm yếu tố xếp hạng. Tuy nhiên, nó là chỉ số gián tiếp cực kỳ giá trị để đánh giá chất lượng nội dung và trải nghiệm người dùng:

  • Phát hiện điểm thoát sớm: Nếu 70% người dùng dừng ở mức 30% chiều cao trang → nội dung mở đầu có thể thiếu hấp dẫn, tiêu đề sai kỳ vọng hoặc tải chậm.
  • Đánh giá hiệu quả cấu trúc nội dung: Mức độ cuộn đạt 90% cho thấy người đọc tin tưởng và tìm thấy giá trị — tín hiệu tích cực cho thuật toán hiểu "trang đáp ứng tốt nhu cầu".
  • Hỗ trợ tối ưu hóa CTA và vị trí quảng cáo: Biết 85% người dùng cuộn tới 75% trang giúp đặt nút kêu gọi hành động (CTA) hoặc banner ở khu vực đó mà không làm gián đoạn trải nghiệm.
  • Bổ sung cho tỷ lệ thoát (bounce rate) và thời gian ở lại: Một trang có bounce rate cao nhưng scroll depth trung bình đạt 80% cho thấy người dùng đã tương tác sâu, chỉ không click thêm liên kết — điều này phản bác giả định “bỏ đi ngay”.

Cách hoạt động

Scroll Depth hoạt động dựa trên sự kiện cuộn (scroll event) trong trình duyệt. Khi người dùng cuộn, trình duyệt gửi tín hiệu liên tục. Hệ thống theo dõi sẽ:

  1. Đo chiều cao tổng của tài liệu (document.body.scrollHeight) và chiều cao vùng hiển thị (window.innerHeight).
  2. Tính tỷ lệ: (window.scrollY + window.innerHeight) / document.body.scrollHeight.
  3. Kích hoạt sự kiện khi đạt các ngưỡng cố định (thường là 25%, 50%, 75%, 90%, 100%) — mỗi lần chỉ gửi một lần duy nhất cho mỗi ngưỡng để tránh trùng lặp.
  4. Gửi dữ liệu dưới dạng sự kiện GA4 với tham số scroll_depth_percentage hoặc nhãn scroll_25, scroll_50

Lưu ý: GA4 không tự động tính toán scroll depth — cần triển khai thủ công qua Google Tag Manager (GTM) hoặc mã nhúng tùy chỉnh.

Hướng dẫn thực hiện

Dưới đây là cách triển khai Scroll Depth trong GA4 qua Google Tag Manager (GTM) — phương pháp phổ biến và an toàn nhất:

  1. Tạo biến kích hoạt (Trigger):
    • Vào GTM → Triggers → New → Scroll Depth.
    • Chọn “Vertical Scroll Depth” → nhập các ngưỡng % (ví dụ: 25,50,75,90,100).
    • Bật “Fire on Initialization” nếu muốn bắt đầu theo dõi ngay khi trang tải xong.
  2. Tạo thẻ (Tag):
    • Chọn tag type: “Google Analytics: GA4 Event”.
    • Nhập tên sự kiện: scroll_depth (tên chuẩn, dễ báo cáo).
    • Thêm tham số:
      • scroll_depth_percentage: giá trị động lấy từ biến {{Scroll Depth Threshold}}
      • page_location: {{Page URL}}
      • page_title: {{Page Title}}
    • Chọn Configuration Tag là GA4 Config đã thiết lập.
    • Gắn Trigger vừa tạo.
  3. Xuất bản và kiểm tra:
    • Dùng chế độ Preview trong GTM để kiểm tra sự kiện xuất hiện khi cuộn.
    • Trong GA4 DebugView, tìm sự kiện scroll_depth kèm tham số scroll_depth_percentage.
    • Sau 24–48 giờ, dữ liệu sẽ xuất hiện trong báo cáo “Events” hoặc xây dựng báo cáo tùy chỉnh.

Lỗi thường gặp

Dưới đây là những vấn đề phổ biến khi triển khai Scroll Depth và cách khắc phục:

Lỗi Nguyên nhân Cách khắc phục
Sự kiện không gửi dù đã cuộn đủ ngưỡng Trigger bị gắn sai hoặc chưa bật “Fire on Initialization”; trang dùng lazy-load ảnh làm thay đổi chiều cao sau khi tải Kiểm tra lại trigger trong Preview mode; thêm delay nhỏ (500ms) trước khi kích hoạt; dùng document.readyState === 'complete' để đảm bảo DOM ổn định
Dữ liệu scroll depth bị lặp nhiều lần Trigger không giới hạn “Once per page” hoặc sự kiện scroll bị gọi quá thường xuyên Bật tùy chọn “Limit to one per page” trong cài đặt trigger; sử dụng biến trạng thái (flag) để ghi nhớ ngưỡng đã gửi
Ngưỡng 100% không bao giờ đạt được Chiều cao trang thay đổi do nội dung động (ví dụ: accordion mở, ảnh load chậm); footer ngắn hơn viewport Thay 100% bằng 95% hoặc dùng logic “cuộn gần cuối”: scrollY + innerHeight >= scrollHeight - 50

Ví dụ thực tế

Một blog về SEO có bài viết dài 4.200px. Sau khi triển khai Scroll Depth, báo cáo GA4 cho thấy:

  • 62% người dùng đạt 25% → tiêu đề và đoạn mở đầu thu hút.
  • Chỉ 38% đạt 50% → đoạn giữa có thể bị thiếu minh họa, văn bản dày đặc hoặc không có subheading rõ ràng.
  • 19% đạt 100% → nội dung kết luận hoặc phần FAQ chưa đủ sức giữ chân.

Nhóm biên tập sau đó chèn 3 hình minh họa, chia nhỏ đoạn văn thành các mục con và thêm câu hỏi thường gặp ở cuối. Sau 2 tuần, tỷ lệ đạt 75% tăng từ 27% lên 44%, và thời gian trung bình trên trang tăng 31%.

Câu hỏi thường gặp

Scroll Depth có giống Time on Page không?

Không. Time on Page đo thời gian người dùng ở lại trang (dựa trên thời điểm vào – ra), còn Scroll Depth đo mức độ khám phá nội dung theo chiều dọc. Hai chỉ số bổ trợ nhau nhưng không thay thế được nhau.

Có nên theo dõi mọi ngưỡng từ 5% đến 100%?

Không cần thiết. Theo khuyến nghị của Google và thực tiễn triển khai, chỉ nên theo dõi tối đa 5 ngưỡng: 25%, 50%, 75%, 90%, 100%. Theo dõi quá nhiều gây nhiễu dữ liệu, khó phân tích và tăng tải cho GTM.

Scroll Depth có hoạt động trên thiết bị di động?

Có, nhưng cần lưu ý: trên iOS và một số trình duyệt Android, sự kiện scroll có thể bị giới hạn khi trang đang trong trạng thái “overscroll” hoặc dùng gesture swipe. Kết quả đo trên mobile thường thấp hơn desktop khoảng 5–10% tùy trường hợp. Nên phân tích riêng theo thiết bị.