사이트를 만들고 자주 확인하면 그 확인 자체가 통계에 남을 수 있다. 원본의 분석 출력에는 전체 요청과 브라우저 실행 확인, 크롤러 분류가 나란히 있었다. 숫자가 많다는 장면과 새로운 독자가 늘었다는 장면은 같지 않았다.
8월 5일과6일 기록에는 검색·소셜의 사람 확인 유입은0인데 크롤러 요청은 따로 잡힌다. 나는 이를 지금 사이트의 성장 보고로 옮기지 않는다. 당시의 분류가 무엇을 확인했는지 읽고, 그 숫자만으로 말할 수 없던 내용을 설명하려 한다.
사람 확인이라는 이름보다 실제 조건을 먼저 읽는다
당시 화면은 사람 확인을 브라우저가 JavaScript를 실행해 비콘을 보낸 방문이라고 설명했다. 그래서 스크립트를 끈 사람은 미확인으로 남았다. 이 조건은 사람인지 아닌지의 완전한 분류가 아니라 특정 신호가 관측됐는지의 구별이다. 라벨을 그대로 믿으면 그 한계를 놓치기 쉽다.
자동화도 브라우저를 실행할 수 있고 실제 사람도 신호를 보내지 못할 수 있다. 나는 비콘이 없는 요청을 모두 봇으로, 비콘이 있는 요청을 모두 고객으로 확정하지 않는다. 무엇을 관측하고 어떤 규칙으로 이름을 붙였는지 함께 써야 다른 작업자가 같은 표를 정직하게 읽을 수 있다.
운영자가 확인한 요청도 방문 숫자에 들어올 수 있다
대시보드에는 운영용 요청을 별도로 분류하는 항목이 있었다. 페이지 반영과 주소를 여러 번 확인한 작업은 외부 독자의 관심과 목적이 다르다. 테스트·운영 접속을 식별할 방법과 빠지는 조건을 정하지 않으면 작업량을 성장으로 읽을 수 있다. 이 글에서 모든 과거 운영 접속이 완전히 제외됐다고 주장하지 않는다.
운영자도 일반 브라우저로 보면 평범한 행동 신호를 만들 수 있다. 유입이 직접·내부 이동 위주라는 사정만으로 특정 방문자가 운영자였다고 인증할 수도 없다. 나는 당시 문서의 운영자 비중에 대한 해석을 추정으로 두고, 실제 분리 규칙과 남은 미확인을 살피려 한다.
크롤러의 이름이 보인 것과 검색 성과는 다르다
원본 출력의 크롤러 표에는 AI와 검색 관련 이름이 들어 있었다. 그것은 당시 분류에 잡힌 요청의 기록이다. 사용자 에이전트 이름만으로 요청 주체의 신원을 모두 검증한 것도 아니고, 검색 결과에 노출됐거나 답변에 인용됐다는 증거도 아니다. 사이트가 읽혔다는 표현에도 무엇이 읽은 것으로 분류됐는지 범위가 필요했다.
초기 작업 설명에는 이를 강한 성장 신호로 해석한 문장도 있었다. 지금 나는 그 결론을 그대로 확장하지 않는다. 실제 노출·외부 인용·사람의 유입을 판단하려면 다른 근거가 필요하다. 데이터 피드를 읽을 수 있다는 사실과 그 피드로 독자가 도착했다는 사실도 따로 확인한다.
기간과 분모가 다르면 같은 퍼널로 나누지 않는다
요청 수, 일별 해시로 구분한 값, 브라우저 세션, 페이지별 행동은 같은 단위가 아니다. 서로 다른 범위의 숫자를 나누면 의미 없는 전환율이 생길 수 있다. 나는 어느 기간과 필터를 선택했고, 무엇이 분모인지 남긴 뒤 비교하려 한다. 표의 위치가 가깝다고 두 값의 관계가 자동으로 생기지 않는다.
당시 설계는 일별 구분으로 날짜 너머 재방문을 설명하는 데 한계가 있었다. 작은 표본과 차단 환경도 함께 고려해야 했다. 이런 상태에서는 판정할 자료가 부족하다는 결론이 유용하다. 수치를 꾸며 빈칸을 채우는 대신 관측 조건을 보완하거나 기존 작업을 유지할 이유가 된다.
통계를 성과 증명이 아닌 다음 확인의 안내로 쓴다
요청은 늘었는데 필요한 행동이 보이지 않으면 바로 메뉴를 바꾸기보다 측정 지점이 살아 있는지부터 확인하겠다. 그다음 관련 유입과 해당 페이지의 관측을 이어 본다. 시험 방문은 표시하고 보고 범위를 분리하되 실제 독자의 행동을 대신하는 결과로 쓰지 않는다.
나는 이 과거 기록을 바탕으로 현재 방문자가 몇 명인지, 고객이 늘었는지 말하지 않는다. 공개하는 노하우는 숫자를 작게 만들거나 크게 보이는 법이 아니다. 그 숫자를 만든 조건과 누락을 설명하고 다음 작업에 충분한 근거인지 판단하는 방법이다. 통계가 조용할 때에도 그 경계를 남겨야 한다.