1. Introduction
안녕하세요. 플러스제로입니다.
이번엔 GA에 Measurement Protocol(MP), 측정 프로토콜을 전송하는 방법에 대해서 다뤄보고자 합니다.
이전에 측정 프로토콜이 무엇인지 소개해드린 적이 있는데요. 아마 이 글을 읽으신 분들이라면 GA로 전송되는 모든 데이터는 Measurement Protocol(이하 MP)형태라는 것에 대해선 이해하셨을 거로 생각합니다.
MP를 쓰는 이유는 정확한 측정을 위한 목적으로 볼 수 있습니다. 한국에만 존재하는 “무통장 입금” 방식은 GA의 매출 정확도를 포기할 수밖에 없는 불편한 존재이기도 합니다. 왜냐하면 사용자가 무통장입금을 선택한 이후에 실제로 입금하여 결제 완료가 되었는지는 GA에서 알 수 없기 때문이죠. 이는 KPI를 정확히 산출해내는 데 있어 어려움이 될 수밖에 없습니다.
우리는 MP를 보내기 위해선 GA로 HTTP Request를 POST 해야 한다는 사실을 알고 있습니다.
하지만 이를 실제로 구현하는 데 어려움이 있으셨을 거로 생각합니다.
그래서 이번엔 MP를 GA로 전송하는 구현방식에 대해서 Google codelabs와 함께 살펴보도록 하겠습니다.
2. Measurement Protocol : URL Endpoint
MP를 GA에 POST 하기 위해선 URL Endpoint로 Payload Data를 JSON 형식으로 전송해야 합니다.
쉽게 말하면 다음과 같은 형태로 URL을 작성해야 합니다.
URL의 HOST와 Path 부분은 ‘https://www.google-analytics.com/mp/collect’ 로 고정되지만 이후 Query parameter가 두 개 존재한다는 사실을 알 수 있습니다. 이는 MP를 GA에 전송하기 위해 필수적으로 존재해야 합니다. 우리는 GA 계정에서 measurement ID와 API Secret Key를 찾아서 작성해야 합니다.
3. Measurement Protocol : Payload Data
Payload Data는 GA에 어떤 데이터를 보낼지 결정하는 제일 중요한 부분으로서 JSON POST body 형태로 일반적으로 CID와 이벤트 정보가 포함되어 있어야 합니다. Payload Data를 작성하는 규칙에 대해선 GA 개발자 가이드를 참고하시면 됩니다.
Payload를 작성하기 위해선 딕셔너리 자료형을 사용합니다. 그러나 이벤트 변수의 값이 많으면 작성GA에 정확히 정보가 전송되는지 알 수 없습니다. 따라서 유효성을 검증해주거나, Key와 Value를 입력하면 딕셔너리 자료형으로 반환해주는 Event Builder를 활용할 수 있습니다.
다음과 같이 작성할 수 있습니다.
import requests import json tracking_url = 'https://www.google-analytics.com/mp/collect?measurement_id=G-<Your_ID>&api_secret=<Your_Key>' payload = { "client_id": '<Your_CID>', "non_personalized_ads": False, "events": [{ "name": "purchase", "params": { "items": [ { "item_id": "a12345", "item_name": "플러스제로 GA4 컨설팅", "quantity": 1, "item_brand": "플러스제로", "item_category1": "측정프로토콜", "item_category2": "가이드", "item_variant": "정확한측정위한MP", "price": 10000, "index": 1}, ], "coupon": "플러스제로쿠폰", "currency": "KRW", "value": 10000, "shipping": 3000, "payment_type": "무통장입금", "transaction_id": "20228160000048", "discount": 5000 } }] } r = requests.post(tracking_url, data=json.dumps(payload), verify=True) print(r.status_code)
4. 정리
구글 코드랩은 Python으로 HTTP 요청을 POST 하고 있는데요. 사실 이런 과정은 다른 언어로도 충분히 구현할 수 있습니다. Measurement ID와 API Secret Key, 이벤트 정보를 담은 Json 자료형의 Payload 데이터를 https://www.google-analytics.com/mp/collect Endpoint로 업로드하면 됩니다.
감사합니다.