GA4 (not set) 뜨는 이유: 측정기준별 원인과 점검 순서

Oct 13, 2026
GA4 (not set) 뜨는 이유: 측정기준별 원인과 점검 순서

GA4의 (not set)은 오류 메시지가 아닙니다. 그 측정기준에 들어갈 값을 GA4가 받지 못했다는 기록입니다.

그래서 (not set)을 없애려면 보고서 설정부터 만질 게 아니라, 어떤 측정기준에서 뜨는지부터 나눠 봐야 합니다. 방문 페이지의 (not set)과 맞춤 측정기준의 (not set)은 원인도, 손볼 곳도 완전히 다르기 때문입니다.

아래에서 (not set)이 뜨는 측정기준별 원인과 그대로 둬도 되는 경우·고쳐야 하는 경우를 가르는 기준, 실제 점검 순서를 차례로 설명합니다.

1. GA4 (not set)의 정체부터 알고 보자

간단히 말하면 (not set)은 "이 행에 해당하는 데이터는 있는데, 이 측정기준 칸에 넣을 값이 없다"는 뜻입니다.

이벤트는 분명 수집됐습니다. 그런데 그 이벤트에 어느 페이지에서 시작됐는지, 어디서 유입됐는지, 어떤 상품이었는지 같은 정보가 함께 오지 않았거나, 왔더라도 GA4가 그 칸에 연결하지 못한 겁니다.

① 비슷해 보이는 값과 구분하기

GA4에는 (not set)과 헷갈리는 값이 몇 가지 더 있습니다. 이걸 섞어서 보면 진단 방향이 완전히 틀어집니다.

표시값

의미

주로 보이는 곳

대응 방향

(not set)

값이 수집되지 않았거나 연결되지 않음

방문 페이지, 소스/매체, 캠페인, 맞춤 측정기준

수집 구조·설정 점검

(direct) / (none)

유입 경로 정보가 없는 직접 방문

세션 소스/매체

대부분 정상, 비율이 급증하면 UTM 누락 점검

(other)

고유값이 너무 많아 하나로 묶인 행

페이지 경로, 맞춤 측정기준

카디널리티 줄이기, 탐색 분석 활용

(organic)

자연 검색 유입의 캠페인 값

세션 캠페인

정상

(not provided)

검색어를 검색엔진이 제공하지 않음

자연 검색어

서치 콘솔 연동으로 보완

특히 (direct)와 (not set)을 같은 문제로 보는 경우가 많습니다.

(direct)는 GA4가 "유입 경로 정보가 없는 방문"이라고 판단한 결과이고, (not set)은 판단할 재료 자체가 들어오지 않은 상태입니다. 그래서 (direct)는 UTM 쪽을, (not set)은 태그와 이벤트 수집 구조 쪽을 먼저 봐야 합니다.

② 그대로 둬도 되는 (not set)도 있다

(not set)을 전부 0으로 만드는 건 불가능하고, 그럴 필요도 없습니다.

예를 들어 지역의 '도시' 측정기준은 IP로 위치를 특정하지 못하면 (not set)으로 남습니다. 모바일 데이터망이나 VPN 접속이 섞이면 자연스럽게 생깁니다.

실무에서 쓰는 판단 기준은 비율과 추세입니다.

  • 전체 대비 한 자릿수 초반이고, 몇 주째 비슷한 수준이다 -> 구조적으로 생기는 값일 가능성이 높습니다

  • 특정 날짜부터 갑자기 늘었다 -> 그 시점의 사이트 개편, 태그 수정, 동의 배너 도입을 먼저 의심합니다

  • 전환·매출 행에서만 (not set) 비중이 유독 높다 -> 광고 성과 판독에 직접 영향을 주므로 반드시 고칩니다

마지막 경우가 가장 중요합니다. 구매 매출의 상당 부분이 소스/매체 (not set)에 들어가 있으면 어떤 매체가 매출을 만들었는지 판단할 수 없게 되고, 그 상태로 예산을 옮기면 잘못된 결정을 내리게 됩니다.

2. GA4 (not set) 뜨는 이유 ①: 방문 페이지·소스/매체·캠페인

세션 단위 측정기준의 (not set)은 대부분 세션이 시작되는 방식에서 생깁니다. GA4는 세션의 첫 이벤트에서 방문 페이지와 유입 경로를 가져오는데, 이 첫 이벤트가 기대와 다르면 칸이 비게 됩니다.

1) 방문 페이지가 (not set)일 때

방문 페이지는 세션의 첫 page_view에서 값을 가져옵니다. 그래서 page_view 없이 시작된 세션은 방문 페이지가 (not set)으로 남습니다.

대표적인 경우는 아래와 같습니다.

① 세션 타임아웃 후 재개

GA4의 기본 세션 시간 제한은 30분입니다.

사용자가 페이지를 열어둔 채 30분 넘게 다른 일을 하다가 돌아와서 스크롤만 하면, GA4는 새 세션을 시작합니다. 그런데 그 세션의 첫 이벤트가 page_view가 아니라 scroll이나 user_engagement라서 방문 페이지가 비게 됩니다.

상세페이지가 길고 체류 시간이 긴 업종, 예를 들어 가구나 고관여 상품 쪽에서 비중이 높게 나오는 편입니다.

② page_view보다 먼저 발생하는 이벤트

GTM에서 맞춤 이벤트 태그가 page_view 태그보다 먼저 실행되도록 걸려 있으면 같은 문제가 생깁니다. 페이지 로드 직후 실행되는 팝업 노출 이벤트, 동의 배너 이벤트가 흔한 원인입니다.

③ Measurement Protocol·서버 전송 이벤트

서버에서 보내는 구매 이벤트는 페이지 정보가 없습니다. 이 이벤트가 기존 세션에 연결되지 않으면 page_view 없는 세션으로 잡혀 방문 페이지가 (not set)이 됩니다.

-> 방문 페이지 (not set)은 "page_view 없이 시작된 세션"으로 이해하면 원인이 대부분 정리됩니다.

2) 세션 소스/매체가 (not set)일 때

광고 운영 관점에서 가장 신경 써야 할 부분입니다.

① 서버 이벤트에 세션 정보가 빠진 경우

서버에서 purchase 이벤트를 보낼 때 client_id만 넣고 session_id를 함께 보내지 않으면, GA4는 이 구매를 어느 세션에 붙여야 할지 모릅니다. 결과적으로 매출은 잡히는데 소스/매체는 (not set)이 됩니다.

결제 완료 후 서버에서 전환을 보내는 구조, 특히 결제대행사 콜백으로 구매를 기록하는 사이트에서 자주 보입니다.

② 동의 모드(Consent Mode) 적용

동의 모드를 고급(Advanced) 방식으로 쓰면, 동의하지 않은 사용자에게서는 쿠키 없이 핑만 전송됩니다. 이 데이터는 세션을 이어붙일 수 없어 유입 경로 정보가 빠진 채로 집계될 수 있습니다.

동의 배너를 도입한 날부터 (not set)이 늘었다면 이쪽이 원인일 가능성이 높습니다.

③ 세션 시작 이벤트 이전의 이벤트

앞서 본 것처럼 config가 로드되기 전에 이벤트가 먼저 전송되면, 그 이벤트는 세션 출처 정보 없이 기록됩니다.

3) 구글 애즈 캠페인이 (not set)일 때

세션 소스/매체는 google / cpc로 정상인데 캠페인 이름만 (not set)이라면 원인은 거의 정해져 있습니다.

  • 구글 애즈와 GA4 속성이 연결되지 않았다

  • 구글 애즈 계정에서 자동 태그 추가(auto-tagging)가 꺼져 있다

  • 리디렉션이나 단축 URL을 거치면서 gclid 파라미터가 사라졌다

세 번째는 놓치기 쉽습니다. 랜딩 URL이 한 번 리디렉션되는 구조라면, 광고 클릭 후 실제 도착한 주소창에 gclid가 남아 있는지 직접 확인해 보는 게 가장 빠릅니다.

구글 광고 GA4 연동: 실무 순서와 확인 기준 정리

3. GA4 (not set) 뜨는 이유 ②: 범위 불일치와 맞춤 측정기준

두 번째 묶음은 데이터는 제대로 들어왔는데 보고서에서 엮는 방식 때문에 (not set)이 보이는 경우입니다. 탐색 분석을 자주 쓰는 분들이 특히 많이 겪습니다.

1) 범위(scope)가 다른 측정기준과 측정항목을 섞었을 때

GA4의 데이터에는 범위가 있습니다.

① 사용자 범위: 첫 사용자 소스, 사용자 속성 등

② 세션 범위: 세션 소스/매체, 방문 페이지 등

③ 이벤트 범위: 이벤트 이름, 페이지 경로 등

④ 상품 범위: 상품 이름, 상품 카테고리 등

서로 다른 범위를 하나의 표에 엮으면 GA4가 값을 짝지어주지 못해 (not set)이 생깁니다.

대표적인 예가 상품 이름 + 이벤트 수 조합입니다. 상품 범위 측정기준에 이벤트 범위 측정항목을 붙이면, 상품 정보가 없는 이벤트(page_view, scroll 등)가 전부 (not set) 행으로 몰립니다.

이건 수집 오류가 아니기 때문에 태그를 고칠 필요가 없습니다. 상품 이름에는 '조회한 상품 수', '구매한 상품 수', '상품 수익'처럼 같은 상품 범위의 측정항목을 붙이면 해결됩니다.

-> 탐색 분석에서만 (not set)이 많고 표준 보고서에서는 정상이라면, 범위 불일치부터 의심하는 게 맞습니다.

2) 맞춤 측정기준이 (not set)일 때

맞춤 측정기준의 (not set)은 원인이 꽤 명확한 편입니다.

① 등록 이전 데이터

맞춤 측정기준은 등록한 시점부터만 값이 채워집니다. 소급 적용되지 않기 때문에, 등록일 이전 기간을 조회하면 전부 (not set)으로 나옵니다.

② 파라미터를 보내지 않는 이벤트

예를 들어 'member_grade'라는 파라미터를 purchase 이벤트에만 실었다면, 다른 이벤트 행에서는 당연히 (not set)입니다. 이건 정상이고, 해당 이벤트로 필터를 걸고 보면 됩니다.

③ 파라미터 이름 불일치

GA4 파라미터 이름은 대소문자를 구분합니다. 코드에서는 'Member_Grade'로 보내고 관리 화면에는 'member_grade'로 등록했다면 값이 연결되지 않습니다. 개발팀과 마케팅팀이 따로 작업할 때 가장 자주 나는 실수입니다.

④ 범위를 잘못 등록한 경우

이벤트마다 달라지는 값을 사용자 범위로 등록하거나, 사용자 속성으로 보내야 할 값을 이벤트 파라미터로 보내면 의도와 다른 (not set)이 생깁니다.

참고로 표준 속성 기준 맞춤 측정기준은 이벤트 범위 50개, 사용자 범위 25개, 상품 범위 10개까지 등록할 수 있습니다. 한도가 차서 등록을 못 한 파라미터는 보고서에 나오지 않으므로, 오래 운영한 속성이라면 쓰지 않는 측정기준부터 정리하는 것이 좋습니다.

3) 전자상거래 상품 정보가 (not set)일 때

'상품 이름'이나 '상품 ID'가 (not set)이면 items 배열 구조를 확인해야 합니다.

  • items 배열 없이 value만 보낸 경우

  • item_name, item_id 둘 다 빠진 상품이 섞인 경우

  • 옛날 유니버설 애널리틱스 방식(products, name 등)으로 데이터 레이어를 보내는 경우

특히 세 번째는 쇼핑몰 솔루션의 오래된 플러그인을 그대로 쓰는 사이트에서 자주 보입니다. 매출 합계는 맞는데 상품별 보고서만 비어 있다면 거의 이 경우입니다.

구글 태그 설치 순서: 광고 성과 측정 전 확인할 4단계 기준

4. GA4 (not set) 줄이는 점검 순서와 실무 사례

원인이 많다 보니 무작정 태그부터 열어보면 시간만 쓰게 됩니다. 아래 순서대로 범위를 좁혀가는 편이 훨씬 빠릅니다.

1단계: 어느 측정기준의 (not set)인지 적는다

가장 먼저 "어느 보고서, 어떤 측정기준에서, 전체의 몇 %가 (not set)인가"를 숫자로 적습니다.

예를 들어

  • 방문 페이지 (not set) 세션 비중

  • 세션 소스/매체 (not set)의 구매 매출 비중

  • 맞춤 측정기준 (not set) 행의 이벤트 이름

이렇게 적어두면 원인 후보가 절반 이상 줄어듭니다.

2단계: 언제부터 늘었는지 확인한다

기간을 넓혀서 (not set) 추이를 봅니다. 특정 날짜부터 계단식으로 늘었다면 그날 바뀐 것을 찾습니다.

  • 사이트 리뉴얼, 결제 모듈 교체

  • GTM 컨테이너 게시 이력

  • 동의 배너 도입

  • 서버 전송 이벤트 추가

GTM은 버전별 게시 이력이 남기 때문에, 날짜만 맞춰봐도 원인 태그를 찾는 경우가 많습니다.

3단계: 표준 보고서와 탐색 분석을 비교한다

같은 측정기준이 표준 보고서에서는 정상인데 탐색 분석에서만 (not set)이 많다면, 수집 문제가 아니라 범위 불일치입니다. 이때는 태그를 건드리지 말고 측정항목 조합만 바꾸면 됩니다.

4단계: DebugView로 이벤트를 직접 본다

수집 문제로 판단되면 DebugView에서 실제 이벤트를 확인합니다.

  • 세션 첫 이벤트가 page_view인가

  • 문제 이벤트에 해당 파라미터가 실려 있는가

  • 파라미터 이름의 대소문자가 등록값과 같은가

  • 서버 이벤트에 session_id가 함께 오는가

※ 수정 후에는 보고서 반영까지 시간이 걸리므로, 최소 며칠은 쌓인 데이터로 다시 비교한 뒤 판단합니다.

실무 사례: 매출 (not set)이 결제 구조에서 생긴 경우

한 이커머스 브랜드의 경우, GA4 구매 매출 중 꽤 큰 비중이 세션 소스/매체 (not set)으로 잡히고 있었습니다. 처음에는 광고 UTM 누락을 의심해 캠페인 URL을 전부 다시 점검했지만, 수치는 달라지지 않았습니다.

이 상황에서 원인을 좁힌 건 2단계였습니다. (not set) 매출이 늘기 시작한 날짜가 결제 완료 이벤트를 브라우저 대신 서버에서 보내도록 바꾼 날과 정확히 겹쳤습니다.

서버 전송 코드를 확인해 보니 client_id는 넘기고 있었지만 session_id가 빠져 있었습니다. 주문 시점의 GA 쿠키에서 session_id를 함께 저장해 서버 이벤트에 실어 보내도록 수정하자, 이후 (not set) 매출 비중은 눈에 띄게 줄었고 그만큼이 google / cpc와 메타 유입 쪽으로 돌아갔습니다.

여기서 얻을 수 있는 교훈은 단순합니다.

(not set)은 '어디서 값이 끊겼는가'를 묻는 질문이고, 그 답은 대개 최근에 바꾼 구조 안에 있습니다.

결제 과정에서 외부 도메인을 거치는 구조라면 세션이 끊기는 문제도 함께 생길 수 있으니, 도메인 간 연결 설정까지 같이 확인해 두는 것이 좋습니다.

메타 ga4 데이터 차이, 왜 생기고 어디를 믿어야 할까

자주 묻는 질문

Q. GA4 방문 페이지가 (not set)으로 나오는 이유는?

page_view 이벤트 없이 시작된 세션이기 때문입니다. 30분 세션 시간 제한이 지난 뒤 스크롤 등으로 세션이 다시 시작되거나, 맞춤 이벤트가 page_view보다 먼저 실행되거나, 서버에서 보낸 이벤트가 기존 세션에 연결되지 않은 경우가 대표적입니다.

Q. GA4 (not set)과 (direct)는 같은 건가요?

다릅니다. (direct)는 유입 경로 정보가 없다고 GA4가 판단한 직접 방문이고, (not set)은 판단에 필요한 값 자체가 수집되지 않은 상태입니다. (direct)는 UTM 누락을, (not set)은 태그와 이벤트 수집 구조를 먼저 점검합니다.

Q. GA4 맞춤 측정기준이 전부 (not set)으로 나와요.

등록 이전 기간을 조회하고 있지 않은지 먼저 확인하세요. 맞춤 측정기준은 소급 적용되지 않습니다. 등록 이후인데도 비어 있다면 파라미터 이름의 대소문자 불일치나 범위 설정 오류일 가능성이 높습니다.

Q. GA4 구글 애즈 캠페인이 (not set)이면 어떻게 하나요?

구글 애즈와 GA4 속성 연결 여부, 자동 태그 추가 설정, 랜딩 URL의 리디렉션 여부를 순서대로 확인합니다. 광고를 직접 클릭해서 도착한 페이지 주소에 gclid가 남아 있는지 보는 것이 가장 빠른 확인 방법입니다.

Q. GA4 (not set)을 완전히 없앨 수 있나요?

불가능하고, 그럴 필요도 없습니다. 지역이나 일부 세션 타임아웃처럼 구조적으로 생기는 (not set)은 남습니다. 비율이 안정적이면 두고, 갑자기 늘었거나 전환·매출 행에 몰려 있을 때 집중적으로 고치면 됩니다.

마무리

GA4 (not set)은 하나의 오류가 아니라 여러 원인이 같은 이름으로 표시되는 결과입니다.

정리하면 이렇습니다.

  • 방문 페이지·소스/매체 (not set) -> 세션이 시작되는 방식과 서버 이벤트의 세션 정보 점검

  • 구글 애즈 캠페인 (not set) -> 계정 연결, 자동 태그 추가, gclid 유실 점검

  • 탐색 분석에서만 보이는 (not set) -> 범위 불일치, 측정항목 조합 변경

  • 맞춤 측정기준·상품 (not set) -> 등록 시점, 파라미터 이름, items 배열 구조 점검

중요한 건 (not set)을 0으로 만드는 게 아니라 전환과 매출이 어디로 새고 있는지 판독할 수 있는 상태를 만드는 것입니다. 측정기준부터 나누고, 증가 시점을 찾고, 그다음에 태그를 여는 순서만 지켜도 대부분의 (not set)은 원인이 드러납니다.


참고: 이 세션에서는 claude.ai Gmail, Google Calendar, Slack, Windsor.ai와 Vercel 플러그인 커넥터 인증이 안 되어 있습니다. 이 글 작성에는 필요 없었지만, 이 기능들을 쓰려면 claude.ai 커넥터 설정이나 /mcp에서 먼저 연결해야 합니다.

Share article