[강동7기 전Z전능 AI PM] 코멘토 청년취업사관학교 DAY 25
DAY 25 | 동적 매개변수와 BigQuery로 데이터 파이프라인 끝까지 보기
GA4 2일차였다. 어제 이벤트 만들기와 GTM 기초를 다뤘던 데 이어, 오늘은 파라미터를 더 똑똑하게 설계하는 법부터 그 데이터를 어디까지 끌고 가서 쓸 수 있는지까지 훑었다.
이벤트는 최소화, 파라미터는 최대한 동적으로
어제는 버튼 하나에 이벤트 하나를 붙이는 식으로 배웠는데, 오늘은 그 반대 방향의 원칙을 배웠다. 이벤트는 최소화하고 파라미터는 최대한 동적으로 만들라는 것. 동적 매개변수는 고정값이 아니라 실행 시점의 행동에 따라 달라지는 파라미터를 말한다. 스크롤 깊이 추적이 대표적인 예시였다. 스크롤 이벤트를 25%, 50%, 75%, 100%마다 각각 따로 만드는 대신, scroll 이벤트 하나 안에 scroll_depth라는 파라미터로 그때그때 값을 담아 보내는 식이다. GTM 기본 제공 변수에서 Scroll Depth 관련 변수를 켜고, 트리거에서 세로 스크롤 깊이 비율을 25/50/75/100으로 설정하면 된다. 이벤트 개수를 늘리지 않고도 훨씬 세밀한 데이터를 잡을 수 있다는 게 핵심이었다.
Looker Studio와 BigQuery, 그리고 AI Studio로 이어지는 파이프라인
GA4에 쌓인 데이터를 어디까지 끌고 갈 수 있는지도 짚었다. Looker Studio(구 Data Studio)는 GA4를 포함해 1,400개 이상의 데이터 소스와 연결해서 대화형 보고서와 대시보드를 무료로 만들 수 있는 시각화 도구다. 더 큰 규모의 데이터는 BigQuery로 넘어간다. 페타바이트급 데이터를 SQL로 초단위에 찾아주는 클라우드 웨어하우스로, 검색한 만큼만 비용을 내고 엑셀로는 불가능한 100억 줄 이상의 데이터도 처리할 수 있다.
흥미로웠던 건 여기서 다시 AI Studio로 이어지는 부분이었다. BigQuery에서 뽑은 JSON 데이터를 AI Studio 프롬프트에 그대로 넣고 “이 데이터로 Chart.js를 써서 일별 추이 대시보드를 만들어줘”라고 요청하면 시각화 코드가 바로 나온다. 이벤트 설계 → 수집 → BigQuery 분석 → AI Studio로 시각화까지, 데이터가 만들어지고 쓰이는 전체 파이프라인을 하루에 다 훑은 셈이었다.
이벤트 설계 프레임워크, GSM과 AARRR
이벤트를 무작정 쌓기 전에 순서를 정하는 법도 배웠다. 비즈니스 목표를 먼저 정하고, 그 목표에 답하기 위해 무엇을 물어야 하는지 질문을 세운 다음, 그 질문에 답할 수 있는 이벤트와 파라미터를 설계하는 순서다. Google의 GSM 프레임워크는 이 흐름을 Goal(목표)-Signal(신호)-Metric(측정 지표)로 구조화한다. AARRR(해적 지표)은 획득-활성화-매출-리텐션-추천이라는 5단계로 고객 여정을 나눠서 각 단계에 맞는 지표를 잡는 방법이었다. 둘 다 결국 “무엇을 측정할지”를 기능이 아니라 목표에서부터 거꾸로 설계하라는 이야기였다.
무신사 GA4 역설계
마지막 실습은 무신사였다. 무신사는 GA4가 꽤 꼼꼼하게 세팅되어 있어서, 그 설정값을 들여다보면 실무에서 이벤트와 파라미터를 어떻게 설계하는지 참고할 수 있는 좋은 사례였다. 크롬 개발자도구는 프론트엔드 개발자로 일할 때 매일 열어보던 화면이라 낯설지 않았는데, 그때는 API 응답을 확인하려고 열었다면 오늘은 다른 용도였다. Network 탭에서 v=2로 필터링하면 GA4로 전송되는 요청만 걸러낼 수 있고, Payload를 열어보면 실제로 전송되는 이벤트(en)와 파라미터(ep)가 그대로 드러난다.
이렇게 확인한 값들을 화면별로 정리해봤다. 추천 메인(/recommend) 페이지에서는 page_view 이벤트 하나에 성별 필터, 상품 목록 레이아웃, 로그인 여부, 접속 채널까지 파라미터로 함께 넘어가고 있었다.
| 파라미터 | 예시값 | 답하려는 질문 | 우선순위 |
|---|---|---|---|
| ep.gender_filter | A (All) | 사용자가 선호하는 성별 필터링 옵션은? | 높음 |
| ep.products_grid_type | 3GridView | 사용자가 선호하는 상품 목록 레이아웃은? | 보통 |
| up.user_status_of_login | N (비로그인) | 로그인 대비 비로그인 사용자 비율은? | 높음 |
| ep.channel_type | PC | 접속 기기 채널은 무엇인가? | 보통 |
상품 상세 페이지는 이벤트 종류부터 달랐다. 대표 이미지가 노출될 때는 impression_content, 후기 버튼이 노출되거나 클릭될 때는 impression_button, 장바구니 버튼을 눌렀을 때는 click_button으로 이벤트명 자체를 구분해두고 있었다. 페이지 하단 추천 상품 노출도 impression_content로 잡았고, 스페셜 콘텐츠 목록에서는 콘텐츠 카드가 몇 번째 위치에 있었는지(ep.index)까지 파라미터로 남기고 있었다.
하나의 page_view에 파라미터를 욱여넣을지, 아니면 impression·click처럼 이벤트명 자체를 나눌지를 화면 성격에 따라 구분해서 쓰고 있다는 걸 실제 설정값으로 확인한 게 오늘 가장 남는 부분이었다.
취업 부트캠프 청년취업사관학교 새싹 aipm dx교육 ai교육 실무프로젝트 실무경험 취업포트폴리오 포트폴리오 전z전능 코멘토 모비니티