Tấn Phát Digital

Cookie Consent Generator

Tạo banner cookie consent nhúng được: HTML, CSS và JavaScript thuần trong một khối, kèm ánh xạ Google Consent Mode v2

Nội dung và hiển thị

Cookie bắt buộc

Luôn bật và khóa, không tắt được

Bắt buộc

Cookie phân tích

Đo số lượt truy cập và cách người dùng đi lại trong trang để cải thiện nội dung.

Cookie quảng cáo

Đo hiệu quả quảng cáo và hiển thị quảng cáo phù hợp hơn với bạn.

Cookie cá nhân hóa

Ghi nhớ tùy chọn của bạn như ngôn ngữ, vùng hiển thị, giao diện sáng tối.

Lưu lựa chọn và Consent Mode

Tương đương 15.552.000.000 mili giây trong mã sinh ra

Tăng số này khi đổi danh sách nhóm cookie để hỏi lại người dùng

Sinh mã Google Consent Mode v2

Thêm khối consent default và lệnh consent update cho bảy tín hiệu

Chặn hẳn thẻ Google tới khi người dùng đồng ý

Bật: gtag.js chưa tải cho tới khi có đồng ý (Consent Mode cơ bản). Tắt: thẻ tải ngay ở trạng thái hạn chế và gửi tín hiệu không cookie (Consent Mode nâng cao).

Màu sắc và bo góc
Bảy tín hiệu Consent Mode v2 được ánh xạ thế nào

Nhóm quảng cáo điều khiển cùng lúc ba tín hiệu là ad_storage, ad_user_data và ad_personalization. Nhóm phân tích điều khiển analytics_storage. Nhóm cá nhân hóa điều khiển personalization_storage. Hai tín hiệu còn lại là functionality_storage và security_storage luôn ở trạng thái granted vì chúng thuộc nhóm bắt buộc.

Nếu bạn tắt một nhóm trong phần cấu hình, các tín hiệu tương ứng của nhóm đó được sinh ra với giá trị cố định là denied thay vì đọc lựa chọn của người dùng. Cách này giữ cho trạng thái mặc định luôn là từ chối, đúng nguyên tắc chỉ bật khi có đồng ý rõ ràng.

Tool này khác gì trình tạo chính sách bảo mật

Cookie Consent Generator sinh ra code nhúng: phần giao diện banner, phần logic lưu lựa chọn vào localStorage kèm dấu thời gian và số phiên bản, cùng phần ánh xạ sang Google Consent Mode v2. Nó tạo ra thứ chạy trên trang, không tạo ra văn bản.

Nếu bạn cần văn bản trình bày mục đích thu thập, loại dữ liệu, thời gian lưu và quyền của chủ thể dữ liệu, hãy dùng trình tạo chính sách bảo mật. Hai công cụ bổ trợ nhau: banner cần một link trỏ tới trang chính sách, còn trang chính sách cần nói rõ người dùng thay đổi lựa chọn cookie ở đâu.

Còn khi bạn cần đọc và giải mã chuỗi cookie đang có sẵn trên một trang để biết thực tế trình duyệt đang lưu những gì, công cụ phân tích chuỗi cookie là chỗ nên bắt đầu. Quy trình thường gặp là dùng nó để lập danh sách cookie thật, rồi mới quyết định banner cần bao nhiêu nhóm.

Hợp tác ngay với Tấn Phát Digital

Chúng tôi không chỉ thiết kế website, mà còn giúp doanh nghiệp xây dựng thương hiệu số mạnh mẽ. Cung cấp dịch vụ thiết kế website trọn gói từ thiết kế đến tối ưu SEO. Hãy liên hệ ngay với Tấn Phát Digital để cùng tạo nên những giải pháp công nghệ đột phá, hiệu quả và bền vững cho doanh nghiệp của bạn tại Hồ Chí Minh.

Tạo banner cookie consent: code nhúng, lưu lựa chọn và ánh xạ Consent Mode v2

Công cụ sinh một khối HTML, CSS và JavaScript thuần để gắn banner xin đồng ý cookie vào website. Bạn chọn kiểu hiển thị, ngôn ngữ, các nhóm cookie, màu sắc và thời hạn lưu lựa chọn, rồi chép mã gồm hai phần: phần Consent Mode dán vào head, phần banner dán trước thẻ đóng body. Mã sinh ra tự lưu lựa chọn vào localStorage kèm dấu thời gian và số phiên bản, phát lệnh consent update cho bảy tín hiệu của Google Consent Mode v2, và giữ các script bạn đánh dấu ở trạng thái bị chặn cho tới khi người dùng đồng ý đúng nhóm của chúng.

Tính năng nổi bật

  • Ba kiểu hiển thị: thanh dưới màn hình, hộp góc trái hoặc phải, hộp giữa màn có lớp phủ tối
  • Hai ngôn ngữ banner là tiếng Việt và tiếng Anh, toàn bộ nhãn nút và mô tả nhóm cookie đổi theo
  • Bốn nhóm cookie gồm bắt buộc, phân tích, quảng cáo và cá nhân hóa, bật tắt từng nhóm có xuất hiện trong bảng chi tiết
  • Ba nút hành động Chấp nhận tất cả, Từ chối và Tùy chỉnh, bảng chi tiết mở ngay trong banner chứ không nhảy sang trang khác
  • Lưu lựa chọn vào localStorage kèm dấu thời gian và số phiên bản, hết thời hạn thì banner tự hiện lại
  • Sinh sẵn khối consent default và lệnh consent update cho bảy tín hiệu của Google Consent Mode v2, có ô nhập Measurement ID
  • Chặn thật script không thiết yếu: script được đánh dấu type text/plain kèm data-tp-consent chỉ được kích hoạt sau khi người dùng đồng ý đúng nhóm, thẻ Google cũng bị chặn theo mặc định
  • Khôi phục lựa chọn đã lưu ngay trong head nên lượt đo đầu tiên của khách quay lại dùng đúng trạng thái đồng ý, và tự tải lại trang khi người dùng rút lại đồng ý với nhóm đã có script chạy
  • Tùy biến màu nền, màu chữ, màu nút chính, màu nút phụ và độ bo góc, có khung xem trước cập nhật tức thì
  • Xuất mã hai phần có ghi chú vị trí dán, kèm hàm CookieConsent.open để gắn vào link cài đặt cookie ở footer, hoặc tải về file html chạy thử có sẵn một script mẫu bị chặn

Vì sao nên tự sinh code thay vì cài một dịch vụ bên ngoài

Phần lớn website vừa và nhỏ ở Việt Nam gắn banner cookie bằng cách nhúng một đoạn script của dịch vụ nước ngoài. Cách đó nhanh nhưng kéo theo ba cái giá. Thứ nhất là hiệu năng: script bên thứ ba thường nặng vài chục kilobyte, tải chặn hiển thị và làm chậm chỉ số Largest Contentful Paint trên chính màn hình đầu tiên người dùng nhìn thấy. Thứ hai là quyền kiểm soát: giao diện, chữ nghĩa và cả việc dịch vụ đó gửi dữ liệu đi đâu đều nằm ngoài tay bạn, trong khi banner này lại là nơi bạn cam kết với người dùng về chuyện dữ liệu. Thứ ba là chi phí lặp lại theo tháng cho một tính năng vốn chỉ vài trăm dòng mã. Khối mã sinh ra ở đây chạy hoàn toàn trong trình duyệt, không gọi máy chủ nào, không đặt cookie của bên thứ ba, và bạn đọc được từng dòng để biết chính xác nó làm gì. Đổi lại, bạn phải tự làm hai việc mà không công cụ sinh mã nào làm thay được: rà soát và đánh dấu từng script theo dõi đang có trên trang để cơ chế chặn áp dụng lên chúng, và lưu bằng chứng đồng ý ở phía máy chủ nếu hoạt động của bạn cần tới mức đó.

Lợi ích khi sử dụng

  • Không thêm thư viện, không gọi máy chủ ngoài, không làm chậm lần tải trang đầu tiên
  • Đọc được toàn bộ mã nên biết chính xác dữ liệu lựa chọn được lưu ở đâu và trong bao lâu
  • Ánh xạ sẵn sang bảy tín hiệu Consent Mode v2 nên GA4 và Google Ads nhận đúng trạng thái đồng ý
  • Có sẵn hàm mở lại bảng tùy chỉnh để đáp ứng yêu cầu rút lại đồng ý dễ như khi đưa ra đồng ý
  • Số phiên bản cho phép hỏi lại toàn bộ người dùng khi bạn thay đổi mục đích thu thập dữ liệu
  • Dùng lại được cho nhiều dự án vì mã là HTML, CSS và JavaScript thuần, không phụ thuộc framework
  1. 1Nhập tên website và đường dẫn trang chính sách bảo mật, đây là hai chuỗi sẽ xuất hiện trong câu mô tả của banner.
  2. 2Chọn kiểu hiển thị và ngôn ngữ, rồi bật tắt từng nhóm cookie theo đúng những gì website bạn thật sự đang dùng.
  3. 3Đặt thời hạn lưu lựa chọn tính bằng ngày, mặc định 180, và tăng số phiên bản mỗi khi bạn thay đổi danh sách nhóm cookie.
  4. 4Bật Google Consent Mode v2 nếu bạn dùng GA4 hoặc Google Ads, điền Measurement ID nếu muốn công cụ chèn luôn thẻ đo lường đúng thứ tự, và giữ công tắc chặn thẻ Google nếu muốn gtag.js chỉ tải sau khi có đồng ý.
  5. 5Chỉnh màu và bo góc cho khớp giao diện, xem lại ở tab Xem trước, rồi sang tab Mã nguồn bấm chép: phần 1 dán vào thẻ head trước mọi thẻ đo lường, phần 2 dán ngay trước thẻ đóng body.
  6. 6Với mọi script theo dõi khác trên trang như pixel quảng cáo hay công cụ ghi hình phiên, đổi type thành text/plain, đổi src thành data-src và thêm data-tp-consent đúng nhóm, rồi mở tab Network để kiểm tra chúng không còn tải trước khi bấm đồng ý.

Cách chia nhóm cookie phổ biến trong thực tế gồm bốn loại. Nhóm bắt buộc là những cookie thiếu chúng thì trang hỏng: phiên đăng nhập, giỏ hàng, mã chống giả mạo biểu mẫu, cân bằng tải. Nhóm phân tích phục vụ đo lường lưu lượng và hành vi. Nhóm quảng cáo phục vụ đo hiệu quả chiến dịch và tiếp thị lại. Nhóm cá nhân hóa ghi nhớ tùy chọn không thiết yếu như ngôn ngữ, vùng hiển thị hay giao diện sáng tối. Google Consent Mode v2 lại không dùng bốn nhóm này mà dùng bảy tín hiệu riêng, nên phải có một bảng ánh xạ rõ ràng. Công cụ sinh mã theo quy tắc sau: nhóm quảng cáo điều khiển cùng lúc ba tín hiệu ad_storage, ad_user_data và ad_personalization, vì đây là ba mặt khác nhau của cùng một mục đích tiếp thị; nhóm phân tích điều khiển analytics_storage; nhóm cá nhân hóa điều khiển personalization_storage; còn functionality_storage và security_storage luôn ở trạng thái granted vì chúng thuộc nhóm bắt buộc. Khi bạn tắt một nhóm trong phần cấu hình, các tín hiệu tương ứng được sinh ra với giá trị cố định denied thay vì đọc lựa chọn người dùng, tức trạng thái mặc định luôn nghiêng về từ chối. Đây là điểm cần kiểm lại nếu website của bạn có mục đích thu thập khác với bốn nhóm chuẩn này, chẳng hạn cookie phục vụ khảo sát hay cá nhân hóa nội dung theo hồ sơ người dùng.

Prior blocking: phần khó nhất và cách mã sinh ra xử lý nó

Nguyên tắc chung của các khung pháp lý về đồng ý là thẻ theo dõi không được chạy trước khi người dùng đồng ý. Trong thực tế, đây là chỗ hầu hết website triển khai sai. Banner hiện lên rất đẹp, nhưng mở tab Network của trình duyệt lên thì thấy pixel quảng cáo và script đo lường đã bắn đi từ mili giây đầu tiên, trước cả khi người dùng kịp đọc dòng chữ đầu tiên. Khi đó banner chỉ còn giá trị trang trí. Có ba cách xử lý. Cách thứ nhất là đừng chèn thẻ vào trang cho tới khi có đồng ý, tức tạo thẻ script bằng JavaScript sau khi người dùng bấm chấp nhận. Cách thứ hai là dùng trình quản lý thẻ và đặt điều kiện kích hoạt dựa trên sự kiện đồng ý, thay vì kích hoạt theo lượt xem trang. Cách thứ ba, dành riêng cho hệ sinh thái Google, là dùng Consent Mode: thẻ vẫn tải nhưng ở trạng thái hạn chế, không ghi cookie, chỉ gửi tín hiệu ẩn danh cho tới khi nhận lệnh update. Khối mã sinh ra ở đây làm sẵn cách thứ nhất cho mọi script bạn đánh dấu, kết hợp cách thứ ba cho thẻ Google, đồng thời phát một sự kiện DOM tên tp-cookie-consent để bạn nối vào trình quản lý thẻ theo cách thứ hai. Giới hạn cần nói rõ: mã chỉ chặn được những script đã được đánh dấu, script nào bạn quên đổi type, script do plugin chèn vào, hay thẻ được bắn từ bên trong trình quản lý thẻ mà không đặt điều kiện đồng ý thì vẫn chạy ngay. Vì vậy việc rà soát xem còn thẻ nào đang chạy sớm vẫn phải làm thủ công trên chính website của bạn.

Lưu lựa chọn: localStorage, dấu thời gian, số phiên bản và thời hạn hỏi lại

Mã sinh ra lưu một đối tượng JSON vào localStorage với bốn trường. Trường v là số phiên bản, trường t là dấu thời gian tính bằng mili giây lúc người dùng bấm nút, trường exp là mốc hết hạn tính sẵn cho dễ đọc, và trường c chứa trạng thái từng nhóm. Khi trang tải, đoạn mã đọc lại giá trị này và chỉ coi là hợp lệ khi ba điều kiện cùng đúng: đọc được JSON, số phiên bản khớp với phiên bản trong mã, và khoảng cách từ dấu thời gian tới hiện tại chưa vượt thời hạn. Thiếu bất kỳ điều kiện nào thì banner hiện lại. Thời hạn mặc định để 180 ngày, không phải con số bắt buộc mà là một mức thường gặp nằm giữa hai thái cực: hỏi lại quá dày gây phiền, để quá lâu thì lựa chọn không còn phản ánh ý muốn hiện tại của người dùng. Nhiều hướng dẫn thực hành ở châu Âu gợi ý mức từ sáu tháng đến một năm, bạn nên đối chiếu với yêu cầu cụ thể áp dụng cho mình. Số phiên bản là công cụ quan trọng hơn người ta tưởng: khi bạn thêm một nhóm cookie mới hoặc đổi mục đích thu thập, đồng ý cũ không còn bao trùm mục đích mới, và việc tăng số phiên bản lên một đơn vị sẽ khiến toàn bộ người dùng được hỏi lại. Khi bật Consent Mode, phần mã trong head cũng đọc lại chính bản ghi này theo đúng ba điều kiện trên và phát lệnh consent update ngay sau khối mặc định, nhờ vậy khách quay lại không bị tính lượt đo đầu tiên ở trạng thái từ chối chỉ vì banner nằm cuối trang. Cần nhớ rằng localStorage nằm trên từng trình duyệt và từng thiết bị, nên đây không phải hệ thống ghi nhận bằng chứng đồng ý ở phía máy chủ.

Ba công cụ này hay bị gộp làm một trong đầu người mới bắt đầu, nhưng chúng giải quyết ba việc khác hẳn nhau và thường được dùng theo thứ tự. Bước đầu tiên là biết website đang thật sự đặt những cookie gì. Công cụ đọc và phân tích chuỗi cookie giúp bạn dán chuỗi lấy từ trình duyệt vào rồi tách thành từng cặp tên và giá trị, từ đó lập được danh sách thật thay vì đoán. Bước thứ hai là viết văn bản: trình tạo chính sách bảo mật sinh ra nội dung trình bày mục đích thu thập, loại dữ liệu, thời gian lưu, bên thứ ba có liên quan và quyền của chủ thể dữ liệu. Đây là phần chữ nghĩa, đăng thành một trang riêng trên website. Bước thứ ba mới là công cụ này: sinh phần chạy được, tức giao diện banner, logic lưu lựa chọn và phần ánh xạ tín hiệu đo lường. Nói ngắn gọn, trình tạo chính sách sinh văn bản còn công cụ này sinh code. Hai thứ bổ trợ nhau chứ không thay thế nhau: banner bắt buộc phải có một link trỏ tới trang chính sách để người dùng đọc chi tiết, và ngược lại trang chính sách nên nói rõ người dùng thay đổi lựa chọn cookie ở đâu, thường là một link Cài đặt cookie ở footer gọi hàm mở lại bảng tùy chỉnh mà mã này cung cấp sẵn.

Giới hạn pháp lý: code chỉ là một mảnh của bức tranh tuân thủ

Điều cần nói thẳng là không có công cụ sinh mã nào làm cho một website tuân thủ pháp luật về bảo vệ dữ liệu cá nhân. Khối mã ở đây là khung kỹ thuật để hỏi và ghi nhớ lựa chọn của người dùng, còn việc tuân thủ nằm ở cách doanh nghiệp thực sự xử lý dữ liệu phía sau. Ít nhất bốn câu hỏi vượt ra ngoài phạm vi của banner. Một, bạn có thật sự chặn thẻ theo dõi trước khi có đồng ý không, hay banner chỉ chạy song song trong khi pixel vẫn bắn. Hai, bạn có ghi nhận bằng chứng về việc đồng ý gồm thời điểm, phạm vi và phiên bản văn bản đã hiển thị không, vì bằng chứng lưu trong localStorage của người dùng thì bạn không truy xuất được khi cần chứng minh. Ba, người dùng rút lại đồng ý có dễ như khi đưa ra đồng ý không. Bốn, bạn có bản mô tả rõ dữ liệu chuyển cho bên thứ ba nào và chuyển ra nước ngoài hay không. Tại Việt Nam, Nghị định 13/2023/NĐ-CP về bảo vệ dữ liệu cá nhân có hiệu lực từ 01/07/2023 là văn bản đầu tiên quy định toàn diện về sự đồng ý của chủ thể dữ liệu. Luật Bảo vệ dữ liệu cá nhân được Quốc hội thông qua ngày 26/06/2025 và có hiệu lực từ 01/01/2026 nâng các nguyên tắc này lên cấp luật, kèm các văn bản hướng dẫn thi hành. Tinh thần chung về đồng ý vẫn là: tự nguyện, rõ ràng, chủ động, gắn với mục đích cụ thể và rút lại được. Lĩnh vực này thay đổi nhanh nên trước khi triển khai bạn vẫn phải tự kiểm tra văn bản nào đang có hiệu lực và các điều khoản chuyển tiếp. Công cụ này không phải tư vấn pháp lý và không thay thế được ý kiến của người có chuyên môn.

Những chi tiết kỹ thuật hay bị bỏ sót khi tự dựng banner

Có vài điểm nhỏ nhưng gây lỗi thật khi triển khai. Thứ nhất là thứ tự script: khối consent default phải nằm trước mọi thẻ đo lường, kể cả trước đoạn nhúng trình quản lý thẻ, nếu không thì thẻ đã kịp chạy ở trạng thái mặc định do Google quy định chứ không phải trạng thái bạn muốn. Thứ hai là z-index: banner cần chỉ số chồng lớp đủ cao để không bị header dính hay nút chat che mất, mã sinh ra dùng mức rất cao và bạn chỉ nên hạ xuống khi có lý do rõ ràng. Thứ ba là khả năng tiếp cận: khối này đặt role dialog, gắn nhãn mô tả cho hộp thoại, dùng thẻ button thật thay vì thẻ div bấm được, có viền tiêu điểm khi điều hướng bằng bàn phím, và trả tiêu điểm về phần tử cũ sau khi đóng. Với kiểu hộp giữa màn, phím Escape chỉ đóng banner khi trình duyệt đã có lựa chọn hợp lệ, tránh việc bấm nhầm bị hiểu thành đã trả lời. Thứ tư là chuỗi do người dùng nhập: tên website, đường dẫn chính sách và mã màu đều được lọc trước khi ghép vào mã, đường dẫn chỉ nhận dạng bắt đầu bằng dấu gạch chéo hoặc giao thức http và https, mã màu chỉ nhận dạng hex, giá trị sai bị bỏ qua thay vì chèn thẳng. Thứ năm là chế độ riêng tư của trình duyệt: khi localStorage bị chặn, các thao tác đọc ghi được bọc trong khối try nên trang không vỡ, đổi lại banner sẽ hiện lại ở mỗi lần tải.

Mã sinh ra chặn script như thế nào: ví dụ với GA4 và một pixel quảng cáo

Cơ chế chặn dựa trên một đặc điểm chuẩn của HTML: thẻ script có thuộc tính type không phải là JavaScript, ví dụ text/plain, thì trình duyệt không tải và không chạy nó. Giả sử bạn điền Measurement ID G-ABC123 và giữ công tắc chặn thẻ Google. Phần 1 trong head gồm khối consent default với cả năm tín hiệu không thiết yếu ở trạng thái denied, rồi thẻ gtag.js được viết dưới dạng script type text/plain với data-tp-consent bằng analytics và đường dẫn nằm trong data-src. Với mã bắt đầu bằng AW- của Google Ads, nhóm được gán là advertising. Tiếp theo, bạn có một pixel quảng cáo của bên thứ ba, hãy sửa thẻ của nó thành script type text/plain, data-tp-consent bằng advertising, đổi src thành data-src. Khi khách mới vào trang, không có script nào trong hai script trên được tải, tab Network không có yêu cầu nào tới máy chủ của Google hay của bên quảng cáo. Nếu khách bấm Tùy chỉnh, chỉ tích nhóm phân tích rồi lưu, mã sẽ phát consent update với analytics_storage là granted, ba tín hiệu quảng cáo vẫn denied, rồi thay script gtag.js bằng một script thật để trình duyệt tải về, còn pixel quảng cáo tiếp tục nằm im. Ở lần truy cập sau, lựa chọn được đọc lại và các script tương ứng được kích hoạt ngay, kể cả script nằm phía dưới banner trong trang vì mã chạy lại một lượt khi trang tải xong. Nếu sau đó khách mở lại bảng tùy chỉnh và bỏ nhóm phân tích, mã lưu lựa chọn mới rồi tải lại trang, vì một script đã chạy thì không thể gỡ khỏi bộ nhớ của trang, chỉ có tải lại mới đưa nó về trạng thái bị chặn. Cookie mà script đó đã ghi trước khi bị rút đồng ý không tự biến mất, nếu cần xóa bạn phải bổ sung mã xóa theo tên cookie cụ thể. Nếu tắt công tắc chặn, thẻ Google được tải ngay ở chế độ Consent Mode nâng cao: thẻ chạy nhưng không ghi cookie đo lường cho tới khi có đồng ý, và vẫn gửi các tín hiệu không dùng cookie về Google để mô hình hóa dữ liệu. Chế độ này cho số liệu đầy đủ hơn nhưng có dữ liệu rời trình duyệt trước khi người dùng trả lời, bạn cần cân nhắc với yêu cầu pháp lý áp dụng cho mình.

Nghị định 13/2023/NĐ-CP và Luật Bảo vệ dữ liệu cá nhân nói gì về sự đồng ý

Nghị định 13/2023/NĐ-CP không có điều khoản nào gọi tên cookie, nhưng nó định nghĩa dữ liệu cá nhân đủ rộng để bao trùm phần lớn dữ liệu mà cookie phân tích và quảng cáo thu thập, trong đó có dữ liệu phản ánh hoạt động và lịch sử hoạt động trên không gian mạng. Khi dữ liệu đó được xử lý dựa trên sự đồng ý, Điều 11 của nghị định đặt ra các yêu cầu mà một banner cookie cần bám theo. Sự đồng ý phải tự nguyện và chủ thể dữ liệu phải được biết loại dữ liệu, mục đích xử lý, tổ chức xử lý và quyền của mình. Sự đồng ý phải được thể hiện rõ ràng, cụ thể, ví dụ bằng cách đánh dấu vào ô đồng ý hoặc chọn các thiết lập kỹ thuật đồng ý. Khi có nhiều mục đích, phải liệt kê để người dùng đồng ý với từng mục đích, đây chính là lý do banner chia thành từng nhóm cookie. Sự im lặng hoặc không phản hồi không được coi là đồng ý, nên việc người dùng chỉ cuộn trang hay đóng banner không thể được hiểu là đã chấp nhận, và mã sinh ra ở đây mặc định mọi nhóm không thiết yếu ở trạng thái tắt. Sự đồng ý còn phải được thể hiện ở định dạng in hoặc sao chép được, kể cả dạng điện tử hoặc định dạng kiểm chứng được, một yêu cầu mà bản ghi trong localStorage của người dùng khó đáp ứng một mình vì bên xử lý không truy xuất được. Điều 12 cho phép chủ thể dữ liệu rút lại sự đồng ý, và việc rút lại không làm ảnh hưởng tính hợp pháp của phần xử lý đã diễn ra trước đó. Luật Bảo vệ dữ liệu cá nhân có hiệu lực từ 01/01/2026 tiếp tục đi theo các nguyên tắc này ở cấp luật. Phần trên chỉ tóm tắt những điểm liên quan trực tiếp tới banner cookie, không phải toàn bộ nghĩa vụ và không phải tư vấn pháp lý.

Quy định về cookie ở châu Âu thực ra nằm ở hai văn bản. Chỉ thị ePrivacy yêu cầu phải có sự đồng ý trước khi lưu hoặc đọc thông tin trên thiết bị người dùng, trừ những gì thật sự cần thiết để cung cấp dịch vụ người dùng đã yêu cầu, đây là cơ sở của nhóm cookie bắt buộc. Còn GDPR đặt tiêu chuẩn cho thế nào là một sự đồng ý hợp lệ: tự nguyện, cụ thể, có thông tin và thể hiện bằng hành động khẳng định rõ ràng, đồng thời rút lại phải dễ như khi đưa ra. Năm 2019, Tòa án Công lý Liên minh châu Âu trong vụ Planet49 đã xác định ô đánh dấu tích sẵn không tạo ra sự đồng ý hợp lệ, lý do các ô trong bảng tùy chỉnh của mã này luôn để trống khi hiện lần đầu. GDPR có thể áp dụng cho doanh nghiệp đặt tại Việt Nam khi hoạt động xử lý dữ liệu liên quan tới việc chào bán hàng hóa, dịch vụ cho người ở Liên minh châu Âu hoặc theo dõi hành vi của họ, ví dụ một website du lịch nhận khách châu Âu hay một cửa hàng giao hàng quốc tế. Nếu website của bạn chỉ phục vụ khách trong nước, GDPR thường không phải là khung áp dụng chính, nhưng các thực hành của nó vẫn là chuẩn tham khảo tốt. Riêng với quảng cáo Google, từ tháng 3/2024 Google yêu cầu gửi tín hiệu Consent Mode v2 cho người dùng ở Khu vực kinh tế châu Âu nếu bạn muốn tiếp tục dùng các tính năng cá nhân hóa quảng cáo và đo lường cho nhóm người dùng đó.

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

Dán khối mã này vào đâu trên website?

Mã có hai phần được ghi chú sẵn. Phần 1, chỉ xuất hiện khi bật Consent Mode, dán càng sớm càng tốt trong head và luôn đứng trước thẻ GA4, Google Ads hay trình quản lý thẻ. Phần 2 gồm banner, CSS và JavaScript, dán ngay trước thẻ đóng body của mọi trang. Nếu bạn dùng một hệ quản trị nội dung, chỗ thích hợp thường là hai ô chèn mã tùy chỉnh cho head và cho cuối trang trong phần cài đặt giao diện.

Gắn banner này thì website đã tuân thủ Luật Bảo vệ dữ liệu cá nhân chưa?

Chưa. Banner chỉ là khung kỹ thuật để hỏi và lưu lựa chọn. Tuân thủ còn phụ thuộc việc bạn có thật sự chặn thẻ theo dõi trước khi có đồng ý, có ghi nhận bằng chứng đồng ý không, có cơ chế rút lại đồng ý không, và có hồ sơ mô tả hoạt động xử lý dữ liệu không. Hãy đối chiếu quy định đang có hiệu lực và hỏi người có chuyên môn pháp lý, công cụ này không phải tư vấn pháp lý.

Mã sinh ra có tự chặn Google Analytics trước khi người dùng đồng ý không?

Có, khi bạn điền Measurement ID và giữ công tắc chặn thẻ Google đang bật, đây là mặc định. Khi đó gtag.js được viết dưới dạng script bị chặn và chỉ tải sau khi người dùng đồng ý nhóm phân tích, hoặc nhóm quảng cáo với mã AW-. Nếu bạn tắt công tắc, thẻ tải ngay ở chế độ Consent Mode nâng cao, không ghi cookie đo lường cho tới khi có đồng ý nhưng vẫn gửi tín hiệu không dùng cookie. Thẻ GA4 bạn tự gắn ở nơi khác, hoặc bắn từ trình quản lý thẻ, thì không bị chặn trừ khi bạn đánh dấu nó hoặc đặt điều kiện đồng ý trong trình quản lý thẻ.

Lựa chọn của người dùng được lưu ở đâu và trong bao lâu?

Lưu trong localStorage của chính trình duyệt người dùng, dưới một khóa do bạn đặt tên, gồm số phiên bản, dấu thời gian, mốc hết hạn và trạng thái từng nhóm. Thời hạn mặc định là 180 ngày và bạn đổi được. Hết hạn thì bản ghi bị coi là không hợp lệ và banner hiện lại.

Vì sao dùng localStorage mà không dùng cookie để lưu lựa chọn?

Vì localStorage không được gửi kèm mọi yêu cầu HTTP nên nhẹ hơn, và nó đủ cho một giá trị chỉ đọc phía trình duyệt. Nếu máy chủ của bạn cần biết trạng thái đồng ý ngay từ lúc dựng trang, chẳng hạn để quyết định có nhúng thẻ hay không, thì bạn nên đổi sang cookie hoặc ghi thêm một cookie song song, khi đó phải sửa mã.

Số phiên bản dùng để làm gì và khi nào nên tăng?

Nó khiến toàn bộ lựa chọn cũ trở nên không hợp lệ và banner hỏi lại tất cả người dùng. Hãy tăng lên một đơn vị mỗi khi bạn thêm nhóm cookie mới, đổi mục đích thu thập, hoặc thêm một bên thứ ba mới, vì đồng ý cũ không bao trùm được mục đích mới.

Bảy tín hiệu của Consent Mode v2 ánh xạ với bốn nhóm cookie thế nào?

Nhóm quảng cáo điều khiển ba tín hiệu ad_storage, ad_user_data và ad_personalization. Nhóm phân tích điều khiển analytics_storage. Nhóm cá nhân hóa điều khiển personalization_storage. Hai tín hiệu functionality_storage và security_storage luôn ở trạng thái granted vì thuộc nhóm bắt buộc.

Tôi tắt nhóm quảng cáo trong phần cấu hình thì tín hiệu quảng cáo ra sao?

Ba tín hiệu quảng cáo được sinh ra với giá trị cố định là denied thay vì đọc lựa chọn của người dùng, vì nhóm đó không xuất hiện trong banner nên người dùng chưa từng đồng ý. Đây là hướng an toàn, nếu website bạn có chạy quảng cáo thì đừng tắt nhóm này.

Làm sao để người dùng mở lại bảng tùy chỉnh sau khi đã chọn?

Mã sinh ra tạo đối tượng CookieConsent trên window với hàm open. Bạn thêm một link Cài đặt cookie ở footer và gắn onclick gọi CookieConsent.open rồi trả về false. Ngoài open còn có acceptAll, rejectAll, get để đọc trạng thái hiện tại và reset để xóa hẳn bản ghi.

Nút Từ chối có bắt buộc phải nằm ngang hàng với nút Chấp nhận không?

Nhiều cơ quan quản lý ở châu Âu đã xử phạt các trường hợp giấu nút từ chối vào lớp thứ hai hoặc làm nó mờ nhạt hơn hẳn nút chấp nhận, vì như vậy lựa chọn không còn tự do. Mã sinh ra để hai nút cùng một hàng và cùng cỡ chữ. Bạn đổi được màu nhưng nên giữ hai nút ở mức dễ thấy như nhau.

Banner có làm chậm website không?

Rất ít. Toàn bộ là HTML, CSS và JavaScript thuần nằm ngay trong trang, không tải thư viện ngoài, không gọi máy chủ nào và không có phần tử ảnh. Khối mã thường chỉ vài kilobyte, nhỏ hơn nhiều so với các script dịch vụ bên thứ ba.

Có dùng được cho website Next.js hay React không?

Được, nhưng nên chuyển thể thay vì dán thô. Với Next.js, cách gọn là đưa phần script vào component Script với chiến lược phù hợp và đưa phần markup vào layout. Nếu dán nguyên khối vào một component React, hãy nhớ React không chạy thẻ script chèn qua chuỗi HTML.

Chuỗi tôi nhập như tên website có bị chèn thẳng vào mã không?

Không. Tên website được lọc các ký tự đặc biệt của HTML trước khi ghép vào markup, đường dẫn chính sách chỉ được chấp nhận khi bắt đầu bằng dấu gạch chéo hoặc giao thức http và https, mã màu chỉ nhận dạng hex, Measurement ID chỉ nhận các tiền tố hợp lệ. Giá trị sai bị bỏ qua thay vì đưa vào mã.

Banner này có ghi lại bằng chứng đồng ý để trình khi bị kiểm tra không?

Không. Bản ghi nằm trong localStorage trên máy người dùng, bạn không đọc được từ phía mình và người dùng xóa lúc nào cũng được. Nếu hoạt động của bạn cần lưu bằng chứng đồng ý, hãy gửi thêm một bản ghi về máy chủ gồm thời điểm, phạm vi đồng ý và phiên bản văn bản đã hiển thị, phần này phải tự phát triển.

Người dùng chặn localStorage thì chuyện gì xảy ra?

Các thao tác đọc và ghi được bọc trong khối try nên trang không lỗi. Hệ quả là không lưu được lựa chọn, banner sẽ hiện lại ở mỗi lần tải trang, và tín hiệu Consent Mode giữ ở trạng thái mặc định cho tới khi người dùng bấm nút trong phiên đó.

Làm sao chặn Facebook Pixel, TikTok Pixel hay Hotjar bằng mã này?

Sửa thẻ script của chúng: đổi type thành text/plain, thêm data-tp-consent bằng advertising cho pixel quảng cáo hoặc analytics cho công cụ đo lường và ghi hình phiên, và nếu thẻ có src thì đổi src thành data-src. Với đoạn mã nhúng dạng nội tuyến thì chỉ cần đổi type và thêm data-tp-consent. Sau đó mở tab Network, xóa lựa chọn bằng CookieConsent.reset() rồi tải lại trang để xác nhận không có yêu cầu nào tới máy chủ của bên đó trước khi bạn bấm đồng ý.

Consent Mode cơ bản và nâng cao khác nhau thế nào?

Ở chế độ cơ bản, thẻ Google không tải cho tới khi người dùng đồng ý, nên trước đó không có dữ liệu nào gửi đi. Ở chế độ nâng cao, thẻ tải ngay với trạng thái từ chối, không ghi cookie nhưng gửi các tín hiệu không dùng cookie để Google mô hình hóa phần dữ liệu bị thiếu. Công cụ này mặc định chế độ cơ bản vì an toàn hơn về quyền riêng tư, bạn tắt công tắc chặn thẻ Google nếu đã cân nhắc và muốn dùng chế độ nâng cao.

Nghị định 13/2023/NĐ-CP có bắt buộc website phải có banner cookie không?

Nghị định không có điều khoản gọi tên cookie hay banner. Nhưng nếu cookie phân tích và quảng cáo trên trang thu thập dữ liệu cá nhân, như dữ liệu về hoạt động trên không gian mạng, và bạn dựa vào sự đồng ý để xử lý, thì sự đồng ý đó phải rõ ràng, theo từng mục đích, và im lặng không được coi là đồng ý. Banner có nút từ chối và bảng chọn theo nhóm là cách phổ biến để đáp ứng các yêu cầu đó. Luật Bảo vệ dữ liệu cá nhân có hiệu lực từ 01/01/2026 tiếp tục các nguyên tắc này. Đây không phải tư vấn pháp lý, hãy hỏi người có chuyên môn cho trường hợp cụ thể.

Khi người dùng rút lại đồng ý, cookie đã ghi có tự bị xóa không?

Không. Mã sẽ lưu lựa chọn mới, phát lệnh consent update về trạng thái denied và tải lại trang nếu đã có script thuộc nhóm đó chạy, để lần tải mới giữ script ở trạng thái bị chặn. Nhưng cookie mà script đã ghi trước đó vẫn nằm trong trình duyệt cho tới khi hết hạn. Nếu cần xóa, bạn bổ sung mã xóa theo đúng tên và tên miền của từng cookie, ví dụ các cookie bắt đầu bằng _ga của Google Analytics.

Nên đặt thời hạn lưu lựa chọn bao nhiêu ngày là hợp lý?

Mặc định 180 ngày là mức trung dung thường gặp. Hỏi lại quá dày gây khó chịu và làm giảm tỷ lệ đồng ý, để quá lâu thì lựa chọn không còn phản ánh ý muốn hiện tại. Một số hướng dẫn thực hành gợi ý khoảng sáu tháng đến một năm, bạn nên đối chiếu yêu cầu cụ thể áp dụng cho lĩnh vực của mình.

Từ khóa liên quan

  • nghị định 13/2023 cookie
  • consent mode cơ bản và nâng cao
  • chặn facebook pixel trước khi đồng ý
  • cookie consent generator
  • tạo banner cookie consent
  • banner xin đồng ý cookie
  • cookie banner html css js
  • code banner cookie miễn phí
  • google consent mode v2
  • gtag consent default update
  • ad_storage analytics_storage là gì
  • ad_user_data ad_personalization
  • chặn thẻ theo dõi trước khi đồng ý
  • prior blocking cookie
  • nhóm cookie bắt buộc phân tích quảng cáo
  • lưu lựa chọn cookie localStorage
  • thời hạn lưu đồng ý cookie
  • luật bảo vệ dữ liệu cá nhân cookie
  • gdpr cookie consent việt nam
  • rút lại đồng ý cookie
  • link cài đặt cookie footer
  • cookie consent cho next js
  • banner cookie không dùng thư viện
  • thông báo cookie tiếng việt
  • cookie consent banner tùy biến màu

Công cụ Developer Tools liên quan

.env Generator

Tạo file .env và .env.example cho dự án.

.gitignore Generator

Tạo .gitignore cho Node.js, Python, Java.

API Mock Generator

Tạo mock JSON data cho API testing.

API Response Formatter

Format và phân tích API response.

API Tester

Test REST API: GET, POST, PUT, DELETE.

Postman Alternative - API Testing Tool Online với Collections, Environment & File Upload

Postman Alternative miễn phí - Test APIs với Collections, Multiple Environments, Pre-request Scripts, Collection Runner, File Upload (form-data), Tests/Assertions, Code Generation (cURL, JS, Python, Node.js). Browser-based, không cần cài đặt. Save requests, export/import collections, auto-save history. Hỗ trợ Bearer Token, Basic Auth, API Key. Hoàn hảo cho API development và testing.

Swagger API Tester - Test API với OpenAPI/Swagger Spec & Authentication Online

Swagger API Tester miễn phí - Import OpenAPI/Swagger specification và test API endpoints với đầy đủ authentication (Bearer Token/JWT, Basic Auth, API Key). Hỗ trợ OpenAPI 3.0, Swagger 2.0, auto-parse endpoints, parameters, request body. Giao diện như Swagger UI với color-coded methods, grouped endpoints, real-time testing. Hoàn hảo cho API development, testing, debugging secured APIs.

Base Converter

Chuyển đổi Binary, Hex, Base32.

Base64 Encoder

Mã hóa/giải mã Base64.

Binary Converter

Chuyển đổi Decimal, Binary, Hex.

Box Shadow Generator

Tạo CSS box-shadow trực quan.

Chmod Calculator

Tính quyền file Linux.

Dịch vụ của Tấn Phát Digital

Đang xây sản phẩm và cần thêm người làm phần nặng?

Gói giải pháp doanh nghiệp

Nền tảng custom cho ngân hàng, y tế và sàn B2B, chuẩn ISO 27001, GDPR, PCI-DSS, SLA 99.99%.

Từ 50.000.000đXem chi tiết →

Dịch vụ phát triển Blockchain & Web3

Smart contract, dApp và NFT marketplace đa chuỗi, audit bảo mật đầy đủ trước khi lên mainnet.

Từ 50.000.000đXem chi tiết →

Dịch vụ thiết kế website tại Hồ Chí Minh

Website doanh nghiệp, bán hàng và đặt lịch, chuẩn SEO ngay từ cấu trúc, tốc độ tải dưới 3 giây.

Từ 5.000.000đXem chi tiết →

Dịch vụ thiết kế landing page

Trang đích riêng cho từng chiến dịch quảng cáo, tỷ lệ chuyển đổi 3–8%, bàn giao trong 5–21 ngày.

Từ 3.000.000đXem chi tiết →

Tư vấn và báo giá miễn phí trong 24 giờ. Xem toàn bộ dịch vụ

TAN PHATDIGITAL