GA4 전자상거래란?
GA4 좌측 보고서 → 수익 창출 아래에는 ‘전자상거래 구매·구매 여정·결제 여정·인앱 구매·광고 수익·프로모션’ 리포트가 기본으로 들어 있습니다. 이 리포트들이 채워지려면 우리 사이트에서 ‘전자상거래 이벤트’를 GA4 규격대로 보내야 합니다. 이 글은 ① 전자상거래 리포트와 이벤트의 정의, ② GA4가 정해 둔 14개 전자상거래 이벤트 각각의 발생 시점, ③ 매개변수가 자유 명명이 아니라 GA4 규격으로 정해져 있다는 사실까지 세 가지를 정리합니다.
① 전자상거래 리포트와 전자상거래 이벤트의 정의
GA4의 좌측 보고서 메뉴 안에는 ‘Life cycle’ 그룹 아래 ‘수익 창출’ 카테고리가 있고, 그 안에 전자상거래 관련 리포트들이 들어 있습니다.
이 리포트들이 채워지는 방식은 일반 맞춤 이벤트와 다릅니다. 우리가 자유 명명으로 만드는 맞춤 이벤트와 달리, GA4는 전자상거래 이벤트의 이름과 매개변수를 미리 규격으로 정해 두었고, 그 규격대로 우리가 보낼 때만 리포트가 작동합니다. 그래서 ‘전자상거래 이벤트’는 ‘설계한다’기보다 ‘구현한다’는 표현이 더 정확합니다 — GA4가 정해 둔 약속을 그대로 따라가는 일입니다.
이렇게 GA4가 미리 이름과 매개변수 규격을 정해 둔 이벤트들을 우리는 업계 통상적으로 전자상거래 이벤트(ecommerce event)라고 부릅니다. 그 종류와 발생 시점을 하나씩 살펴봅시다.
② 전자상거래 이벤트 14종 — 발생 시점
GA4가 제공하는 전자상거래 이벤트는 14개입니다. 14개를 모두 설치할 필요는 없습니다 — 사이트 구조·분석 목적·운영 여건에 따라 취사선택합니다. 거의 모든 전자상거래 사이트에서 함께 설치되는 핵심 이벤트는 굵게 강조했습니다.
purchase 필수
구매가 완료되었을 때
add_to_cart 필수
상세페이지에서 ‘담기’ 버튼이 눌려 장바구니에 추가될 때
begin_checkout 필수
결제 시작 페이지가 로드되었을 때
view_item 필수
제품 상세 페이지가 조회될 때(페이지 로드)
add_payment_info 선택
결제정보(카드·통장 등) 입력이 완료된 순간
add_shipping_info 선택
배송지 정보(주소·우편번호) 입력이 완료된 순간
add_to_wishlist 선택
찜·즐겨찾기·위시리스트에 상품 추가
refund 선택
구매 취소·환불 신청이 이루어진 경우
remove_from_cart 선택
장바구니에서 상품을 뺀 순간
select_item 선택
어떤 ‘목록’에 진열된 상품을 클릭한 순간
select_promotion 선택
프로모션 영역·배너를 클릭할 때
view_cart 선택
장바구니 페이지가 로드된 시점
view_item_list 선택
상품이 있는 목록이 화면에 노출된 시점
view_promotion 선택
프로모션 상세 페이지가 로드된 시점
위 14개 중 view_item_list·select_item·select_promotion·view_promotion은 추가 보완 설명이 필요합니다.
select_item — ‘목록(list)’이라는 단어
‘목록’은 ‘여러 상품이 한 영역에 나열되어 있는 형태’를 의미합니다. 추천 상품 영역·베스트·카테고리 목록 등. 그 영역에 진열된 상품 중 하나를 클릭하는 순간 select_item이 발생합니다.
select_item 이벤트가 그 상품의 정보를 담아 GA4로 전송됩니다.사이트에 진열된 모든 상품 영역(추천 상품·베스트·카테고리 목록·연관 상품 등)에서 클릭이 일어날 때마다 전송해야 하므로, purchase·add_to_cart 같은 일반 전자상거래 이벤트보다 설계·개발 공수가 큽니다.
select_promotion — 프로모션 영역의 판단
‘무엇을 프로모션 영역이라고 지정해야 하나?’ — 결국 구매를 촉진시키기 위해 고객에게 혜택을 제공하고 있는 모든 영역이 ‘프로모션(promotion)’입니다. 그럼에도 애매한 경우가 많아, 어디까지를 프로모션 영역으로 잡을지 사람의 의사결정이 필요합니다.
view_item_list — ‘노출’의 정의
특정 영역이 화면에서 몇 % 노출된 시점·몇 초가 지나야 ‘노출’로 판단할지 정의가 필요합니다. 영역마다 기준이 다르면 통합 분석에서 인사이트 추출이 어려우므로, 사이트 전체에 한 가지 기준을 통일해야 합니다. 일반적으로 ‘100% 노출된 시점부터 1초가 지났을 때’ 전송하는 것이 관행적입니다.
view_item_list가 발사됩니다. 노출의 ‘비율·시간 기준’은 사이트 안에서 한 가지로 통일해야 통합 분석이 가능합니다.③ 매개변수는 자유 명명이 아니라 GA4 규격으로 정해져 있다
지금까지 14개 이벤트의 ‘이름’과 ‘발생 시점’을 확인했습니다. 그런데 GA4 전자상거래 리포트가 채워지는 또 한 축이 있습니다 — 매개변수입니다.
예시로 GA4 Demo Account(Google Merch Shop)의 수익 창출 → 전자상거래 구매 리포트를 봅시다. 표 상단에 측정항목 3개가 보입니다.
| 항목 이름 | 조회된 상품 | 장바구니에 추가된 상품 | 구매한 상품 |
|---|---|---|---|
| Super G Timbuk2 Recycled Backpack | 3,062 | 224 | 38 |
| Google Campus Bike | 1,642 | 125 | 18 |
| Chrome Dino Recycled Backpack | 1,062 | 61 | 7 |
| Google Yosemite Windbreaker | 879 | 233 | 37 |
| Google Black Eco Zip Hoodie | 832 | 94 | 17 |
- 조회된 상품:
view_item이벤트가 각 제품별 상세페이지가 로드될 때마다 발생되어야만 데이터를 볼 수 있습니다. - 장바구니에 추가된 상품:
add_to_cart이벤트가 제품별로 발생했을 때마다 데이터가 쌓입니다. - 구매한 상품:
purchase이벤트가 발생해야만 데이터가 쌓입니다.
위 표에서 첫 열(굵게 강조)이 측정기준 ‘항목 이름’입니다. GA4 표시 명칭이고, 실제로는 ‘상품의 이름’을 의미합니다. 단순히 add_to_cart 이벤트만 보낸다면 ‘상품의 장바구니 담기 수’는 나오지만 상품 이름별로 관측하기에는 어렵습니다. 그래서 우리는 이벤트만 보내는 것이 아니라, 해당 이벤트에 ‘상품 이름’을 의미하는 데이터를 매개변수로 함께 보내 줘야 합니다.
제품 이름별로 상세페이지 조회수를 보기 위해서는, view_item 이벤트에 item_name이라는 매개변수가 함께 있어야 한다는 사실을 알 수 있습니다. 그런데 우리가 일반적으로 만드는 맞춤 이벤트나 매개변수와 달리, 전자상거래 이벤트의 매개변수는 GA4 규격으로 정해져 있습니다. 아래 purchase 이벤트 코드를 봅시다.
위 코드의 상위 3번째 행까지(transaction_id·value·currency)를 그림으로 표현하면 다음과 같습니다 — 맞춤 이벤트의 ‘이름 + 매개변수’ 구조와 본질적으로 같습니다.
purchase’가 이벤트(EVENT)이고, 거래 ID·통화·가격이 그 이벤트의 프로퍼티(PROPERTY). ‘이건 구매야!’라는 말 뒤에 ‘거래 ID·통화·금액’을 덧붙인 모양 — 맞춤 이벤트와 본질이 같습니다.자주 묻는 질문
14개 전자상거래 이벤트를 다 설치해야 하나요?
아니요. 대부분의 사이트에서는 purchase·add_to_cart·begin_checkout·view_item 네 개를 우선 설치하고, 나머지는 사이트 구조·분석 목적·운영 인력에 따라 취사선택합니다. 특히 view_item_list·select_item·view_promotion·select_promotion처럼 영역마다 정의해야 하는 이벤트는 공수가 크므로 ‘꼭 분석할 영역만’ 정의하는 편입니다.
purchase를 ‘페이지 로드’가 아니라 ‘버튼 클릭’ 시점에 보내야 한다면 어떻게 되나요?
버튼을 클릭한 뒤 외부 결제 위젯으로 이동해 사이트 밖에서 결제가 마무리되는 환경에서는 ‘페이지 로드’를 잡을 수 없어 ‘버튼 클릭 시점’을 트리거로 사용합니다. 다만 클릭만 하고 실제 결제로 이어지지 않는 사용자가 섞이므로 매출이 과장 집계됩니다. 정확한 집계가 필요하면 광고주 자체 서버를 통해 GA4로 데이터를 보내는 Measurement Protocol을 도입하는 것이 정석입니다.
‘프로모션 영역’인지 ‘상품 진열 영역’인지 판단이 애매할 때는?
핵심 기준은 클릭 시 어디로 이동하는가입니다 — 클릭하면 상품 상세 페이지로 이동하면 ‘상품 진열(list)’, 행사·기획전 같은 혜택 페이지로 이동하면 ‘프로모션(promotion)’으로 잡는 게 합리적입니다. 두 성격을 함께 가진 경우(예: 최저가를 강조한 상품 영역)는 사람이 의사결정합니다.
왜 전자상거래 이벤트의 매개변수는 자유 명명이 안 되나요?
GA4가 ‘수익 창출’ 리포트의 모든 측정기준·측정항목을 이 표준 매개변수에서 자동으로 가져오기 때문입니다. item_name을 product_name으로 바꾸면 그 리포트가 작동하지 않습니다 — 자동 보고서·기능을 쓰기 위한 ‘약속된 입력 규격’이라 우리가 마음대로 바꿀 수 없습니다.
view_item_list의 노출 기준 ‘100% 노출 + 1초’는 꼭 그래야 하나요?
관행적인 기준이지, 필수는 아닙니다. 다만 영역마다 다른 기준을 두면 통합 분석이 어렵기 때문에 한 사이트 안에서는 한 가지로 통일하는 것이 권장됩니다. 모바일·PC 모두 영역이 작아 한 화면에 여러 개가 보이는 경우가 많아 이 기준이 보편적으로 자리 잡았습니다.
select_item·select_promotion은 왜 ‘공수가 크다’고 하나요?
사이트의 모든 상품·프로모션 진열 영역을 빠짐없이 조사해 각 영역별로 이벤트 트리거를 정의해야 하기 때문입니다. purchase·add_to_cart는 ‘구매 버튼’·‘담기 버튼’ 한두 곳에 트리거를 거는 작업이지만, select_item은 추천 상품·베스트·카테고리 목록·연관 상품 등 수십 개 영역에 트리거를 걸어야 합니다.
