UTM 대소문자 구분: GA4에서 유입이 쪼개지는 원인과 정리 기준
UTM 값의 대소문자는 단순한 표기 습관이 아닙니다. GA4가 서로 다른 유입으로 인식하느냐를 가르는 기준입니다.
GA4는 UTM 값의 대소문자를 구분합니다. utm_source=Facebook과 utm_source=facebook은 보고서에서 서로 다른 두 줄로 집계됩니다. 그래서 해결책은 GA4 화면에서 숫자를 합치는 것보다 URL을 만드는 단계에서 소문자 표기를 고정하는 것이 먼저입니다.
아래에서 대소문자 때문에 데이터가 쪼개지는 구조, 이미 쪼개진 데이터를 정리하는 방법, 다시 생기지 않게 막는 네이밍 규칙을 순서대로 설명합니다.
1. UTM 대소문자 구분이 GA4 데이터를 쪼개는 구조
GA4는 값을 '문자열 그대로' 저장합니다
GA4는 UTM 값을 받을 때 대소문자를 바꾸지 않고, 들어온 문자열을 그대로 측정기준 값으로 저장합니다.
그래서 사람이 보기에는 같은 매체여도 GA4에는 별개의 값으로 남습니다.
예를 들어 같은 메타 캠페인에 아래 세 가지 URL이 섞여 있다고 해보겠습니다.
실제 URL에 들어간 값 | GA4 세션 소스/매체 표시 |
|---|---|
utm_source=facebook&utm_medium=paid_social | facebook / paid_social |
utm_source=Facebook&utm_medium=Paid_Social | Facebook / Paid_Social |
utm_source=FACEBOOK&utm_medium=paid_social | FACEBOOK / paid_social |
같은 캠페인, 같은 예산인데도 보고서에는 세 줄이 생깁니다.
각 줄의 세션과 전환이 나뉘어 잡히니, 어느 한 줄만 보고 "메타 유입이 적다"고 판단하게 됩니다.
-> 핵심: 대소문자는 숫자를 없애지는 않지만, 숫자를 나눠서 판단을 틀리게 만듭니다.
파라미터 '이름'과 '값'은 따로 봐야 합니다
여기서 자주 헷갈리는 부분이 있습니다.
UTM은 utm_source처럼 앞쪽의 파라미터 이름과, = 뒤의 값으로 나뉩니다.
파라미터 이름:
utm_source,utm_medium,utm_campaign,utm_content,utm_term값:
facebook,cpc,2026_fw_sale같은 실제 입력 내용
파라미터 이름은 소문자로 쓰는 것이 표준입니다. UTM_SOURCE, Utm_Source처럼 이름 자체를 대문자로 쓰면 분석 도구가 UTM으로 인식하지 못하고 일반 URL 파라미터로 취급할 수 있습니다.
이 경우는 쪼개지는 수준이 아니라 캠페인 정보가 통째로 사라지는 문제가 됩니다. 유입이 direct나 referral로 잡히거나, 캠페인 값이 (not set)으로 나옵니다.
GA4 (not set) 뜨는 이유: 측정기준별 원인과 점검 순서
기본 채널 그룹에서도 영향이 생깁니다
GA4의 기본 채널 그룹(Paid Social, Paid Search, Email 등)은 소스와 매체 값을 정해진 규칙에 맞춰 분류합니다.
규칙이 예상하는 표기에서 벗어난 값, 예를 들어 Paid-SNS나 Banner_AD 같은 임의 표기는 어느 채널에도 맞지 않아 Unassigned로 빠지는 경우가 생깁니다.
대소문자만 다른 경우에도 안심하기 어렵습니다. 매체 값을 CPC, Cpc, cpc로 섞어 쓰는 계정은 대부분 철자나 구분자도 함께 섞여 있기 때문입니다.
실무에서 Unassigned 비중이 갑자기 늘었다면, 최근에 새로 만든 광고 URL의 매체 값부터 확인하는 편이 빠릅니다.
2. 이미 쪼개진 UTM 데이터, 어떻게 정리할까
먼저 '얼마나 쪼개졌는지'부터 확인합니다
정리 전에 규모를 파악해야 합니다.
GA4 탐색 분석에서 자유 형식 보고서를 열고, 측정기준에 '세션 소스/매체'와 '세션 캠페인'을 넣은 뒤 측정항목으로 세션과 주요 이벤트를 넣습니다.
이후 값을 알파벳순으로 정렬하면 facebook, Facebook, fb, FB처럼 같은 매체가 위아래로 붙어서 보입니다.
한 브랜드의 경우 이 방식으로 확인해 보니 메타 유입 소스가 4~5개 표기로 나뉘어 있었고, 가장 많이 쓰인 표기 하나만 보고 주간 리포트를 만들어 왔던 상황이었습니다. 나머지 표기에 잡힌 전환은 리포트에서 빠지고 있었던 셈입니다.
이런 상황은 생각보다 흔합니다. 담당자가 바뀌거나, 대행사와 인하우스가 URL을 각자 만들 때 특히 자주 생깁니다.
정리 방법은 3가지입니다
이미 수집된 GA4 원본 데이터는 수정할 수 없습니다. 대신 보는 단계에서 합치는 방법을 씁니다.
방법 | 과거 데이터 적용 | 난이도 | 적합한 상황 |
|---|---|---|---|
① 맞춤 채널 그룹 | 적용됨 | 낮음 | GA4 화면에서 채널 단위로 합쳐 보고 싶을 때 |
② 루커 스튜디오 계산 필드 | 적용됨 | 중간 | 정기 리포트를 대시보드로 만들 때 |
③ 빅쿼리 LOWER 처리 | 적용됨 | 높음 | 원본 데이터를 직접 가공해 분석할 때 |
① 맞춤 채널 그룹
GA4 관리 > 데이터 표시 > 채널 그룹에서 새 채널 그룹을 만들고, 조건에 여러 표기를 묶어 넣습니다.
예를 들어 "소스가 facebook, Facebook, FACEBOOK, fb 중 하나"인 경우를 하나의 'Meta 광고' 채널로 정의하는 식입니다. 정규식을 쓸 수 있다면 한 줄로 정리됩니다.
맞춤 채널 그룹은 과거 데이터에도 소급 적용되기 때문에, 이미 쪼개진 기간까지 한 번에 묶어 볼 수 있다는 장점이 있습니다.
단, 채널 단위로만 합쳐집니다. 캠페인 이름이 대소문자로 쪼개진 경우는 이 방법으로 해결되지 않습니다.
② 루커 스튜디오 계산 필드
루커 스튜디오에서 LOWER(세션 소스)처럼 소문자 변환 계산 필드를 만들면, 대소문자만 다른 값은 모두 하나로 합쳐집니다.
캠페인 이름도 같은 방식으로 LOWER(세션 캠페인)을 만들면 됩니다.
다만 fb와 facebook처럼 철자 자체가 다른 값은 소문자 변환으로 합쳐지지 않습니다. 이 경우는 CASE 문으로 직접 매핑해야 합니다.
③ 빅쿼리 LOWER 처리
GA4를 빅쿼리와 연동해 두었다면, 쿼리 단계에서 LOWER(traffic_source.source) 형태로 변환해 집계합니다.
가장 자유롭지만, 연동 이전 기간의 데이터는 빅쿼리에 없다는 점을 기억해야 합니다.
-> 핵심: 정리는 어디까지나 응급 처치입니다. URL 표기를 고치지 않으면 다음 달에도 같은 작업을 반복하게 됩니다.
GA4 세션수 차이: 화면마다 숫자가 다른 4가지 원인과 판독 기준
3. UTM 대소문자 문제를 막는 네이밍 규칙 4가지
정리보다 중요한 것은 처음부터 쪼개지지 않게 만드는 것입니다.
실무에서 효과가 확실했던 규칙을 4가지로 정리하겠습니다.
① 모든 값은 소문자로 통일합니다
가장 단순하지만 가장 확실한 규칙입니다.
"대문자는 아예 쓰지 않는다"로 정하면 판단할 일이 없어집니다. SpringSale처럼 단어 구분을 위해 대문자를 쓰고 싶어지는 경우가 많은데, 이럴 때는 다음 규칙의 구분자로 대신합니다.
브랜드명이 영문 대문자로 표기되는 회사라도 UTM 값에서는 소문자로 씁니다. 리포트에서 보기 좋게 표시하는 일은 대시보드에서 하면 됩니다.
② 구분자는 하나만 씁니다
대소문자만큼 자주 쪼개지는 원인이 구분자입니다.
spring_sale, spring-sale, spring sale, springsale은 모두 다른 값으로 집계됩니다.
표기 | 권장 여부 | 이유 |
|---|---|---|
spring_sale | 권장 | 가독성 좋고 URL에서 깨지지 않음 |
spring-sale | 가능(하나로 통일 시) | 언더바와 섞어 쓰면 쪼개짐 |
spring sale | 비권장 | 공백이 %20 또는 +로 인코딩되어 표기가 흔들림 |
SpringSale | 비권장 | 대소문자 실수가 생기기 쉬움 |
실무에서는 언더바(_)로 통일하는 경우가 가장 많습니다. 중요한 건 어떤 기호를 쓰느냐보다 한 계정 안에서 하나만 쓰는 것입니다.
③ 매체·소스 값은 '허용 목록'으로 고정합니다
캠페인 이름은 매번 달라지지만, 소스와 매체는 거의 바뀌지 않습니다.
그래서 이 두 값은 자유 입력을 막고 미리 정한 목록에서만 고르도록 하는 편이 좋습니다.
예시 허용 목록은 아래와 같습니다.
utm_source:
meta,google,naver,kakao,newsletterutm_medium:
paid_social,cpc,display,email,organic_social
매체 값은 GA4 기본 채널 그룹이 인식하기 쉬운 표기(cpc, display, email 등)에 맞춰 두면 Unassigned로 빠지는 일도 함께 줄어듭니다.
④ URL은 사람이 손으로 치지 않게 만듭니다
규칙을 문서로만 공유하면 결국 누군가는 대문자를 섞습니다.
가장 효과가 큰 방법은 스프레드시트 기반 UTM 생성기를 만드는 것입니다.
소스·매체 칸은 드롭다운으로만 선택
캠페인 이름 칸은
=LOWER(SUBSTITUTE(입력값," ","_"))같은 수식으로 자동 소문자·구분자 변환최종 URL은 수식으로 조합해 복사만 하도록 구성
이렇게 하면 입력하는 사람이 대문자를 쳐도 결과 URL은 소문자로 나옵니다.
메타 광고에서 {{site_source_name}}, {{campaign.name}} 같은 동적 파라미터를 쓰는 경우도 주의가 필요합니다. 동적 파라미터는 광고 관리자에 입력된 캠페인 이름을 그대로 가져오기 때문에, 캠페인 이름 자체에 대문자가 있으면 UTM에도 대문자가 들어갑니다. 캠페인 이름을 지을 때부터 소문자 규칙을 적용해야 하는 이유입니다.
실패 사례: 규칙을 '중간에' 바꿨을 때
규칙을 새로 정하면서 기존 캠페인 URL까지 한꺼번에 바꾸는 경우가 있습니다.
이때 운영 중인 광고의 URL을 수정하면 플랫폼에 따라 광고가 다시 검토 상태로 들어가거나, 학습이 흔들릴 수 있습니다. 또 같은 캠페인이 수정 전과 후로 나뉘어 GA4에 두 개의 값으로 남습니다.
그래서 실무에서는 아래 순서를 권합니다.
새 규칙은 신규 캠페인부터 적용
기존 캠페인은 종료 시점까지 그대로 유지
과도기 데이터는 맞춤 채널 그룹이나 계산 필드로 묶어서 보기
규칙 적용 날짜를 기록해 두고, 리포트 비교 기간에 표시
규칙을 바꾸는 날짜를 남겨두지 않으면, 몇 달 뒤 "이때 왜 유입이 갑자기 바뀌었지?"라는 질문에 아무도 답하지 못합니다.
GA4 랜딩페이지 보고서 보는 법: 광고 유입별로 읽는 4단계 기준
자주 묻는 질문
GA4 UTM은 대소문자를 구분하나요?
네, 구분합니다. utm_source=Naver와 utm_source=naver는 GA4 보고서에서 서로 다른 값으로 집계됩니다. 같은 유입을 하나로 보려면 URL을 만들 때부터 소문자로 통일하는 것이 가장 확실합니다.
UTM 파라미터 이름을 대문자로 쓰면 어떻게 되나요?
UTM_SOURCE처럼 파라미터 이름 자체를 대문자로 쓰면 UTM으로 인식되지 않을 수 있습니다. 이 경우 캠페인 정보가 수집되지 않고 유입이 direct나 referral로 잡히거나 (not set)으로 표시됩니다. 파라미터 이름은 항상 소문자로 써야 합니다.
이미 대소문자가 섞여 수집된 데이터를 수정할 수 있나요?
GA4에 이미 수집된 원본 데이터는 수정할 수 없습니다. 대신 맞춤 채널 그룹, 루커 스튜디오의 LOWER 계산 필드, 빅쿼리 쿼리로 보는 단계에서 합칠 수 있습니다. 맞춤 채널 그룹은 과거 데이터에도 소급 적용됩니다.
UTM 값에 한글을 써도 되나요?
쓸 수는 있지만 권장하지 않습니다. 한글은 URL에서 인코딩된 문자열로 바뀌기 때문에 복사·공유 과정에서 깨지거나 표기가 흔들릴 수 있습니다. 영문 소문자와 언더바 조합으로 쓰는 편이 안전합니다.
마무리
UTM 대소문자 문제는 한 번에 크게 터지지 않습니다.
리포트 한 줄이 조금씩 작아지고, Unassigned가 조금씩 늘어나면서 판단을 서서히 틀리게 만듭니다.
정리하면 순서는 이렇습니다.
지금 계정에서 같은 매체가 몇 가지 표기로 쪼개졌는지 먼저 확인합니다.
이미 쪼개진 데이터는 맞춤 채널 그룹이나 계산 필드로 묶어서 봅니다.
앞으로의 URL은 소문자·단일 구분자·허용 목록 규칙으로 고정합니다.
사람이 직접 입력하지 않도록 생성기를 만들고, 규칙 변경 날짜를 기록합니다.
UTM은 광고 성과를 읽는 출발점입니다. 표기를 통일하는 데 드는 시간은 짧지만, 그렇게 바로잡은 데이터는 이후 모든 리포트의 정확도를 올려줍니다.