
애드센스 리포트를 처음 제대로 들여다봤을 때, 조회 가능 노출수가 전체 게재 노출수의 절반에도 못 미치는 페이지가 눈에 들어왔습니다. 광고가 화면에 뜨기만 하면 노출로 잡히는 줄 알았던 저로서는 적잖이 당황스러운 숫자였습니다. 이 글은 그 의문을 파헤치며 직접 측정 도구를 구현하고, 광고 배치를 뜯어고친 경험을 정리한 것입니다.
IAB가 정의한 viewability, 기준이 생각보다 까다롭습니다
viewability(조회 가능성)란 광고가 단순히 페이지에 로드되는 것이 아니라, 실제로 사용자 화면에 일정 시간 이상 노출되었는지를 판단하는 기준입니다. 쉽게 말해 광고가 '보였냐'를 측정하는 개념입니다.
IAB(Interactive Advertising Bureau)와 MRC(Media Rating Council)가 공동으로 확립한 기준을 보면 생각보다 꽤 구체적입니다. 디스플레이 광고는 픽셀의 50% 이상이 연속 1초 동안 뷰포트에 표시되어야 조회 가능으로 인정됩니다. 242,000픽셀 이상의 대형 광고는 30% 기준이 적용되고, 동영상 광고는 같은 조건에서 2초가 필요합니다(출처: IAB / MRC 광고 노출 측정 가이드라인).
처음에 이 수치를 봤을 때 "1초면 길지 않은 거 아닌가?"라고 생각했습니다. 그런데 직접 측정해보고 나서야 스크롤 속도가 빠른 독자들이 얼마나 광고를 빠르게 스쳐 지나가는지 체감했습니다. 체류 시간 1초는 생각보다 훨씬 빠듯한 조건이었습니다.
구글은 이 기준을 실제로 구현하기 위해 Active View라는 기술을 사용합니다. Active View란 Google이 자체 개발한 viewability 측정 솔루션으로, 광고 노출 데이터를 픽셀 단위로 추적하여 IAB 기준 충족 여부를 판단하는 시스템입니다. 게시자는 Google Ad Manager에서 조회 가능 노출수 항목을 통해 이 데이터를 직접 확인할 수 있습니다(출처: Google Ad Manager).
Intersection Observer로 직접 측정했을 때 나온 충격적인 수치
문제를 인식한 뒤 저는 브라우저 표준 API인 Intersection Observer를 직접 구현해서 페이지별 viewability를 측정해보기로 했습니다.
Intersection Observer API란 특정 HTML 요소가 뷰포트(사용자 화면 영역) 또는 지정된 컨테이너와 교차하는 비율을 비동기 방식으로 감지하는 브라우저 내장 인터페이스입니다. 메인 스레드를 차단하지 않아 성능 부담 없이 노출 측정이 가능하다는 것이 가장 큰 장점입니다.
구현 로직은 이렇게 잡았습니다. intersectionRatio가 0.5 이상인 상태, 즉 광고 영역의 절반 이상이 화면에 들어온 시점부터 타이머를 시작하고, 1,000밀리초(1초)가 경과하면 viewable impression으로 집계합니다. 비율이 0.5 아래로 떨어지는 순간 타이머는 리셋됩니다. IAB 기준을 코드 수준에서 그대로 재현한 것입니다.
측정 결과는 솔직히 예상보다 훨씬 격차가 컸습니다.
- 콘텐츠 상단 30% 이내에 배치된 광고: viewability 75% 이상
- 본문 중간 단락(50~65% 지점)에 배치된 광고: viewability 55~60%
- 본문 하단부(70% 이하)에 배치된 광고: viewability 30%대
하단 광고의 30%대라는 수치는 사실 꽤 낮습니다. 게재된 광고 10개 중 7개는 IAB 기준으로 '보이지 않은 광고'라는 뜻이니까요. 이 데이터를 보고 나서야 단순히 광고를 많이 붙이는 전략이 왜 역효과를 낼 수 있는지 이해했습니다.
광고 배치 재설계, 줄였더니 RPM이 올랐습니다
측정 결과를 바탕으로 광고 배치를 전면 재설계했습니다. 핵심 원칙은 단순했습니다. 본문 길이의 2/3 지점 이후에는 광고를 놓지 않는 것, 그리고 단락이 전환되는 자연스러운 지점 두 곳에만 광고를 배치하는 것이었습니다.
변화의 핵심 포인트를 정리하면 다음과 같습니다.
- 전체 광고 수 축소: 페이지당 3~4개에서 2개로 줄임
- 배치 기준 변경: 상단 고정 배너 + 본문 중간 단락 전환점 1개로 재편
- 하단 광고 제거: 본문 70% 지점 이후 광고 전면 삭제
결과적으로 조회 가능 노출수 비율이 65%에서 78%로 올랐고, 더 눈에 띄었던 것은 RPM(천 회 노출당 수익) 변화였습니다. RPM이란 광고가 1,000회 게재될 때 발생하는 수익을 나타내는 지표로, 광고 수익 효율을 비교할 때 가장 많이 쓰이는 단위입니다. 광고 개수가 줄었음에도 RPM이 상승한 이유는, 광고주 입장에서 viewability가 높은 지면일수록 입찰가를 더 높게 써내기 때문입니다. 광고 단가가 자동으로 올라가는 구조입니다.
제가 직접 데이터로 확인한 경험상, 광고를 많이 붙이는 것보다 잘 보이는 곳에 붙이는 것이 수익에 직결된다는 건 이제 단순한 조언이 아니라 증명된 사실입니다.
viewability 너머, attention metric이라는 다음 과제
viewability가 완벽한 지표라고 생각하는 분들도 있는데, 저는 이 부분에 조금 다른 시각을 갖고 있습니다. IAB 기준상 viewable impression으로 잡힌다고 해서 사용자가 실제로 그 광고를 인지했다고 보기는 어렵습니다.
스크롤 중에 광고가 화면을 스쳐 지나가는 1초 동안에도 기준은 충족됩니다. 그 1초 동안 사용자의 시선이 광고에 머물렀는지는 별개의 문제입니다. 이를 측정하려는 시도가 바로 attention metric(광고 주목도 지표)입니다. attention metric이란 단순 노출 여부를 넘어, 사용자의 시선이 광고에 실제로 집중된 정도를 측정하는 지표로 아이트래킹이나 체류 시간 기반 신호를 활용합니다.
다만 attention metric은 아직 게시자 수준에서 직접 구현하기 어렵습니다. 현실적으로 지금 당장 쓸 수 있는 가장 정교한 도구는 여전히 Intersection Observer 기반 viewability 측정입니다.
이때 threshold 배열을 제대로 활용하는 것이 중요합니다. threshold란 Intersection Observer에서 교차 비율이 몇 %가 됐을 때 콜백을 실행할지 지정하는 배열값입니다. 단순히 0.5 하나만 잡는 것보다 0, 0.25, 0.5, 0.75, 1.0처럼 다단계로 쌓으면 광고가 화면에 들어오고 나가는 흐름, 사용자가 광고 영역에서 스크롤을 멈추는 지점 등 훨씬 세밀한 행동 데이터를 확보할 수 있습니다. 제 경험상 이 차이가 단순한 비율 집계와 진짜 인사이트 사이를 가릅니다.
viewability 데이터를 '측정하는 것'과 '해석하는 것'은 전혀 다른 영역입니다. 숫자를 쌓는 것보다, 그 숫자를 어떤 질문에 연결하느냐가 결국 광고 수익 최적화의 핵심입니다. 하단 광고를 제거하고 RPM이 오른 경험은 저에게 그 사실을 가장 명확하게 가르쳐준 사례였습니다. 직접 측정 도구를 구현해보지 않았다면 결코 알 수 없었을 결론이었습니다.
참고:
Google Ad Manager — 조회가능성 및 Active View: https://support.google.com/admanager/answer/4524488
Google 개발자 — 고급 Active View 측정항목: https://developers.google.com/ads-data-hub/marketers/reference/viewability-metrics/overview
HotSource — Measuring an Ad's Viewability using IntersectionObserver: https://hotsource.dev/2019/05/07/measuring-an-ads-viewability-using-intersectionobserver/
AdMonsters — What Is the Intersection Observer?: https://admonsters.com/ad-ops-decoder-what-intersection-observer/