안녕하세요! 그로스마케팅 파트너, 허들러스의 유성민입니다. 허들러스는 구글 애널리틱스 활용에 깊은 노하우를 보유하고 있습니다. 현재 모든 쇼핑몰들이 GA4 활용에 어려움을 겪고 있어, 커머스 쇼핑몰들을 위한 GA4 전자상거래에 관한 내용들을 총정리하였습니다. 앞으로 허들러스의 메인페이지에서 컨텐츠를 구독하신 분들에게는 GA4의 새로운 내용이 업데이트 시, 지속적으로 글을 게재하여 알림을 드릴 예정입니다. 많은 관심과 사랑 부탁드립니다.

이번 글에서 GA4 전자상거래의 모든 내용들을 아주 자세히 다뤄보겠습니다.

 

1. GA4 전자상거래 이벤트란?

1) 전자상거래 리포트의 위치

구글 애널리틱스의 표준 리포트(Standard Report)를 보면, [수익 창출]에 관련된 리포트가 있는것을 확인할 수 있습니다.

전자상거래 리포트 위치

 

2) 전자상거래 이벤트의 정의

구글 애널리틱스는 우리 웹사이트나 어플리케이션에 방문한 유저들의 모든 활동(페이지뷰, 클릭 등)을 시간대별로 기록해둔 로그 분석 툴입니다. 최초의 Google Analytics는 쇼핑몰을 염두해두고 설계된 솔루션입니다.

그렇다보니 위 [수익 창출] 메뉴에 있는 다양한 리포트는 쇼핑몰 비즈니스를 하고있는 분들에게 도움이 되는 유용한 리포트들이 모여있습니다.

즉, 쇼핑몰이 아닌 비즈니스는 해당 리포트를 조회할 필요도 없고, 데이터가 들어오지도 않습니다. 하지만 쇼핑몰인 고객들은 유용하게 해당 리포트를 사용해야만 하는데, 해당 리포트를 사용하기 위해서는 전자상거래에 관련된 이벤트를 설치해야할 필요가 있습니다.

이렇듯 구글 애널리틱스 내 전자상거래와 관련된 리포트를 보기위해 설치해주어야하는 이벤트들을 우리는 전자상거래 이벤트(E-commerce Event)라고 부릅니다.

 

2. GA4 전자상거래 이벤트의 종류

1) 전자상거래 이벤트는 모두 설치해야하나요?

전자상거래 이벤트를 잘 구현하기 위해서는 아래와 같은 14개의 GA4에서 제공해주는 전자상거래 이벤트가 있습니다.
해당 14개를 모두 설치하실 필요는 없습니다.
그리고 대한민국에서만 관행적으로 취사선택에 따라서 이벤트를 전송하기도 합니다.

그렇기 때문에 오롯이 설치 여부는 구글 애널리틱스 담당자의 선택에 달려있습니다. 다만, 대한민국에서 관행적으로 쓰이고 있는 이벤트들은 아래 목록에서 필수 표시를 해두었습니다.

그렇다면, 왜 관행적으로 취사선택이 가능한지 전자상거래 이벤트의 14가지 이벤트의 상세설명을 살펴봅시다.  

 

purchase(필수)
발생 시점 : 구매가 완료되었을 때 발생합니다. 한국 쇼핑몰의 경우 대표적으로 아래 2가지 경우가 있습니다.

1) 구매 완료 페이지가 로드 될때 (구매해주셔서 감사합니다 페이지)

2) 네이버페이를 클릭했을 때

** 네이버페이의 경우, 버튼을 클릭하면 사이트 밖을 나가버리게 되므로, 그 이후 시점에 대해서는 GA4가 데이터를 추적할 수 없습니다.
그래서 현재의 기술로서는 네이버 페이 버튼을 클릭할때 purchase 이벤트를 발생시킵니다. 버튼을 클릭하고 구매하지 않는 유저들도 있을 수 있기 때문에, 과장집계가 발생하는 편입니다.


과장 집계가 발생되는것을 막기 위해서는 자체 서버를 통해 데이터를 전송하는 Measurement Protocol이란 방법론이 있습니다.(추후 가이드 준비 예정)
하지만 자체 트랜잭션 데이터를 받고 있는 서버나 DB가 구축된 환경에서만 가능하여, 대부분의 커머스들을 정확하게 구현하는데에 비용과 시간이 많이 발생합니다.
그래서 관행적으로 간단하게나마 추이를 보는 용도로서 네이버페이 버튼을 클릭할때 purchase 이벤트를 전송하는것이 시장에서 일반적으로 통용되는 방법론입니다.

 

add_to_cart(필수)
발생 시점 : 장바구니 버튼을 클릭하여, 물건이 장바구니에 담긴 순간 발생합니다.
** 헷갈릴 수 있는 점 : 장바구니 페이지가 로드되는 이벤트는 view_cart 이벤트이며, add_to_cart는 상세페이지 내에서 물건을 장바구니에 담을때 데이터를 전송합니다.(이 역시 관행적인 방법입니다.)

 

begin_checkout(필수)

발생 시점 : 결제를 시작하는 페이지가 로드되었을 때 발생합니다.

 

view_item(필수)

발생 시점 : 제품의 상세페이지를 조회할때(페이지 로드) 발생합니다.

 

add_payment_info(선택사항)

발생 시점 : 결제정보(카드 정보, 통장 정보 등)를 입력 완료하는 순간에 발생합니다.
** 대한민국의 경우, 네이버페이와 무통장입금 방법론이 일반적으로 활성화되어있는데에 반해, 글로벌에서는 신용카드 정보를 등록하고 구매를 자유롭게 하는 방식이 일반적입니다. 그러다보니 해당 이벤트를 대한민국에서는 굳이 추가하지 않습니다. 어차피, begin_checkout(결제 시작)이라는 이벤트로 사용자의 행동흐름은 충분히 관측할 수 있기 때문입니다.

 

add_shipping_info(선택사항)

발생 시점 : 배송지 정보(주소, 우편번호 등)를 입력 완료하는 순간에 발생합니다.
** 대한민국의 경우, 결제 시작 페이지에서 카드 정보와 배송지 정보를 한번에 적기 때문에, 굳이 배송지 정보 추가 이벤트를 일반적으로는 하지 않습니다. 다만 취사 선택에 따라 데이터 적재는 가능합니다.

 

add_to_wishlist(선택사항)

발생 시점 : 제품 찜하기, 즐겨찾기, 위시리스트 추가 등이 이루어지는 순간에 발생합니다.
** 쇼핑몰마다 제품을 찜하는 방법은 다릅니다.
하지만 의미론적으로 제품을 찜하는 어떤 고객의 행동이 정의될 수 있다면 해당 이벤트를 전송하기도 합니다. 다만, 대한민국의 경우, 일반적으로 찜하기 기능을 대형 쇼핑몰이 아니라면 많이 사용하지 않는것 같아서, 잘 설치하지 않는 경향이 있습니다.

 

refund(선택사항)

발생 시점 : 제품 구매 취소를 하거나 환불 신청을 하는 경우 발생시킵니다.
** 전화로 환불을 했을 경우에는 이벤트를 잡을 수가 없습니다. 사이트에서 발생하는 액션들을 중심으로만 이벤트를 발생시킬 수 있기 때문입니다.
사이트 UI에 구매 취소나 환불 신청 완료페이지가 있거나 등의 고객의 행동을 잡을 수 있는 트리거 시점이 있다면 해당 이벤트를 전송할 수 있습니다.

→ 환불 이벤트를 적용하느냐 아니냐에 따라서 리포트 내 측정 항목들이 달라질 수 있습니다.

 

remove_from_cart(선택사항)

발생 시점 : 장바구니에 담긴 물품을 장바구니에서 빼는 순간(장바구니 담기 취소) 발생합니다.

** 장바구니 취소 이벤트 역시 데이터를 적재한다고 해서 크게 인사이트가 있는 내용을 담기 어렵기 때문에, 한국에서는 관행적으로 많이 설치하지 않습니다.

 

select_item(선택사항)

발생 시점 : 어떤 목록에 있는 제품을 클릭하는 순간 발생
여기서 ‘목록(list)’이라는 단어가 낯설 수 있습니다. 말 그대로 목록이란 여러 항목들이 한 영역에 나열되어 있는 형태를 의미합니다.
아래 참고이미지와 같이 특정 영역에 있는 진열된 상품이 클릭 되었을 때 추적합니다.

제품이 진열된 목록

** 우리 사이트에 진열된 제품 영역들이 정말 많은데, 다 잡아야하나요?

→ 놀랍게도 모든 영역들을 정의하여 예외없이 데이터를 전송하도록 해야합니다.
모든 영역들을 조사한 뒤, 각 영역별로 제품이 클릭되었을 때 이벤트를 발생시키도록 합니다.
그래서 select_item은 purchase, add_to_cart와 같은 일반적인 전자상거래 이벤트보다 훨씬 더 많은 설계 및 개발 공수가 발생합니다.  

 

select_promotion(선택사항)

발생 시점 : 특정 형태의 목록에 있는 프로모션을 클릭할 때
해당 이벤트는 사이트 내에 있는 프로모션(행사,기획전 등)과 관련된 영역/버튼/배너 등을 클릭하는 경우 이벤트를 발생시킵니다.
아래 이미지를 보면, 프로모션 영역이 명확하게 표현되어있습니다. 아래 이미지에 표시된 프로모션 영역을 클릭하는 경우 이벤트를 발생시킵니다.

프로모션 영역

프로모션 이벤트 역시 사이트에 정말 다양하게 있을 수 있습니다.
해당 영역 역시 select_item 이벤트와 마찬가지로 많은 공수가 발생할 수 있습니다.

** 무엇을 프로모션 영역이라고 지정해야하는가?

→ 결국 구매를 촉진시키기 위해 고객에게 혜택을 제공하고 있는 모든 영역은 ‘프로모션(promotion)’입니다.
그럼에도 불구하고 애매한 경우들이 많이 발생합니다.
이 경우에는 프로모션 영역을 어디까지만 지정할것인가에 대한 사람의 의사결정이 필요합니다. 아래 이미지를 봅시다.

프로모션 이미지

영역이 크게 2개가 나타납니다.
위에 있는 영역(”모든 서비스는 0원”)은 확실히 고객에게 어필하는 혜택이기 때문에 프로모션 영역이 확실합니다.
다만 아래있는 영역(”골프존 사천 205,000원~”)은 상품이 진열된 영역인것 같기도하고, 최저가를 제시하다보니 프로모션 영역인것 같기도 합니다.
이 경우에는 개인의 취사선택에 따라 프로모션 영역으로 잡을것인지 진열된 상품 영역으로 잡을 것인지를 결정합니다.
다만, 전문가적 입장에서는 하단에 있는 영역은 클릭했을 때, 그 상품의 상세페이지로 이동되기 때문에 굳이 프로모션 영역이라기보다는 아이템 진열 영역으로 잡는것이 더 합리적으로 보입니다.  

 

view_cart(선택사항)
발생 시점 : 장바구니 페이지가 로드되는 시점에 발생합니다.
보통 대한민국에서는 장바구니 페이지를 거치지 않는 네이버페이 결제 방식이 많고, 장바구니 담기 버튼을 클릭할때, add_to_cart 이벤트를 발생시키기 때문에 굳이 디테일하게 view_cart 이벤트는 많이 설치하지 않는 것 같습니다.
(관행적인 이유이며, 얼마든지 취사 선택이 가능합니다.)

 

view_item_list(선택사항)

발생 시점 : 제품이 있는 목록에 제품이 화면상에 노출되었을때 발생합니다.
제품이 진열된 목록

위 이미지와 같이 쇼핑몰을 방문한 유저의 브라우저 화면에 제품이 나타났을 때 이벤트를 발생시킵니다.
참고이미지로 보아서는 총 5개의 제품이 화면상에 나타났기 때문에, 5번의 같은 이벤트가 발생할 것입니다.

** 특정 영역이 화면에서 몇% 노출된 시점에서 몇초가 지나야 ‘노출’이 되었다고 판단할 것인지에 대한 정의가 필요합니다.
하지만 모든 영역마다 기준이 있어보았자 데이터를 통합적으로 보는데 다른 기준을 가지고 보게 된다면 인사이트를 추출하기가 매우 어렵습니다.
위 이미지에 보이는 각각의 제품 영역은 하나의 화면에 여러개가 담길 정도로 크기가 작기 때문에(모바일도 포함), 100% 노출된 시점부터 1초가 지났을 때 view_itme_list 라는 이벤트를 전송합니다.
해당 노출의 정도와 시간도 관행적으로 1초를 잡는것이지, 필요에 따라 다른 정의와 기준을 내려도 무방합니다.  

 

view_promotion(선택사항)
발생 시점 : 프로모션 영역에 특정 프로모션 영역이 화면상에 노출되었을때 발생합니다.
프로모션 영역

위 이미지와 같이 쇼핑몰을 방문한 유저의 브라우저 화면에 프로모션 배너가 나타났을 때 이벤트를 발생시킵니다.
참고이미지로 보아서는 총 4개의 배너가 화면상에 나타났기 때문에, 4번의 같은 이벤트가 발생할 것입니다.

** 특정 영역이 화면에서 몇% 노출된 시점에서 몇초가 지나야 ‘노출’이 되었다고 판단할 것인지에 대한 정의가 필요합니다.
하지만 모든 영역마다 기준이 있어보았자 데이터를 통합적으로 보는데 다른 기준을 가지고 보게 된다면 인사이트를 추출하기가 매우 어렵습니다.
위 이미지에 보이는 각각의 프로모션 영역은 하나의 화면에 여러개가 담길 정도로 크기가 작기 때문에(모바일도 포함), 100% 노출된 시점부터 1초가 지났을 때 view_promotion 이라는 이벤트를 전송합니다.
해당 노출의 정도와 시간도 관행적으로 1초를 잡는것이지, 필요에 따라 다른 정의와 기준을 내려도 무방합니다.

 

3. 전자상거래 이벤트에는 매개변수가 정해져있습니다.

1번 사항에서 말씀드렸듯이, 수익창출 리포트에 대한 정보들을 볼 수 있습니다. 예시를 하나 들어보기 위해 데모계정으로 이동해보겠습니다.

Step 1 : 애널리틱스 [수익 창출] 카테고리에서 [전자상거래 구매] 리포트로 이동합니다.

전자상거래 구매리포트

Step 2 : 아래 대표적인 측정항목 3개가 보입니다.

대표적인 측정항목

  • 구매한 상품 : purchase 이벤트가 발생해야만 데이터가 쌓입니다.
  • 장바구니에 추가된 상품 : add_to_cart 이벤트가 제품별로 발생했을 때마다 데이터가 쌓입니다.
  • 조회된 상품 : view_item 이라는 이벤트가 각 제품별 상세페이지가 로드될때마다 발생되어야만 데이터를 볼 수 있습니다.

 

이렇듯, 전자상거래 이벤트 14개 중 몇가지를 설치하면 GA4에서 제공해주는 측정 항목이랑 ‘자동 연동’이 되면서 리포트에 숫자를 채워줍니다.
여기서 궁금한 것은 위 이미지를 자세히 보면, [항목 이름] 이라는 측정기준별로 데이터를 관측하고 있습니다.

항목 이름이라는 단어가 낯설지만 데이터를 보면 상품의 이름을 의미한다는 것을 알 수 있습니다.
단순히 add_to_cart 이벤트만 보내게 되었다면
상품의 장바구니 담기수는 나오지만 상품 이름별로 관측하기에는 어렵습니다.

그래서 우리는 view_item 이벤트만 보내는 것이 아닌, 해당 이벤트에 ‘상품 이름’을 의미하는 데이터를 매개변수로 보내주어야 합니다.
이벤트와 매개변수에 대한 용어가 아직 익숙하지 않다면 아래 글을 봐주세요.

 

GA4 이벤트 택소노미란?

위 이벤트 택소노미 글을 읽고 오셨다면, view_item 이라는 이벤트에 item_name 이라는 매개변수가 있어야한다는 사실을 알 수 있을 것입니다.
그런데 우리가 일반적으로 만들게되는 맞춤 이벤트와 달리, 전자상거래 이벤트의 매개변수는 명확하게 정해져있습니다.
아래 이미지를 참고해봅시다.

전자상거래 이벤트 코드

코드가 나왔다고 어려워하실 것 없습니다. 위 코드에서 상위 3번째 행까지를 그림으로 표현해보겠습니다.

구매이벤트 코드그림

이렇듯 구매라는 이벤트에 추가 정보(매개변수)들을 담은 것이라고 보면, 우리가 이벤트 택소노미 글에서 봤던 맞춤 이벤트와 크게 다를바가 없습니다.
그런데 위 코드 4번째 행부터 아래 items 라는 매개변수는 조금 특이합니다.
Key 값에 바로 Value 값이 들어가는 것이 아니라 대괄호가 들어가기 때문입니다.

구매이벤트 코드

위 개념을 이해하기 위해서는 약간의 프로그래밍 지식이 필요합니다.
결국 정리하자면, 데이터를 효과적으로 저장하고 전송하기 위해서는 위와같은 형태가 나옵니다. 

이때까지 우리는 전자상거래 이벤트의 개념을 정확하게 이해했습니다.
하지만 설치 원리는 생각보다 복잡할 수 있습니다. 마케터들이 전자상거래를 잘 이해하기 위해서는 아주 초보적인 수준의 개발 지식이 필요합니다.
이번 글에서는 GA4 전자상거래 이벤트에 대해서 배경 지식이 없는 사람도 이해할 수 있는 프로그래밍 지식을 주로 다뤄보겠습니다.

 

4. 전자상거래 이벤트를 이해하기 위한 프로그래밍 지식

왜 새로운 형태로 데이터를 저장할까?

구매라는 이벤트가 발생했을 때, 이벤트와 매개변수별로 데이터를 보내면 된다고는 말했는데, items 라는 새로운 형태로 데이터가 보내지고 있는것을 확인했습니다.
이 이유는 제품을 동시에 여러개를 장바구니에 담을 수 있기 때문입니다.
어떤 제품을 구매했는지 제품별로 확인을 하고 싶다면 items 라는 정보가 한개 더 생겨야할 것입니다. 아래 이미지를 참고해주십시오.

구매이벤트 코드

1개 이상 제품을 구매했을 때에는 정상적으로 코드를 보내고 있으나,  2개 이상의 제품을 장바구니에 보내주기 위해서는 A제품에 대한 정보 덩어리와 B제품에 대한 정보 덩어리가 각각 보내져야합니다. 나중에 GA4에서 각각의 제품별로 추가 정보를 보아야할 필요가 있기 때문입니다.
제품 덩어리가 하나씩 추가 될때마다, “{}”의 특수기호로 제품의 덩어리 세트를 만들어서 GA4로 데이터를 전송하고 있습니다.

자바스크립트에서는 각각의 데이터의 형태들이 필요나 목적, 규칙에 따라 기본적으로 나뉘어져있습니다.
우리는 이를 데이터 타입(Data Type) 또는 자료형이라고 부릅니다.

자료형의 종류는 다양하지만 일반적으로 6개가 있습니다. 어려운 개발지식 같지만 실습을 해보면 금방 따라할 수 있습니다.

 

5. 콘솔창을 통해 데이터 타입과 변수 이해하기 

Step 1. 크롬 브라우저에서 오른쪽 마우스 클릭 → 검사 메뉴를 누르고 콘솔창으로 이동합니다.

콘솔창

Step 2. 클린 버튼을 눌러 불필요한 어지러운 내용은 모두 지워줍니다.

콘솔창

콘솔창이란?
마치 메모장처럼 자바스크립트 코드를 즉시 실행할수 있는 도화지라고만 이해해주셔도 좋습니다.
여기서 우리는 데이터 타입과 메모리에 대한 기본적인 지식을 익힐 것입니다.

우선 데이터 타입을 이해할 수 있어야합니다.
데이터 타입은 총 8가지가 있으나, 우선은 아래 숫자와 문자열 데이터 타입만 이해하고 있으면 됩니다.

 

숫자(Number)
콘솔창에 아래 이미지와 같이 1+1을 입력하고 엔터를 쳐봅시다.

콘솔창_숫자

그럼 위와 같이 1+1의 결과값인 2가 출력되는 것을 확인할 수 있습니다.
이처럼 숫자 형태의 자료형은 덧셈,뺄셈,나눗셈,곱셈 등의 연산이 가능한 특징을 지니고 있습니다.
이를 숫자 자료형이라고 칭하며, 우리에게 익숙하게 다가올것입니다.

 

문자열(String)
콘솔창에 아래 이미지와 같이 ‘1’+’1’을 입력하고 엔터를 쳐봅시다.

콘솔창_문자

그럼 아까 숫자형과 달리, 결과값이 11로 출력됩니다.
이렇게 숫자라도, 따옴표안에다가 넣게 되면 문자 데이터(String)으로 변하기 때문입니다.
그래서 문자 1과 문자 1이 합쳐져서 11이라는 형태가 되는 것이지요.
아래 예시와 같은 원리로 결과값이 나오는 것입니다.

콘솔창_문자

그 다음에는 변수의 개념을 이해해야합니다.
변수는 이전 택소노미 글에서 철수가 가지고 있는 돈 = 2000원인것처럼, 어떤 값을 저장할 수 있는 메모리를 의미합니다.  

 

변수(Variables)

콘솔창에 아래 이미지와 var a = 1 이라고 입력해봅시다.

콘솔창_변수

그럼 undefined 라는 결과값이 출력될 것입니다.
undefined는 말그대로 값이 없다는 말보다는 출력할 결과물이 없다고 해석하면 됩니다.
중요한것은 var a = 1 이라는 문구입니다. 해당 문장은 아래와 같이 표현될 수 있습니다. 

var a = 1 : “a”라는 이름의 메모리에 1 이라는 숫자 데이터를 넣어두겠다.

a는 변수의 이름이 될 것이고 1은 정보 그 자체가 되는것입니다.
여기서 우리는 a를 콘솔창에 다시 적어보고 엔터를 눌러봅시다.

콘솔창_변수

a를 누르고 다시 엔터를 눌렀더니, 결과 값 1이 출력되는 것을 볼 수 있습니다.
즉, a라는 변수 안에는 1이라는 값이 들어가 있다고 해석될 수 있습니다.
이처럼 특정 메모리에 어떤 데이터(값)를 넣어두는 용도로 변수를 사용합니다.

 

배열(Array)
위와 같이 하나의 값을 넣을때에는 변수를 사용하면 되지만 여러개의 값을 하나의 메모리에 저장하고 싶을때가 있습니다.
이때 우리는 배열이라는 자료형을 사용합니다.
콘솔창에 아래와 같이 입력해봅시다.

콘솔창_배열

배열은 위와 같이 apple, banana, orange라는 3개의 값을 한번에 a라는 메모리 안에 넣어둡니다.
그렇다면 다시 콘솔창에 a를 입력해봅시다.

콘솔창_배열

그렇다면 위 이미지처럼 3개의 값이 a변수안에 들어가있으나, 화살표를 클릭하여 자세히본다면 a라는 변수 안에 다시 변수가 3개 들어가 있습니다.
변수의 이름은 각각 0,1,2 입니다. 이렇듯, 여러가지의 값을 넣어두기 위해서 값마다 숫자 0부터 시작해서(컴퓨터는 항상 숫자 0부터 시작합니다.)
일종의 0,1,2라는 변수를 만들고 그 안에다가 각각의 값들을 넣어둡니다. 그런데 여기서 0,1,2는 변수의 이름이라고 말씀드렸으나 사실 변수라고 불리지는 않습니다.
여러값을 넣었을 때, 각 값마다 저장하는 위치값이 0,1,2이며, 이를 ‘인덱스(index)’라고 부릅니다.
여기서 apple이라는 값을 출력하고 싶다면 아래와 같이 콘솔창에 입력합니다.

콘솔창_인덱스

이 명령어는 a라는 변수의 0번째 인덱스에 있는 값을 출력하라는 의미입니다.
이렇듯 여러값을 대괄호([])를 사용하여 콤마에 따라 하나의 메모리에 저장한다면, 배열(Array) 형태가 됩니다.

 

객체(Object)

배열의 한계도 분명히 있습니다. 바로 자동으로 생성되는 인덱스 번호로 특정 변수안에 있는 값에 접근을 해야한다는 것이지요.
하지만 0,1,2가 아닌 우리가 직접 인덱스 번호를 만들어주면 어떨까요? 콘솔창에 아래와 같이 입력해봅시다.

콘솔창_객체

위 콘솔은 apple이라는 변수안에 내가 원하는 추가 정보들을 중괄호({})를 사용해서 콘솔창에 입력한 것입니다.
예를들어 “red”라는 결과값을 출력하기 위해서는 아래와 같이 입력하면됩니다.

콘솔창_객체

apple이라는 변수안에 컬러라는 변수를 찾아서 값을 출력하라는 의미가 됩니다.
이렇듯 0,1,2와 같이 특정 값의 위치를 나타내는 index가 아닌, 내가 직접 값을 원하는 변수이름에 맞게 만들어주는 메모리 저장 타입도 있습니다.
우리는 이를 객체(Object)라고 합니다.
여기서 color는 key값, red는 value값이 됩니다. Key값과 Value값, 어디서 많이 들어보지 않았나요? 네 맞습니다. 이벤트 택소노미에서 우리는 이미 키값과 벨류값에 대해서 배웠습니다.

객체(Object)까지 이해가 되었다면, 우리는 이 객체 형태가 이벤트 택소노미와 조금 유사한 형태로 GA4로 데이터를 전송하고 있는것을 볼 수 있습니다.  

장바구니이벤트 코드그림

위 이미지를 굳이 콘솔로 표현하자면, 아래와 같이 표현될 것입니다.

장바구니 매개변수 코드

깨달음을 얻으셔야합니다. 우리가 배운 이벤트 택소노미는 결국 GA4에 데이터를 전송할때 객체(Object)의 형태로 데이터가 전송되고 있던 것이었습니다.

 

6. 프로그래밍 기본 지식을 익혔다면 , 전자상거래를 이해할 수 있습니다.

구매이벤트 코드

배열은 대괄호([])를 사용하고 객체는 중괄호({})를 사용합니다.
items 라는 변수 안에는 대괄호가 들어가 있기 때문에 우선 전체 items 변수의 성질은 배열(Array)로 보입니다. 배열이라면 0,1,2와 같은 인덱스가 나타나야 할텐데, 인덱스가 나타나지 않고 중괄호가 나타납니다. 중괄호는 객체라고 위에서 언급한바 있습니다.
객체이다보니, 0,1,2와 같이 index 번호가 들어가는 것이 아니라, item_id, item_name 등의 직접 지정된 변수 이름이 들어갑니다.

자 그렇다면, 동시에 두개의 제품을 구매 했을때의 코드를 살펴봅시다.

이번에는 원피스와 청바지를 담았습니다.

구매이벤트 코드

위 코드에서 보다시피, 2번째로 담은 제품의 덩어리가 한개 더 객체의 형태로 생긴것을 볼 수 있습니다.
그렇다면 items라는 배열 형태의 자료형안에 객체가 들어가 있는것으로 볼 수 있습니다.
즉, items는 배열이니까 인덱스 0,1,2가 있어야할것입니다.
items 배열의 0번째 인덱스에는 원피스 제품에 대한 정보가 객체 형태로 들어가 있고, items 배열의 1번째 인덱스에는 청바지 제품에 대한 정보가 들어가 있는 것입니다.

이를 콘솔창에다가 입력하면 조금 더 이해하기 쉽도록 구조가 만들어집니다.

제품 객체 데이터

제품 객체 데이터

결론

구매이벤트 코드

전자상거래 이벤트 리포트는 여러 제품이 장바구니에 담기거나, 구매했을 때를 대비하여 제품의 개수에 따라 제품 정보를 담고 있는 덩어리 객체가 반복적으로 생기도록 한 뒤에, 데이터를 전송합니다.
그렇다면, items 객체를 조금 더 파고 들어가 봅시다.

items 객체 안에 있는 item_id, item_name 등의 Key값들은 이전에 배운 이벤트 택소노미처럼 우리가 직접 이름을 정의하는 것이 아닌, 구글의 공식 가이드에서 해당 이름으로 데이터를 보내라고 명시되어 있습니다. 왜 그렇게 Key값을 배치해두었을까요? 모두 다 이유가 있습니다.

 

7. 이벤트 수준의 변수와 아이템 수준의 변수

위 글에서 설명했다시피, 변수도 배열 타입의 변수, 객체 타입의 변수 등 다양한 형태로 나뉩니다.
하지만 객체와 배열을 완벽하게 이해할 필요는 없습니다. GA4에서는 두 가지의 개념만 알면 됩니다. 바로 아이템 수준의 변수와 이벤트 수준의 변수입니다.

1) 이벤트 수준의 변수(Event-Level Variables)

이벤트에 추가 정보를 붙이는 것을 이벤트 수준의 변수라고 부릅니다.
아래 코드처럼 구매 이벤트가 발생했을 때 거래 ID, 총 수익, 화폐단위 등의 데이터를 보내는것은 제품 개별적으로 보내는 것이 아니라, 구매 이벤트에 들어가야할 매개변수이기 때문입니다.

2) 아이템 수준의 변수(Item-Level Variables)

각 개별 상품에 따른 추가 정보들을 붙이는 것을 아이템 수준의 변수라고 부릅니다.
아래 코드처럼 구매 이벤트가 발생했을 때, 각 인덱스별로 item_id, item_name 등의 변수들은 이벤트에 딸려있는것이 아닌 items라는 개별 상품에 대한 정보입니다.

구매이벤트 코드

 

8. Items 객체 데이터는 GA4에서 어떻게 보일까?

items 객체 데이터_GA4

구글 애널리틱스의 데모 계정에서 전자상거래 구매 리포트에 들어왔습니다.
해당 리포트를 보면, 제품별 구매수와 수익이 나오는것을 볼 수 있습니다.(여기서 구매한 상품은 제품별 구매 수를 의미합니다.)

아래 글이 이해가 되면, GA4 전자상거래의 원리를 이해한 것입니다. 이해가 어렵다면 앞의 글을 다시 봐주세요 !

  • 구매한 상품이 데이터에 잡히는 이유 : Purchase 이벤트를 보내주었기 때문입니다.  
  • 항목 이름에 제품명이 데이터에 잡히는 이유 : Purchase 이벤트를 전송할때 items 객체 형태로 데이터를 보내고, items 객체 안에 있는 item_name이라는 Key값의 Value 값이 GA4의 ‘항목이름’이라는 측정기준에 반환됩니다.  
  • 제품 수익이 데이터에 잡히는 이유 : Purchase 이벤트를 전송할때 items 객체 형태로 데이터를 보내고, items 객체 안에 있는 price라는 Key값의 Value 값과, quantity라는 Key값의 Value 값이 서로 곱해져서, GA4의 ‘상품 수익’이라는 측정항목으로 반환됩니다.  

위 예시와 같이 items 배열안에 들어가는 제품 객체의 정보들을 각각 GA4에서 특정한 측정 기준과 측정 항목을 채워주고 최종적으로 리포트를 만들어주기 위해 어떤 역할들을 합니다.

그렇다면 1) GA4의 전자상거래 이벤트의 매개변수들과 items 배열 안에 있는 객체들의 Key값이 어떤 역할을 하는지,
2) 실제 GA4 전자상거래 리포트에서 나타나는 측정기준과 측정항목이 실제 Items 객체에서 어떻게 보내주는지 살펴봅시다.

GA4에서의 리포트는 크게 2가지 종류로 나뉩니다. 바로 GA4가 미리 준비한 템플릿 형태의 리포트인 표준 리포트(Standard Report), 내 입맛에 맞게 리포트를 구성하는 맞춤 리포트(Custom Report)입니다.
놀랍게도 GA4에서는 표준 리포트에서 쓰이는 측정 기준과 측정 항목의 이름, 맞춤 리포트에서 쓰이는 측정 기준과 측정 항목의 이름이 일부 다르기도 합니다.
(많은 사용자들이 불편함을 겪는 부분이기도 합니다.)

또, 심지어 맞춤 리포트에는 지원되는 측정 기준이 표준 리포트에는 없는게 있을 수 있습니다.
GA4의 초심자라면 정말 헷갈리기 쉬운 것들입니다.
그래서 전자상거래를 제대로 설명하기 위해, 표준 리포트와 맞춤 리포트에 제공되는 측정 기준과 항목별로 자세히 설명해보겠습니다.

 

9. Items 객체 데이터를 각 이벤트마다 똑같이 일치시켜주어야한다.

아래와 같이 표준 리포트가 있는데, 조회된 상품은 view_item 이벤트를 전송해야하고, 장바구니에 추가된 상품은 add_to_cart 라는 이벤트를 전송해야하고, 구매한 상품은 purchase 이벤트를 전송해야합니다.
하지만 이를 항목 이름, 즉 각 개별 상품의 이름으로 보기 위해서는 위에서 언급한 3개의 이벤트의 아이템 객체에 item_name을 동일하게 보내줘야 측정항목이 이어지면서 아래와 같은 리포트가 탄생합니다.

items 객체 데이터_GA4

만일 아이템 매개변수가 각각의 이벤트에 다른 값이 들어간다면 문제가 됩니다. 아래 표를 이해해보세요.

두번째 이미지의 경우, purchase 이벤트에는 일관되게 청바지가 item_name의 value 값으로 들어가는게 아니라, 원피스가 들어가 있으니, 원피스에서만 구매가 발생한것으로 기록됩니다.
실제 데이터에서는 원피스는 view_item과 add_to_cart에는 없으니 조회된 상품도 0이고, 장바구니에 추가된 상품도 0입니다.

실제로 아래와 같은 문제도 있습니다.
청과 바지사이에 띄어쓰기가 있다고 가정하면 GA4는 문자 데이터가 서로 다르기 때문에 서로 다른 상품으로 인식할 수 밖에 없습니다.

그래서 전자상거래 이벤트는 결국 같은 매개변수를 공유하고 있는 이벤트에는 같은 value값이 들어가야 자동으로 전자상거래 리포트를 조회할 수 있습니다.
그렇기 때문에 한치의 오탈자도 없이 데이터를 보내고 검증하는 절차가충분히 필요합니다.

이번 글에서는 GA4 전자상거래를 이해하기 위해, 다음 글에서는 GA4 전자상거래를 마케터가 이해하기 위한 프로그래밍 지식을 다뤄보았습니다.
이제 전자상거래 리포트를 모두 이해할 준비가 되었습니다.
다음 내용에서는 GA4 데모 계정으로 이동하여 GA4 전자상거래와 관련된 측정 기준과 측정항목을 모두 살펴봅시다.

 

10. GA4 전자상거래 표준 리포트 정복하기

1) 표준 리포트 > GA4 전자상거래 구매 > 측정 기준 알아보기

전자상거래 구매리포트

위 이미지와 같이 표준 리포트의 [수익 창출] – [전자상거래 구매] 리포트로 이동합니다.

전자상거래 리포트 측정기준

항목 이름의 드롭다운 메뉴를 누르면, 위와 같이 전자상거래 리포트에서 쓰이는 측정기준들이 나열됩니다.   

항목 이름 : 상품의 이름을 의미합니다.
예를들어 아래 이미지와 같이 구매 이벤트를 전송한다고 했을 때, item 객체 안에 있는 Key 중에서, item_name이라는 Key의 Value값이 항목 이름을 채웁니다.

항목이름

항목 ID : 상품의 고유한 ID값을 의미합니다.
이름이 같더라도 ID가 다른 상품이 있을 수 있기 때문에 반드시 보내주어야합니다.
item 객체 안에 있는 Key 중에서, item_id이라는 Key의 Value값이 항목 ID를 채웁니다.

항목 ID

어떤 쇼핑몰이든 모든 상품마다 ID값이 있습니다.
예시 스크립트에는 SKU_로 상품의 식별 ID가 있으나, 카페24는 조금 다릅니다.
카페24의 콘솔창에서 제품의 ID를 검색하면 223과 같이 숫자가 나오는것을 볼 수 있습니다.
카페24는 별도의 형식없이, 제품을 업로드하는대로 제품의 고유 식별자를 숫자대로 붙인다는 것을 알 수 있습니다.
제품 ID가 어떤 형식 없이 위와같이 숫자로만 이루어져있다면 당연히 GA4로도 아래와 같이 데이터가 나타나야합니다.

항목 ID

항목 ID

항목 카테고리 :항목 카테고리는 말그대로 특정 상품의 카테고리를 의미합니다.
item 객체 안에 있는 Key 중에서, item_category이라는 Key의 Value값이 항목 카테고리를 채웁니다.

항목 카테고리

상품 카테고리 2,3,4,5 :조금 특이하게도 항목 카테고리랑 같은 역할을 하는 측정 기준들입니다.
하지만 측정 기준의 이름이 항목 카테고리에서 상품 카테고리 2,3,4,5로 바뀌어져있는것을 알 수 있습니다.
상품 카테고리의 숫자가 많아질수록 조금 더 세부적인 카테고리 값을 넣도록 일반적으로 설계합니다.

상품 카테고리

세부적인 카테고리가 없다면 굳이 item_category5까지 값을 모두 넣어줄 필요가 없습니다.
필요에 따라 자유롭게 카테고리에 있는 슬롯들을 사용할 수 있습니다.
하지만 최대 5개까지만 가능하다는 점을 미리 인지해 두어야합니다.

** 주의할점 : item_category 매개변수를 받아오는 측정기준의 이름은 항목 카테고리 입니다.
item_category 2의 매개변수를 받아오는 측정 기준의 이름은 상품 카테고리 2 입니다.
또 상품 카테고리 3,4,5 처럼 제일 최초의 item_category를 제외하고는 모두 다 상품 카테고리를 사용하여 별도로 관리할 때에도 있습니다.

항목 대안

직관적으로 이해하기 어렵지만, 항목대안은 제품의 옵션명을 의미합니다.
item 객체 안에 있는 Key 중에서, variant 라는 Key의 Value값이 항목 이름을 채웁니다.
제품의 옵션명이 따로 없는 단일 제품이라면 굳이 전송하지 않아도 괜찮습니다.

항목 대안

상품 브랜드

상품의 브랜드명을 의미합니다. 1개의 브랜드에서 다양한 제품을 판매하는 경우에는 브랜드 이름이 유일하게 한개로 들어갈 것입니다.
다만, 다양한 제품을 판매하는 유통 쇼핑몰의 경우 브랜드가 여러개일 수 있습니다.(ex. 무신사, 쿠팡 등)
item 객체 안에 있는 Key 중에서,  brand라는 Key의 Value값이 항목 이름을 채웁니다.

상품 브랜드

 

2) 표준 리포트 > GA4 전자상거래 구매 > 측정 항목 알아보기

대표적인 측정항목

위 전자상거래 구매 리포트로 다시 돌아오면, 4가지의 측정 항목이 있는것을 볼 수 있습니다.   

조회된 상품 : 특정 상품의 상세페이지 조회 수를 의미합니다. 해당 측정 항목을 보기 위해서라면 상세페이지 조회가 발생할 때, view_item 이벤트를 전송해야합니다.

장바구니에 추가된 상품 : 특정 상품의 장바구니 담기 수를 의미합니다. 해당 측정 항목을 보기 위해서라면 장바구니 담기가 발생할 때, add_to_cart 이벤트를 전송해야합니다.

구매한 상품 : 특정 상품의 구매 횟수를 의미합니다. 해당 측정 항목을 보기 위해서라면 구매가 발생할 때, purchase 이벤트를 전송해야합니다.

상품 수익 :특정 상품의 수익을 의미합니다. Item 객체에서 price와 quantity를 곱한값으로 계산이 처리되어 나타납니다.

상품 수익

** 주의할점 : discount 할인 금액은 상품 수익을 계산할때에는 별도로 빼지않습니다.
discount는 최종 주문 자체에 대한 수익을 계산할 때 사용합니다.

이처럼 items 배열에 어떤 Key값과 Value값을 전송하느냐에 따라서, 또는 어떤 이벤트를 어떤 시점에 보내느냐에 따라서, GA4 전자상거래 리포트에서는 쇼핑몰에 필요한 다양한 데이터를 볼 수 있습니다.

아래 보이는 시트는 실제 GA4의 표준 리포트(Standard Report)에서 사용되는 측정기준 및 측정항목이 실제 전자상거래의 어떤 이벤트와 아이템 매개변수와 매칭되고 계산되는지를 나타낸 표입니다.
리포트별로 각각의 측정기준과 측정항목의 정의를 자세하게 기술해두었습니다.

1) 표준리포트 > 전자상거래 구매리포트에 있는 측정기준과 측정항목의 목록

측정기준과 측정항목의 목록

2) 표준리포트 > 프로모션 보고서에 있는 측정기준과 측정항목의 목록

측정기준과 측정항목의 목록

3) 표준리포트 > 주문 쿠폰 보고서에 있는 측정기준과 측정항목의 목록

측정기준과 측정항목의 목록

 

11. GA4 전자상거래 맞춤 리포트 정복하기

1) 맞춤 리포트 > GA4 전자상거래 > 측정 기준 알아보기

Step 1 : 탐색 > 자유형식 리포트를 클릭합니다.

탐색리포트

Step 2 : 측정 기준의 탭에서 (+) 버튼을 클릭합니다.

측정기준

Step 3 : 무려 318개가 되는 측정기준들이 있습니다.

측정기준

해당 318개의 측정기준 중에는 아직 업데이트 중인 측정기준도 있고, 개수가 바뀔수도 있습니다.
하지만 중요한것은 전자상거래 이벤트에 있는 다양한 변수나 Key가 어떤 GA4의 측정기준과 대응하느냐가 중요합니다.

이 중 GA4 전자상거래에 관련된 측정기준만 따로 정리해두었습니다.

측정기준과 측정항목의 목록

원본 문서 바로가기

2) 맞춤 리포트 > GA4 전자상거래 > 측정 항목 알아보기

Step 1 : 탐색 > 자유형식 리포트를 클릭합니다.

탐색리포트

Step 2 : 측정 항목의 탭에서 (+) 버튼을 클릭합니다.

측정기준

Step 3 : 무려 171개가 되는 측정항목들이 있습니다.

측정기준

측정기준과 동일하게, 해당 171개의 측정항목 중에는 아직 업데이트 중인 측정기준도 있고, 개수가 바뀔수도 있습니다.

하지만 중요한것은 전자상거래 이벤트에 있는 다양한 변수나 Key가 어떤 GA4의 측정항목들을 가지고 계산이 되는지에 대한 원리를 이해하고 있어야만 합니다.

이 중 GA4 전자상거래에 관련된 측정항목만 따로 정리해두었습니다.

측정기준과 측정항목의 목록

원본 문서 바로가기

구독해주시면, 앞으로 허들러스의 다양한 커머스 고객들의 전자상거래 리포트 활용 사례를 컨텐츠로 만나보실 수 있습니다. 긴 글 읽어주시느라 고생 많으셨습니다.