지금 읽는 곳데이터레이어는 왜 필요한가목차
STEP 3 고급·전략 › 3-2. 프로그래매틱 핵심 원리·거시 데이터 분석 › 과목 111 › 레슨 05
데이터 요건 및 데이터레이어(Data Layer) 정비: 웹 단에서 서버 컨테이너로 유저 식별자 데이터를 누실 없이 안전하게 전송하는 통신 스펙 정의
인프라와 도메인이 준비돼도, 웹 페이지가 어떤 데이터를 어떤 구조로 서버 컨테이너에 넘길지 정의돼 있지 않으면 서버 쪽은 받을 데이터가 없습니다. 이 통신 스펙을 정의하는 것이 데이터레이어 정비입니다.
핵심요약
- 데이터레이어는 웹페이지의 데이터를 GTM의 태그·트리거·변수로 전달하기 위한 임시 저장소로, key/value 쌍을 담은 배열(`dataLayer = [{ }]`) 구조다
- 특정 사용자 행동이 발생하면 `push` 명령어로 데이터를 데이터레이어에 삽입하고, GTM은 이 삽입을 감지해 트리거를 발동시킨다
- 서버사이드 구조에서는 이 데이터레이어가 웹 컨테이너를 거쳐 서버 컨테이너로 넘어가므로, 누락 없는 필드 설계가 클라이언트 태깅 때보다 더 중요해진다
- 유저 식별자(로그인 ID, 이메일 해시 등 개인정보에 해당할 수 있는 값)를 다룰 때는 6강·10강에서 다룰 서버 단 가공·마스킹 절차와 맞물려 설계해야 한다
데이터레이어는 왜 필요한가
GTM은 페이지의 URL이나 리퍼러 같은 기본 정보만으로는 "이 사용자가 무엇을 했는지"를 알 수 없습니다. 상품 상세 페이지 조회, 장바구니 추가, 결제 완료처럼 사용자 상호작용에 의존하는 정보는 웹사이트 개발 코드가 직접 GTM에 알려줘야 합니다. 데이터레이어는 이 정보를 GTM이 읽을 수 있는 표준화된 형태(key/value 쌍의 배열)로 전달하는 임시 저장소 역할을 합니다.
예를 들어 사용자가 상품 상세페이지에 들어오면, 웹사이트 코드가 상품ID·이름·카테고리·가격 정보를 담아 dataLayer.push({event: 'view_item', ...}) 형태로 삽입합니다. GTM은 데이터레이어에 새 객체가 추가되는 순간을 감지하고, 이 이벤트에 연결된 트리거를 발동시켜 태그를 실행합니다.
서버사이드 구조에서 왜 이 설계가 더 중요해지나
클라이언트 사이드 태깅만 쓸 때는 데이터레이어에 값 하나가 빠져도 태그 하나가 오작동하는 선에서 끝나는 경우가 많습니다. 하지만 서버사이드 구조에서는 웹 컨테이너가 이 데이터레이어 값을 서버 컨테이너로 전달하고, 서버 컨테이너는 그 값을 받아 GA4·구글 애즈·메타 등 여러 목적지로 다시 가공해 보냅니다. 즉 데이터레이어 단계에서 값이 누락되면, 그 누락이 하나의 매체가 아니라 서버가 연결된 모든 매체로 동시에 전파됩니다. 특히 유저를 식별하는 값(로그인 사용자 ID, 해시 처리된 이메일 등)이 여기서 빠지면, 앞으로 다룰 쿠키 수명 연장이나 서버-클라이언트 비교 검증(7강·11강) 자체가 성립하지 않습니다.
어떤 필드를 표준으로 정해둬야 하나
실무에서 데이터레이어 설계는 이벤트마다 필요한 필드를 미리 정의한 스펙 문서로 관리하는 것이 안전합니다. 최소한 다음 세 층은 구분해서 설계하는 편이 유지보수에 유리합니다. 첫째, 이벤트 자체를 식별하는 값(이벤트명, 발생 시각, 고유 이벤트 ID) — 이벤트 ID는 나중에 클라이언트·서버 양쪽에서 같은 이벤트가 중복 집계되지 않도록 중복 제거(dedup)에 쓰입니다. 둘째, 사용자를 식별하는 값(로그인 여부, 사용자 ID, 필요시 해시 처리된 이메일·전화번호) — 이 값들은 개인정보에 해당할 수 있어 10강에서 다룰 마스킹 규칙과 함께 설계해야 합니다. 셋째, 이벤트의 맥락 값(상품 정보, 결제 금액, 캠페인 파라미터 등 비즈니스 로직에 필요한 나머지 값).
개발팀과 협업할 때 확인해야 할 것
데이터레이어 설계는 마케팅·분석 담당자 혼자 결정할 수 없고, 실제 코드에 push 로직을 넣는 개발팀과의 협업이 필수입니다. 이때 확인해야 할 것은 크게 두 가지입니다. 하나는 페이지 로드 시점과 push 시점의 순서 — GTM 트리거가 데이터레이어 값을 읽기 전에 push가 먼저 일어나야 값을 놓치지 않습니다. 다른 하나는 단일 페이지 애플리케이션(SPA)처럼 실제 새로고침 없이 화면이 전환되는 구조에서는 표준 페이지뷰 트리거만으로 이벤트가 누락되거나 중복될 수 있어, 특정 버튼 클릭이나 API 응답 시점에 맞춰 push 시점을 다시 설계해야 하는 경우가 많다는 점입니다.
데이터레이어 스펙 문서는 누가 관리해야 하나
데이터레이어 필드 목록은 한 번 정의하고 끝나는 것이 아니라, 웹사이트 개편·신규 기능 출시마다 계속 바뀌는 대상입니다. 이 스펙을 마케팅팀 혼자 문서로만 관리하면 개발팀의 실제 코드 변경과 어긋나기 쉽고, 반대로 개발팀만 관리하면 어떤 필드가 왜 필요한지(예: 이 필드가 빠지면 6강의 서버 태그 매핑이 깨진다는 맥락)를 놓치기 쉽습니다. 실무에서는 이 스펙 문서를 마케팅·분석·개발이 공동으로 접근하는 공유 문서(위키, 스프레드시트 등)로 관리하고, 웹사이트 변경 배포 전에 데이터레이어 영향 여부를 체크리스트 항목으로 넣어두는 방식이 누락 사고를 줄이는 데 효과적입니다.
값이 비어 있는 경우와 값이 아예 없는 경우를 구분해야 한다
데이터레이어 설계에서 자주 생기는 혼동은 "필드가 비어 있는 것"과 "필드 자체가 없는 것"을 같은 문제로 취급하는 것입니다. 예를 들어 비회원 사용자의 경우 사용자 ID 필드가 빈 값("")으로 명시적으로 들어가는 것과, 그 필드 자체가 데이터레이어 객체에서 통째로 빠지는 것은 서버 컨테이너가 이를 처리하는 방식이 다를 수 있습니다. 스펙 문서에는 "이 필드는 값이 없을 때 빈 문자열로 보낼지, 필드 자체를 생략할지"를 명시적으로 정의해두는 것이 서버 단 파싱 오류를 예방하는 데 도움이 됩니다.