GA4의 전자상거래 이벤트로 정확한 매출(Revenue) 잡기

nooreong·2023년 4월 25일
2

안녕하세요.
nooreong입니다.

오늘은 GA4의 전자상거래 이벤트로 최대한 정확한 매출(Revenue)을 잡는 법에 대해 알아보겠습니다. Google이 제공하는 전자상거래 가이드에는 분량이 민망할 정도로 중요한 정보가 모조리 누락되어 있습니다. 특히 매출 관련해서는 더욱 그렇습니다.

공식 가이드
Google Analytics 4 - Measure ecommerce

가이드에 명시된 정확한 계산식이 있다기 보다는, 예시로 제공된 코드에서 추측해야 하는 수준인데요. 심지어 오랜만에 들어가보면 공식 가이드도 자기들 마음대로 계속 바뀝니다.

지금 존재하는 정보만으로는 정확한 파악이 어렵기 때문에, 이 글의 내용이 완벽할 수는 없고, 앞으로 GA4가 바뀌면 더욱 정답과는 멀어질 수도 있음을 압니다. 하지만 글을 올리는 현 시점에서는 직접 여러 글을 찾아보시는 것보다 많은 시간을 아끼실 수 있는 글이 될 것임을 약속드립니다.

가장 중요한 두 이벤트

  1. purchase (구매)
    매출을 더하는 이벤트입니다.
  2. refund (환불)
    매출을 빼는 이벤트입니다.

전자상거래 이벤트와 매개변수의 구조

우선, 전자상거래 이벤트와 매출과 관련된 매개변수만 추려서 구조화하면 다음과 같습니다.

  • event
  • ecommerce
    + value
    + shipping
    + items
    • (item 1)
      • discount
      • price
      • quantity
    • (item 2)
      • discount
      • price
      • quantity
    • (item 3)
      • discount
      • price
      • quantity

매개변수의 계산

quantity, discount, price

공식 가이드
Google Analytics 4 - Apply a discount to an ecommerce event

price를 정가로, discount를 전체 할인 금액으로 잘못 설명하는 해외 블로그도 많은데요. 위 공식 가이드가 추가되면서 각 매개변수에 정확히 어떤 값을 담아야 하는지, 서로 어떻게 상호작용하는지 드디어 명확해졌습니다.

  1. quantity
    판매 수량
  2. discount
    전체 할인 금액을 quantity로 나누어 상품 1개 단위로 안분한 할인 금액
  3. price
    상품 1개의 정가에서 discount를 뺀 금액

정가는 매개변수로 존재하지도 않는다는 점, 그리고 discount는 늘 상품 1개 단위로 배분된 할인 금액이라는 점을 반드시 기억해야 합니다.

purchase 이벤트의 value

구글 가이드에 있는 purchase 이벤트 예시에서 다음과 같은 식을 도출할 수 있습니다.

  • value = [(price * quantity)의 총 합] - [discount의 총 합] + [shipping * 1]

저는 purchase 이벤트만 생각하면 value 값을 직접 값을 입력하는 것보다는 다른 매개변수를 이용하여 자동으로 계산해주는 게 낫지 않나 생각하는데요. 또 refund 이벤트까지 생각하면 자동으로 계산하지 않는 것이 더 나은 것 같습니다. 그 이유는 아래에서 살펴보겠습니다.

refund 이벤트의 value

저희 회사에서는 몇 번의 실험 끝에 refund 이벤트에서의 value는 '회사에서 유저에게 실제로 환불해줘야 하는 금액'으로 결론지었습니다. 이에 따라 정답은 아닐 수도 있지만 환불 정책에 따라 다른 계산식을 적용하고 있습니다.

유료배송 환불

  • 구매자 책임
    value = [(price * quantity)의 총 합] - [discount의 총 합] - [shipping * 1]
  • 구매자 책임 아님
    value = [(price * quantity)의 총 합] - [discount의 총 합] + [shipping * 1]

무료배송 환불

  • 구매자 책임
    value = [(price * quantity)의 총 합] - [discount의 총 합] - [왕복 배송비]
  • 구매자 책임 아님
    value = [(price * quantity)의 총 합] - [discount의 총 합]

refund 이벤트의 변경사항

최근 refund 이벤트에 대한 변경 사항이 있었습니다. 변경 전 가이드에는 아래처럼 전체 환불의 경우 간단하게 refund 이벤트에 transaction_id만 적어 보내면 된다고 적혀있었는데요. (중문 가이드에는 업데이트가 안 되었길래 굳이 찾아왔습니다.)

이것도 지금은 전체 환불, 부분 환불 상관 없이 환불 대상인 item을 모두 명시하라고 바뀐 상태입니다. value도 당연히 적어야 하고요.

결국 value만 잘 넣으면 되나요?

우선 매출에 직접적으로 관여하는 매개변수가 value인 것은 맞습니다. 그러나 모든 지표에서 그런 것은 아닙니다.
위 예시를 보시면 item revenue라는 지표는 items 배열 내의 price와 quantity의 곱을 통해서만 구해지는데, 결국 value만 잘 넣어서 되는 문제는 아닌 것이죠.

GA4에서는 각 매개변수를 계산하여 (유용하지는 않을지라도) 다양한 지표를 제공하고자 노력하기 때문에 각 매개변수의 값을 잘 넣는 것도 중요합니다.

마치면서

개인적으로 정확한 전자상거래 데이터는 반드시 DB에 의존하고, GA4의 전자상거래 데이터는 트렌드나 볼륨을 파악하는 용도의 보조 지표로만 사용하는 것이 좋은 것 같습니다. 각 매개변수의 산식도 Google이 명확히 제공하지 않는 상태에서 사용자가 이를 모두 파악하기에는 한계가 있죠. 또한 여러분의 이커머스 프로덕트가 복잡한 할인, 환불 정책, 상품 구성을 가지고 있을수록 오차는 더욱 크게 발생할 수밖에 없습니다.

도움 되시길 바랍니다.
nooreong 드림.

profile
nooreong의 velog입니다.

6개의 댓글

comment-user-thumbnail
2023년 6월 16일

안녕하세요, 혹시 질문 하나 남겨도 될까요?
전자상거래가 찍히도록 작업을 해놨는데 상품수익이
\19,102 / \3,016 이런식으로 뜬금없이 일원단위까지 붙는데 혹시 짐작가시는게 있을까요?
각각 데이터로 보내는 price는 19,000 / 3,000입니다.
tax도 0으로 해놓고 심지어 같은 상품 구매건인데도 날짜에 따라서 찍히는 상품수익 값이 달라지더라구요.
아무리 구글링해도 관련 문서는 없는 것 같고..

1개의 답글