
홈페이지를 새로 열고 며칠 뒤, 개발자 도구의 네트워크 탭을 열어본 사장님이 물었습니다. "손님이 아직 아무것도 안 눌렀는데 왜 벌써 다섯 군데로 요청이 나가요?" 화면에는 GA4, 메타 픽셀, 네이버 로그분석, 유튜브 임베드, 채팅 위젯이 나란히 찍혀 있었습니다. 방문자가 첫 화면을 다 읽기도 전에, 그 사람이 왔다는 사실은 이미 다섯 개 회사로 전달된 뒤였습니다.
많은 사이트가 여기에 "쿠키를 사용합니다" 배너 하나를 덧붙여 놓고 할 일을 다 했다고 생각합니다. 하지만 그 배너는 대개 아무 스위치에도 연결되어 있지 않은 장식입니다. 확인을 눌러도, 창을 닫아도, 로딩되는 스크립트는 똑같습니다. 동의 배너는 디자인 요소가 아니라 스위치입니다. 스위치가 아무것도 끄지 못한다면 붙이지 않은 것과 같습니다.
원칙 1. 배너를 붙이기 전에, 무엇이 로딩되는지부터 센다
가장 먼저 할 일은 문구를 고르는 게 아니라 목록을 만드는 일입니다. 브라우저 개발자 도구의 네트워크 탭에서 외부 도메인으로 나가는 요청을 전부 적어보세요. 대개 사장님도 모르던 것이 두세 개는 나옵니다. 예전 대행사가 심어둔 광고 픽셀, 지금은 안 쓰는 히트맵 도구, 폰트 CDN이 함께 붙여준 추적 코드 같은 것들입니다.
목록을 만들었으면 세 칸으로 나눕니다.
- 필수 — 로그인 세션, 장바구니, 보안 토큰. 이건 동의 대상이 아닙니다.
- 분석 — GA4, 네이버 로그분석, 히트맵.
- 광고 — 메타 픽셀, 구글애즈 리마케팅, 카카오 픽셀.
이 분류가 곧 배너의 항목이 됩니다. 분류를 건너뛰고 만든 배너는 반드시 전부 켜거나 전부 끄는 두 가지 상태밖에 갖지 못합니다.
원칙 2. 동의 전에는 아예 로드하지 않는다
실무에서 가장 많이 어긋나는 지점입니다. 스크립트를 이미 다 불러놓고 "동의 안 했으니 데이터는 안 보낼게요"라고 하는 구조는, 태그가 붙는 순간 이미 IP와 접속 시각이 상대 서버에 남기 때문에 의미가 약합니다.
제대로 하려면 태그의 로딩 자체를 늦춰야 합니다. 구글 태그 매니저를 쓴다면 동의 모드(Consent Mode)의 analytics_storage, ad_storage 값을 기본 거부로 두고 동의 시점에 갱신합니다. 직접 심은 스크립트라면 type 속성을 text/plain으로 두었다가 동의 후에 교체해 실행시키는 방식이 간단합니다. 핵심은 하나입니다. 동의는 데이터 전송의 조건이 아니라 코드 실행의 조건이어야 합니다.
원칙 3. 거부 버튼을 수락 버튼과 같은 크기로 만든다
"모두 허용"은 큼직한 파란 버튼이고 "거부"는 회색 글씨 밑줄로 숨어 있는 배너를 자주 봅니다. 이건 디자인 취향의 문제가 아니라 동의의 유효성 문제입니다. 자유롭게 선택할 수 없는 상태에서 누른 확인은 동의로 인정받기 어렵습니다.
같은 층위의 선택지는 같은 무게로 보여주세요. 버튼 두 개의 크기와 대비를 맞추고, 배너 밖 영역을 클릭하거나 스크롤하는 행동을 동의로 해석하지 않습니다. 닫기(X)만 눌렀다면 그건 거부로 처리하는 것이 안전합니다.
원칙 4. 동의한 사실을 기록으로 남긴다
동의는 받는 순간보다 증명해야 하는 순간에 값을 합니다. 브라우저 로컬 스토리지에 true 한 줄만 남겨두면 나중에 아무것도 소명할 수 없습니다.
최소한 이 네 가지는 서버에 남기세요.
- 언제 동의했는지(타임스탬프)
- 어떤 항목에 동의했는지(분석/광고 각각)
- 그때 보여준 동의 문구의 버전
- 동의 유효기간(보통 6~12개월, 만료 후 재확인)
문구를 고칠 때마다 버전 번호를 올리고, 버전이 바뀌면 배너를 다시 띄우는 구조를 만들어두면 이후 운영이 훨씬 단순해집니다.
원칙 5. 마음을 바꿀 통로를 항상 열어둔다
한 번 동의하면 다시는 그 화면을 볼 수 없는 사이트가 대부분입니다. 하지만 철회는 동의만큼이나 쉬워야 합니다. 푸터에 "쿠키 설정" 링크 하나를 상시로 두고, 누르면 언제든 배너를 다시 열 수 있게 하세요. 개인정보처리방침 페이지 안에서도 같은 설정 창을 열 수 있으면 더 좋습니다.
덤으로 얻는 것도 있습니다. 동의 없이는 광고 태그가 아예 실행되지 않으므로 첫 화면 로딩이 눈에 띄게 가벼워집니다. 서드파티 스크립트를 걷어낸 것만으로 초기 렌더링이 1초 가까이 빨라지는 경우도 드물지 않습니다.
정리하면
동의 배너를 잘 붙인다는 건 법을 피해 가는 문구를 찾는 일이 아닙니다. 우리 사이트가 방문자에 대해 무엇을 수집하는지 우리 스스로 정확히 아는 일에 가깝습니다. 목록을 세고, 스위치에 연결하고, 선택지를 공평하게 놓고, 기록을 남기고, 되돌릴 길을 열어두는 다섯 단계면 충분합니다.
CYAN은 웹사이트를 만들 때 태그와 스크립트 목록을 먼저 정리하고, 동의 상태에 따라 실제로 로딩이 갈라지도록 구조를 잡습니다. 지금 쓰고 계신 사이트에서 어떤 코드가 언제 실행되고 있는지 확인이 필요하시다면 편하게 문의해 주세요.