UTM 파라미터 제대로 쓰는 법: 네이밍 규칙과 함정
utm_source·medium·campaign의 올바른 구분과 네이밍 규칙, GA4 채널 매핑과 흔한 실수.
UTM 파라미터는 URL 끝에 붙이는 5개의 쿼리 파라미터(utm_source, utm_medium, utm_campaign, utm_term, utm_content)로, “이 방문자가 어디서 어떤 경로로 들어왔는가”를 GA4 같은 분석 도구에 알려주는 표준 방법이다. 광고비를 쓰든 뉴스레터를 보내든, UTM이 없으면 그 유입은 전부 direct나 애매한 referral로 뭉개져서 “어떤 채널이 실제로 전환을 만들었는가”라는 가장 중요한 질문에 답할 수 없게 된다.
문제는 UTM이 “붙이기만 하면 되는” 게 아니라는 점이다. 대소문자 하나, medium 단어 하나가 틀리면 GA4 보고서에서 같은 캠페인이 두 줄로 쪼개지거나 엉뚱한 채널로 분류된다. 이 가이드는 5개 파라미터의 올바른 의미 구분, GA4 기본 채널 그룹 매핑, 네이밍 규칙, 그리고 실무에서 가장 자주 터지는 함정(내부 링크 태깅, 프래그먼트 위치 등)을 실제 뉴스레터 링크 예시로 정리한다. 링크를 만들 때는 UTM 빌더로 규칙에 맞게 생성하고, 이미 배포된 URL은 UTM 파서로 분해해서 점검하면 된다.
5개 파라미터의 정확한 의미: source는 “어디서”, medium은 “어떻게”, campaign은 “왜”
세 필수 파라미터는 각각 답하는 질문이 다르다. 이 구분이 흔들리면(예: source에 email을 넣는 실수) 이후 모든 보고서가 흔들린다.
| 파라미터 | 답하는 질문 | 예시 값 | 필수 여부 |
|---|---|---|---|
utm_source | 어디서 왔나 — 트래픽을 보낸 구체적인 사이트/플랫폼/발송처 | google, facebook, naver, newsletter, stibee | 필수 |
utm_medium | 어떻게 왔나 — 마케팅 채널의 “종류”. GA4 채널 분류의 핵심 기준 | cpc, email, social, referral, display | 필수 |
utm_campaign | 왜 보냈나 — 이 링크가 속한 캠페인/프로모션 이름 | 2026-07-summer-sale, launch-v2 | 필수(권장) |
utm_term | 어떤 키워드로 — 유료 검색의 입찰 키워드 | ssl-checker, utm+builder | 선택(유료 검색용) |
utm_content | 어느 소재/위치를 눌렀나 — 같은 캠페인 안의 A/B 변형 구분 | hero-banner, footer-cta, variant-b | 선택 |
기억하기 쉬운 문장 하나: source는 “어디서(where)”, medium은 “어떻게(how)”, campaign은 “왜(why)”. 뉴스레터라면 source는 발송 플랫폼이나 뉴스레터 이름(newsletter), medium은 채널 종류(email), campaign은 그 회차의 목적(2026-07-product-update)이 된다. source와 medium을 서로 바꿔 넣는 순간 GA4의 채널 분류가 통째로 어긋난다.
GA4 기본 채널 그룹: medium 값이 채널을 결정한다
GA4는 세션을 “Paid Search”, “Email”, “Organic Social” 같은 기본 채널 그룹으로 자동 분류하는데, 이 분류의 가장 큰 판단 기준이 utm_medium이다. 아래는 실무에서 쓰는 대표 매핑이다.
utm_medium 값 | GA4 채널 그룹 | 비고 |
|---|---|---|
cpc, ppc, paid, retargeting | Paid Search / Paid Social / Paid Other | source가 검색엔진이면 Paid Search, SNS면 Paid Social로 세분화 |
email, e-mail, e_mail | 뉴스레터·트랜잭션 메일 전부 여기로 | |
social, social-network, sm | Organic Social | 무료 SNS 게시물. 유료 SNS 광고는 cpc/paid를 써야 함 |
display, banner, cpm | Display | 배너·프로그래매틱 광고 |
affiliate | Affiliates | 제휴 링크 |
referral | Referral | 다른 사이트에서의 일반 링크(보통 UTM 없이도 자동 분류됨) |
그 외 임의 값 (newsletter, eDM 등) | Unassigned | 규칙에 안 맞으면 미분류로 떨어짐 — 가장 흔한 사고 |
그래서 medium은 “창의적으로” 지으면 안 된다. utm_medium=newsletter처럼 그럴듯해 보이는 값도 GA4 규칙표에 없으면 Unassigned로 빠져서 Email 채널 성과가 실제보다 작게 보인다. medium은 위 표의 표준 값 중에서 고르고, 세부 구분은 source·campaign·content로 하는 게 원칙이다. 배포 전에 UTM 파서에 URL을 붙여 넣으면 medium이 표준 값인지 바로 확인할 수 있다.
네이밍 규칙: 소문자, 공백 금지, 문서화
GA4는 UTM 값을 대소문자를 구분해서 집계한다. Facebook과 facebook은 서로 다른 source로 잡혀 보고서에 두 줄이 생기고, 캠페인 성과를 합산하려면 매번 수작업이 필요해진다. 팀 전체가 지킬 최소 규칙은 세 가지다.
- 전부 소문자:
Facebook≠facebook≠FACEBOOK. 예외 없이 소문자로 통일한다. - 공백 금지: 공백은 URL에서
%20이나+로 인코딩되어 값이 지저분해지고 도구마다 다르게 해석된다. 단어 구분은 하이픈(-)이나 언더스코어(_) 중 하나를 정해 일관되게 쓴다(예:summer-sale). - 택소노미 문서 유지: 허용되는 source/medium 값 목록과 campaign 작명 패턴(예:
{yyyy-mm}-{테마}-{지역})을 스프레드시트 한 장으로 관리하고, 새 캠페인은 반드시 이 문서에서 값을 골라 쓰게 한다. UTM 관리의 실패는 대부분 도구가 아니라 “각자 알아서 짓는” 데서 온다.
이 규칙을 사람이 매번 기억하기는 어렵기 때문에, 링크 생성은 UTM 빌더 같은 도구로 표준화하는 것이 안전하다. 빌더는 인코딩을 자동 처리하고 같은 파라미터 조합을 재사용할 수 있어 오타로 인한 데이터 분열을 줄여 준다.
실무 함정 4가지: 내부 링크, gclid/fbclid, 리다이렉트, 프래그먼트
- 내부 링크에는 절대 UTM을 붙이지 않는다. 자기 사이트 안의 배너·메뉴에 UTM을 붙이면 클릭 순간 GA4가 새 트래픽 소스로 인식해 세션 출처를 덮어쓴다. 원래 유료 광고로 들어온 방문자가 “내부 배너 캠페인” 유입으로 둔갑해 광고 성과가 사라진다. 사이트 내부 클릭 추적은 UTM이 아니라 이벤트(event)로 해야 한다.
gclid·fbclid는 UTM이 아니다. Google Ads의gclid, 메타의fbclid는 광고 플랫폼이 자동으로 붙이는 클릭 식별자로, UTM을 대체하지도 않고 손으로 편집해서도 안 된다. Google Ads는 자동 태깅(gclid)이 UTM보다 정밀하므로 둘을 병행할 때는 계정 설정에서 우선순위를 확인한다.- 리다이렉트가 파라미터를 삼킬 수 있다. 단축 URL이나
http→https,비www→www리다이렉트 설정에 따라 쿼리 스트링이 유지되지 않는 서버가 있다. 최종 도착 URL에 UTM이 살아 있는지 실제로 클릭해서 주소창을 확인하고, 의심되면 UTM 파서로 최종 URL을 분해해 본다. - 프래그먼트(
#) 뒤의 UTM은 죽는다. URL 규격상#뒤는 서버로 전송되지 않는 프래그먼트다.example.com/page#section?utm_source=...처럼 앵커 뒤에 UTM을 붙이면 GA4는 아무것도 받지 못한다. 올바른 순서는example.com/page?utm_source=...#section— 쿼리가 먼저, 앵커가 마지막이다.
실전 예시: 뉴스레터 링크 하나, 올바른 버전 vs 깨진 버전 3개
7월 프로모션 뉴스레터에서 랜딩 페이지로 보내는 링크를 태깅한다고 하자. 올바른 형태는 이렇다.
https://example.com/promo?utm_source=newsletter&utm_medium=email&utm_campaign=2026-07-summer-sale#pricing
| 변형 | 무엇이 틀렸나 | GA4에 보이는 결과 |
|---|---|---|
...?utm_source=Newsletter&utm_medium=Email&... | 대문자 사용 | Newsletter/Email이 소문자 버전과 별도 행으로 분리 — 같은 캠페인 성과가 둘로 쪼개짐 |
...?utm_source=email&utm_medium=newsletter&... | source와 medium이 뒤바뀜 | medium=newsletter는 채널 규칙에 없으므로 Unassigned로 분류 — Email 채널 성과에서 사라짐 |
...promo#pricing?utm_source=newsletter&... | # 뒤에 UTM을 배치 | UTM이 서버·GA4에 전달되지 않음 — 세션이 direct / none 또는 메일 클라이언트 referral로 잡힘 |
세 변형 모두 링크는 “정상 작동”하기 때문에 클릭하는 사용자는 아무 차이를 못 느낀다. 문제는 한 달 뒤 보고서에서야 드러난다. 그래서 발송 전에 UTM 빌더로 생성하고, 발송된 링크는 UTM 파서로 역검사하는 두 단계 습관이 필요하다.
자주 묻는 질문
utm_source와 utm_medium의 차이가 항상 헷갈립니다. 간단한 구분법이 있나요?
utm_medium=newsletter라고 쓰면 왜 안 되나요?
사이트 내부 배너에 UTM을 붙여서 클릭을 추적해도 되나요?
gclid나 fbclid가 붙어 있으면 UTM은 안 붙여도 되나요?
대소문자가 정말 다른 값으로 집계되나요?
이 가이드와 함께 쓰면 좋은 도구
관련 가이드
- hreflang 설정 가이드: 다국어 SEO 중복을 막는 법다국어 사이트의 hreflang 태그를 올바르게 구성하고 x-default·상호참조 실수를 피하는 법.