무슨 상품이 문제인가?
가설
가격 경쟁력 부족
- 비싼 상품일수록 상품 조회 후 장바구니 전환이 낮은가?
1. 상품 정보 추출
- items 배열에서 price / item_category 추출
SELECT
event_name,
item.item_name,
item.item_category,
item.price,
user_pseudo_id
FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`,
UNNEST(items) AS item
WHERE event_name IN ('view_item', 'add_to_cart')
LIMIT 100;
| 행 | event_name | item_name | item_category | price | user_pseudo_id |
| 1 | view_item | Google Camp Mug Ivory | 13 | 3024189.61 | |
| 2 | view_item | Android Iconic Mug Gray | 17 | 3024189.61 | |
| 3 | add_to_cart | Android Iconic Mug Gray | 17 | 3024189.61 | |
| 4 | add_to_cart | Android Hipster Pin | 8 | 4254791.129 | |
| 5 | view_item | Android Hipster Pin | 8 | 4254791.129 | |
| 6 | view_item | Android Lumberjack Pin | 8 | 4254791.129 | |
| 7 | add_to_cart | Android Geek Pin | 8 | 4254791.129 | |
| 8 | view_item | Android Geek Pin | 8 | 4254791.129 | |
| 9 | add_to_cart | Android Lumberjack Pin | 8 | 4254791.129 | |
| 10 | add_to_cart | Google Camp Mug Ivory | 13 | 7187484.395 | |
2. 가격대별 세션 퍼널 구조화
- 세션별 price_band 기준 viewed/add_to_cart 여부 생성
-- 2단계: 세션 기준 퍼널 구조화 (Price Band)
-- 목표
-- "각 세션에서 어떤 가격대 상품을 보고,
-- 장바구니까지 갔는지 확인"
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,
-- 가격대 구분
CASE
WHEN item.price < 30 THEN 'Low'
WHEN item.price < 100 THEN 'Mid'
ELSE 'High'
END AS price_band,
-- 상품 조회 여부
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_*`,
-- items 배열 펼치기
UNNEST(items) AS item
WHERE event_name IN ('view_item', 'add_to_cart')
-- 세션 + 가격대 기준 요약
GROUP BY
user_pseudo_id,
session_id,
price_band
)
-- 중간 결과 확인
SELECT *
FROM funnel
LIMIT 100;
| 행 | user_pseudo_id | session_id | price_band | viewed | added_to_cart |
| 1 | 1540124.214 | 1540124.2144280285-5349214666 | Low | 1 | 1 |
| 2 | 8628650.754 | 8628650.7543508418-6987184897 | Low | 1 | 1 |
| 3 | 25631840.32 | 25631840.3215691016-3289776494 | Mid | 1 | 0 |
| 4 | 34448390.2 | 34448390.1968678271-9438611847 | Low | 1 | 0 |
| 5 | 59158438.17 | 59158438.1725123945-4678135765 | Low | 1 | 1 |
| 6 | 6386690154 | 6386690153.7750456159-5759170156 | Low | 1 | 1 |
| 7 | 44781397.64 | 44781397.6407575477-9407646567 | Mid | 1 | 0 |
| 8 | 8470764.787 | 8470764.7870904838-3449410268 | High | 1 | 0 |
| 9 | 27443328.67 | 27443328.6742870458-7253400739 | Mid | 1 | 0 |
| 10 | 72181032.07 | 72181032.0710608558-9159318125 | Low | 1 | 0 |
3. 가격대별 전환 성과 비교
- price_band별 장바구니 전환율 계산
-- Price Band(가격대)별
-- view_item → add_to_cart 전환율 분석
-- 목표:
-- "가격대가 높을수록 장바구니 전환율이 낮은가?"
-- → 가격 경쟁력 부족 가설 검증
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,
-- 상품 가격(price)을 기준으로 가격대 분류
-- Low: 저가
-- Mid: 중가
-- High: 고가
CASE
WHEN item.price < 30 THEN 'Low'
WHEN item.price < 100 THEN 'Mid'
ELSE 'High'
END AS price_band,
-- 해당 세션에서 상품 조회(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 배열 펼치기
-- 각 이벤트 안의 상품 정보(item_name, category, price 등) 추출
UNNEST(items) AS item
-- 이번 분석에서는 상품 조회 / 장바구니 이벤트만 사용
WHERE event_name IN ('view_item', 'add_to_cart')
-- 세션 + 가격대 기준으로 묶기
-- 즉, "이 세션에서 이 가격대 상품을 봤는가 / 담았는가"
GROUP BY
user_pseudo_id,
session_id,
price_band
)
SELECT
-- 가격대별 결과
price_band,
-- 상품 조회(view_item)를 한 세션 수
COUNTIF(viewed = 1) AS view_sessions,
-- 장바구니(add_to_cart)를 한 세션 수
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 price_band
-- 전환율 낮은 순 정렬
-- 어떤 가격대가 가장 병목인지 확인
ORDER BY add_to_cart_rate ASC;
| 행 | price_band | view_sessions | cart_sessions | add_to_cart_rate |
| 1 | High | 13511 | 2723 | 20.15 |
| 2 | Mid | 50819 | 11594 | 22.81 |
| 3 | Low | 58704 | 14928 | 25.43 |
결과1
가격이 높아질수록 장바구니 전환율이 낮아짐
Low: 25.43%
Mid: 22.81%
High: 20.15%
해석
가격 경쟁력 부족” 가설이 매우 강하게 지지됨 즉, 사용자는 저가 상품일수록 쉽게 장바구니에 담고 고가의 상품일수록 더 신중하거나 이탈 가능성이 큼
비즈니스 관점
High vs Low 차이: 25.43% → 20.15% 약 5.28% 감소
이건 Device / User Type보다 훨씬 큰 차이
해석
고가 상품에서 가능한 원인
1. 가격 부담
- 절대 가격 높음
- 할인 부족
2. 비교 행동 증가
- 타사이트 가격 비교
- 리뷰 탐색
3. 정보 부족
- 고가일수록 상세정보/신뢰 필요
상품을 안 보는 것이 아니라 보고도 안 담는 것을 확인함
관심 부족보다 구매 장벽(가격/설득력) 문제
결론
view_item → add_to_cart 핵심 병목은 “가격 경쟁력 + 고가 상품 설득력”
액션
Low 상품
현재 강점
- 진입 장벽 낮음
- 프로모션 상품 가능성
High 상품
개선 필요
A.할인/프로모션
B.무료배송 강조
C.리뷰/상세 정보 강화
D.가격 정당화 메시지(프리미엄 가치, 품질)
CPC 유입 + High 상품이면 특히 위험
- 광고로 관심 유도 → 가격 보고 이탈 가능성
광고 랜딩
- 가격 노출 방식 개선
- 할인 정보 선제 제공
- 비교 우위 강조
상품 조회 이후 장바구니 전환 저하는 사용자 특성보다 가격 상승에 따른 구매 저항 증가와 더 밀접하게 연결될 가능성이 높음
'프로젝트 > GA4 분석' 카테고리의 다른 글
| [GA4 퍼널 분석] Day4-1 (begin_checkout → purchase | Mobile UX 분석) (0) | 2026.05.09 |
|---|---|
| [GA4 퍼널 분석] Day3-5 (view_item → add_to_cart | Item Category 분석) (0) | 2026.05.08 |
| [GA4 퍼널 분석] Day3-3 (view_item → add_to_cart | Source / Medium 분석) (0) | 2026.05.08 |
| [GA4 퍼널 분석] Day3-2 (view_item → add_to_cart | New vs Returning 분석) (0) | 2026.05.08 |
| [GA4 퍼널 분석] Day3-1 (view_item → add_to_cart | Device UX 분석) (0) | 2026.05.08 |