# 교차 도메인 설정

본 사이트와 결제·멤버십·하위 브랜드 사이트가 별도 도메인일 때 한 사용자를 같은 사용자/세션으로 잇는 GA4 ‘교차 도메인’ 설정 절차와 지표 변화 예시.

- 카테고리: GA4 기본 환경 설정
- 소요 시간: 약 10분
- 난이도: 중간
- 업데이트: 2026.05.09
- 원문: /wiki/playbook/ga4-setup-checklist/how-to-set-up-cross-domain-measurement-in-ga4

## 목차

- [이 문서의 목적](#purpose)
- [교차 도메인이란?](#what)
- [어떤 경우에 사용하나요?](#when)
- [한 것 vs 안 한 것](#impact)
- [GA4에 등록하는 방법](#how)
- [1단계 · 데이터 스트림](#step-1)
- [2단계 · 웹 스트림 진입](#step-2)
- [3단계 · 태그 설정 구성](#step-3)
- [4단계 · 도메인 구성](#step-4)
- [5단계 · 패널 진입](#step-5)
- [6단계 · 조건 추가 + 입력](#step-6)
- [7단계 · 저장](#step-7)
- [제대로 적용됐는지 확인](#verify)
- [자주 묻는 질문](#faq)

본 가이드는 [**GA4 기본 환경 설정**](/wiki/playbook/ga4-setup-checklist)에 포함되는 항목으로, 본 사이트와 결제·멤버십·하위 브랜드처럼 **여러 도메인을 오가는 한 사용자**를 GA4가 같은 사용자/세션으로 잇도록 하는 ‘교차 도메인’ 설정과 그 효과를 안내합니다.

## 교차 도메인이란?

GA4는 **`_ga` 쿠키**로 사용자를 식별합니다. 이 쿠키는 도메인마다 별도로 저장되기 때문에, 사용자가 `shop.com`에서 `pay.com`으로 이동하면 `pay.com`은 `shop.com`의 쿠키를 읽지 못합니다. 결과적으로 GA4는 같은 사람을 두 명의 신규 사용자로 인식하고, 두 개의 끊어진 세션으로 기록합니다.

**교차 도메인 설정**은 GA4 태그가 도메인 간 이동 순간 URL에 `?_gl=...` 매개변수를 자동으로 끼워 넣어, 도착 도메인에서 `_ga` 쿠키를 동일한 ID로 다시 만들도록 하는 메커니즘입니다. 그래서 GA4가 “같은 사람의 같은 세션”으로 이어붙일 수 있게 됩니다.

> **팁**
>
> **‘서브도메인’과는 다릅니다.** `shop.example.com`과`pay.example.com`처럼**같은 root domain**의 서브도메인은 GA4 기본 설정만으로도 같은 사용자로 인식됩니다(쿠키가 root domain 단위로 저장되기 때문). 교차 도메인 설정은`shop-a.com`↔`pay-b.kr`처럼**root가 다른 도메인**사이에서만 필요합니다.

## 어떤 경우에 사용하나요?

한 광고주의 흐름이 **두 개 이상의 root 도메인**을 가로지를 때 모두 해당됩니다. 자주 나오는 케이스:

- **본 사이트 + 결제 도메인** — 결제 모듈이 광고주의 별도 도메인에서 운영되는 경우(외부 PG가 아니라 광고주가 직접 운영하는 결제 사이트).
- **본 사이트 + 멤버십·계열사 사이트** — 같은 회사의 다른 브랜드가 별도 도메인이고 두 사이트를 한 GA4 속성으로 측정하는 경우.
- **본 사이트 + 모바일 웹 별도 도메인** — 일부 쇼핑몰은 PC와 모바일을 다른 도메인으로 운영(예: `example.com`과 `m.example.co.kr`).
- **이벤트/캠페인 랜딩 페이지가 별도 도메인** — 광고 캠페인용으로 `event.example.com`을 띄우고 본 사이트로 이동시키는 흐름.

외부 PG(이니시스·페이코 등) 같은 **광고주가 통제 못 하는 도메인**은 교차 도메인이 아니라 [소스/매체 레퍼럴 제외](/wiki/playbook/ga4-setup-checklist/how-to-exclude-referrals-in-ga4)로 처리합니다. 두 설정은 역할이 다르며 보완적으로 사용합니다.

## 설정 한 것 vs 안 한 것 — 지표 변화 예시

한 명의 실제 사용자가 다음과 같은 흐름으로 움직였다고 가정합니다.

1. 네이버 검색 광고 클릭 → `shop-a.com` 진입
2. 상품 장바구니에 담은 후 결제로 이동 → `pay-b.kr`
3. 결제 완료 → `shop-a.com/order/complete`로 돌아옴

같은 한 명이 만든 이 흐름이 GA4에 어떻게 기록되는지 비교합니다.

| 지표 | 교차 도메인 **안 한 경우** | 교차 도메인 **한 경우** |
| --- | --- | --- |
| 총 사용자 수 | **3명**으로 잡힘 — `shop-a.com` 첫 방문 1명 + `pay-b.kr` 신규 1명 + `shop-a.com` 복귀가 또 신규 1명(쿠키 새로 만들어졌으므로) | **1명**으로 정확히 집계 |
| 세션 수 | **3세션**(도메인 이동마다 세션 끊김 + 새 세션 시작) | **1세션**(동일 사용자의 연속된 흐름) |
| 소스/매체 (구매 전환) | `pay-b.kr / referral`이 가져감 — 광고 채널은 전환을 못 받음 | `naver / cpc`로 정상 귀속 — 원래 광고 성과로 인정 |
| 전환율 계산 | 왜곡(분모 사용자 수가 부풀려져 실제보다 낮게 보임) | 정확 |
| 랜딩 페이지 보고서 | `pay-b.kr/checkout`이 신규 ‘랜딩 페이지’로 잡혀 의미가 흐려짐 | 실제 광고 랜딩(`shop-a.com`)만 랜딩으로 카운트 |
| 사용자 여정/Funnel | 한 사람의 여정이 두 개로 끊겨, ‘구매까지 도달한 사용자’ 분석 자체가 불가능 | 한 사람 시작점부터 구매까지 깔끔히 추적 |

> **주의**
>
> **요약 —**교차 도메인을 안 하면 사용자 수·세션 수가 부풀려지고(흔히 1.5~3배), 전환은 광고 채널이 아닌 자기 도메인의 referral로 가버립니다. 광고비 효율 보고가 통째로 의미를 잃기 때문에, root 도메인이 둘 이상이면 운영 시작 전 반드시 설정해야 합니다.

## GA4에 등록하는 방법

같은 ‘태그 설정 구성’ 안에서 **도메인 구성** 메뉴를 사용합니다.

## 1단계. GA4 → 관리 → 데이터 스트림

대상 GA4 속성 → 좌측 하단 ⚙️ 관리 → 데이터 수집 및 수정 → 데이터 스트림으로 이동합니다.

![GA4 관리 페이지의 데이터 스트림 목록 화면. 좌측 메뉴에 ‘데이터 수집 및 수정 → 데이터 스트림’이 활성화되어 있고, 본문에 ‘허들러스 v4 웹사이트(https://hurdlers.kr)’ 단일 웹 스트림이 한 줄로 표시됨.](/wiki-assets/playbook/how-to-set-up-cross-domain-measurement-in-ga4/01-streams.png)

> **화면 1.** 관리 → 데이터 수집 및 수정 → **데이터 스트림**.

## 2단계. 대상 웹 스트림 클릭

교차 도메인을 적용할 웹 스트림 행을 클릭해 **웹 스트림 세부정보** 슬라이더를 엽니다.

![웹 스트림 세부정보 슬라이더. 상단에 스트림 이름·URL·스트림 ID·측정 ID, 본문에 이벤트 카드와 ‘Google 태그(태그 설정 구성·연결된 사이트 태그 관리·태그 안내 보기)’ 카드가 보임.](/wiki-assets/playbook/how-to-set-up-cross-domain-measurement-in-ga4/02-stream-detail.png)

> **화면 2.** 하단 **Google 태그** 카드의 **태그 설정 구성**이 다음 진입점.

## 3단계. ‘Google 태그’ 카드 → ‘태그 설정 구성’

슬라이더 하단 **Google 태그** 카드의 태그 설정 구성을 클릭합니다. **Google 태그** 슬라이더가 추가로 열립니다.

![Google 태그 슬라이더 진입 화면. 상단 ‘구성/내역/관리자’ 탭, 안내·Google 태그 카드, 하단 ‘설정’ 카드에 자동 이벤트 감지 관리·도메인 구성·자동된 측정 기능 허용 3개 행이 보임.](/wiki-assets/playbook/how-to-set-up-cross-domain-measurement-in-ga4/03-tag-config.png)

> **화면 3.** Google 태그 → **구성** 탭.

## 4단계. ‘도메인 구성’ 클릭

**설정** 카드의 두 번째 행 도메인 구성을 클릭합니다. **‘교차 도메인 측정을 위한 도메인 목록을 지정합니다’** 설명이 붙어 있는 행입니다.

## 5단계. ‘도메인 구성’ 패널 진입

**도메인 구성** 슬라이더가 열립니다. 상단에 “교차 도메인 측정은 웹사이트의 URL에 매개변수를 추가하는 방식으로 작동합니다. 도움이 되지만 일부 사이트에 오류가 발생할 수 있습니다”라는 주의 안내가 표시됩니다(URL에 `?_gl=...`이 붙어 어떤 페이지에선 라우팅 충돌이 일어날 수 있다는 의미). **‘추천 도메인’** 영역에는 이 컨테이너에서 발견된 다른 도메인이 자동 후보로 올라와 있을 수 있습니다.

![도메인 구성 슬라이더의 빈 상태. 상단 노란 안내 박스(교차 도메인 측정 방식 설명), 그 아래 ‘교차 도메인 연결 구성’ 카드 안에 ‘추천 도메인’ 영역과 두 개의 ‘제안 추가’ 칩(blog-hurdlers-fo-vercel.app, hurdlers.kr), ‘다음 조건과 일치하는 도메인이 포함됩니다’ 안내, 좌측 하단에 ‘조건 추가’ 버튼이 표시됨.](/wiki-assets/playbook/how-to-set-up-cross-domain-measurement-in-ga4/05-domain-empty.png)

> **화면 4.** 도메인 구성 — 빈 상태. **제안 추가** 또는 **조건 추가**로 도메인을 등록합니다.

## 6단계. ‘조건 추가’ → 매칭 모드 + 도메인 입력

조건 추가를 누르면 입력 행이 한 줄 늘어납니다. 매칭 모드 셀렉터에서 가장 안전한 **‘다음 값을 포함’**을 선택하고, 우측 칸에 도메인을 입력합니다(예: `shop.hurdlers.kr`, `payment-partner.com`). 추가 도메인이 더 있다면 조건 추가를 다시 눌러 행을 늘립니다.

![‘조건 추가’ 클릭 후 새 행이 추가된 상태. 매칭 모드 셀렉터(‘다음 값을 포함’ 기본값)와 도메인 입력칸이 빈 상태로 노출되며, 좌측 하단에는 ‘조건 추가’ 버튼이 그대로 보임.](/wiki-assets/playbook/how-to-set-up-cross-domain-measurement-in-ga4/06-add-row.png)

> **화면 5.** 조건 추가 — 빈 행 노출.

![도메인 입력칸에 ‘shop.hurdlers.kr’이 입력된 상태. 매칭 모드는 ‘다음 값을 포함’으로 유지, 우측 상단 ‘저장하기’ 버튼이 파란색 활성 상태로 표시됨.](/wiki-assets/playbook/how-to-set-up-cross-domain-measurement-in-ga4/07-fill-domain.png)

> **화면 6.** 도메인 입력. 매칭 모드 ‘포함’이 서브도메인까지 자동 커버하므로 안전.

> **팁**
>
> **이 GA4 속성과 같은 측정 ID가 설치된 도메인만 등록합니다.** 다른 GA4 속성(다른 측정 ID)이 설치된 도메인을 여기에 등록하면 정상 동작하지 않습니다. 양쪽 도메인의 사이트 헤더에**같은 `G-XXXXXXX`**가 들어가 있어야 한다는 점을 먼저 확인해 주세요.

## 7단계. 우측 상단 ‘저장하기’ → 적용 확인

우측 상단 저장하기를 누르면 등록이 완료되어 슬라이더가 닫히고 Google 태그 화면으로 돌아옵니다. 다시 **도메인 구성**으로 들어가면 등록한 도메인이 행으로 보입니다. − 아이콘으로 개별 삭제, 조건 추가로 추가 등록이 가능합니다.

![저장 후 닫힌 도메인 구성 슬라이더 — Google 태그 슬라이더의 ‘구성’ 탭 화면으로 돌아온 상태. 본문 상단 ‘Google 태그에 오신 것을 환영합니다’ 안내, ‘내 Google 태그(허들러스 v4 웹사이트, 측정 ID)’ 카드, 하단 ‘설정’ 카드에 자동 이벤트 감지 관리·도메인 구성·자동된 측정 기능 허용 3개 행이 보임.](/wiki-assets/playbook/how-to-set-up-cross-domain-measurement-in-ga4/08-saved.png)

> **화면 7.** 저장 후 — Google 태그 화면으로 복귀. 도메인 구성에 다시 들어가면 등록된 도메인이 행으로 표시됩니다.

> **완료**
>
> **적용 시점 —**변경은**저장 시점부터 들어오는 트래픽**에 적용됩니다. 사이트에 설치된 Google 태그가 자동으로 새 설정을 받아오므로 별도 코드 수정은 필요 없습니다.

## 제대로 적용됐는지 확인

설정 후 한 도메인에서 다른 도메인으로 이동하는 링크를 직접 클릭해 보고, 도착 페이지의 URL에 **`?_gl=...`** 파라미터가 자동으로 붙는지 확인합니다. 붙어 있으면 정상입니다.

또는 [DebugView](/wiki/playbook/ga4-setup-checklist/how-to-check-ga4-tags-with-debugview)에서 두 도메인을 차례로 방문했을 때 동일한 사용자 ID로 묶이는지(같은 ‘디버그 기기’ 카드에 이벤트가 이어 들어오는지)를 확인하면 됩니다.

## 자주 묻는 질문

### 서브도메인도 등록해야 하나요?

아니요. `shop.example.com`·`pay.example.com`처럼 같은 root domain의 서브도메인은 GA4 기본 동작으로 동일 사용자/세션으로 인식됩니다. 별도 등록은 root가 다른 도메인 사이에서만 필요합니다.

### 매칭 모드 ‘완전 일치’와 ‘포함’ 중 무엇이 안전한가요?

**‘다음 값을 포함(Contains)’**이 안전합니다. 예: `example.com`을 ‘포함’으로 등록하면 `www.example.com`·`shop.example.com`·`m.example.com`까지 자동 커버됩니다. ‘완전 일치’로 두면 서브도메인을 따로 추가해야 하므로 누락 위험이 큽니다.

### URL에 붙는 `?_gl=...`은 어떤 부작용이 있나요?

일부 SPA 라우터·서버 사이드 검증 로직이 `_gl` 파라미터를 모르고 ‘잘못된 URL’로 처리해 404나 리디렉트를 일으킬 수 있습니다. 등록 직후 광고주 사이트의 주요 페이지를 한 번 누르면서 도착 페이지가 정상 렌더되는지 점검해 주세요. 문제가 있다면 사이트 측에서 알 수 없는 쿼리 파라미터를 무시하도록 처리하면 됩니다.

### 결제 PG(이니시스·페이코 등)도 여기에 등록하나요?

아니요. 외부 PG 도메인은 광고주가 통제할 수 없고 GA4 태그도 설치되어 있지 않으므로 교차 도메인 대상이 아닙니다. 그쪽은 [소스/매체 레퍼럴 제외](/wiki/playbook/ga4-setup-checklist/how-to-exclude-referrals-in-ga4)로 처리하세요. 두 설정의 역할이 다른 점에 주의해야 합니다.

### 교차 도메인이 적용되어 있는데도 사용자가 두 명으로 잡힙니다.

가능한 원인: ① 두 도메인에 **다른 측정 ID**가 설치되어 있을 때, ② **매칭 모드가 ‘완전 일치’**인데 실제 도메인은 서브가 다를 때(예: `www.example.com`으로 등록했는데 사용자는 `m.example.com`로 진입), ③ Safari ITP·시크릿 모드처럼 **쿠키가 도메인 간 전달되지 못하는 환경**. 1~2번은 등록 점검으로 잡히고, 3번은 브라우저 한계라 일부 손실은 허용해야 합니다.

### 설정 전 과거 데이터도 정리되나요?

아니요. **저장 시점 이후 들어오는 트래픽**부터 적용됩니다. 광고주 인계 보고에 “이 시점 이후 데이터부터 의미가 있다”고 명시해 주세요.

## Navigation

- [전체 플레이북 Markdown sitemap](/wiki/playbook/sitemap.md)

### GA4 기본 환경 설정

- [GA4 기본 환경 설정](/wiki/playbook/ga4-setup-checklist)
- [GA4 데이터 보관 설정](/wiki/playbook/ga4-setup-checklist/how-to-set-ga4-data-retention)
- [GA4 · 서치콘솔 연동하기](/wiki/playbook/ga4-setup-checklist/how-to-link-ga4-with-search-console)
- [GA4 향상된 측정 이벤트 끄기](/wiki/playbook/ga4-setup-checklist/how-to-disable-ga4-enhanced-measurement)
- [소스/매체 레퍼럴 제외](/wiki/playbook/ga4-setup-checklist/how-to-exclude-referrals-in-ga4)
- [IP 제외 설정](/wiki/playbook/ga4-setup-checklist/how-to-exclude-internal-ip-in-ga4)
- [교차 도메인 설정](/wiki/playbook/ga4-setup-checklist/how-to-set-up-cross-domain-measurement-in-ga4) (현재 문서)
- [Google 신호 데이터 수집](/wiki/playbook/ga4-setup-checklist/how-to-enable-google-signals-data-collection)
- [BigQuery 연동](/wiki/playbook/ga4-setup-checklist/how-to-link-ga4-with-bigquery)
- [Google Ads 연동](/wiki/playbook/ga4-setup-checklist/how-to-link-ga4-with-google-ads)
- [Firebase 연동](/wiki/playbook/ga4-setup-checklist/how-to-link-ga4-with-firebase)
- [주요 이벤트 설정](/wiki/playbook/ga4-setup-checklist/how-to-mark-key-events-in-ga4)
- [GA4 기본 태그 설치 확인하기](/wiki/playbook/ga4-setup-checklist/ga4-base-tag-installation-checklist)
- [디버그뷰로 GA4 태그 확인하기](/wiki/playbook/ga4-setup-checklist/how-to-check-ga4-tags-with-debugview)
- [GA4 Debugger 확장으로 태그 확인하기](/wiki/playbook/ga4-setup-checklist/how-to-check-ga4-tags-with-debugger-extension)
