UTM 파라미터 설계 규칙 · 채널 늘어도 안 꼬이는 이름 기준
UTM은 붙이는 것보다 규칙을 정하는 것이 어렵다. source와 medium을 팀마다 다르게 쓰면 몇 달 뒤 같은 채널이 여러 줄로 쪼개지고 되돌릴 수 없다. 표기 규칙과 GA4 채널 분류에 맞는 medium 선택 기준을 정리했다.
UTM 파라미터는 링크 끝에 붙이는 꼬리표이고, 붙이는 것 자체는 어렵지 않다. 어려운 것은 규칙을 정하고 그 규칙을 팀 전체가 지키게 하는 일이다. 규칙 없이 몇 달 붙이면 보고서에서 같은 채널이 여러 줄로 쪼개진다. facebook, Facebook, FB, fb_ad가 각각 다른 유입원으로 잡히고, 그 시점에는 이미 과거 데이터를 고칠 수 없다.
이 글은 UTM이 무엇인지보다 어떻게 이름을 지을 것인가를 다룬다. 다섯 개 항목을 무엇으로 채울지, GA4의 기본 채널 분류와 충돌하지 않게 medium을 고르는 법, 그리고 이미 꼬인 데이터를 정리하는 순서다.
UTM은 다섯 칸이고, 실제로 중요한 것은 두 칸이다
UTM 파라미터는 다섯 개다. 각각의 역할이 다르고, 잘못 쓰이는 지점도 정해져 있다.
| 파라미터 | 무엇을 넣나 | 흔한 실수 |
|---|---|---|
| utm_source | 어디서 왔는가 (사이트·플랫폼) | 캠페인 이름을 넣는다 |
| utm_medium | 어떤 종류의 유입인가 | 아무 말이나 넣어 채널 분류가 깨진다 |
| utm_campaign | 어떤 캠페인인가 | 날짜를 안 넣어 나중에 구분이 안 된다 |
| utm_content | 같은 캠페인 안에서 무엇이 달랐나 | 비워 둔다 |
| utm_term | 유료 검색어 | 대개 안 쓴다 |
source와 medium 두 칸이 전체 구조를 결정한다. 이 둘이 흔들리면 나머지를 아무리 잘 채워도 보고서가 읽히지 않는다. campaign은 나중에 필터로 걸러낼 수 있지만, source와 medium은 채널 분류의 기준이라 틀리면 데이터 자체가 다른 통에 들어간다.
medium을 아무 말로 채우면 안 되는 이유
GA4는 유입을 기본 채널 그룹으로 자동 분류한다. Organic Search, Paid Search, Organic Social, Email, Referral 같은 묶음이다. 이 분류는 medium 값을 보고 결정된다.
medium에 email을 넣으면 Email로 잡힌다. 이메일이나 newsletter를 넣으면 그 규칙에 안 걸려서 Unassigned나 Referral로 떨어진다. 보고서에서 이메일 성과가 사라진 것처럼 보이는 가장 흔한 원인이 이것이다.
그래서 medium은 창의적으로 지으면 안 된다. 정해진 몇 개 중에서 고르는 칸이라고 생각하는 편이 맞다.
| 유입 종류 | medium 값 | GA4 분류 |
|---|---|---|
| 이메일·뉴스레터 | email | |
| 소셜 게시물 (무료) | social | Organic Social |
| 소셜 광고 | cpc 또는 paid_social | Paid Social |
| 검색 광고 | cpc | Paid Search |
| 배너·디스플레이 광고 | display | Display |
| 제휴·파트너 링크 | affiliate | Affiliates |
| 오프라인 QR·명함 | offline 또는 qr | Unassigned (의도적) |
마지막 줄은 예외다. 오프라인 유입은 GA4의 기본 분류에 자리가 없으므로 Unassigned로 떨어지는데, 이건 문제가 아니라 구분하기 위한 선택이다. 다만 팀 안에서 그렇게 합의해 두어야 나중에 "왜 미분류가 이렇게 많냐"는 질문이 안 나온다.
source는 무엇을 기준으로 정하나
medium이 유입의 종류라면 source는 유입된 장소다. 여기서 헷갈리는 지점이 몇 개 있다.
플랫폼 이름을 쓴다. instagram, naver, kakao, youtube처럼. 캠페인 이름이나 담당자 이름을 넣으면 안 된다. 그건 campaign 칸의 일이다.
같은 플랫폼의 다른 자리는 source가 아니라 content로 나눈다. 인스타그램 피드와 스토리는 둘 다 source가 instagram이고, 구분은 content에서 한다. source를 instagram_story로 나누면 인스타그램 전체 성과를 한 줄로 볼 수 없게 된다.
이메일은 발송 도구가 아니라 목록을 기준으로 한다. source에 mailchimp를 넣으면 도구를 바꿨을 때 데이터가 끊긴다. newsletter, onboarding_mail처럼 무엇을 보낸 것인지로 적는 편이 오래 간다.
오프라인은 매체를 적는다. brochure, name_card, store_poster처럼 어디에 인쇄된 QR인지 알 수 있게 한다.
source 목록도 medium처럼 미리 정해 두는 편이 낫다. 다만 medium과 달리 GA4가 강제하는 규칙은 없으므로, 팀 안의 합의만 지키면 된다.
표기 규칙을 먼저 정한다
UTM 값은 대소문자를 구분한다. Facebook과 facebook은 다른 값으로 집계되고, 합칠 방법이 없다.
규칙은 단순할수록 지켜진다. 세 가지면 충분하다.
전부 소문자. 예외를 두지 않는다. 사람 이름이든 브랜드명이든 소문자로 쓴다.
띄어쓰기는 언더스코어. 하이픈과 언더스코어를 섞으면 그것 자체가 분화 원인이 된다. 하나를 정해 끝까지 쓴다.
한글을 쓰지 않는다. URL에서 인코딩되어 보고서에 %EC%9D%B4%EB%B2%A4%ED%8A%B8 같은 형태로 나타난다. 읽을 수 없고 필터도 걸기 어렵다.
이 셋을 문서 한 장에 적어 두고 링크를 만드는 사람 모두가 같은 문서를 보게 하는 것이 규칙 유지의 전부다.
campaign 이름은 나중에 찾을 수 있게 짓는다
캠페인 이름은 만들 때가 아니라 6개월 뒤에 보고서에서 찾을 때 기준으로 지어야 한다.
날짜를 앞에 넣는 방식이 실용적이다. 2026-08_신학기_할인 같은 형태면 정렬했을 때 시간순으로 늘어서고, 매년 반복되는 캠페인도 연도로 구분된다.
반대로 여름이벤트나 프로모션2처럼 지으면 몇 번째 여름인지, 무엇의 두 번째인지 나중에 아무도 모른다.
한 캠페인을 여러 채널로 내보낼 때는 campaign 값을 같게 유지한다. 이메일과 인스타그램에 각각 다른 campaign 이름을 붙이면 그 캠페인의 전체 성과를 한 줄로 볼 수 없다. 채널 구분은 source와 medium이 이미 하고 있다.
content는 비교할 때 쓴다
utm_content는 같은 캠페인·같은 채널 안에서 무엇이 달랐는지를 적는 칸이다.
메일 안에 링크가 세 개라면 header_cta, body_link, footer_button처럼 구분한다. 어느 위치의 링크가 실제로 눌리는지 알 수 있다.
같은 게시물을 이미지 두 종류로 돌린다면 image_a, image_b로 나눈다.
비워 두어도 동작에는 문제가 없지만, 나중에 "왜 이 캠페인만 잘 됐지"라는 질문이 나왔을 때 답할 근거가 없어진다. 채우는 데 드는 비용이 거의 없으므로 습관으로 만드는 편이 낫다.
절대 UTM을 붙이면 안 되는 곳
붙이면 오히려 데이터를 망가뜨리는 자리가 있다.
내 사이트 안에서 내 사이트로 가는 링크. 가장 자주 하는 실수다. 내부 링크에 UTM을 붙이면 GA4가 그 시점에 세션을 새로 시작한 것으로 처리해, 원래 유입원 정보가 지워지고 세션 수가 부풀려진다. 사이트 내부의 이동은 UTM 없이도 페이지 경로로 추적된다.
검색 광고의 자동 태깅과 겹치는 경우. 구글 광고는 자동 태깅으로 이미 정보를 넘긴다. 여기에 수동 UTM을 더하면 둘이 충돌한다. 자동 태깅을 쓰고 있다면 그쪽에 맡긴다.
리디렉션이 파라미터를 버리는 링크. 단축 URL이나 중간 페이지를 거치는 경우, 그 구간에서 쿼리 스트링이 잘리면 UTM이 도착하지 않는다. 짧게라도 실제로 클릭해 보고 최종 주소에 파라미터가 남아 있는지 확인해야 한다.
이미 꼬인 데이터는 어떻게 하나
과거 데이터를 소급해서 고칠 수는 없다. UTM은 수집 시점에 기록되는 값이라 나중에 바꿀 방법이 없다. 그래서 순서는 이렇게 된다.
1단계. 현재 상태를 본다. GA4에서 소스/매체 보고서를 열고 값 목록을 훑는다. 같은 것을 가리키는 표기가 몇 가지인지 세어 본다. 대개 예상보다 많다.
2단계. 표준 목록을 만든다. 위에서 본 medium 표를 기준으로, 우리가 쓸 source 값도 함께 확정한다. 예상되는 것을 미리 다 적어 두는 편이 낫다. 없으면 사람들이 그때그때 만들어 낸다.
3단계. 앞으로의 링크부터 적용한다. 과거는 그대로 두고 시작일을 정한다. 보고서를 볼 때 그 날짜 전후를 나눠서 본다.
4단계. 탐색 보고서에서 묶는다. 과거 데이터를 봐야 한다면 GA4의 탐색 기능에서 여러 값을 하나로 묶는 세그먼트를 만들 수 있다. 원본은 그대로지만 볼 때만 합쳐진다.
되돌릴 수 없다는 점이 규칙을 미루면 안 되는 이유다. 지금 대충 붙인 값은 영구히 그 상태로 남는다.
링크는 어떻게 만드나
손으로 붙이면 오타가 난다. 오타 하나가 새로운 유입원 한 줄을 만든다.
가장 단순한 방법은 스프레드시트다. 열에 각 파라미터를 두고, 마지막 열에서 문자열을 이어 붙이는 수식을 걸어 둔다. 표기 규칙은 데이터 유효성 검사로 드롭다운을 만들면 강제된다.
이 방식의 장점은 만든 링크가 자동으로 기록으로 남는다는 것이다. 나중에 보고서에서 모르는 값이 나왔을 때 누가 언제 만든 것인지 찾을 수 있다.
전용 도구를 쓰더라도 원칙은 같다. 자유 입력을 줄이고 선택지에서 고르게 만드는 것.
무엇이 잘못됐는지 어떻게 확인하나
| 증상 | 원인 | 확인할 곳 |
|---|---|---|
| Unassigned가 많다 | medium 값이 분류 규칙에 안 맞음 | 소스/매체 보고서의 medium 목록 |
| 같은 채널이 여러 줄 | 표기 불일치 (대소문자·하이픈) | 값 목록을 정렬해 육안 확인 |
| 이메일 성과가 안 보임 | medium이 email이 아님 | 해당 캠페인의 링크 원본 |
| 세션 수가 비정상적으로 많음 | 내부 링크에 UTM | 사이트 내 링크 점검 |
| UTM이 아예 안 잡힘 | 리디렉션에서 파라미터 유실 | 실제 클릭 후 주소창 확인 |
| 캠페인이 채널별로 쪼개짐 | campaign 값을 채널마다 다르게 씀 | 캠페인 목록 |
가장 먼저 볼 것은 Unassigned 비율이다. 이 값이 크면 medium 규칙이 지켜지지 않고 있다는 뜻이고, 다른 것을 고치기 전에 그것부터 잡아야 한다.
유입 자체가 줄어든 것과 분류가 깨진 것은 다른 문제다. 전체 유입이 실제로 떨어진 경우라면 방문자가 줄었을 때 원인 찾는 순서를 먼저 보는 편이 낫다.
어디까지 세분화할 것인가
세분화는 공짜가 아니다. 칸을 잘게 나눌수록 각 줄의 숫자가 작아져서 판단할 수 없게 된다.
기준은 그 구분으로 다른 결정을 내릴 것인가다. 인스타그램 피드와 스토리를 나눴을 때 실제로 한쪽에 더 투자할 생각이라면 나눌 가치가 있다. 그냥 궁금해서라면 나중에 필요할 때 나누면 된다.
한 달에 방문이 수백 건 수준인 사이트라면 source와 medium, campaign 세 칸만 제대로 채워도 충분하다. content까지 나누면 각 줄이 한 자리 숫자가 되어 아무 판단도 못 한다.
규칙은 누가 지키게 하나
규칙 문서를 만드는 것과 지켜지는 것은 다른 문제다. 링크를 만드는 사람이 여럿이면 특히 그렇다.
가장 효과적인 것은 선택지를 없애는 것이다. 자유 입력란이 있으면 언젠가 누군가 새 값을 만든다. 드롭다운에서 고르게 하면 그 일이 안 일어난다.
외부에 맡기는 경우도 마찬가지다. 대행사나 프리랜서가 링크를 만든다면 규칙 문서를 주는 것으로 끝내지 말고, 링크 생성 시트를 공유해서 거기서 만들게 하는 편이 확실하다.
그리고 한 달에 한 번은 소스/매체 목록을 훑는다. 새로 나타난 값이 있으면 그 자리에서 물어보면 된다. 몇 달 뒤에 발견하면 그동안 쌓인 데이터는 이미 갈라진 채로 남는다.
자주 묻는 질문
UTM을 붙이면 SEO에 영향이 있나요?
검색 순위에는 영향이 없습니다. 다만 UTM이 붙은 주소가 색인되면 같은 페이지가 여러 주소로 존재하게 되므로, 페이지에 canonical 태그가 올바로 들어가 있는지는 확인해 두는 편이 좋습니다. 대개 이미 설정되어 있습니다.
대소문자를 나중에 합칠 수 없나요?
수집된 데이터 자체는 합칠 수 없습니다. GA4 탐색 보고서에서 여러 값을 묶는 세그먼트를 만들어 볼 때만 합쳐서 볼 수는 있지만, 원본은 그대로 남습니다. 그래서 소문자 규칙을 처음부터 정하는 것이 중요합니다.
자체 도메인 안의 링크에도 붙여야 하나요?
붙이지 않아야 합니다. 내부 링크에 UTM을 붙이면 세션이 새로 시작된 것으로 처리되어 원래 유입원 정보가 지워집니다. 사이트 안의 이동은 페이지 경로만으로 추적됩니다.
medium에 우리 팀 용어를 써도 되나요?
권하지 않습니다. medium은 GA4가 채널 그룹을 판단하는 기준이라, 규칙에 없는 값을 넣으면 그 유입이 Unassigned로 떨어집니다. 팀 용어는 campaign이나 content 칸에 넣으세요.
링크가 지저분해 보이는데 괜찮나요?
기능상 문제는 없지만 사용자에게 보이는 자리라면 신경 쓸 만합니다. 카카오톡이나 문자로 보내는 링크는 단축 URL을 쓰되, 그 단축 서비스가 파라미터를 최종 주소까지 넘기는지 한 번 확인하세요. 넘기지 않는 서비스도 있습니다.
오프라인 QR 코드는 어떻게 하나요?
source에 어디에 붙인 것인지(brochure, store_poster), medium에 offline이나 qr을 넣습니다. GA4 기본 분류에는 자리가 없어 Unassigned로 잡히는데, 이건 의도한 구분이므로 팀 안에서 미리 합의해 두면 됩니다.
참고 자료
- 수동 태그로 캠페인 데이터 수집 — Google 애널리틱스 고객센터 — UTM 파라미터 다섯 개를 GA4가 어떻게 수집하는지 설명한 공식 문서.
- 기본 채널 그룹 — Google 애널리틱스 고객센터 — medium 값이 어떤 규칙으로 채널 그룹에 배정되는지 정리한 공식 문서.