애널리틱스 추적: 개인정보 보호 우선 이벤트 수집

이 글은 봇 트래픽을 피하고 개인정보를 존중하면서 사용자 행동을 어떻게 추적하는지 설명합니다.

문제: 사용자 행동 이해하기

우리는 다음을 알아야 합니다:

  • 사용자가 어떤 페이지를 방문하는지

  • 어떤 제품을 조회하는지

  • 트래픽이 어디서 오는지 (Google Ads, 자연 검색, 소셜)

  • 어떤 캠페인이 전환을 이끄는지

하지만 다음은 피해야 합니다:

  • 봇과 크롤러 추적

  • 개인 식별 정보(PII) 저장

  • 개인정보 보호 규정 위반

해결책: 클라이언트 측 + 서버 측 추적

클라이언트 측: JavaScript 추적

방문자 ID: 쿠키에 저장된 무작위 ID (365일)

세션 ID: sessionStorage에 저장된 무작위 ID (브라우저 닫힐 때까지)

캠페인 매개변수: URL에서 추출하여 sessionStorage에 저장

추적 매개변수:

  • gclid - Google 클릭 ID (검색 광고)

  • gbraid - Google Ads 클릭 ID (쇼핑 광고)

  • wbraid - Google Ads 클릭 ID (iOS)

  • fbclid - Facebook 클릭 ID

  • srsltid - Google 자연 검색 결과 ID

  • utm_source, utm_medium, utm_campaign, utm_term, utm_content

저장: WhatsApp/전화 클릭 귀속을 위해 매개변수를 쿠키에 저장 (30분)

서버 측: 정보 보강

서버는 다음 정보로 이벤트를 보강합니다:

GeoIP 데이터: IP 주소로부터 국가, 지역, 도시

User-Agent 파싱: 브라우저, OS, 기기 유형

타임스탬프: 서버 시간 (UTC)

봇 탐지: 알려진 봇 User-Agent 필터링

이벤트 유형

페이지 뷰: 사용자가 페이지 방문

제품 뷰: 사용자가 제품 페이지 조회

장바구니 추가: 사용자가 제품을 장바구니에 추가

결제 시작: 사용자가 결제 시작

구매 완료: 사용자가 구매 완료

WhatsApp 클릭: 사용자가 WhatsApp 버튼 클릭

전화 클릭: 사용자가 전화번호 클릭

데이터 흐름

sequenceDiagram
    participant User
    participant JS as JavaScript
    participant API as /api/analytics
    participant Firehose as Kinesis Firehose
    participant S3
    
    User->>JS: 페이지 방문
    JS->>JS: URL 매개변수 추출
(gclid, utm_* 등) JS->>JS: sessionStorage에 저장 JS->>API: POST 이벤트 + 매개변수 API->>API: GeoIP로 정보 보강 API->>API: User-Agent 파싱 API->>API: 봇 필터링 API->>Firehose: 보강된 이벤트 전송 Firehose->>S3: 애널리틱스 버킷에 저장

봇 탐지

다중 신호를 사용하여 봇 트래픽을 필터링합니다:

User-Agent 패턴: 알려진 봇 문자열 (Googlebot, Bingbot 등)

행동 패턴: 너무 빠르거나, 너무 많은 요청

JavaScript 누락: 봇은 종종 JS를 실행하지 않음

제외 쿠키: tv_exclude=true 설정 시 모든 추적 중지

개인정보 보호

PII 없음: 이름, 이메일, 전화번호 절대 저장 안 함

데이터 보존: 이벤트는 30일 후 삭제

조건부 픽셀 로딩

관련 있을 때만 추적 픽셀을 로드합니다:

Google Ads 픽셀: gclid, gbraid, wbraid, srsltid가 있을 때만

LinkedIn 픽셀: li_fat_id가 있을 때만

장점: 페이지 로드 속도 향상, 추적 오버헤드 감소

트래픽 소스 탐지

URL 매개변수로부터 트래픽 소스를 탐지합니다:

Google Ads: gclid, gbraid, wbraid → utm_source=google_ads

Google 자연 검색: srsltid → utm_source=google_search

전환 추적

퍼널을 통해 전환을 추적합니다:

제품 뷰 → 장바구니 추가 → 결제 시작 → 구매 완료

각 단계는 다음을 포함합니다:

  • 방문자 ID (귀속을 위해)

  • 세션 ID (세션 분석을 위해)

  • 캠페인 매개변수 (ROI 계산을 위해)

  • 제품 SKU (제품 분석을 위해)

리드 터치 추적

사용자가 연락할 때 (WhatsApp, 전화, 이메일) 다음을 캡처합니다:

연락 방법: WhatsApp, 전화, 이메일

캠페인 매개변수: 쿠키에서 (30분 창)

제품 컨텍스트: 어떤 제품 페이지에 있었는지

장점: 오프라인 전환을 온라인 캠페인에 귀속

저장소

이벤트는 Kinesis Firehose를 통해 S3에 저장됩니다:

형식: JSON 라인 (한 줄에 하나의 이벤트)

파티셔닝: 날짜별 (년/월/일/시간)

압축: Gzip

보존: 30일

쿼리

이벤트는 AWS Athena를 통해 쿼리됩니다:

스키마: Glue Data Catalog에 정의됨

쿼리: S3 데이터에 대한 SQL

사용 사례: 캠페인 ROI, 제품 인기도, 트래픽 소스

참고 자료

기술 개념

AWS 서비스

관련 글

요약

우리의 애널리틱스 시스템은 개인정보를 존중하면서 사용자 행동을 추적합니다:

클라이언트 측:

  • ✅ URL에서 캠페인 매개변수 추출

  • ✅ sessionStorage에 저장 (세션 범위)

  • ✅ 쿠키에 저장 (귀속을 위해 30분)

  • ✅ 이벤트를 API로 전송

서버 측:

  • ✅ GeoIP 및 User-Agent로 정보 보강

  • ✅ 봇 트래픽 필터링

  • ✅ Kinesis Firehose로 전송

  • ✅ S3에 저장 (날짜별 파티셔닝)

개인정보 보호:

  • ✅ PII 저장 안 함

  • ✅ 30일 보존

조건부 로딩:

  • ✅ gclid가 있을 때만 Google Ads 픽셀

  • ✅ li_fat_id가 있을 때만 LinkedIn 픽셀

이 접근 방식은 통찰력과 개인정보 보호 및 성능의 균형을 맞춥니다.


← 문서 인덱스로 돌아가기