인스타그램 프로필, 카카오톡 채널, 네이버 블로그에 같은 이벤트 링크를 올렸는데 GA4를 열어 보니 전부 "direct"나 "referral" 한 줄로 뭉쳐 있던 경험, 있으시죠. 결론부터 말하면 링크 뒤에 utm_source(어디서), utm_medium(어떤 방식으로), utm_campaign(어떤 캠페인) 세 가지 꼬리표만 붙여도 GA4에서 유입을 따로 나눠 볼 수 있어요. 예를 들어 인스타 프로필 링크라면 ?utm_source=instagram&utm_medium=social&utm_campaign=fall_sale_2026처럼요.
저도 처음엔 "어차피 인스타에서 온 건 인스타로 잡히겠지" 했는데, 앱 안 브라우저를 거치면 출처 정보가 사라지는 경우가 많더라고요. 특히 카카오톡이나 문자로 공유된 링크는 UTM이 없으면 거의 다 direct로 잡혀요. 그때부터 외부에 올리는 링크엔 꼭 UTM을 붙이고 있어요.
이 글에서는 UTM 매개변수 5가지의 뜻과 예시, GA4가 source·medium을 보고 채널을 나누는 규칙, 인스타·카카오톡·블로그·뉴스레터별 추천 값, 이름 짓기 규칙, 그리고 통계를 망치는 흔한 실수까지 정리했어요.
핵심 요약
UTM은 링크 뒤에 붙이는 utm_source, utm_medium, utm_campaign, utm_content, utm_term 꼬리표예요. 페이지 내용은 바뀌지 않고, 분석 도구가 유입 경로를 구분하는 데만 써요.
실무에서는 source·medium·campaign 세 가지를 꼭 채워요. medium은 social, email, referral, cpc, sms 같은 표준 값을 써야 GA4 기본 채널 그룹에 제대로 분류돼요.
GA4는 대소문자를 구분해요. Instagram과 instagram이 따로 집계되니 소문자와 밑줄(_)로 통일하세요.
내 사이트 안의 링크에는 UTM을 달지 마세요. 클릭할 때마다 새 세션으로 잡혀 원래 유입 경로가 지워져요.
UTM 파라미터란, 링크 하나로 유입 경로를 구분하는 꼬리표
UTM(Urchin Tracking Module)은 구글 애널리틱스의 전신인 Urchin에서 쓰던 이름이 그대로 남은 거예요. 링크 주소의 ? 뒤에 이름=값 형태로 붙이고, 여러 개는 &로 이어요. 방문자가 이 링크로 들어오면 GA4가 주소에 붙은 값을 읽어 "이 세션은 어디서, 어떤 캠페인으로 왔다"고 기록해요.
| 매개변수 | 뜻 | 예시 값 | 필수 여부 |
|---|---|---|---|
| utm_source | 어디서 왔나 (사이트·앱·매체 이름) | instagram, naver_blog, newsletter | 필수 |
| utm_medium | 어떤 방식으로 왔나 (채널 종류) | social, email, cpc, referral | 사실상 필수 |
| utm_campaign | 어떤 캠페인·이벤트인가 | fall_sale_2026, app_launch | 사실상 필수 |
| utm_content | 같은 캠페인 안의 소재·위치 | profile, story, banner_a | 선택 |
| utm_term | 유료 검색 키워드 | running_shoes | 선택 |
GA4에서는 이 밖에 utm_id(캠페인 ID)도 쓸 수 있어서, 광고비 데이터를 가져와 캠페인별 비용과 유입을 합칠 때 써요. 일반적인 SNS·블로그 홍보라면 위 5가지면 충분해요. 손으로 쓰다 보면 오타가 나기 쉬우니 UTM 링크 생성기로 만들면 편해요.
GA4는 source·medium을 보고 채널을 이렇게 나눠요
GA4의 '기본 채널 그룹'은 source와 medium 값을 정해진 규칙에 맞춰 채널로 묶어요. 그래서 medium에 무엇을 쓰느냐가 채널 분류를 거의 결정해요.
| medium 값 (예) | GA4 기본 채널 | 비고 |
|---|---|---|
| social, social-network, sm | Organic Social | SNS 무료 게시물·프로필 링크 |
| email, e-mail | 뉴스레터, 안내 메일 | |
| referral, app, link | Referral | 블로그 본문·제휴 사이트 링크 |
| sms | SMS | 문자 메시지 (source=sms도 동일) |
| cpc, ppc, paid로 시작 | Paid Search · Paid Social 등 | source가 검색엔진이면 Paid Search, SNS면 Paid Social |
| display, banner | Display | 배너 광고 |
| affiliate | Affiliates | 제휴 마케팅 |
| 규칙에 없는 값 (insta_bio 등) | Unassigned | 분류 안 됨 |
가장 많이 하는 실수가 medium에 insta_bio, kakao_msg처럼 자유롭게 이름을 붙이는 거예요. 그러면 GA4가 어느 채널에도 넣지 못해 Unassigned로 빠져요. 자세한 구분은 medium이 아니라 content에 넣고, medium은 표준 값을 쓰는 게 원칙이에요. 참고로 GA4는 source를 자체적으로 관리하는 SNS·검색엔진 사이트 목록과도 비교하기 때문에, 속성의 맞춤 채널 그룹 설정에 따라 결과가 조금 다를 수 있어요.
채널별 추천 UTM 값: 인스타·카카오톡·블로그·뉴스레터
아래는 바로 가져다 쓸 수 있는 값이에요. 팀 안에서 이 표를 기준으로 통일하면 나중에 데이터가 깔끔해요.
| 올릴 곳 | utm_source | utm_medium | utm_content |
|---|---|---|---|
| 인스타그램 프로필 링크 | social | profile | |
| 인스타그램 스토리 링크 스티커 | social | story | |
| 카카오톡 채널 메시지 | kakaotalk | social | channel_message |
| 네이버 블로그 본문 링크 | naver_blog | referral | post_link |
| 유튜브 영상 설명란 | youtube | social | description |
| 뉴스레터 | newsletter | main_cta | |
| 문자(SMS) 발송 | sms | sms | (필요 시) |
| 메타(인스타) 유료 광고 | paid_social | ad_a | |
| 네이버 검색광고 | naver | cpc | (키워드는 utm_term) |
캠페인 이름은 fall_sale_2026, newsletter_2026_10처럼 무엇_언제 순서로 지으면 기간별로 정렬하기 좋아요. 같은 캠페인 안에서 프로필 링크와 스토리 링크를 content로 나눠 두면, 어느 위치가 더 잘 클릭되는지도 비교할 수 있어요.
UTM 이름 짓기 규칙: 소문자·밑줄·사전 정의
UTM은 한 번 퍼지면 고칠 수가 없어요. 그래서 처음부터 규칙을 정해 두는 게 중요해요.
- 소문자로 통일: GA4는 값의 대소문자를 구분해요.
Instagram,instagram,INSTAGRAM이 세 줄로 따로 집계돼요. - 띄어쓰기 대신 밑줄(_): 공백은
%20으로 바뀌어 주소가 길어지고, 메신저에서 링크가 공백 앞에서 끊기기도 해요. - 영문 사용 권장: 한글 값도 작동하지만 퍼센트 인코딩돼서 한 글자가 9자로 늘어나요. 공유할 때 주소가 지저분해 보여요.
- 값 목록을 미리 정하기: kakao와 kakaotalk, blog와 naver_blog가 섞이면 같은 유입이 둘로 나뉘어요. 공용 시트에 허용 값 목록을 두세요.
- 날짜·버전은 campaign이나 content에: source와 medium은 "어디·어떻게"만 담고, 시기나 소재 구분은 다른 매개변수로 넘겨요.
주소가 너무 길면 단축 URL을 쓰거나, 오프라인 전단이라면 QR 코드 생성기로 QR을 만들어 붙이면 돼요. 한글이 어떻게 인코딩되는지 직접 보고 싶다면 URL 인코더에 넣어 보세요. 원리는 URL 인코딩과 퍼센트 인코딩 정리에 자세히 있어요.
UTM 통계를 망치는 흔한 실수 5가지
- 내 사이트 안의 링크에 UTM 달기: 메인 배너나 메뉴에 UTM을 붙이면 클릭할 때마다 새 세션이 시작된 것처럼 기록돼요. 원래 검색이나 SNS로 들어온 정보가 덮여서 유입 분석이 엉망이 돼요. 내부 클릭은 이벤트로 추적하세요.
- # 뒤에 UTM 붙이기:
page#section?utm_source=...처럼 해시 뒤에 붙이면 GA4가 읽지 못해요. UTM은?쪽에 두고#은 맨 뒤로 보내야 해요. - 리디렉션에서 꼬리표가 사라짐: 짧은 주소나 앱 링크를 거치며 리디렉션될 때 쿼리가 빠지는 경우가 있어요. 만든 링크는 꼭 한 번 눌러서 도착 주소에 UTM이 남아 있는지 확인하세요.
- 이미 쿼리가 있는 주소에 ?를 또 붙이기:
?id=3?utm_source=...처럼 물음표가 두 번 들어가면 값이 깨져요. 기존 쿼리가 있으면&로 이어야 해요. 생성기는 이 부분을 자동으로 처리해요. - 캠페인이 끝난 링크 재사용: 작년 캠페인 링크를 올해 게시물에 다시 쓰면 작년 캠페인 숫자가 늘어나요. 새 게시물엔 새 campaign 값을 쓰세요.
GA4에서 UTM 결과 확인하는 법
GA4 보고서에서 보고서 → 획득 → 트래픽 획득을 열고, 표의 기본 측정기준을 '세션 소스/매체'나 '세션 캠페인'으로 바꾸면 UTM 값별 세션과 참여, 전환을 볼 수 있어요. content별로 보고 싶다면 보조 측정기준에 '세션 수동 광고 콘텐츠'를 추가하거나 탐색 분석에서 표를 만들면 돼요.
표준 보고서에는 데이터가 반영되기까지 하루 정도 걸릴 수 있어요. 링크를 만들고 바로 확인하고 싶다면 실시간 보고서에서 내가 방금 누른 방문이 잡히는지 보면 돼요. 확인이 끝나면 테스트 방문이 섞이지 않도록 내부 트래픽 필터를 켜 두는 것도 좋아요.
마지막으로, 카카오톡·인스타그램 같은 앱 안 브라우저는 출처(referrer)를 넘기지 않는 경우가 많아요. 이런 곳에서 퍼지는 링크일수록 UTM이 없으면 direct로 잡히니, 외부에 내보내는 모든 링크에 UTM을 붙이는 습관을 들이면 데이터가 훨씬 정확해져요. 인스타 프로필을 다듬는 중이라면 인스타 아이디·닉네임 정리도 함께 참고해 보세요.
자주 묻는 질문
UTM 필수 값은 무엇인가요?
GA4에서는 utm_source가 있어야 캠페인 정보로 인식하고, 실무에서는 source·medium·campaign 세 가지를 꼭 채워요. medium이 비거나 규칙에 없는 값이면 채널이 Unassigned로 빠지기 쉬워요. content와 term은 필요할 때만 쓰면 돼요.
UTM을 붙이면 검색 순위(SEO)에 안 좋나요?
SNS·메일·메신저처럼 외부에 공유하는 링크라면 문제없어요. 검색엔진은 canonical 태그가 있는 페이지라면 UTM 없는 주소를 대표 주소로 봐요. 다만 내 사이트 안의 링크에 UTM을 쓰면 통계가 왜곡되니 피하세요.
인스타그램 프로필 링크에 UTM을 넣어도 되나요?
넣어도 돼요. 프로필의 링크 칸에 UTM이 붙은 주소를 그대로 넣으면 돼요. source=instagram, medium=social, content=profile로 두고, 스토리 링크 스티커는 content=story로 나누면 둘을 따로 비교할 수 있어요.
한글로 UTM 값을 써도 되나요?
작동은 해요. GA4 보고서에도 한글로 보여요. 하지만 주소에서 한 글자가 9자로 인코딩돼 링크가 길고 지저분해지고, 띄어쓰기·맞춤법이 다르면 다른 값으로 집계돼요. 영문 소문자와 밑줄로 통일하는 게 관리하기 쉬워요.
UTM 링크를 만들었는데 GA4에 안 보여요.
먼저 링크를 눌러 도착한 주소에 UTM이 그대로 남아 있는지 확인하세요. 리디렉션 중에 빠지는 경우가 많아요. 그다음 실시간 보고서에서 방문이 잡히는지 보고, 표준 보고서는 하루쯤 기다려야 반영돼요. 내부 트래픽 필터에 내 접속이 걸러진 건 아닌지도 확인해 보세요.
정리
UTM은 utm_source(어디서) · utm_medium(어떻게) · utm_campaign(무엇) 세 가지만 제대로 붙여도 GA4에서 유입 경로를 깔끔하게 나눠 볼 수 있어요. medium은 social·email·referral·cpc·sms 같은 표준 값으로, 값은 소문자와 밑줄로 통일하고, 내 사이트 내부 링크에는 쓰지 않는 것만 지켜도 대부분의 실수를 피할 수 있어요.
채널별 프리셋으로 바로 만들고, 만든 링크를 기록해 두려면 UTM 링크 생성기를 써 보세요. 이미 퍼진 UTM 주소를 붙여 넣으면 값을 나눠 보여 주고 GA4 예상 채널도 알려 줘요.