UTM 붙였는데 안잡힘: 파라미터가 사라지는 4구간 진단 순서
UTM이 안 잡히는 원인은 대부분 링크 작성 실수가 아닙니다. 클릭한 순간부터 GA4 보고서에 표시되기까지, 그 사이 어느 구간에서 파라미터가 사라지거나 다른 값으로 덮어써진 경우가 훨씬 많습니다.
UTM 붙였는데 안잡힘 문제를 해결할 때 가장 먼저 할 일은 링크를 다시 만드는 게 아닙니다. 어느 구간에서 끊겼는지부터 찾는 것입니다. 끊기는 구간은 크게 네 곳입니다. URL 문법, 리디렉션, 태그 수집, 보고서 해석입니다. 이 순서대로 확인하면 대부분 30분 안에 원인이 나옵니다.
아래에서 구간별 원인과 확인 방법, 실제로 자주 생기는 실패 사례를 차례대로 설명합니다.
1. UTM 안잡힘 진단의 전제: 파라미터가 지나가는 4구간
UTM은 혼자서 작동하는 기능이 아닙니다.
URL 끝에 붙은 문자열일 뿐이고, 랜딩페이지에 설치된 GA4 태그가 그 문자열을 읽어서 서버로 보낼 때 비로소 데이터가 됩니다.
그래서 "UTM이 안 잡힌다"는 말은 실제로는 아래 네 가지 중 하나를 뜻합니다.
구간 | 무엇이 일어나는가 | 대표 증상 | 첫 확인 방법 |
|---|---|---|---|
① URL 문법 | 파라미터가 처음부터 잘못 작성됨 | 캠페인명이 깨지거나 (not set) | 광고 URL을 그대로 복사해 육안 점검 |
② 리디렉션 | 이동 중 쿼리스트링이 삭제됨 | 광고 유입이 Direct로 잡힘 | 클릭 후 주소창에 UTM이 남아 있는지 확인 |
③ 태그 수집 | 태그가 UTM을 읽지 못하거나 늦게 실행됨 | 세션 자체가 적게 잡힘 | DebugView에서 page_view의 page_location 확인 |
④ 보고서 해석 | 데이터는 들어왔는데 다른 곳에서 찾음 | "어제 붙였는데 안 보여요" | 측정기준 범위와 처리 지연 확인 |
-> 핵심: ①→②→③→④ 순서로 확인해야 합니다. ④부터 보면 데이터가 없는 이유를 보고서 설정 탓으로 착각하기 쉽습니다.
1-1. UTM 파라미터 기본 구조 다시 확인하기
GA4가 인식하는 기본 UTM은 5개입니다.
utm_source: 유입 출처 (예: meta, naver, kakao)
utm_medium: 유입 매체 (예: cpc, paid_social, email)
utm_campaign: 캠페인 이름
utm_content: 소재 구분
utm_term: 키워드
GA4에서는 utm_id, utm_source_platform, utm_creative_format, utm_marketing_tactic도 수집합니다. 다만 실무에서 "안 잡힌다"는 문의 대부분은 앞의 세 개, 즉 source·medium·campaign 문제입니다.
2. UTM 붙였는데 안잡힘: 구간별 원인 7가지
2-1. ① URL 문법 — 물음표 두 개, 샵(#) 뒤 UTM
가장 흔한 실수는 랜딩 URL에 이미 쿼리스트링이 있는데 UTM을 또 ?로 붙이는 경우입니다.
✗ https://shop.com/product?id=123?utm_source=meta
○ https://shop.com/product?id=123&utm_source=meta
물음표는 URL에 한 번만 쓸 수 있습니다. 두 번째부터는 &로 연결해야 합니다.
두 번째로 흔한 실수는 # 뒤에 UTM을 붙이는 경우입니다.
✗ https://shop.com/#/event?utm_source=meta
# 뒤는 프래그먼트 영역이라 GA4가 기본적으로 캠페인 파라미터로 읽지 않습니다. 해시 라우팅을 쓰는 SPA 랜딩이나 일부 이벤트 페이지 빌더에서 자주 생기는 문제입니다.
이 경우에는 UTM을 # 앞으로 옮기거나(https://shop.com/?utm_source=meta#/event), 개발 쪽에서 해시 라우팅을 일반 경로 방식으로 바꿔야 합니다.
2-2. ① URL 문법 — 대소문자와 한글
UTM 값은 대소문자를 구분합니다.
utm_source=Meta와 utm_source=meta는 GA4에서 서로 다른 행으로 잡힙니다. 담당자마다 다르게 쓰면 "분명 붙였는데 숫자가 적다"는 착각이 생깁니다. 사실은 두 행으로 나뉘어 있는 것입니다.
한글 캠페인명도 주의해야 합니다. 대부분의 광고 플랫폼이 자동으로 인코딩하지만, 엑셀에서 복사한 URL에 공백이나 스마트 따옴표가 섞이면 값이 중간에서 잘립니다.
-> 핵심: UTM 값은 영문 소문자, 공백 대신 언더바(_)로 통일하는 규칙을 먼저 정해두는 것이 가장 확실한 예방책입니다.
2-3. ② 리디렉션 — 쿼리스트링이 이동 중에 사라짐
URL 문법이 맞는데도 안 잡힌다면 가장 의심해야 할 구간이 리디렉션입니다.
UTM이 붙은 링크를 클릭한 뒤 최종 페이지에 도착하기까지 아래 같은 이동이 생길 수 있습니다.
http → https 전환
shop.com → www.shop.com 전환
PC 주소 → 모바일 전용 서브도메인(m.) 전환
단축 URL 서비스 경유
랜딩페이지 빌더나 쇼핑몰 솔루션의 내부 리디렉션
로그인 여부에 따른 페이지 분기
이 중 하나라도 쿼리스트링을 넘겨주지 않으면 UTM은 그 자리에서 사라집니다. GA4 입장에서는 UTM 없이 들어온 방문이 되므로 Direct나 Referral로 잡힙니다.
확인 방법은 간단합니다.
광고 관리자에 등록된 최종 URL을 시크릿 창에 붙여넣고, 페이지가 완전히 열린 뒤 주소창을 보세요. UTM이 남아 있지 않다면 원인은 리디렉션입니다.
모바일 전용 리디렉션은 PC에서 재현되지 않습니다. 반드시 휴대폰에서도 한 번 확인해야 합니다.
2-4. ③ 태그 수집 — 랜딩페이지에 GA4가 없거나 늦게 실행됨
주소창에 UTM이 남아 있는데도 안 잡힌다면, 이제 태그를 봐야 합니다.
자주 나오는 원인은 세 가지입니다.
① 랜딩페이지에만 태그가 빠진 경우
메인 사이트에는 GA4가 있지만, 광고용으로 따로 만든 이벤트 페이지나 외부 빌더 페이지에는 설치가 안 된 경우입니다. 사용자가 이 페이지에서 메인 사이트로 넘어가는 순간 UTM은 이미 사라진 상태입니다.
② SPA에서 URL이 바뀐 뒤 page_view가 발생하는 경우
페이지가 로드되자마자 프레임워크가 URL을 정리하면서 쿼리스트링을 지우고, 그 뒤에 GA4 태그가 실행되면 UTM을 읽지 못합니다.
③ 동의 모드에서 거부된 경우
쿠키 동의 배너를 사용하고 있고 사용자가 거부했다면 GA4는 제한된 방식으로만 데이터를 수집합니다. 보고서에 표시되는 숫자도 그만큼 줄어듭니다.
확인은 GA4 DebugView나 Tag Assistant에서 합니다. 첫 page_view 이벤트를 열고 page_location 값에 UTM이 포함되어 있는지 보면 됩니다.
GA4 디버그 뷰 사용법: 이벤트 누락 잡는 4단계 점검 기준
2-5. ③ 태그 수집 — 자동 태그(gclid)가 UTM보다 우선함
구글 광고에서 자동 태그 추가를 켜두면 URL에 gclid가 붙습니다.
이때 수동으로 UTM을 함께 붙여도 GA4는 기본적으로 gclid 정보를 우선합니다. UTM으로 넣은 캠페인명 대신 구글 광고의 실제 캠페인명이 표시되는 것입니다.
이건 오류가 아니라 정상 동작입니다. 구글 광고는 자동 태그를 기준으로 보고, UTM은 다른 매체에 집중해서 쓰는 편이 혼란이 적습니다.
2-6. ③ 태그 수집 — 결제 단계에서 소스가 바뀜
이 문제는 "UTM은 잡히는데 구매는 다른 소스로 잡힌다"는 형태로 나타납니다.
사용자가 외부 결제 페이지(PG사)나 본인인증 페이지를 거쳐 돌아오면, GA4가 그 결제 도메인을 새 유입 출처로 인식할 수 있습니다. 그러면 광고로 들어온 사람의 구매가 결제사 도메인의 Referral로 기록됩니다.
해결책은 GA4 데이터 스트림 설정에서 결제·인증 도메인을 원치 않는 추천 목록에 등록하는 것입니다. 여러 도메인을 오가는 구조라면 교차 도메인 설정도 함께 확인해야 합니다.
2-7. ④ 보고서 해석 — 측정기준 범위와 처리 지연
데이터는 정상인데 찾는 위치가 틀린 경우도 생각보다 많습니다.
측정기준 범위부터 확인하세요.
첫 사용자 소스/매체: 이 사용자가 처음 들어온 경로
세션 소스/매체: 해당 방문이 들어온 경로
기존 방문자에게 새 UTM 링크를 보냈다면, 첫 사용자 기준 보고서에는 예전 소스가 그대로 표시됩니다. 이번 캠페인 성과를 보려면 세션 기준으로 봐야 합니다.
처리 지연도 있습니다. 표준 보고서는 데이터가 반영되는 데 보통 24~48시간이 걸립니다. 링크를 바꾼 당일에 표준 보고서에서 숫자가 안 보이는 건 정상입니다. 당일 확인은 실시간 보고서나 DebugView로 하세요.
채널 그룹 미분류도 자주 헷갈리는 부분입니다. utm_medium을 meta_ad, insta 같은 임의 값으로 넣으면 GA4 기본 채널 그룹 규칙과 맞지 않아 Unassigned로 분류됩니다. 소스/매체 보고서에는 잡히는데 채널 보고서에서는 안 보이는 이유가 이것입니다. 유료 소셜이면 paid_social이나 cpc처럼 규칙에 맞는 값을 쓰는 것이 안전합니다.
GA4 (not set) 뜨는 이유: 측정기준별 원인과 점검 순서
3. UTM 추적 실패 사례: 광고 유입이 Direct로 잡혔던 쇼핑몰
3-1. 증상
한 쇼핑몰은 메타 광고 클릭 수는 정상인데, GA4에서 meta / paid_social 세션이 클릭 수에 한참 못 미쳤습니다. 대신 같은 기간 (direct) / (none) 세션이 광고 집행 시간대에 맞춰 함께 늘어나고 있었습니다.
담당자는 처음에 UTM 문법을 의심해서 링크를 세 번 다시 만들었습니다. 결과는 같았습니다.
3-2. 진단 과정
위 4구간 순서대로 확인했습니다.
① URL 문법: 정상. 물음표 한 번, 소문자 통일, # 없음.
② 리디렉션: PC 시크릿 창에서는 UTM이 정상적으로 남아 있었습니다. 그런데 휴대폰으로 클릭하자 모바일 서브도메인으로 이동하면서 주소창에서 UTM이 사라졌습니다.
광고 클릭의 대부분은 모바일에서 발생합니다. 그러니 광고 유입 대부분이 Direct로 잡힐 수밖에 없는 구조였습니다.
③④는 확인할 필요도 없었습니다.
3-3. 해결과 교훈
쇼핑몰 솔루션의 모바일 리디렉션 설정에서 쿼리스트링을 유지하도록 바꾸자, 다음 날부터 광고 클릭 수와 GA4 세션 수의 차이가 일반적인 수준으로 좁혀졌습니다.
이 사례에서 얻을 수 있는 교훈은 두 가지입니다.
링크를 다시 만드는 건 ① 구간만 고치는 행동입니다. ②가 원인이면 몇 번을 다시 만들어도 결과는 같습니다.
테스트는 실제 광고가 노출되는 기기 환경에서 해야 합니다. PC에서 정상이라는 것이 모바일에서도 정상이라는 뜻은 아닙니다.
참고로 광고 클릭 수와 GA4 세션 수는 원래 완전히 일치하지 않습니다. 이탈·광고 차단·동의 거부 등으로 일정한 차이는 늘 생깁니다. 문제는 차이 자체가 아니라, 그 차이가 Direct 같은 특정 소스로 몰리는 패턴이 보일 때입니다.
메타 ga4 데이터 차이, 왜 생기고 어디를 믿어야 할까
4. UTM 안잡힘 재발 막는 운영 기준
원인을 찾았다면 다음은 재발 방지입니다. 실무에서 효과가 확실한 기준 네 가지를 정리했습니다.
4-1. 명명 규칙을 문서 하나로 고정
source, medium 값을 미리 정해두고 그 목록 밖의 값은 쓰지 않습니다.
매체 | utm_source | utm_medium |
|---|---|---|
메타 광고 | meta | paid_social |
카카오 광고 | kakao | paid_social 또는 display |
네이버 검색광고 | naver | cpc |
이메일·문자 | crm | email / sms |
캠페인명은 날짜_목적_상품 같은 형태로 구조를 통일하면 나중에 필터링하기도 쉽습니다.
4-2. 플랫폼 동적 파라미터 활용
메타 광고는 광고 단계의 URL 매개변수 칸에 {{campaign.name}}, {{adset.name}}, {{ad.name}} 같은 동적 값을 넣을 수 있습니다. 소재마다 손으로 UTM을 붙이는 방식보다 오타가 생길 여지가 훨씬 적습니다.
단, 동적 값은 캠페인 이름을 그대로 가져오기 때문에 캠페인 이름 자체를 명명 규칙에 맞게 지어야 의미가 있습니다.
4-3. 사이트 내부 링크에는 UTM을 쓰지 않음
메인 배너나 팝업 같은 사이트 내부 링크에 UTM을 붙이면 외부에서 들어온 원래 유입 출처가 덮어써질 수 있습니다. 광고로 들어온 사용자가 내부 배너를 클릭하는 순간 소스가 "내부 배너"로 바뀌는 셈입니다.
내부 클릭 성과는 UTM 대신 GTM 클릭 이벤트로 측정하는 것이 원칙입니다.
4-4. 새 캠페인 게시 전 3분 점검
새 랜딩이나 새 캠페인을 게시하기 전에 아래 세 가지만 확인하세요.
① 휴대폰에서 광고 URL 클릭 → 최종 주소창에 UTM이 남아 있는가
② DebugView에서 첫 page_view의 page_location에 UTM이 포함되어 있는가
③ 실시간 보고서에 해당 소스/매체가 표시되는가
이 세 가지만 지켜도 "UTM 붙였는데 안잡힘" 문제의 대부분을 게시 단계에서 걸러낼 수 있습니다.
자주 묻는 질문
Q. UTM을 붙였는데 GA4에 direct로 잡히는 이유는?
가장 흔한 원인은 리디렉션 과정에서 쿼리스트링이 삭제되는 것입니다. 실제 광고가 노출되는 기기에서 광고 URL을 클릭하고, 페이지가 열린 뒤 주소창에 UTM이 남아 있는지 확인하세요. 남아 있지 않다면 쇼핑몰 솔루션이나 서버의 리디렉션 설정을 수정해야 합니다.
Q. UTM 데이터는 GA4에 언제 반영되나요?
실시간 보고서와 DebugView에는 몇 초에서 몇 분 안에 표시됩니다. 표준 보고서는 보통 24~48시간이 지나야 반영됩니다. 당일 확인은 실시간 보고서로 하는 것이 정확합니다.
Q. UTM 소스는 보이는데 채널이 Unassigned로 나오는 이유는?
utm_medium 값이 GA4 기본 채널 그룹 규칙과 맞지 않기 때문입니다. 유료 소셜이면 paid_social이나 cpc처럼 규칙에 맞는 값으로 바꿔야 합니다. 이미 쌓인 데이터는 맞춤 채널 그룹을 만들어 재분류할 수 있습니다.
Q. 구글 광고에 UTM을 붙였는데 캠페인명이 다르게 나와요.
자동 태그(gclid)가 켜져 있으면 GA4는 UTM보다 gclid 정보를 우선합니다. 정상 동작이므로 구글 광고는 자동 태그를 기준으로 보고, UTM은 다른 매체에 집중해서 쓰는 편이 혼란이 적습니다.
Q. UTM 대소문자를 섞어 쓰면 문제가 되나요?
됩니다. GA4는 Meta와 meta를 서로 다른 값으로 집계합니다. 숫자가 여러 행으로 나뉘어 실제보다 적게 보이니 소문자로 통일하는 규칙을 정해두세요.
마무리
UTM이 안 잡히는 문제는 링크를 다시 만든다고 해결되지 않는 경우가 많습니다.
파라미터는 URL 작성 → 리디렉션 → 태그 수집 → 보고서 해석이라는 네 구간을 지나야 숫자로 남습니다. 어느 한 곳에서만 끊겨도 결과는 똑같이 "안 잡힘"으로 보입니다.
그래서 순서가 중요합니다. 주소창을 먼저 보고, 그다음 DebugView, 마지막에 보고서를 확인하세요.
이 순서대로 하면 원인을 추측하는 데 쓰는 시간이 줄고, 광고 성과 데이터를 믿고 판단할 수 있는 상태가 됩니다.