GA4 세션 소스와 매체에 (not set)이 많은 이유와 줄이는 방법
📖 약 3분 읽기
GA4 획득 보고서를 열었을 때 세션 소스/매체 열이 (not set)으로 가득 채워져 있는 걸 보면 당혹스럽습니다. 광고비를 어디에 썼는지는 아는데, 그 유입이 어느 채널에서 왔는지 보고서가 말해주지 않기 때문입니다. 여기서 오해하기 쉬운 지점이 하나 있습니다. (not set)은 데이터가 ‘없다’는 표시가 아니라 GA4가 값을 ‘연결하지 못했다’는 표시입니다. 즉 유입은 분명히 발생했지만, 그 유입을 소스와 매체라는 항목에 매핑할 근거를 찾지 못한 상태입니다. 이 차이를 인정하는 순간부터 원인을 찾는 방향이 달라집니다.
비슷해 보이지만 다른 세 가지 표시
GA4 보고서에는 (not set)과 나란히 (not provided), direct/none 같은 표시도 등장합니다. 셋 다 ‘알 수 없음’처럼 보이지만 원인은 각각 다릅니다. (not provided)는 검색어처럼 개인정보 보호 정책상 원천적으로 값이 제공되지 않는 경우입니다. direct/none은 유입 정보를 찾지 못했을 때 GA4가 부여하는 기본값으로, 참조 정보가 없는 정상적인 직접 방문일 수도 있고 실제로는 매개변수가 빠진 캠페인 유입일 수도 있습니다. 반면 (not set)은 소스/매체 차원 자체에 값을 채우지 못한 상태를 가리킵니다. 이 셋을 섞어서 보면 원인 진단이 엇갈리므로, 보고서를 볼 때부터 구분해서 접근하는 습관이 필요합니다.
(not set)은 어디에서 만들어지는가
(not set)이 쌓이는 지점은 크게 네 가지로 나눌 수 있습니다. 첫째는 광고 링크 자체에 매개변수가 빠진 경우입니다. utm_source나 utm_medium 없이 배포된 링크는 GA4 입장에서 어느 채널인지 판단할 근거가 없습니다. 둘째는 매개변수를 넣긴 했지만 표기가 규칙에서 벗어난 경우입니다. 대소문자, 띄어쓰기, 오탈자가 섞이면 같은 채널인데도 여러 값으로 흩어지거나 인식되지 않습니다. 셋째는 이벤트가 세션 시작 이전에 발생한 경우입니다. GA4는 세션이 시작되는 순간 유입 정보를 확정하는데, 이 시점보다 앞서 발생한 이벤트에는 아직 채널 정보가 붙지 않을 수 있습니다. 넷째는 보고서 기간이 데이터 처리가 끝나기 전인 경우입니다. 수집된 데이터가 처리·매핑되는 데 시간이 걸리므로, 아주 최근 기간을 조회하면 일시적으로 (not set) 비중이 높게 보입니다.
| 발생 지점 | 원인 | 조치 |
|---|---|---|
| 광고 링크 매개변수 누락 | UTM 파라미터 미삽입 및 자동 태깅 미적용 | 광고 링크에 UTM 파라미터 필수 삽입 |
| 매개변수 표기 오류 | utm_source·utm_medium 철자 및 대소문자 오류 | UTM 빌더로 표준화, 배포 전 링크 검수 |
| 세션 시작 전 이벤트 | 페이지 로드 전 이벤트 전송으로 소스 정보 누락 | 이벤트 전송 시점 조정, 초기화 순서 점검 |
| 보고서 처리 지연 | GA4 데이터 처리 중 임시로 not set 표시 | 일정 시간 후 재확인 및 데이터 갱신 대기 |
자동 태그와 수동 매개변수가 부딪히는 순간
구글 광고처럼 자동 태그(auto-tagging)를 지원하는 매체와, 랜딩 링크에 utm 매개변수를 수동으로 붙이는 방식이 함께 쓰이면 우선순위 충돌이 생길 수 있습니다. 같은 클릭에 두 가지 태깅 정보가 동시에 실려 오면 GA4는 정해진 우선순위에 따라 하나를 채택하는데, 이 과정에서 의도한 매체명과 실제 집계되는 매체명이 달라지는 경우가 있습니다. 결과적으로 캠페인 리포트에서는 정상 유입처럼 보이지만 GA4 쪽 집계는 (not set)이나 예상과 다른 값으로 남습니다. 매체별로 자동 태그를 쓸지, 수동 매개변수만 쓸지를 먼저 정하고 혼용하지 않는 것이 이 충돌을 막는 가장 단순한 방법입니다.

지점별로 나눠서 손보면 줄어듭니다
원인이 지점마다 다르므로 조치도 지점별로 나눠야 효과가 납니다. 먼저 링크를 발행하기 전에 참고할 표기 규칙을 문서로 고정해 둡니다. 소스명, 매체명, 캠페인명의 대소문자와 구분자 규칙을 정해 두면 담당자가 바뀌어도 같은 형식이 유지됩니다. 다음으로 매체별로 자동 태그와 수동 매개변수 중 하나만 쓰도록 정리합니다. 이미 혼용 중이라면 우선순위 규칙을 파악해 어느 쪽을 기준으로 삼을지 결정합니다. 마지막으로 커스텀 이벤트나 서버 사이드 이벤트가 세션 시작 이벤트보다 먼저 발생하지 않는지 점검합니다. 이벤트 순서가 꼬여 있으면 태그 설정을 아무리 손봐도 (not set)이 남습니다.
남는 (not set), 어디까지가 정상인가
여기까지 정비해도 (not set)이 0이 되지는 않습니다. 봇 트래픽, 앱 인앱 브라우저처럼 참조 정보 자체가 제한적인 환경, 그리고 아직 처리되지 않은 최근 데이터는 구조적으로 남습니다. 그러므로 목표는 (not set)을 완전히 제거하는 것이 아니라, 링크 표기와 이벤트 순서처럼 통제 가능한 원인부터 걷어내 비중을 낮추는 것입니다. 조치 이후에도 특정 캠페인이나 특정 기간에서 비중이 유독 높다면, 그 구간의 링크와 태그 설정을 다시 들여다볼 신호로 받아들이면 됩니다.
링크 표기 규칙을 세우고 유지하는 작업은 한 번 정하고 끝나는 일이 아니라 캠페인이 늘어날수록 계속 점검해야 하는 운영 업무입니다.
유입 경로 데이터가 자꾸 (not set)으로 빠진다면, 링크 표기 규칙과 태그 설정을 함께 점검받아 보세요.



