Q. GA4에서 세션은 어떻게 정의되나요?
GA4의 세션은 사용자가 사이트나 앱과 상호작용하는 일정 시간 범위를 하나로 묶은 단위다. 기본값은 30분간 아무 활동이 없으면 그 세션이 끝나는 것이고, 이 값은 최대 7시간 55분까지 조정할 수 있다. 세션이 새로 시작되면 session_start 이벤트와 함께 ga_session_id, ga_session_number가 생성된다.
오늘 바로 쓸 핵심 3줄
- 세션 수가 사용자 수보다 많으면 정상이다, 한 사람이 여러 번 방문했다는 뜻이다.
- 사용자 수는 사람 수가 아니라 브라우저(쿠키) 수다, 기기를 바꾸면 다른 사람으로 잡힌다.
- 페이지뷰는 이벤트의 한 종류일 뿐이니, "이벤트 12,000건" 안에 이미 포함돼 있다.
사용자 1,000명, 세션 1,400회, 이벤트 12,000건, 이 숫자들은 대체 뭘 센 걸까
GA4를 처음 켜본 사람은 대체로 같은 지점에서 멈추지. 보고서 상단에 사용자 수, 세션 수, 이벤트 수가 나란히 떠 있는데, 세 숫자가 전혀 안 맞는다.
사용자는 1,000명인데 세션은 1,400회, 이벤트는 12,000건이다. 방문자 수를 물었을 뿐인데 왜 답이 세 개나 나오고, 심지어 서로 배수 관계도 아닐까.
결론부터 말하면 이 세 숫자는 애초에 같은 것을 세지 않는데, 사용자는 "누가" 왔는지, 세션은 "몇 번" 왔는지, 이벤트는 그 안에서 "무엇을" 했는지를 센 값이다.
단위가 다르니 숫자가 안 맞는 게 오히려 정상 아닐까. 이 글은 그 세 단위, 그리고 그 위에 걸쳐 있는 쿠키·페이지뷰·키 이벤트까지 원리부터 정리하는 시리즈 첫 편이다.
큰 그림: 페이지에 심긴 자바스크립트 한 줄이 하는 일
GA4는 "Google 태그(gtag.js)"라는 자바스크립트 코드 한 줄을 사이트에 심는 방식으로 동작한다. 코드처럼 보여도 겁먹을 것 없다, 페이지가 열릴 때 실행되는 짧은 스크립트일 뿐이다.
이 태그의 config 명령이 실행되면, 별도 설정 없이도 기본적으로 page_view라는 이벤트 하나가 자동으로 서버에 전송된다.
공식 문서는 이 뒤에 이어지는 흐름을 네 단계로 설명한다. 사용자가 태깅된 사이트에서 링크를 클릭하는 것 같은 상호작용을 하면, Analytics가 그 이벤트를 수신해 실시간 보고서에 먼저 띄운다. 그다음 데이터를 처리하고, 마지막으로 그 결과가 각종 측정기준·측정항목·보고서·잠재고객 목록에 반영된다.
도해 1. Google 태그 하나가 방문자의 행동을 서버까지 실어 나르는 4단계 구조.
여기서 눈여겨볼 게 하나 있는데, GA4는 애초에 사용자의 상호작용 하나하나를 개별 이벤트로 추적하도록 설계됐다는 점이다.
과거 유니버설 애널리틱스(UA)가 세션을 기본 집계 단위로 삼았던 것과는 근본적으로 다른 구조 전환이었다. 그래서 GA4에서는 "이벤트"가 제일 작고 근본적인 단위이고, 세션과 사용자는 그 이벤트들을 묶어서 보는 방식일 뿐.
이벤트: 행동 하나하나가 기록의 최소 단위
공식 문서는 이벤트를 "웹사이트나 앱에서 발생하는 특정 상호작용이나 현상을 측정하게 해주는 것"이라 정의한다. 페이지 로드, 링크 클릭, 구매 완료, 심지어 앱 크래시까지 전부 이벤트다.
이벤트는 성격에 따라 나뉘는 갈래가 크게 넷, 사이트에 태그만 심으면 별도 코드 없이 잡히는 자동 수집 이벤트, "향상된 측정"을 켜면 추가되는 스크롤·아웃바운드 클릭·동영상 참여·파일 다운로드 같은 향상된 측정 이벤트, 이름과 매개변수가 미리 정해진 권장 이벤트, 그리고 앞의 세 가지로 표현이 안 될 때만 만드는 맞춤 이벤트, 이렇게 넷이다.
실무 함정. 맞춤 이벤트부터 만들고 보는 경우가 많은데, 공식 가이드는 다른 옵션이 안 맞을 때만 맞춤 이벤트를 만들라고 권한다. 이미 있는 이벤트를 다른 이름으로 중복 생성하면 어떻게 될까? 나중에 같은 행동이 두 이벤트로 쪼개져 집계된다.
페이지뷰: 가장 유명한 이벤트 하나
페이지뷰는 별도의 특별한 단위가 아니라, page_view라는 이름을 가진 이벤트 하나일 뿐이다. Google 태그의 config 명령은 send_page_view 값이 기본 true라서, 페이지가 열릴 때마다 이 이벤트를 자동으로 쏜다.
page_view 이벤트에는 매번 page_location(전체 URL), page_title(문서 제목), page_referrer(이전 URL) 같은 딸림 정보가 함께 실린다. 사실 이건 page_view만의 특권이 아니라, 어떤 이벤트든 engagement_time_msec과 session_id를 공통으로 달고 다닌다.
실무 함정. 페이지를 새로 불러오지 않고 화면만 바뀌는 SPA(싱글 페이지 앱)나 무한스크롤 사이트라면, 향상된 측정이 브라우저 히스토리 변경을 감지해 page_view를 또 보낸다. 자동 전송을 끄지 않은 채 수동으로도 page_view를 호출하면 페이지뷰가 중복 집계된다는 경고가 공식 문서에도 나온다.
세션: '마트 한 번 방문'과 같다
세션은 마트에 들어가서 이것저것 둘러보고 카트에 담아 계산하고 나가기까지, 그 한 번의 방문 전체를 가리킨다. 마트를 나갔다가 한참 뒤 다시 들어오면, 그건 오늘 두 번째 방문이라도 새로운 세션으로 센다.
GA4 공식 정의도 다르지 않다. "세션은 정해진 시간 범위 내에 발생한 사용자 상호작용의 집합"이고, 기본값으로는 30분간 아무 활동이 없으면 그 세션이 끝난 것으로 처리한다. 이 시간 범위는 관리자 설정에서 최대 7시간 55분까지 늘릴 수 있다.
세션이 새로 열리는 순간 session_start 이벤트가 자동 생성되고, 그 세션을 식별하는 ga_session_id(세션이 시작된 시각의 타임스탬프)와, 그 사용자의 누적 방문 횟수를 세는 ga_session_number가 함께 만들어진다.
도해 2. 같은 날 두 번 방문해도, 30분 이상 텀이 있으면 세션은 둘로 나뉜다.
세션 안에서도 "제대로 된 방문"과 "스쳐 지나간 방문"을 가른다. 이를 참여 세션(engaged session)이라 부르는데, 기준은 셋 중 하나만 채우면 된다. 세션 지속시간이 10초를 넘거나, 그 세션 안에 키 이벤트가 하나라도 포함되거나, 페이지뷰(또는 화면뷰)가 2회 이상 발생하면 참여 세션으로 잡힌다.
이미지: 마트에 들어와 둘러보고 계산하고 나가기까지, 그 한 번의 방문이 세션이다.
'사용자'는 사실 사람이 아니라 브라우저다
GA4의 JS 태그는 1st-party 쿠키를 이용해 고유 사용자와 그 사용자의 세션을 구분한다. 웹에서 "기기 ID(device ID)"라 부르는 값은 _ga 쿠키에 저장된 client ID에서 가져온다.
쿠키가 뭔지부터 짚자면, 매장에 들어갈 때 손등에 도장을 찍어주는 것과 비슷하거든. 그 도장(쿠키에 저장된 client_id)이 남아 있으면 매장은 "아까 그 손님이구나"라고 알아본다. 도장이 지워지거나 다른 손을 내밀면, 즉 쿠키가 만료되거나 다른 브라우저로 오면 처음 온 손님으로 다시 취급된다.
이미지: _ga 쿠키는 방문자 손등에 찍는 익명 도장에 가깝다, 지워지면 처음 온 손님이 된다.
_ga 쿠키는 기본 2년 동안 유지되도록 설정돼 있다. 다만 이건 GA가 정한 희망 값일 뿐이고, 실제로는 브라우저가 자체적으로 1st-party 쿠키 수명에 상한을 건다. 크롬은 최대 400일, 사파리는 최대 7일이라서, 재방문이 없으면 GA가 2년으로 설정해도 브라우저 정책 때문에 그보다 훨씬 일찍 지워질 수 있다.
여기서 자연스럽게 따라오는 결론 하나. 기기 ID는 "브라우저 기반의 익명 고유 사용자 식별자"라서, 같은 사람이라도 크롬과 사파리를 오가거나 PC와 스마트폰을 오가면 기본적으로 서로 다른 사용자로 잡힌다.
이미지: 같은 사람이어도 기기를 바꾸면 GA4는 다른 사람으로 센다, 로그인 연동이 없다면.
실무 함정. 이 문제, 줄일 방법이 없을까? 로그인 기능이 있는 사이트라면 User-ID를 심어 줄일 수 있다. GA4의 리포팅 아이덴티티는 User-ID가 있으면 그것을 우선 쓰고, 없으면 기기 ID(client_id)로 대체하고, 그것도 없으면 모델링으로 추정한다. 로그인 연동이 없는 사이트는 기기를 바꾸는 재방문자를 전부 새 사용자로 착각하게 된다.
도해 3. 사용자는 세션을 여러 번 만들고, 세션은 그 안에 여러 이벤트를 담는다, 위로 갈수록 숫자가 줄어드는 게 정상이다.
키 이벤트: "이 행동이 중요하다"고 표시하는 것
수많은 이벤트 중에서도 매출과 직결되는 특별히 중요한 행동만 따로 표시해두는 게 키 이벤트(key event)다. 공식 정의로는 "비즈니스 성공에 특히 중요한 행동을 측정하는 이벤트"이고, 이미 수집된 이벤트라면 어떤 것이든 표시만 하면 키 이벤트가 될 수 있다.
2024년 3월 27일, 구글은 GA4에서 쓰던 "전환(conversions)"이라는 이름을 "키 이벤트(key events)"로 바꾼다고 공식 발표했다. 기존에 전환으로 지정해둔 이벤트는 별도 재설정 없이 그대로 키 이벤트로 넘어갔다.
이름을 바꾼 이유는 다름 아닌 혼선 때문. 그전까지는 GA4와 Google Ads가 둘 다 "전환"이라는 같은 단어를 썼는데, 두 시스템의 측정 방식이 달라서 같은 행동인데도 숫자가 어긋나는 혼란이 잦았다. 그래서 이제는 GA4 쪽 표시는 키 이벤트, 그 키 이벤트를 Google Ads로 가져와 입찰 최적화에 쓰면 그때 비로소 전환이라 부르는 식으로 용어를 나눴다.
이미지: 수많은 행동 중 매출과 직결되는 것만 따로 표시한 게 키 이벤트다.
자주 헷갈리는 것 정리
같은 사람의 하루로 네 단위를 한 번에 대보면 감이 잡힌다. 출근길에 스마트폰으로 광고를 보고 들어와 상품 페이지 3개를 훑어봤고, 점심시간엔 회사 PC로 다시 들어와 결제까지 마쳤다고 하자.
| 단위 | 무엇을 세나 | 이 하루의 값 | 집계 특징 |
|---|---|---|---|
| 이벤트 | 클릭·스크롤·구매 등 개별 상호작용 | 오전+오후 통틀어 여러 건 | 가장 작은 단위, 나머지는 전부 이벤트의 묶음 |
| 페이지뷰 | page_view 이벤트만 따로 센 것 | 오전 3건 + 오후 1~2건 | 이벤트의 한 종류일 뿐, 별도 단위가 아니다 |
| 세션 | 30분 비활동으로 나뉘는 방문 묶음 | 2회(오전 1, 오후 1) | 기기를 바꿔도 세션은 별개로 새로 열린다 |
| 사용자 | 브라우저 단위 쿠키(client_id) | 로그인 연동 없으면 2명 | User-ID 연동이 있어야 1명으로 합쳐진다 |
네이버 검색광고의 프리미엄 로그 분석도 원리는 똑같다. wcslog.js라는 스크립트를 사이트에 심어 이벤트를 수집·전송하고, 광고 클릭에서 넘어온 파라미터를 전환 페이지까지 보존해 광고와 행동을 잇는다. 다만 이 글을 쓰며 확인해보니 공식 가이드 원문 링크 하나가 이미 만료돼 있었다, 최신 문서 위치는 실제 적용 전 별도로 다시 찾아봐야 한다.
결국 GA4든 네이버든 큰 그림은 매한가지. 페이지에 심은 태그가 이벤트를 만들고, 서버가 쿠키·식별자로 그 이벤트들을 세션과 사용자로 묶어 집계한다. 이름과 쿠키 명칭만 다를 뿐.
오늘 확인할 것
정의는 여기까지 됐으니, 이제 자기 사이트의 GA4를 열어 직접 확인할 차례. 다음 편부터는 이 단위들을 실제로 추적에 써먹는 법을 다룬다.
이미지: 정의를 읽었으면, 이제 내 GA4 화면에서 직접 눌러볼 차례다.
- 실시간 보고서: 이벤트 이름과 매개변수가 실제로 어떻게 찍히나? 이벤트 하나를 직접 클릭해 매개변수 목록을 열어보라.
- 세션 제한 시간: 30분 기본값을 그대로 쓰고 있나? 관리자 > 데이터 스트림 > 태그 설정에서 확인하라.
- 참여 세션 비율: 10초 미만 이탈이 많은 페이지가 있나? 참여율 보고서에서 낮은 페이지부터 걸러내라.
- 키 이벤트 목록: 매출과 직결된 행동이 빠져 있지 않나? 이벤트 목록에서 키 이벤트 표시를 점검하고 없으면 추가하라.
- 기기 간 사용자 중복: 로그인 기능이 있나? 있다면 User-ID 연동 여부를 확인하고, 없다면 기기별 중복 집계를 감안해 숫자를 읽어라.
그래도 하나만 챙긴다면, 이것이다.
숫자를 믿기 전에, 그 숫자가 무엇을 세고 있는지부터 물어라.
자주 묻는 질문
GA4에서 세션은 어떻게 정의되나요?
GA4의 세션은 사용자가 사이트나 앱과 상호작용하는 일정 시간 범위를 하나로 묶은 단위다. 기본값은 30분간 아무 활동이 없으면 그 세션이 끝나는 것이고, 이 값은 최대 7시간 55분까지 조정할 수 있다. 세션이 새로 시작되면 session_start 이벤트와 함께 ga_session_id, ga_session_number가 생성된다.
GA4의 사용자 수는 실제 사람 수인가요?
아니다. GA4의 기본 사용자 수는 _ga 쿠키에 저장된 client_id, 즉 브라우저 단위 익명 식별자를 센 값이다. 같은 사람이 크롬과 사파리를 오가거나 PC와 모바일을 오가면 로그인 연동(User-ID) 없이는 서로 다른 사용자로 잡힌다.
이벤트와 페이지뷰는 뭐가 다른가요?
GA4에서 페이지뷰는 이벤트의 한 종류일 뿐이다. page_view라는 이름의 이벤트가 자동으로 전송되는 것이고, 그 외에 스크롤·클릭·구매처럼 자동 수집, 향상된 측정, 맞춤 이벤트로 기록되는 모든 상호작용이 이벤트에 포함된다.
이 글은 디지털 마케팅 분석 입문 시리즈 1편(허브)이다. 쿠키·세션·이벤트라는 기초 단위를 잡았다면, 다음 편부터는 이 단위를 실제 추적에 써먹는 법을 다룬다.
- 다음 편: UTM 파라미터 기초
- 응용 편: 다크 퍼널 추적법
- 심화 편: UTM 추적 실측, 브랜드검색 어트리뷰션
근거·출처
- 이벤트 정의: About events, Google 고객센터
- 이벤트 수집 4단계: About events, Google 고객센터
- 자동 수집·향상된 측정: [GA4] Data collection, Google 고객센터
- page_view·send_page_view: Measure pageviews, Google Developers
- 세션 정의·30분 타임아웃: About Analytics sessions, Google 고객센터
- 참여 세션 기준: [GA4] Session, Google 고객센터
- 쿠키·기기 ID: [GA4] Cookie usage on websites, Google 고객센터
- 기기 ID 정의: [GA4] Device ID, Google 고객센터
- 리포팅 아이덴티티: [GA4] Reporting identity, Google 고객센터
- 전환→키 이벤트 명칭 변경: [GA4] Conversions vs. key events, Google 고객센터
- 1st/3rd-party 쿠키 개념: Third-party cookies, MDN
- 네이버 로그 분석 스크립트: 네이버 광고 웹 전환 추적 Script 가이드
이 글의 수치(사용자 1,000명·세션 1,400회·이벤트 12,000건, 하루 시나리오 속 숫자)는 설명을 위한 예시이며 실측 데이터가 아니다. 네이버 로그 분석 가이드 원문 링크는 조사 시점에 접속이 되지 않아 검색 스니펫으로 교차확인했다, 실제 적용 전 최신 문서 위치를 다시 확인해야 한다.
이 글이 도움이 되었다면 공유해주세요
최신 인사이트
카카오톡 공유 썸네일 안 나올 때 해결법 (Kakao JavaScript SDK 2025)
카카오톡 공유하기에서 썸네일 이미지가 안 나오는 원인과 scrapImage로 KAGE URL을 변환해 해결하는 방법을 단계별로 설명합니다. 지금 확인하세요.
Claude Code 서브에이전트로 CRM 사용자 설명서 20분 만에 완성하는 방법
Claude Code 서브에이전트를 활용해 CRM 코드베이스에서 사용자 설명서와 비주얼 가이드북을 20분 만에 자동 생성한 실전 사례를 공유합니다. 지금 확인하세요.
GEO 생성형 엔진 최적화: 2025년 AI 마케팅 전략 완전 가이드
GEO 생성형 엔진 최적화란 무엇이며 기존 SEO와 어떻게 다른지, 2025년 AI 마케팅 전략의 핵심 실행 방법 5가지를 데이터와 함께 알아보세요.
관련 프로젝트
새 글을 이메일로 받아보세요
마케팅, 분석, 개발 인사이트를 정리해서 보내드려요.
