UTM 이 무엇이고 한국 채널에는 어떤 값을 쓰나

utm 은 링크 뒤에 붙는 다섯 개의 꼬리표예요. 붙이는 데 정답은 없지만, GA4 가 채널을 가르는 규칙은 정해져 있어서 그 규칙에 맞게 붙여야 보고서에서 갈라지지 않고 보여요.

1. utm 이 무엇인가

utm 은 Urchin Tracking Module 의 약자로, 구글 애널리틱스의 전신인 Urchin 이 쓰던 링크 꼬리표예요. 주소 뒤에 ?utm_source=naver&utm_medium=referral 처럼 붙이면, 그 링크로 들어온 방문이 어느 출처와 매체에서 왔는지 GA4 가 세션에 기록해요.

링크 자체는 아무것도 바뀌지 않아요. 사람은 같은 페이지에 도착하고, 꼬리표는 분석 도구만 읽어요. 그래서 붙이는 쪽이 값을 어떻게 정하느냐가 전부이고, 이 도구가 하는 일도 그 값을 규칙에 맞게 정하는 것을 돕는 거예요.

GA4 에서는 획득 메뉴의 트래픽 획득 보고서에서 세션 소스, 세션 매체, 세션 캠페인 측정기준으로 보여요. 세션 기본 채널 그룹은 그 소스와 매체를 구글이 정한 규칙표에 넣어 Organic Social 이나 Referral 같은 이름으로 묶은 거예요.

2. 기본 규칙(구글 문서 기준)

다섯 매개변수의 뜻은 구글 문서에 있어요. utm_source 는 리퍼러(예: google, newsletter4, billboard), utm_medium 은 마케팅 매체(예: cpc, banner, email), utm_campaign 은 제품이나 슬로건, 프로모션 코드(예: spring_sale), utm_term 은 유료 키워드, utm_content 는 광고 소재를 구분하는 용도예요.

utm_source, utm_medium, utm_campaign 셋은 필수예요. 구글 문서가 '매개변수를 URL 에 추가하려면 항상 이 셋을 사용해야 한다'고 못 박아요. 하나라도 비면 그 방문은 캠페인으로 안 잡혀요.

값은 대소문자를 구분해요. 구글 문서의 예가 utm_source=google 과 utm_source=Google 은 다르다는 거예요. 같은 채널이 두 줄로 갈라지면 합쳐서 볼 방법이 없으니 소문자로 통일하는 편이 안전해요.

채널 그룹은 대부분 매체(utm_medium)로 갈려요. 매체가 social 이면 Organic Social, referral 이나 app, link 면 Referral, email 이면 Email, sms 면 SMS, cpc 나 ppc 처럼 유료 정규식에 맞으면 유료 채널, video 가 들어가면 Organic Video, display 나 banner 면 Display 예요. 어디에도 안 맞으면 Unassigned 로 떨어져요.

3. 이 도구의 세부 규칙

채널 프리셋을 누르면 utm_source 와 utm_medium 이 채워지고, utm_content 가 비어 있으면 자리 이름(blog, cafe, openchat 같은 것)이 들어가요. 이미 적어 둔 content 는 안 건드려요. 값은 프리셋을 누른 뒤 얼마든지 고칠 수 있어요.

소스는 플랫폼 이름 하나로 두었어요. naver_blog 처럼 붙이면 네이버가 소스 여러 줄로 갈라져서 네이버 전체가 얼마나 왔는지 한눈에 안 보여요. 블로그인지 카페인지는 utm_content 로 내렸어요. 구글 문서가 content 를 '소재 구분' 용도라고 해서 그 자리에 맞아요.

규칙 검사는 이런 것을 봐요. 주소가 비었거나 주소로 안 읽히면 오류, 필수 셋 중 빈 칸이 있으면 오류. 대문자 섞임, 공백, 매체 자리에 플랫폼 이름, 매체가 GA4 규칙 어디에도 안 맞아 Unassigned 로 떨어지는 경우, 기본 주소에 utm 이 이미 붙어 있는 경우는 경고. 한글 같은 영문 밖 글자, http 주소, 유료 매체가 아닌데 utm_term 을 채운 경우는 참고예요. 오류가 있으면 링크를 내지 않고, 경고와 참고는 링크를 내면서 알려만 줘요. 값을 대신 고쳐 주지는 않아요.

GA4 채널 예상은 매체 규칙만으로 계산해요. 유료(cpc 등)는 소스가 구글의 검색 사이트 목록에 있는지 소셜 목록에 있는지에 따라 Paid Search 나 Paid Social 로 갈리는데, 그 목록은 구글이 스프레드시트로만 배포해서 여기엔 없어요. 그래서 유료는 '소스 목록에 따라'라고 범위로만 답해요. 모르는 것을 단정하지 않아요.

완성 링크는 URLSearchParams 로 붙여요. 한글이나 공백이 있으면 퍼센트 인코딩(%EB.., %20)이 되고, 기본 주소에 이미 있던 다른 매개변수와 해시(#)는 그대로 남아요. 같은 이름의 utm 이 이미 있으면 새 값으로 덮어써요.

QR 은 완성 링크를 그대로 담아요. 정정 수준은 M(15%)이고, 512픽셀 PNG 로 내려받아요. 링크가 길수록 무늬가 촘촘해지니 인쇄물에는 크게 두세요.

저장은 이 기기 브라우저의 localStorage 에만 해요. 같은 완성 링크는 두 번 저장되지 않고, 목록은 utm_campaign 값별로 묶여 보여요. JSON 내보내기는 그 목록을 파일로 내리고, 가져오기는 우리 파일 형태만 받아서 형태가 다르면 이유를 말하고 멈춰요. 브라우저 사이트 데이터를 지우면 저장한 것도 같이 지워져요.

아래 구글 문서를 원문으로 읽고 썼어요. 프리셋 표는 그 규칙에서 우리가 고른 추천값이지 구글이 정한 값은 아니에요.

채널utm_sourceutm_mediumutm_contentGA4 예상 채널왜 이 값인가
네이버 블로그naverreferralblogReferral다른 사이트에 올린 글에서 오는 방문이라 referral. 블로그인지는 content 로 가른다.
네이버 카페naverreferralcafeReferral블로그와 같은 소스(naver)에 두고 content 만 cafe 로 두면 네이버 안에서 어디가 먹혔는지 한 표에서 보인다.
네이버 지식iNnaverreferralkinReferral답변에 붙인 링크. 위와 같은 결.
네이버 검색광고navercpcPaid (Search/Social/Video/Shopping/Other 중 소스 목록에 따라)cpc 는 GA4 유료 규칙(^(.*cp.*|ppc|retargeting|paid.*)$)에 맞아 유료 채널로 잡힌다. 키워드는 utm_term 에.
카카오톡kakaosocialchatOrganic Social단톡방과 개인 대화에 뿌린 링크. 매체 social 은 GA4 Organic Social 규칙에 정확히 맞는다.
오픈카톡kakaosocialopenchatOrganic Social카카오톡과 같은 소스. 오픈방인지는 content 로.
인스타그램instagramsocialOrganic Social프로필 링크와 스토리. social → Organic Social.
스레드threadssocialOrganic Social인스타그램과 소스를 나눠야 어느 쪽이 먹혔는지 보인다.
유튜브youtubevideoOrganic Video설명란과 댓글 고정 링크. 매체에 video 가 들어가면 GA4 Organic Video 규칙(^(.*video.*)$)에 맞는다.
당근daangnsocialcommunityOrganic Social동네생활 글과 프로필. 커뮤니티 피드라 social 로 둔다.
디스콰이엇disquietsocialmakerlogOrganic Social메이커로그와 프로덕트 페이지. 인디 개발자 유입의 실제 출처라 소스를 따로 둔다.
앱인토스tossappReferral토스 앱 안 WebView 에서 열리는 링크. 매체 app 은 GA4 Referral 규칙(referral, app, link)에 든다.
에브리타임everytimesocialboardOrganic Social대학 커뮤니티 게시판. social 로 두고 게시판은 content 로.
문자(SMS)smssmsSMSGA4 는 소스나 매체가 sms 면 SMS 채널로 잡는다.
이메일 뉴스레터newsletteremailEmail매체 email → Email 채널. 소스는 뉴스레터 이름으로 바꿔도 된다(예: stibee).

4. 기본 요령

팀 규칙을 먼저 정하고 그 규칙대로만 붙이세요. 소문자, 공백 대신 밑줄, 영문만. 이 세 가지만 지켜도 보고서가 갈라지는 일은 대부분 사라져요.

같은 캠페인의 링크는 utm_campaign 을 똑같이 쓰고, 채널만 소스와 매체로 갈라요. 그래야 캠페인 하나가 채널별로 얼마나 왔는지 한 표에서 보여요. 이 도구의 저장 목록이 캠페인별로 묶이는 이유이기도 해요.

인디 앱 개발자라면 채널이 많지 않아요. 네이버 블로그, 카카오톡, 인스타그램, 스레드, 디스콰이엇, 앱인토스 정도인데, 프리셋에 그 값이 들어 있으니 매번 새로 정하지 말고 같은 값을 재사용하세요.

자기 사이트 안에서 이동하는 링크에는 utm 을 붙이지 마세요. 세션이 새로 시작되고 원래 어디서 왔는지가 지워져요. utm 은 바깥에서 들어오는 링크에만 붙여요.

5. 고급 요령

카카오톡이나 슬랙 같은 메신저에 링크를 그냥 붙이면 GA4 에는 (direct)/(none) 으로 찍혀요. 리퍼러가 없기 때문이에요. utm 을 붙인 링크를 뿌리면 그 방문이 kakao / social 로 잡혀요. 메신저야말로 utm 이 가장 필요한 자리예요.

앱인토스처럼 앱 안의 WebView 에서 열리는 링크는 매체를 app 으로 두었어요. GA4 의 Referral 규칙이 referral, app, link 세 값을 받아서 채널이 Referral 로 잡혀요. 나중에 채널을 따로 보고 싶으면 GA4 의 채널 그룹을 직접 만들어 소스 toss 를 묶으면 돼요.

유튜브는 매체를 video 로 두면 Organic Video 로 잡혀요. GA4 규칙이 매체에 video 가 들어가면 그 채널로 보내기 때문이에요. 설명란 링크와 댓글 고정 링크는 utm_content 로 가르면 어느 쪽이 눌리는지 보여요.

유료 광고는 매체를 cpc 로 두고 키워드를 utm_term 에 넣어요. 네이버 검색광고처럼 구글 광고가 아닌 유료는 자동으로 안 잡히니 이렇게 손으로 붙여야 해요.

만든 링크가 길어지면 단축 링크 서비스를 거쳐도 돼요. 단축 서비스는 리다이렉트할 때 utm 을 그대로 넘겨요. 다만 이 도구는 단축을 해 주지 않아요. 단축은 중간에 서버가 있어야 하고, 그 서버가 링크를 들고 있어야 하기 때문이에요.

6. 자주 막히는 자리

보고서에 같은 채널이 두 줄로 나온다면 대소문자나 공백이 다른 거예요. 저장 목록에서 예전 링크를 불러와 지금 값과 비교해 보세요. 규칙 검사가 대문자와 공백을 짚어 줘요.

Unassigned 로 떨어진다면 매체가 GA4 규칙표에 없는 값이에요. 흔한 예가 blog, post, share 같은 매체예요. referral 이나 social 로 바꾸면 채널이 잡혀요. 규칙 검사가 이 경우도 경고해요.

링크를 붙였는데 GA4 에 아무것도 안 보인다면, 먼저 필수 셋이 다 있는지 보세요. 그다음은 GA4 데이터가 실시간 보고서 밖에서는 하루쯤 늦게 보인다는 점이에요. 실시간 보고서에서 세션 소스를 보면 바로 확인돼요.

이 도구는 클릭 수를 세지 않고 링크를 나중에 바꿔 주지도 않아요. 둘 다 중간에 서버가 필요한 일이라서요. 대신 만든 링크와 QR 은 우리가 문을 닫아도 계속 작동해요.

근거