랜딩페이지 UTM 파라미터 설정: URL 구조별 4가지 기준
랜딩페이지 UTM 파라미터 설정은 링크 끝에 값 몇 개를 붙이는 작업이 아닙니다. 광고를 클릭한 사람이 랜딩페이지에 도착해 구매하거나 신청할 때까지 출처 정보가 끊기지 않게 경로를 설계하는 작업입니다.
실제로 가장 중요한 건 UTM 값을 무엇으로 정하느냐보다, UTM을 랜딩 URL의 어느 위치에 어떻게 붙이느냐입니다. 같은 값을 붙여도 랜딩페이지 URL 구조, 리디렉션 여부, 결제 페이지 도메인에 따라 GA4에 남기도 하고 사라지기도 합니다. UTM 값을 정하는 방법은 다른 글에서 다뤘으니, 이 글은 이미 정한 값을 랜딩페이지에 안전하게 싣는 데 집중합니다.
아래에서 랜딩페이지 구조별로 UTM을 붙이는 기준, 랜딩페이지 안에서 UTM을 지키는 설정, 매체별 입력 방식과 게시 전 검증 순서를 차례로 설명합니다.
UTM 값을 어떻게 정할지가 아직 정리되지 않았다면 이 글보다 먼저 아래 글을 보시는 편이 좋습니다.
UTM 만드는 법: 파라미터 5개 값 정하는 기준과 검증 순서
1. 랜딩페이지 UTM 파라미터 설정, URL 구조에 따라 붙이는 위치가 다릅니다
UTM은 URL의 쿼리스트링(물음표 뒤쪽)에 들어가야 GA4가 읽습니다.
문제는 랜딩페이지 URL이 늘 https://도메인/페이지 같은 깔끔한 형태가 아니라는 점입니다.
상세페이지 URL에는 이미 상품 번호 파라미터가 붙어 있는 경우가 많고, 랜딩 빌더로 만든 페이지는 특정 섹션으로 보내려고 # 앵커를 쓰기도 합니다.
이 구조를 확인하지 않고 UTM을 그냥 이어 붙이면 값이 깨집니다.
① 쿼리스트링이 없는 URL
가장 단순한 경우입니다. 페이지 주소 뒤에 ?를 붙이고 파라미터를 &로 연결합니다.
https://example.com/lp?utm_source=meta&utm_medium=paid_social&utm_campaign=fall_launch
여기서 실수가 나오는 지점은 맨 끝의 슬래시입니다./lp/와 /lp가 서버에서 서로 리디렉션되는 사이트라면, 리디렉션 과정에서 쿼리스트링이 빠지는 경우가 있습니다. 실제로 열리는 최종 주소 형태를 그대로 쓰는 것이 기본입니다.
② 이미 ?가 있는 URL
상품 상세페이지처럼 ?product_no=123 같은 파라미터가 이미 있다면, UTM은 ?가 아니라 &로 이어야 합니다.
https://example.com/product/detail?product_no=123&utm_source=meta&utm_medium=paid_social
?를 두 번 쓰면(?product_no=123?utm_source=meta) 브라우저는 두 번째 ?부터를 첫 번째 파라미터 값의 일부로 읽습니다.
그러면 상품 번호 값이 오염돼 상품 페이지가 열리지 않거나, utm_source가 아예 인식되지 않습니다.
-> 기존 파라미터가 있으면 &, 없으면 ?. 이 한 줄이 가장 흔한 오류를 막습니다.
③ #(앵커)가 있는 URL
랜딩 빌더에서 특정 섹션으로 바로 보내려고 https://example.com/lp#price 같은 주소를 쓰는 경우가 있습니다.
이때 UTM을 # 뒤에 붙이면 GA4는 읽지 못합니다. # 뒤쪽(프래그먼트)은 일반적인 쿼리스트링으로 처리되지 않기 때문입니다.
✗ https://example.com/lp#price?utm_source=meta
○ https://example.com/lp?utm_source=meta&utm_medium=paid_social#price
순서는 페이지 주소 → 쿼리스트링(UTM) → 앵커입니다.
랜딩 빌더로 만든 페이지에서 앵커 뒤에 UTM을 붙여 둔 탓에, 광고 유입이 통째로 direct나 (not set)으로 잡히는 경우가 실무에서 생각보다 자주 나옵니다.
④ URL 구조별 정리
랜딩 URL 형태 | 붙이는 방식 | 흔한 실수 |
|---|---|---|
|
| 끝 슬래시 차이로 리디렉션 발생 |
|
|
|
|
| 앵커 뒤에 UTM 부착 |
단축 URL·리디렉션 경유 | 최종 도착 URL 기준으로 생성 후 단축 | 단축 전 URL에만 UTM 부착 |
2. 리디렉션·단축 URL·SPA 랜딩에서 UTM이 살아남는 조건
위 규칙대로 붙였는데도 GA4에 UTM이 남지 않는다면, 대부분 랜딩페이지에 도착하기 전이나 도착 직후에 파라미터가 사라진 것입니다.
그래서 랜딩페이지 UTM 파라미터 설정은 링크 문자열만이 아니라 페이지가 열리는 과정까지 함께 봐야 합니다.
① 리디렉션이 끼는 경우
광고 링크 → 리디렉션 → 실제 랜딩페이지로 이어지는 구조는 생각보다 흔합니다.
http → https 전환
www 유무 통일
모바일 전용 페이지(m.도메인)로 보내는 분기
종료된 이벤트 페이지를 새 페이지로 넘기는 설정
대부분의 서버 리디렉션은 쿼리스트링을 유지하지만, 리디렉션 규칙을 "목적지 주소만 지정"하는 방식으로 짜 두면 UTM이 통째로 떨어집니다.
특히 모바일 분기는 PC에서 테스트하면 문제가 보이지 않아, 모바일 유입만 출처가 사라지는 형태로 나타나는 경우가 많습니다.
-> 판단 기준: 광고에 넣을 URL을 브라우저에 붙여넣고, 페이지가 다 열린 뒤 주소창에 UTM이 그대로 남아 있는지 PC와 모바일에서 각각 확인합니다.
② 단축 URL을 쓰는 경우
인플루언서 협업, 문자, 오프라인 QR처럼 긴 URL을 쓰기 어려운 곳에서는 단축 URL을 많이 씁니다.
이때 원칙은 하나입니다. UTM을 붙인 최종 URL을 단축해야 합니다.
UTM 없는 주소를 먼저 단축한 뒤 단축 URL 뒤에 ?utm_source=...를 붙이는 방식은, 단축 서비스가 뒤쪽 파라미터를 넘겨주지 않으면 그대로 유실됩니다.
채널마다 단축 URL을 따로 만들어야 출처를 구분할 수 있다는 점도 같이 기억해야 합니다. 같은 단축 URL을 문자와 QR에 함께 쓰면 GA4에서는 둘을 나눌 방법이 없습니다.
③ SPA·랜딩 빌더 페이지
React 같은 프레임워크로 만든 단일 페이지(SPA)나 일부 랜딩 빌더는, 페이지가 열리자마자 자바스크립트로 주소를 바꾸는 경우가 있습니다.
GA4 태그가 첫 page_view를 보내기 전에 주소가 바뀌면 UTM 없는 주소가 기록됩니다.
GA4는 세션의 출처를 세션 첫 이벤트 시점의 정보로 판단합니다.
그래서 첫 page_view가 UTM을 잃은 주소로 찍히면, 그 뒤에 아무리 전환이 일어나도 해당 세션은 광고가 아닌 다른 출처로 남습니다.
이 구조가 의심되면 GA4 디버그 뷰에서 첫 page_view 이벤트의 page_location 값에 UTM이 들어 있는지 직접 확인하는 것이 가장 빠릅니다.
UTM 붙였는데 안잡힘: 파라미터가 사라지는 4구간 진단 순서
3. 랜딩페이지 안쪽 설정: 내부 링크·크로스도메인·외부 결제
광고 링크에 UTM을 정확히 붙여도, 랜딩페이지 안에서 출처가 덮이거나 끊기면 전환은 엉뚱한 곳으로 귀속됩니다.
랜딩 이후 구간에서 점검할 것은 크게 세 가지입니다.
① 랜딩페이지 내부 링크에는 UTM을 붙이지 않습니다
랜딩페이지 안의 "구매하러 가기" 버튼이나 메인 배너에 UTM을 붙여 클릭을 측정하려는 경우가 있습니다.
의도는 이해되지만, 이렇게 하면 광고로 들어온 사람이 버튼을 누르는 순간 새 캠페인 정보가 적용돼 원래 광고 출처를 덮어쓰게 됩니다.
결과적으로 GA4에서는 메타 광고로 들어온 구매가 "자사 배너"에서 발생한 것처럼 보입니다.
광고 성과는 실제보다 낮게, 내부 배너 성과는 실제보다 높게 찍히는 구조입니다.
-> 내부 버튼 클릭은 UTM이 아니라 GTM 클릭 트리거나 이벤트 파라미터로 측정합니다.
② 랜딩 도메인과 구매 도메인이 다르면 크로스도메인 설정이 필요합니다
랜딩 빌더 도메인에서 상품을 소개하고, 구매는 자사몰 도메인에서 하는 구조라면 도메인이 바뀌는 순간 GA4는 별도 방문으로 인식할 수 있습니다.
그러면 자사몰에서 일어난 구매의 출처가 광고가 아니라 "랜딩 빌더 도메인에서 온 추천 유입"으로 잡힙니다.
이 경우 GA4 데이터 스트림의 태그 설정에서 도메인 구성에 두 도메인을 모두 등록해야 합니다.
설정이 제대로 되면 도메인 간 이동 시 URL에 _gl 파라미터가 붙어 같은 사용자·세션으로 이어집니다.
확인 방법은 간단합니다. 랜딩페이지에서 구매 버튼을 눌렀을 때 자사몰 주소에 _gl=이 붙는지 보면 됩니다.
③ 외부 결제창은 원치 않는 추천에 등록합니다
PG 결제창이나 간편결제 페이지를 거쳐 다시 자사몰 완료 페이지로 돌아오는 구조에서는, 완료 페이지 방문의 출처가 결제 도메인으로 바뀌는 경우가 있습니다.
이 상태로 두면 구매 전환이 광고가 아니라 결제 대행사 도메인의 referral로 귀속됩니다.
GA4의 원치 않는 추천 목록에 결제 도메인을 등록하면 이 문제를 줄일 수 있습니다.
랜딩페이지 UTM이 아무리 정확해도 이 단계가 빠지면 "UTM은 잘 붙었는데 구매 출처가 이상하다"는 현상이 남습니다.
④ 랜딩 이후 구간 점검 요약
점검 지점 | 증상 | 조치 |
|---|---|---|
랜딩 내부 버튼 | 내부 배너·버튼이 매출 상위 출처로 등장 | 내부 링크 UTM 제거, 클릭 이벤트로 대체 |
도메인 이동 | 랜딩 빌더 도메인이 referral로 잡힘 | GA4 도메인 구성에 두 도메인 등록 |
외부 결제 | 결제 대행사 도메인이 구매 출처로 잡힘 | 원치 않는 추천 목록에 등록 |
4. 매체별 랜딩 UTM 입력 방식과 랜딩 A/B 변형 구분 기준
UTM을 붙이는 위치가 정해졌다면, 이제 매체 광고 관리자에서 어디에 입력할지 정할 차례입니다.
같은 랜딩페이지라도 매체마다 입력 방식이 달라서, 이 부분을 통일하지 않으면 데이터가 매체별로 다른 규칙으로 쌓입니다.
① 메타: 웹사이트 URL과 URL 매개변수를 분리합니다
메타 광고는 광고 단위에서 웹사이트 URL과 URL 매개변수를 따로 입력할 수 있습니다.
랜딩 주소는 웹사이트 URL 칸에 깔끔하게 넣고, UTM은 URL 매개변수 칸에 넣는 방식이 관리하기 쉽습니다.
URL 매개변수 칸에서는 {{campaign.name}}, {{adset.name}}, {{ad.name}} 같은 동적 값을 쓸 수 있습니다.
캠페인명·광고명을 일일이 손으로 적지 않아도 돼 오타가 줄어드는 장점이 있습니다.
다만 동적 값은 캠페인 이름을 그대로 가져오기 때문에, 캠페인 이름에 한글·공백·대소문자가 섞여 있으면 그 형태가 그대로 GA4에 들어갑니다.
동적 값을 쓰기 전에 캠페인 네이밍 규칙부터 정리해 두는 편이 안전합니다.
② 구글: 자동 태그를 기본으로 두고, 필요할 때 최종 URL 접미사를 씁니다
구글 광고는 자동 태그(gclid)가 켜져 있으면 GA4와 연결된 상태에서 캠페인 정보를 자동으로 가져옵니다.
그래서 구글 광고 랜딩에는 수동 UTM을 꼭 붙일 필요가 없고, 오히려 수동 UTM과 자동 태그가 충돌해 유입 데이터가 꼬이는 경우도 있습니다.
다른 분석 도구 때문에 UTM이 꼭 필요하다면 랜딩 URL에 직접 넣기보다 계정·캠페인 단위의 최종 URL 접미사를 쓰는 편이 낫습니다.
랜딩 URL을 수정하면 광고가 재검토에 들어가지만, 접미사로 관리하면 랜딩 주소 자체는 건드리지 않아도 됩니다.
UTM 자동 태그 충돌: GA4 유입 데이터가 꼬이는 원인과 정리 기준
③ 랜딩 A/B 변형은 utm_content가 아니라 페이지 경로로 구분합니다
랜딩페이지 A안·B안을 테스트할 때, 변형을 utm_content=lp_a, utm_content=lp_b로 구분하는 경우가 있습니다.
이 방식은 utm_content를 원래 용도인 광고 소재 구분에 쓸 수 없게 만든다는 문제가 있습니다.
소재 3개 × 랜딩 2개를 테스트하면, 어느 조합이 성과를 냈는지 utm_content 하나로는 읽을 수 없습니다.
실무에서는 아래처럼 역할을 나누는 편이 깔끔합니다.
소재 구분 → utm_content
랜딩 변형 구분 → 페이지 경로(
/lp-a,/lp-b)
이렇게 나누면 GA4의 랜딩 페이지 보고서에서 페이지 경로를 기준으로, 보조 측정기준으로 세션 수동 광고 콘텐츠를 붙여 조합별 성과를 볼 수 있습니다.
경로를 나눌 수 없는 랜딩 빌더라면 ?v=a 같은 별도 파라미터를 쓰되, UTM 이름 체계와 섞지 않는 것이 원칙입니다.
GA4 랜딩페이지 보고서 보는 법: 광고 유입별로 읽는 4단계 기준
④ 게시 전 4단계 검증 순서
랜딩페이지 UTM 파라미터 설정을 마쳤다면, 광고를 켜기 전에 아래 순서로 한 번 확인합니다.
1단계: 광고 관리자 미리보기에서 실제 클릭 → 최종 도착 주소창에 UTM이 남아 있는지 확인 (PC·모바일 각각)
2단계: GA4 디버그 뷰 또는 Tag Assistant에서 첫 page_view의 page_location에 UTM이 들어 있는지 확인
3단계: 랜딩 → 구매 버튼 → 결제 → 완료 페이지까지 직접 진행하며 도메인 이동 시 _gl 파라미터, 결제 도메인 referral 여부 확인
4단계: 다음 날 GA4 트래픽 획득 보고서에서 세션 소스/매체가 의도한 값으로 집계됐는지 확인
이 네 단계는 한 번 하는 데 길어야 몇십 분이면 끝납니다.
반면 이 과정을 건너뛰고 한 달 집행한 뒤 문제를 발견하면, 이미 쌓인 데이터는 되돌릴 수 없습니다.
자주 묻는 질문
랜딩페이지 URL에 이미 ?가 있으면 UTM은 어떻게 붙이나요?
기존 파라미터 뒤에 &로 이어 붙이면 됩니다. ?를 두 번 쓰면 첫 번째 파라미터 값이 오염돼 페이지가 열리지 않거나 UTM이 인식되지 않습니다.
UTM을 # 앵커 뒤에 붙이면 안 되나요?
안 됩니다. # 뒤쪽은 일반적인 쿼리스트링으로 처리되지 않아 GA4가 UTM을 읽지 못합니다. 순서는 페이지 주소, UTM, 앵커 순입니다.
랜딩페이지 내부 버튼에 UTM을 붙여도 되나요?
권장하지 않습니다. 내부 링크의 UTM이 원래 광고 출처를 덮어써 광고 성과가 낮게 집계됩니다. 내부 클릭은 GTM 이벤트로 측정하는 편이 정확합니다.
랜딩 빌더 도메인에서 자사몰로 넘어가면 UTM이 유지되나요?
GA4 크로스도메인 설정이 없으면 출처가 끊기고 랜딩 도메인이 referral로 잡힐 수 있습니다. 데이터 스트림의 도메인 구성에 두 도메인을 모두 등록하고, 이동 시 _gl 파라미터가 붙는지 확인하세요.
구글 광고 랜딩에도 UTM을 직접 붙여야 하나요?
GA4와 연결돼 있고 자동 태그가 켜져 있다면 필수는 아닙니다. UTM이 꼭 필요하다면 랜딩 URL을 직접 수정하기보다 최종 URL 접미사로 관리하는 편이 충돌과 재검토를 줄입니다.
마무리
랜딩페이지 UTM 파라미터 설정에서 데이터가 깨지는 지점은 대부분 값이 아니라 위치와 경로입니다.
URL 구조에 따라
?와&, 앵커 순서를 맞춥니다리디렉션·단축 URL·SPA에서는 최종 도착 주소에 UTM이 남는지 확인합니다
랜딩 안쪽에서는 내부 링크 UTM 제거, 크로스도메인, 원치 않는 추천까지 챙깁니다
소재는 utm_content, 랜딩 변형은 페이지 경로로 역할을 나눕니다
UTM은 한 번 잘못 쌓이면 지나간 데이터를 고칠 수 없습니다.
새 랜딩페이지를 광고에 연결할 때마다 위 4단계 검증을 게시 전 체크리스트로 고정해 두면, 매체 숫자와 GA4 숫자가 어긋날 때 원인을 찾는 시간이 크게 줄어듭니다.