ChatGPT Search, Perplexity, Google AI Overviews가 생성하는 유입은 UTM 파라미터 없이 도달하거나 레퍼러가 direct로 분류돼 GA4 기본 보고서에서 소멸한다. 이 단절은 통계 오차가 아니라 채널 투자 판단을 왜곡하는 구조 문제다. GEO에 리소스를 투입했을 때 ROI를 측정하려면, 레퍼러 파싱·커스텀 채널 그루핑·서버사이드 태깅을 조합한 전용 어트리뷰션 레이어가 필요하다.
AI 검색 트래픽 식별 — 레퍼러 패턴과 다크 트래픽 분리
작동 원리
AI 검색 엔진별 레퍼러 헤더 동작은 다음과 같이 분기한다.
- ChatGPT Search: 데스크톱 웹에서
Referer: https://chatgpt.com/전송. iOS 앱·임베디드 웹뷰에서는 레퍼러 누락 →direct분류. — 왜: 앱 컨텍스트에서 브라우저 레퍼러 정책 미적용. — 어떻게: 서버 액세스 로그에 레퍼러를 기록해 세션 단위 교차 확인한다. - Perplexity:
Referer: https://www.perplexity.ai/일관 전송. — 왜: URL 리다이렉트 방식이라 레퍼러 보존. — 어떻게: GA4 소스 필터에서perplexity.ai를 별도 채널로 분리한다. - Google AI Overviews: 일반 오가닉과 레퍼러(
google.com) 동일 → 기본 분리 불가. — 왜: AIO 클릭이 같은 SERP 페이지에서 발생. — 어떻게: Google Search Console의 AI Overview 필터로 클릭 데이터를 분리한 뒤 GA4와 날짜·페이지 키로 조인한다.
구현 방법 — Nginx 액세스 로그 레퍼러 기록
# /etc/nginx/nginx.conf
log_format ai_referrer '$remote_addr [$time_iso8601] '
'"$request" $status '
'"$http_referer" "$http_user_agent"';
# /etc/nginx/conf.d/site.conf
server {
listen 443 ssl;
server_name example.com;
access_log /var/log/nginx/ai_referrer.log ai_referrer;
}
로그를 일 1회 집계해 http_referer가 chatgpt.com, perplexity.ai, copilot.microsoft.com, you.com인 세션을 AI 채널 버킷으로 적재한다. 이 집계가 GA4 채널 분류의 교차 검증 기준선이 된다.
GA4 커스텀 채널 그루핑 — AI 검색 독립 채널 정의
작동 원리
GA4 기본 채널 그룹은 AI 검색을 독립 채널로 처리하지 않는다. Perplexity 유입은 Referral로, ChatGPT 레퍼러 누락 유입은 Direct로 분산 귀속된다. Admin → Channel Groups에서 커스텀 정의를 앞 순위로 배치해야 한다.
구현 방법
- 조건 정의:
Source exactly matches chatgpt.com OR Source exactly matches perplexity.ai OR Source contains copilot.microsoft.com으로 "AI Search" 채널 생성. — 왜: 기본 Organic Search·Referral 규칙보다 앞에 배치해야 GA4가 우선 적용. — 어떻게: Channel Groups 편집 화면에서 규칙 드래그로 순서 조정한다. - UTM 오버라이드: 자사 콘텐츠에서 AI 도구 인용 가능 URL에
?utm_source=ai_citation&utm_medium=ai_search&utm_campaign=geo삽입. — 왜: GA4에서 UTM이 레퍼러보다 우선권을 가짐. — 어떻게: llms.txt나 JSON-LDurl필드에 UTM을 포함하면 ChatGPT Search가 원본 URL을 유지해 파라미터가 보존된다.
어트리뷰션 모델 선택 — AI 검색의 탐색적 특성 반영
작동 원리
AI 검색 사용자는 "A vs B 비교"·"추천 서비스" 같은 탐색 단계 쿼리에서 브랜드를 처음 접하고 수일 후 직접 방문해 전환하는 패턴이 많다. 라스트 클릭 모델에서는 AI 채널 기여가 0으로 계산된다.
| 모델 | AI 검색 기여 반영 | 적합 시나리오 | 한계 |
|---|---|---|---|
| 라스트 클릭 | 매우 낮음 | 단순 직접 전환 캠페인 | AI 탐색→직접 전환 미포착 |
| 선형(Linear) | 중간 | 멀티터치 분석 초기 단계 | 탐색 단계 과소평가 |
| 위치 기반(40/20/40) | 중간 | 신규 채널 기여 탐색 단계 | 중간 AI 터치 과소평가 |
| 데이터 기반(DDA) | 높음 — 실제 기여 가중치 학습 | 전환 1,000건/월 이상 | AI 트래픽 볼륨 부족 시 편향 |
구현 방법 — BigQuery 전환 기여 분석 쿼리
-- GA4 BigQuery Export: AI 검색 채널 전환·매출 집계
SELECT
traffic_source.source AS source,
traffic_source.medium AS medium,
COUNT(DISTINCT user_pseudo_id) AS users,
ROUND(SUM(ecommerce.purchase_revenue), 2) AS revenue_krw
FROM
`your_project.analytics_XXXXXXXX.events_*`
WHERE
_TABLE_SUFFIX BETWEEN '20260101' AND '20260630'
AND event_name = 'purchase'
AND traffic_source.source IN (
'chatgpt.com',
'perplexity.ai',
'copilot.microsoft.com'
)
GROUP BY 1, 2
ORDER BY revenue_krw DESC;
traffic_source는 세션 첫 접점 기준 어트리뷰션이다. 90일 윈도우를 적용하려면 events_*의 날짜 범위를 전환일로부터 -90일로 확장하고 세션 ID로 조인해 첫 AI 터치 여부를 판별한다.
서버사이드 레퍼러 스티킹 — 클라이언트 블로킹 우회
작동 원리
광고 차단기·프라이버시 브라우저(Brave, Firefox Strict)는 GA4 클라이언트 태그를 블로킹해 AI 인용 트래픽이 이중으로 소멸한다. 서버에서 레퍼러를 1st-party 쿠키로 스티킹해 세션 내 레퍼러 손실을 방지해야 한다.
구현 방법
- 레퍼러 세션 쿠키: 첫 요청 시 서버 미들웨어에서
Referer헤더를 파싱해__ai_ref쿠키에 저장. — 왜: SPA 라우팅·리다이렉트 체인에서 레퍼러가 중간에 끊기는 현상 방지. — 어떻게:HttpOnly; SameSite=Lax; Max-Age=1800으로 30분 만료 설정. - Measurement Protocol 직접 전송: 서버에서
__ai_ref쿠키를 읽어campaign_source를 AI 채널로 설정한 뒤 GA4 Measurement Protocol로 이벤트 전송. — 왜: 클라이언트 블로킹과 무관하게 서버→GA4 직접 연결. — 어떻게:POST https://www.google-analytics.com/mp/collect에session_id·engagement_time_msec포함 필수(누락 시 세션 미집계).
흔한 함정 — "Direct 트래픽 급증 = 브랜드 인지도 향상" 오해
GA4에서 Direct / None 세션이 급증하면 북마크 재방문이나 오프라인 캠페인 효과로 해석하는 경우가 많다. 그러나 ChatGPT iOS·Claude.ai·Perplexity 모바일처럼 레퍼러를 전송하지 않는 AI 클라이언트가 증가하면서 Direct 버킷에 AI 인용 트래픽이 혼입된다. 올바른 처리법은 세 신호를 교차 검증하는 것이다: (1) Direct 세션의 신규 사용자 비율이 높으면 AI 혼입 가능성 증가(재방문이면 낮음), (2) 랜딩 페이지 분포가 특정 정보성 페이지에 집중되는지 확인(AI는 인용 페이지로 집중 유입), (3) Search Console AI Overview 클릭 일자와 Direct 급증 일자의 상관을 일간 단위로 비교. 세 신호가 동시에 비정상이면 서버 Nginx 레퍼러 로그로 사실 확인한다.
AI 검색 레퍼러가 Referral로 잡히는데 별도 채널 분리가 꼭 필요한가?
GA4 기본 Referral 버킷에 두면 도메인 수준으로는 구분되지만 두 가지 문제가 생긴다. 첫째, 파트너 링크·디렉토리 링크와 섞여 AI 기여를 순수 분리할 수 없다. 둘째, AI 채널 고유의 긴 어트리뷰션 윈도우(탐색→전환 지연)를 적용하려면 채널 그룹 기반 맞춤 전환 분석이 필요하다. GA4 Admin → Channel Groups에서 "AI Search" 커스텀 그룹을 정의하면 이후 모든 탐색 보고서에서 AI 채널을 독립 축으로 분석할 수 있다.
GA4 어트리뷰션 윈도우를 바꾸면 과거 데이터도 소급 적용되나?
그렇다. GA4의 Attribution Settings 변경은 히스토리 데이터에 소급 적용된다. 따라서 윈도우를 바꾸기 전 BigQuery 원시 이벤트 데이터를 별도 테이블에 스냅샷으로 보존하고, 30일·60일·90일 세 버전을 BigQuery에서 직접 계산해 자사 전환 사이클에 맞는 윈도우를 결정한 뒤 GA4에 적용하는 순서를 권장한다. 이렇게 하면 윈도우 변경 전후 기여 차이를 정량적으로 비교할 수 있다.
참고 자료
이 글의 권고는 아래 공식 문서·연구를 근거로 합니다.