✅ 개요
많은 웹 서비스 운영자들은 검색바 UI를 통해 검색되는 내부 검색어(키워드)가 궁금할 수 있습니다.
사용자가 웹사이트 상에서 검색하는 내용을 파악하는 것도 마케팅에서 매우 중요하기 때문입니다.
GA4에서 내부 검색어를 수집할 때, 잘못된 변수 처리로 인해 (not set)
또는 "unknown"
이라는 쓸모없는 데이터가 쌓이는 경우가 많습니다.
이번 글에서는 search
파라미터와 URL 경로(/search/키워드
)에서 유입된 실제 검색어만 GA4로 정확히 전송하는 방법을 설명합니다.
파라미터는 사이트에 따라 q, query, term 등으로 다양할 수 있으며 맞춰서 쓰시면 됩니다.
www.example.com/?term=”키워드” 이런 형태입니다.
여기에서 term을 찾아야합니다.
🔍 1. 기본 구조 이해
예시에서는 내부 검색이 두 가지 방식으로 이뤄집니다.
하나의 도메인에 RESTful URL과 POST URL을 동시에 쓰는 경우를 말하는 것입니다.
검색 방식 | 추출 방법 |
---|---|
검색 방법 1 | search 쿼리 파라미터 |
검색 방법 2 | URL 경로 마지막 segment |
🔧 2. GTM에서 변수 3개 생성
① Inner_keyword
변수명 | 유형 | 역할 |
---|---|---|
inner_keyword | 맞춤 자바스크립트 | 쿼리 파라미터 기반 검색어 추출 |
function() {
function getQueryParam(param) {
var queryString = window.location.search;
var params = new URLSearchParams(queryString);
return params.get(param);
}
var raw = getQueryParam("search");
if (!raw) return "unknown";
try {
return decodeURIComponent(decodeURIComponent(raw));
} catch (e) {
return "decode_failed";
}
}
② inner_keyword_total
변수명 | 유형 | 역할 |
---|---|---|
inner_keyword_total | 맞춤 자바스크립트 | URL 경로 기반 검색어 추출 |
function() {
try {
var path = window.location.pathname;
var segments = path.split('/').filter(Boolean);
var last = segments[segments.length - 1];
return decodeURIComponent(last);
} catch(e) {
return "decode_failed";
}
}
③ inner_keyword_final
– 최종 통합 변수
변수명 | 유형 | 역할 |
---|---|---|
inner_keyword_final | 맞춤 자바스크립트 | 유효한 값만 골라 반환 |
function() {
var keyword = {{inner_keyword}};
var keyword_total = {{inner_keyword_total}};
function isValid(value) {
return typeof value === 'string' &&
value.trim() !== '' &&
value.toLowerCase() !== 'unknown' &&
value.toLowerCase() !== 'null';
}
if (isValid(keyword)) return keyword.trim();
if (isValid(keyword_total)) return keyword_total.trim();
return undefined; // 전송되지 않도록
}
📤 3. GA4 이벤트 태그 설정
설정 항목 | 값 |
---|---|
이벤트 이름 | inner_keyword |
매개변수 | inner_keyword = {{inner_keyword_final}} |
트리거 조건 | 검색 페이지 or inner_keyword_final ≠ undefined |
추천 트리거 조건:
- Trigger Type: Page View
- 조건:
Page Path contains /search/
inner_keyword_final does not equal undefined
📈 4. GA4 Custom Dimension 등록
- GA4 Admin → Custom Definitions
- Create Custom Dimension
- 설정
항목 | 값 |
---|---|
이름 | inner_keyword |
범위 | Event |
매개변수 | inner_keyword |
🧪 5. 결과 확인
- 디버그 보기 →
inner_keyword
이벤트가 유효한 검색어로만 수집되는지 확인 - Looker Studio에서
inner_keyword
기준 차트 생성 unknown
없이 깔끔한 키워드 기반 분석 가능
🧠 마무리 팁
"unknown"
을 의도적으로 GA4에 보내는 대신undefined
로 처리하면 GA에 아예 파라미터가 포함되지 않아 더 깔끔한 데이터 수집이 가능합니다.- 이 방식은 모든 “혼합 검색 구조”를 쓰는 사이트에 응용 가능합니다.
🎁 보너스: 샘플 보고서 구조
검색어 | 이벤트 수 | 유입경로 |
---|---|---|
상품 1 | 122 | naver / organic |
상품 2 | 95 | daum / cpc |
이제부터는 unknown
없는 진짜 검색어 분석이 가능합니다.
GTM과 GA4에서 완전한 데이터 정제의 시작입니다. 🎯