단축 URL로 GA4로 유입 경로 추적하기
이 글에서 다루는 내용
이 글에서는 Firebase에 붙인 Google Analytics(GA4)로 웹사이트 방문자가 어디서 들어왔는지 확인하는 방법부터, 레퍼러가 유실되는 한계를 UTM 파라미터로 보완하고, 그 UTM 링크를 Short.io 단축 URL과 본인 브랜드 커스텀 도메인으로 깔끔하게 감싸기까지의 전체 흐름을 다룬다. 실제로 유튜브 채널 홈에 거는 링크 하나를 추적하는 상황을 기준으로, GA4 콘솔 보고서 보는 법, DNS 설정, SSL 발급, URL 빌더 사용법까지 순서대로 정리했다.
GA4 콘솔에서 유입 경로 확인하기
Firebase에 GA를 붙이면 데이터는 Firebase 콘솔이 아니라 별도의 Google Analytics 콘솔(analytics.google.com)로 흘러간다. Firebase 콘솔의 Analytics 메뉴는 요약만 보여주기 때문에, 레퍼러 같은 유입 경로는 GA4 콘솔에서 보는 게 정확하다.
가장 빠른 길은 보고서(Reports) → 획득(Acquisition) → 트래픽 획득(Traffic acquisition) 보고서다. 여기서 표 상단의 기본 차원이 "세션 기본 채널 그룹"으로 되어 있는데, 이 상태에서는 Direct, Organic Search, Referral, Unassigned 처럼 채널 단위로 묶여서 보인다.
채널을 풀어 실제 도메인 보기
채널로만 묶인 화면에서는 "어느 사이트에서 왔는지"가 안 보인다. 표 제목 옆의 드롭다운(▼)을 눌러 차원을 "세션 소스/매체(Session source / medium)"로 바꾸면, 묶여 있던 Referral이 풀리면서 naver.com / referral, google / organic 같은 실제 출처로 펼쳐진다. 데이터가 새로 생기는 게 아니라 이미 쌓인 데이터를 펼쳐 보는 것이므로, 차원만 바꾸면 지금 바로 확인할 수 있다.
이때 accounts.google.com / referral 처럼 구글 로그인(OAuth) 리다이렉트가 referral로 잡히는 경우가 있는데, 이건 실제 외부 사이트 추천 유입이 아니라 로그인 후 돌아온 트래픽이라 실질적인 홍보 유입과는 구분해서 봐야 한다.
Direct에 묻히는 트래픽과 UTM의 필요성
가장 큰 함정은 Direct다. 주소 직접 입력이나 북마크뿐 아니라, 카카오톡·인스타·유튜브 같은 앱의 인앱 브라우저에서 들어오면 레퍼러가 유실되어 전부 Direct로 묶인다. 그래서 Direct가 크다고 "직접 방문이 많다"고 해석하면 안 되고, "출처를 모르는 트래픽"에 가깝다.
특히 유튜브 채널 홈에 링크를 걸어두면, PC 웹 브라우저에서는 youtube.com / referral 로 잡히지만 모바일 유튜브 앱에서는 레퍼러가 안 넘어와 Direct로 새는 경우가 많다. 이 한계를 해결하는 방법이 링크에 UTM 파라미터를 직접 붙이는 것이다. UTM은 앱이든 웹이든 레퍼러 유실과 무관하게 출처를 정확히 전달한다.
UTM 링크 만들기
UTM은 정해진 표준 파라미터를 주소 뒤에 이어붙이는 것이다. 유튜브 채널 홈 링크라면 다음과 같이 만든다.
https://naon.ytylab.com/?utm_source=youtube&utm_medium=social&utm_campaign=channel_home
여기서 utm_source는 출처(youtube), utm_medium은 매체(social), utm_campaign은 본인이 구분하려는 캠페인 이름이다. 이렇게 만들면 GA4에서 youtube / social 로 깔끔하게 분류된다.
직접 문자열을 이어붙여도 되지만, 한글이나 공백이 들어가면 깨질 수 있어 코드로 만들 때는 URL 인코딩을 처리해주는 도구를 쓰는 게 안전하다.
function buildUTM(baseUrl, params) {
const url = new URL(baseUrl);
Object.entries(params).forEach(([k, v]) => {
if (v) url.searchParams.set(`utm_${k}`, v);
});
return url.toString();
}
손으로 한 번만 만들 거라면 코드도 필요 없고, 구글이 제공하는 Campaign URL Builder의 WEB 탭에 website URL, campaign source, campaign medium, campaign name만 채우면 같은 결과가 나온다. 이 빌더는 어디 등록하거나 저장하는 게 아니라, 입력값을 조립해 UTM 주소 문자열을 만들어주는 도구일 뿐이다.
단축 URL과 커스텀 도메인
UTM을 붙이면 링크가 길고 지저분해진다. 유튜브처럼 사람 눈에 노출되는 자리에는 Short.io 같은 단축 서비스로 감싸면 깔끔하다. 중요한 점은 단축 URL이 UTM을 대체하는 게 아니라는 것이다. UTM 붙은 긴 주소를 단축 링크의 도착지(Destination)로 등록해두고, 사용자에게는 짧은 링크만 노출하는 구조다.
유튜브 홈: https://go.ytylab.com/s5hdNU ← 사용자가 보고 누름
↓ 리디렉션
도착: https://naon.ytylab.com/?utm_source=youtube&utm_medium=social&utm_campaign=channel_home ← GA가 읽음
GA4는 사용자가 최종 도착한 주소의 UTM을 읽으므로, 단축을 해도 추적은 그대로 살아 있다. 따라서 단축 링크 뒤에 UTM을 붙이는 게 아니라, 단축 링크가 가리키는 도착지를 UTM 주소로 설정해야 한다.
공용 단축 도메인(short.gy 등)보다 본인 브랜드 도메인(go.ytylab.com)을 쓰는 게 좋다. 브랜드가 노출되어 신뢰감이 높고, 공용 도메인이 가끔 스팸으로 분류되거나 차단되는 위험을 피할 수 있기 때문이다.
커스텀 도메인 DNS 연결과 SSL
커스텀 도메인을 연결하려면 안 쓰는 서브도메인(go.ytylab.com)을 떼서 단축 서비스에 등록하고, 단축 서비스가 알려주는 CNAME 값을 DNS 관리 콘솔에 넣으면 된다. DNSZi 같은 무료 DNS 관리 서비스라면 호스트에 go, 타입에 CNAME, 값에 서비스가 지정한 주소를 입력하고 저장한다.
호스트(이름): go
타입: CNAME
값: (단축 서비스가 알려준 값)
저장 후 DNS 전파와 SSL 인증서 발급에 몇 분에서 몇 시간이 걸린다. 단축 서비스가 도메인을 인식하면 무료 SSL(Let's Encrypt)을 자동 발급하므로, 실제로 https로 접속이 되면 인증서는 동작하는 것이다. 대시보드에 "보류 중"으로 떠 있어도 실제 https 접속이 되면 기능적으로는 정상이며, 상태 표시는 시간이 지나면 갱신된다. 마지막으로 도메인의 리디렉션 설정에서 HTTPS 정책을 "프로토콜 유지"에서 "HTTPS 강제"로 바꿔두면 http로 들어와도 자동으로 https로 넘어간다.
안드로이드 앱(Play) 설치 추적
웹뿐 아니라 안드로이드 앱 설치도 같은 방식으로 추적할 수 있다. Campaign URL Builder의 PLAY 탭은 플레이 스토어 설치 링크에 캠페인 정보를 붙이는 용도다. 결과는 웹처럼 ?utm_... 이 붙은 사이트 주소가 아니라, 플레이 스토어 URL 뒤에 referrer 파라미터가 인코딩되어 붙는 형태다.
https://play.google.com/store/apps/details?id=com.example.app&referrer=utm_source%3Dyoutube%26utm_medium%3Dsocial
이 추적이 동작하려면 앱에 Google Play Install Referrer 라이브러리가 들어가 있어야 하며, Firebase Analytics SDK가 있으면 상당 부분 자동으로 잡아준다. 설치 후 첫 실행 때 referrer를 한 번 읽으므로, 테스트할 때는 앱을 완전히 삭제하고 그 링크로 새로 설치해야 값이 잡힌다.
마무리
전체 흐름을 정리하면 이렇다. URL 빌더로 UTM 주소를 만들고, Short.io에 커스텀 도메인을 연결해 그 UTM 주소를 도착지로 등록한 뒤, 짧은 링크를 유튜브 홈에 붙인다. 며칠 뒤 GA4 트래픽 획득 보고서에서 youtube / social 이 잡히는지 확인하면 추적 세팅이 완성된다. URL 빌더는 만들기, 단축 서비스는 보관·단축·클릭 추적, GA4는 출처 분석으로 각자 역할이 다르다는 점만 기억하면 헷갈리지 않는다.