UTM 파라미터, source·medium·campaign 구분과 표기 규칙

링크를 여러 곳에 뿌린 뒤 유입 통계를 열었더니, 같은 캠페인이 naverNaver, summer_salesummer sale로 나뉘어 있는 경우가 있습니다. 값이 잘못 들어간 게 아니라, UTM 파라미터는 적어 넣은 문자열을 그대로 실어 보내기 때문입니다.

받는 쪽에서는 그 문자열이 곧 항목 이름이 됩니다. 그래서 대문자 하나, 띄어쓰기 하나가 항목을 둘로 갈라놓습니다.

요약 ① utm_source는 "어디서 왔는가", utm_medium은 "어떤 형태의 링크인가", utm_campaign은 "어떤 묶음인가"를 담는 자리입니다. ② 값은 대소문자를 구분하는 문자열입니다. Navernaver는 서로 다른 값으로 기록될 수 있습니다. ③ 값에 공백이 있으면 링크에서 +로, 한글은 %XX 형태로 바뀝니다. 소문자와 언더바(_)로 통일하면 이 흔들림이 사라집니다.

UTM 파라미터는 규격이 아니라 약속입니다

UTM은 주소 뒤에 붙는 평범한 쿼리 파라미터입니다. 서버가 강제하는 규격이 아니라, 분석 도구가 utm_으로 시작하는 이름을 읽어 유입 경로로 정리해 주는 관례에 가깝습니다. 이름 자체도 초기 웹 분석 도구 Urchin(Urchin Tracking Module)에서 유래했습니다.

여기서 두 가지가 따라옵니다. 첫째, 오타나 대소문자 차이를 걸러 주는 검사기가 없습니다. 둘째, 값이 무엇을 의미하는지도 정해져 있지 않아서 쓰는 사람이 규칙을 정하고 지켜야 합니다.

그래서 UTM에서 실제로 문제가 되는 건 "무슨 값을 쓸까"보다 "같은 값을 매번 똑같이 적었나"입니다.

세 개가 각각 잡는 것 — source·medium·campaign

가장 자주 헷갈리는 건 source와 medium의 구분입니다. 아래처럼 나누면 겹치지 않습니다.

파라미터답하는 질문값 예시
utm_source어디서 왔는가 (서비스·사이트 이름)naver, google, newsletter
utm_medium어떤 형태의 링크인가 (매체 유형)cpc, email, social, banner
utm_campaign어떤 묶음인가 (활동 이름)summer_sale_2026

utm_source에는 고유명사가, utm_medium에는 유형을 가리키는 일반명사가 들어간다고 보면 판단이 쉬워집니다. 같은 뉴스레터라도 보낸 곳은 source, "메일"이라는 형태는 medium입니다.

utm_campaign은 여러 링크를 하나로 묶는 이름표입니다. 같은 활동에 속한 링크라면 source와 medium이 달라도 campaign 값은 글자 하나까지 똑같아야 한 묶음으로 모입니다.

나머지 두 개 — utm_term과 utm_content

utm_term은 검색 키워드를 적는 자리이고, utm_content는 같은 캠페인 안에서 링크를 구분하는 자리입니다. 본문 링크와 상단 배너를 각각 textlink, banner_top으로 적어 두면 어느 위치의 링크였는지 나뉩니다.

이 둘은 선택 항목이라 비워 둬도 링크는 정상 동작합니다. 분석 도구에 따라 utm_id 같은 추가 파라미터를 더 읽기도 하지만, 위 다섯 개가 공통으로 쓰이는 기본 묶음입니다.

도구 없이 직접 붙이는 방법

UTM은 특별한 문법이 아니라 그냥 쿼리 파라미터라서, 규칙 네 가지만 지키면 손으로도 만들 수 있습니다.

1) 물음표로 시작하고, 이미 있으면 &로 잇습니다. 기본 주소에 ?가 하나도 없으면 첫 파라미터 앞에 ?를, 이미 ?가 있으면 &를 붙입니다. ?를 두 번 쓰면 뒤쪽은 값의 일부로 취급됩니다.

2) 이름=값 쌍을 &로 이어 붙입니다.

https://example.com/event?utm_source=naver&utm_medium=cpc&utm_campaign=summer_sale_2026

3) #이 있으면 그 앞에 넣습니다. https://example.com/event#top 같은 주소라면 https://example.com/event?utm_source=naver#top이 맞습니다. # 뒤에 붙이면 파라미터가 아니라 앵커 문자열의 일부가 됩니다.

4) 값에 공백·한글이 있으면 변환됩니다. 주소에는 공백을 그대로 담을 수 없어 +%20으로, 한글은 UTF-8 바이트마다 %XX로 바뀝니다. 이 상태로도 값은 전달되지만, 통계 화면에서는 읽기 어려운 문자열로 남습니다.

만든 링크가 제대로 붙었는지는 브라우저에서 열어 확인할 수 있습니다. 개발자 도구(대개 F12) 콘솔에 아래를 입력하면 실제로 인식된 값이 나옵니다.

new URLSearchParams(location.search).get("utm_source")

문제는 링크가 늘어날 때입니다. 다섯 자리를 매번 손으로 이어 붙이다 보면 &가 빠지거나, 지난번엔 Naver, 이번엔 naver로 적히는 일이 생깁니다.

저희 도구로 확인하기. 칸을 나눠 채우면 순서와 구분자가 자동으로 맞춰진 링크가 바로 만들어집니다.

UTM 캠페인 링크 빌더

설치·회원가입 없이 브라우저 안에서 링크가 만들어지며, 입력한 주소는 서버로 전송되지 않습니다.

도구는 입력한 기본 주소를 실제 URL로 해석한 뒤 파라미터를 붙입니다. 그래서 몇 가지가 자동으로 정리됩니다.

  • 앞에 https://를 빼고 example.com/event만 넣어도 https://가 붙습니다.
  • 기본 주소에 이미 ?a=1 같은 파라미터가 있으면 그대로 두고 뒤에 이어 붙입니다.
  • 같은 이름의 utm 값이 이미 있으면 새로 넣은 값으로 바뀝니다.
  • 값 앞뒤의 공백은 잘라내고 담습니다.
  • 주소 형식이 아니면 결과 자리에 "올바른 URL 형식이 아닙니다"라는 안내와 예시가 대신 표시되고, 링크는 만들어지지 않습니다.

링크가 만들어진 뒤 utm_source·utm_medium·utm_campaign 중 빈 칸이 있으면, 결과 아래에 어떤 항목이 비었는지 이름으로 알려 주는 문구가 표시됩니다.

통계를 쪼개는 표기 함정

같은 값을 다르게 적으면 링크는 멀쩡히 열리지만 기록은 따로 쌓입니다. 자주 갈라지는 지점은 세 가지입니다.

적은 값링크에 실리는 모습
naverutm_source=naver
Naverutm_source=Naver (앞의 것과 다른 문자열)
summer saleutm_campaign=summer+sale
여름 세일utm_term=%EC%97%AC%EB%A6%84+%EC%84%B8%EC%9D%BC

대소문자. 값은 문자열 그대로 전달되므로, 받는 쪽이 대소문자를 구분해 저장하면 Navernaver가 다른 항목이 됩니다. 반대로 소문자로 정규화해 저장하는 도구도 있어, 어느 쪽이든 처음부터 소문자로 통일해 두는 게 안전합니다.

띄어쓰기. 공백이 들어가면 링크에서는 +%20으로 바뀝니다. 링크는 동작하지만 사람이 눈으로 비교하기 어려워지고, 메신저나 문서에 붙일 때 공백에서 링크가 잘리는 일도 생깁니다. 단어를 나눠야 하면 언더바(_)나 하이픈(-)을 씁니다.

한글. 여름세일처럼 적으면 링크에는 %로 시작하는 긴 문자열이 들어갑니다. 값 자체는 전달되지만 링크가 길어지고 복사 과정에서 일부만 잘려 나가기 쉬워, 캠페인 이름은 영문 소문자로 적는 편이 다루기 쉽습니다.

정리

  • UTM은 강제 규격이 아니라 관례입니다. 오타를 걸러 주는 장치가 없어 표기를 통일하는 게 전부입니다.
  • source=어디서, medium=어떤 형태로, campaign=어떤 묶음인지. 이 세 개가 기본 세트이고 term·content는 선택입니다.
  • 값은 대소문자를 구분하는 문자열이라 Navernaver가 갈릴 수 있습니다. 소문자로 고정하십시오.
  • 공백은 +, 한글은 %XX로 바뀝니다. 단어 구분은 언더바나 하이픈으로 합니다.
  • 손으로 붙일 때는 ?&, 그리고 #보다 앞이라는 위치만 지키면 됩니다.
UTM 캠페인 링크 빌더

설치·회원가입 없이 브라우저 안에서 링크가 만들어지며, 입력한 주소는 서버로 전송되지 않습니다.

자주 묻는 질문

utm_source와 utm_medium은 어떻게 나눠 적나요?

source에는 서비스나 사이트 이름 같은 고유명사를, medium에는 링크의 형태를 가리키는 일반명사를 적습니다. 예를 들어 뉴스레터로 보낸 링크라면 source는 보낸 채널 이름, medium은 email이 됩니다. 둘 다 같은 값을 적으면 나중에 "어디서 왔는지"와 "어떤 형태였는지"를 구분할 수 없습니다.

대문자를 쓰면 링크가 안 되나요?

링크는 정상적으로 열립니다. 문제는 기록입니다. 값은 문자열 그대로 전달되기 때문에 Navernaver를 섞어 쓰면 같은 유입처가 두 항목으로 나뉠 수 있습니다. 도구에 따라 소문자로 바꿔 저장하기도 하지만, 그 동작에 기대기보다 처음부터 소문자로 통일하는 편이 확실합니다.

캠페인 이름에 띄어쓰기나 한글을 써도 되나요?

써도 링크는 동작합니다. 다만 공백은 +%20으로, 한글은 %EC%97%AC... 같은 형태로 바뀌어 링크가 길고 읽기 어려워집니다. 복사·붙여넣기 과정에서 잘릴 위험도 커지므로 영문 소문자와 언더바 조합을 권합니다.

utm_term과 utm_content는 꼭 넣어야 하나요?

선택 항목이라 비워 둬도 됩니다. 도구도 값이 비어 있으면 해당 파라미터를 링크에 넣지 않습니다. 다만 한 캠페인 안에서 상단 배너와 본문 링크처럼 여러 자리를 쓴다면, utm_contentbanner_top·textlink처럼 자리 이름을 적어 두면 어느 링크가 눌렸는지 구분됩니다.

가격 보기카톡 무료 상담