프로젝트/GA4 분석

[GA4 퍼널 분석] Day3-5 (view_item → add_to_cart | Item Category 분석)

조성호 2026. 5. 8. 19:24

가설

상품 상세/상품력 부족

- 특정 상품 카테고리에서 view_item → add_to_cart 전환율이 유독 낮은가?

 

낮은 카테고리

  • 상품 상세 정보 부족
  • 상품 매력 부족
  • 가격 대비 가치 부족
  • 경쟁 상품 대비 약함

1. 상품 카테고리 정보 추출

- item_category 확인

-- 1단계: 상품 카테고리 정보 확인
-- 목표:
-- 어떤 카테고리들이 존재하는지 먼저 확인

SELECT
  -- 이벤트명
  event_name,

  -- 상품명
  item.item_name,

  -- 상품 카테고리
  item.item_category,

  -- 가격
  item.price

FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`,

-- items 배열 펼치기
UNNEST(items) AS item

WHERE event_name IN ('view_item', 'add_to_cart')

LIMIT 100;
event_name item_name item_category price
1 view_item Google Mini Kick Ball 2
2 view_item YouTube Iconic Play Pin 8
3 view_item Google Pen Neon Coral 2
4 view_item Google Mini Kick Ball 2
5 view_item Google Leather Strap Hat Blue 17
6 view_item Google Mini Kick Ball 2
7 view_item Android Iconic Hat White 16
8 view_item YouTube Twill Sandwich Cap Black 13
9 view_item Google Leather Strap Hat Black 17
10 view_item YouTube Leather Strap Hat Black 17

 

2. 세션 기준 퍼널 구조화

- 세션별 item_category 기준 viewed / add_to_cart 여부 생성

-- 2단계: 세션 기준 퍼널 구조화 (Item Category)
-- 목표:
-- "각 세션에서 어떤 상품 카테고리를 보고,
-- 장바구니까지 갔는지 확인"

WITH funnel AS (

  SELECT
    -- 사용자 고유 식별자
    user_pseudo_id,

    -- 세션 고유 ID 생성
    -- user_pseudo_id + ga_session_id
    CONCAT(
      user_pseudo_id,
      '-',
      CAST((
        -- event_params 배열 안에서 ga_session_id 추출
        SELECT value.int_value
        FROM UNNEST(event_params)
        WHERE key = 'ga_session_id'
      ) AS STRING)
    ) AS session_id,

    -- 상품 카테고리
    -- NULL 방지를 위해 값 없으면 '(not set)' 처리
    COALESCE(item.item_category, '(not set)') AS item_category,

    -- 해당 세션에서 해당 카테고리 상품 조회 여부
    -- 한 번이라도 view_item 있으면 1
    MAX(CASE WHEN event_name = 'view_item' THEN 1 ELSE 0 END) AS viewed,

    -- 해당 세션에서 해당 카테고리 상품 장바구니 여부
    -- 한 번이라도 add_to_cart 있으면 1
    MAX(CASE WHEN event_name = 'add_to_cart' THEN 1 ELSE 0 END) AS added_to_cart

  -- GA4 원본 이벤트 로그
  FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`,

  -- items 배열 펼치기
  UNNEST(items) AS item

  -- 상품 조회 / 장바구니 이벤트만 사용
  WHERE event_name IN ('view_item', 'add_to_cart')

  -- 세션 + 카테고리 기준 요약
  GROUP BY
    user_pseudo_id,
    session_id,
    item_category
)

-- 중간 결과 확인
SELECT *

FROM funnel

LIMIT 100;
user_pseudo_id session_id item_category viewed added_to_cart
1 11728928.31 11728928.3102991835-8901578253 1 0
2 19665280.53 19665280.5325386306-1719126724 1 0
3 26311660.3 26311660.3005086097-346901164 1 0
4 48865305.82 48865305.8198447356-5114378159 1 0
5 5134655.279 5134655.2786099951-8685273347 Kid's-Infant/ 1 0
6 55245546.49 55245546.4858418112-4569195379 Backpacks/ 1 0
7 7490018063 7490018062.5520925467-6601706250 Home/Campus Collection/ 1 0
8 9115309.32 9115309.3201575284-5957380897 Men's / Unisex 1 0
9 66832424.4 66832424.3990414019-9871456101 Home/Stationery/Stickers/ 1 0
10 1159522.028 1159522.0280721318-4095772158 Lifestyle/Drinkware/ 1 0

 

3. 카테고리별 전환 성과 비교

- item_category별 장바구니 전환율 계산

-- 3단계: Item Category별
-- view_item → add_to_cart 전환율 계산
-- 목표:
-- "어떤 상품 카테고리가 장바구니 전환율이 특히 낮은가?"

WITH funnel AS (

  SELECT
    -- 사용자 고유 식별자
    user_pseudo_id,

    -- 세션 고유 ID
    CONCAT(
      user_pseudo_id,
      '-',
      CAST((
        SELECT value.int_value
        FROM UNNEST(event_params)
        WHERE key = 'ga_session_id'
      ) AS STRING)
    ) AS session_id,

    -- 상품 카테고리
    COALESCE(item.item_category, '(not set)') AS item_category,

    -- 상품 조회 여부
    MAX(CASE WHEN event_name = 'view_item' THEN 1 ELSE 0 END) AS viewed,

    -- 장바구니 여부
    MAX(CASE WHEN event_name = 'add_to_cart' THEN 1 ELSE 0 END) AS added_to_cart

  FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`,
  UNNEST(items) AS item

  WHERE event_name IN ('view_item', 'add_to_cart')

  GROUP BY
    user_pseudo_id,
    session_id,
    item_category
)

SELECT

  -- 상품 카테고리
  item_category,

  -- 상품 조회 세션 수
  COUNTIF(viewed = 1) AS view_sessions,

  -- 장바구니 세션 수
  COUNTIF(added_to_cart = 1) AS cart_sessions,

  -- 장바구니 전환율(%)
  ROUND(
    SAFE_DIVIDE(
      COUNTIF(added_to_cart = 1),
      COUNTIF(viewed = 1)
    ) * 100,
    2
  ) AS add_to_cart_rate

FROM funnel

-- 상품 조회가 있었던 세션만 분석
WHERE viewed = 1

-- 카테고리별 집계
GROUP BY item_category

-- 표본 수 너무 작은 카테고리 제외
HAVING view_sessions >= 100

-- 전환율 낮은 순 정렬
ORDER BY add_to_cart_rate ASC;
item_category view_sessions cart_sessions add_to_cart_rate
1 Accessories/ 106 2 1.89
2 Backpacks/ 468 19 4.06
3 Water Bottles/ 161 15 9.32
4 Men's T-Shirts 372 47 12.63
5 Home/Shop by Brand/Google Cloud/ 221 28 12.67
6 Mugs & Tumblers/ 242 31 12.81
7 Bags 2688 356 13.24
8 Home/Shop by Brand/YouTube/ 4754 744 15.65
9 Men's T-Shirts/ 1810 291 16.08
10 Lifestyle/Bags/ 4796 843 17.58
11   4986 909 18.23
12 Eco-Friendly 2189 404 18.46
13 Kids 1212 227 18.73
14 Home/Apparel/ 6548 1252 19.12
15 Home/New/ 5335 1030 19.31
16 New 1499 296 19.75
17 Home/Eco-Friendly/ 3725 740 19.87
18 Android 414 86 20.77
19 Apparel 3191 673 21.09
20 Lifestyle/ 2755 585 21.23
21 Lifestyle 2005 429 21.4
22 Small Goods 3068 666 21.71
23 Home/Shop by Brand/Android/ 874 198 22.65
24 Home/Shop by Brand/ 798 181 22.68
25 Notebooks 746 172 23.06
26 Men's / Unisex 7700 1779 23.1
27 Home/Shop by Brand/Google/ 3234 748 23.13
28 Lifestyle/Small Goods/ 3951 923 23.36
29 Google 2578 606 23.51
30 Home/Apparel/Kids/ 2966 731 24.65
31 Home/Apparel/Men's / Unisex/ 13672 3379 24.71
32 Women's 3470 867 24.99
33 Home/Apparel/Women's/ 4778 1200 25.12
34 Home/Stationery/ 2237 603 26.96
35 Stationery 1110 307 27.66
36 Shop by Brand 436 121 27.75
37 Lifestyle/Drinkware/ 5382 1518 28.21
38 Sale 7887 2283 28.95
39 Home/Sale/ 9763 2839 29.08
40 Home/Campus Collection/ 3142 916 29.15
41 Home/Apparel/Socks/ 1018 310 30.45
42 Home/Stationery/Notebooks/ 2010 612 30.45
43 Campus Collection 1529 467 30.54
44 Drinkware 3361 1037 30.85
45 Home/Shop by Brand/#IamRemarkable/ 102 32 31.37
46 Home/Stationery/Stickers/ 1583 514 32.47
47 Writing 413 149 36.08
48 Home/Apparel/Hats/ 6226 2529 40.62
49 Home/Stationery/Writing/ 976 399 40.88

 

전체 결과

표본 수(view_sessions)가 충분한 카테고리 우선

Accessories/ : 106

- 너무 적음 (참고용)

Home/Apparel/Men's / Unisex/ : 13,672

- 매우 중요

 

극단값보다 표본 크고 전환율 차이 큰 카테고리 중심 해석

 

결과1

낮은 전환율 그룹 (상품력 약한 후보)

Bags / T-Shirts / YouTube Brand 계열

  • Bags → 13.24%
  • Men's T-Shirts → 12~16%
  • YouTube Brand → 15.65%

해석

A. 비교 구매 강함

  • 의류/가방은 디자인 비교
  • 가격 민감도

B. 상세 정보 중요

  • 사이즈
  • 소재
  • 디자인

C. 충동구매 낮음

 

결론

Apparel / Bags 계열은 고관여 + 비교 + 상세 설득 필요

 

결과2

높은 전환율 그룹 (상품력 강한 후보)

Sale / Stationery / Hats / Writing

  • Sale → 28~29%
  • Stationery → 27~40%
  • Hats → 40.62%
  • Writing → 36~40%

해석

A. 저관여(쉽게 담음)

B. 가격 부담 낮음

C. 할인/프로모션 효과 큼

특히 Sale → 28~29%으로 가격 민감도 강력

“가격/프로모션이 장바구니 전환에 매우 강한 영향”

 

통합 결론

Price Band: 비쌀수록 낮음

Sale: 할인일수록 높음

따라서 가격 경쟁력 가설 매우 강함

 

상품력 측면

Bags / Apparel 낮음

단순 가격뿐 아니라 상품 상세 설득 구조 필요

  • 후기
  • 사이즈 가이드
  • 착용 이미지
  • 비교 포인트

현재 가장 유력한 view_item → add_to_cart 병목

1순위 : 가격 경쟁력

2순위 : Apparel/Bags 상세 설득력

3순위 : 채널 기대치

 

액션

Apparel / Bags 개선

A.상세페이지 강화

  • 소재
  • 사이즈
  • 후기
  • 이미지

B.가격 할인 / 번들

C.베스트셀러/리뷰 강조

 

Sale / Stationery : 강점 상품군

→ 광고 예산 확대 가능

 

카테고리별 퍼널 분석 결과 Apparel / Bags 계열은 장바구니 전환율이 상대적으로 낮고 Sale / Stationery 계열은 높게 나타나 가격 경쟁력뿐 아니라 고관여 상품군에서의 상세 설득 구조가 주요 개선 포인트임을 확인했음

 

마케팅 전략

A.Sale 상품 랜딩

B.저관여 상품 첫 진입

C.리마케팅으로 Apparel 재공략

 

view_item → add_to_cart 문제 핵심 결론

“광고/검색 유입 → 상품 조회 → 고가/고관여 상품군에서 설득 실패”

 

장바구니 전환 저하는 단순 UX보다 가격 경쟁력과 Apparel/Bags 중심 고관여 상품군의 설득 구조 부족에서 발생할 가능성이 높음