파라미터의 수준(level)

파라미터(parameter)는 이벤트와 같이 따라가는 부가 정보입니다. 그런데 모든 파라미터가 똑같이 동작하는 게 아니라, ‘어디에 매달리느냐’에 따라 셋으로 나뉩니다 — 이벤트 레벨 파라미터·사용자 레벨 파라미터·아이템 레벨 파라미터. 어느 레벨에 두느냐를 잘못 정하면, 멀쩡한 데이터를 모아 놓고도 정작 분석할 때 ‘이 사용자가 VIP인지 아닌지’ 같은 기본 질문에도 답이 안 나오는 일이 생깁니다.

① 파라미터의 수준이란?

‘파라미터(parameter)’는 이벤트와 같이 따라가는 부가 정보입니다. 형식은 ‘이름 : 값’의 한 쌍입니다 — 예를 들어 사용자가 GNB의 ‘쇼핑’ 메뉴를 클릭했다면 gnb_label : '쇼핑'이라는 한 쌍을 그 클릭 이벤트와 함께 전송합니다.

그런데 GA4에는 한 가지 더 중요한 차원이 있습니다 — 같은 파라미터라도 ‘어디에 매달리는가’가 다르다는 것. 매달릴 수 있는 자리가 셋 — 이벤트 레벨·사용자 레벨·아이템 레벨입니다. 이것을 ‘파라미터의 수준(scope)’이라고 부릅니다.

어떤 정보를 어느 레벨에 두느냐는 단순한 표기상의 선택이 아닙니다. 같은 ‘쿠폰’이라는 이름의 파라미터도 이벤트 레벨에 두면 ‘주문 전체’의 쿠폰이 되고 아이템 레벨에 두면 ‘상품 한 개’의 쿠폰이 됩니다. 코드를 짜기 전에 ‘이 정보는 어느 레벨이어야 하는가’부터 정해야 분석에서 길이 막히지 않습니다.

② 세 자리 한눈 비교

같은 ‘부가 정보’라도 셋 중 어디에 다느냐로 의미가 갈립니다. 한 줄로 요약하면:

이벤트 레벨 파라미터

그 행동 한 번에만

한 번의 행동(클릭·조회·결제…)에 같이 따라가는 부가 정보. 그 행동에 한 번 묻고 끝납니다.

예시 · 클릭한 메뉴 이름, 검색어, 결제 수단

대표 시나리오 · GNB 메뉴 클릭(click_gnb)

사용자 레벨 파라미터

한 사람에게 영구적으로

사용자라는 ‘사람’ 자체에 부여되며, 한 번 설정해 두면 그 사용자의 모든 후속 행동에 자동으로 따라붙습니다.

예시 · 회원 등급, 구독 여부, 가입일

대표 시나리오 · 멤버십 등급(VIP·골드…)

아이템 레벨 파라미터

한 상품 한 개에

전자상거래 이벤트의 ‘상품 묶음’ 안 각 상품에 따로 부여되는 정보. 같은 이벤트 한 건이라도 상품마다 따로 적습니다.

예시 · 상품 이름·브랜드·카테고리·단가·수량

대표 시나리오 · 구매 완료(purchase)

시간click_gnbview_itemadd_to_cartpurchase이벤트 레벨 파라미터 — 그 점에만gnb_labelvaluecta_idpayment_type사용자 레벨 파라미터 — 한 번 설정하면 모든 점에 자동grade : VIP아이템 레벨 파라미터 — 그 이벤트 안 상품 묶음에만items: [{ 청바지·17,000원·1개 },{ 티셔츠·10,000원·1개 } ]
같은 사용자의 네 가지 행동(상단 메뉴 클릭 → 상품 보기 → 장바구니 → 구매)에서 — 이벤트 레벨 파라미터는 그 행동 한 건에만, 사용자 레벨 파라미터(grade: VIP)는 한 번 설정한 뒤 모든 후속 행동에 자동으로, 아이템 레벨 파라미터는 구매 이벤트의 상품 묶음 안 각 상품 객체에 각각 부여됩니다.

② 이벤트 레벨 파라미터 — click_gnb 예시

가장 단순한 레벨입니다. 한 번의 행동에 ‘그 행동에 대해 함께 알고 싶은 정보’를 묶어 전송합니다. 사용자가 사이트 상단 메뉴(GNB)에서 ‘쇼핑’ 버튼을 클릭한 상황을 가정합니다. 이 행동을 click_gnb 이벤트로 수집하고, ‘어떤 메뉴를 눌렀는지’를 파라미터로 함께 전송합니다.

이건 GNB 클릭이야!click_gnbgnb_label'쇼핑'gnb_position2page_location'/main'page_title'홈'EVENTPROPERTY(이벤트 레벨 파라미터)이 파라미터들은이 클릭 한 건에만적용된다다음 클릭(예: ‘로그인’ 버튼)은자기 파라미터를 새로 부여받음— 이전 값은 자동으로따라가지 않는다
이벤트 한 건(click_gnb)에 ‘어떤 메뉴’·‘어떤 위치’·‘어떤 페이지’를 파라미터로 같이 보냅니다. 다음에 다른 메뉴를 클릭하면 그 클릭은 새 파라미터를 따로 가집니다.

핵심은 — 이 파라미터들이 이 클릭 한 건에만 매달려 있다는 점입니다. 같은 사용자가 다음에 ‘로그인’ 버튼을 누르면 그 클릭은 별개의 click_gnb 이벤트로 수집되고, gnb_label 값은 ‘로그인’으로 새로 채워집니다. 이전의 ‘쇼핑’ 값은 자동으로 전파되지 않습니다.

이벤트 레벨 파라미터의 다른 예시

  • 검색 이벤트(search) — 검색어(search_term), 검색 카테고리
  • 상품 조회(view_item) — 페이지 URL, 페이지 제목, 통화·금액
  • 결제 시작(begin_checkout) — 결제 수단(payment_type), 배송 등급
  • 구매 완료(purchase) — 거래 ID, 총 금액, 통화, 주문 쿠폰, 배송비

공통점은 모두 ‘그 행동 한 건’에만 의미가 있다는 점입니다. 같은 사용자라도 두 번째 검색에서는 검색어가 달라지고, 두 번째 결제에서는 결제 수단이 달라질 수 있기 때문입니다.

③ 사용자 레벨 파라미터 — 멤버십 등급 예시

이번에는 다른 모양의 정보를 살펴봅니다 — 회원 등급. VIP 등급인 사용자가 메인 페이지를 보든·상품을 클릭하든·구매하든 ‘VIP’라는 사실은 모든 행동에 똑같이 적용됩니다. 따라서 매 이벤트마다 ‘grade: VIP’를 묻을 필요가 없고, 그 사람 자체에 한 번 ‘이 사람은 VIP’라는 속성을 부여해 두면 충분합니다.

로그인 시점에 한 번 설정grade'VIP'is_subscriber'true'signup_date'2024-08-15'시간click_gnbgrade:VIPview_itemgrade:VIPpurchasegrade:VIP한 번 설정한 뒤 모든 후속 행동에 자동으로 따라붙음 — 매 이벤트마다 같이 보낼 필요가 없다
사용자에 한 번 ‘VIP 회원·구독자·2024-08-15 가입’이라는 속성을 부여해 두면, 그 후 발생하는 모든 행동(클릭·조회·구매)이 자동으로 ‘VIP 사용자의 행동’으로 기록됩니다.

이 자리 덕분에 분석에서 어떤 일이 가능해지는지 살펴봅니다 — ‘VIP 사용자의 전환율 vs 일반 회원의 전환율’ 같은 비교가 한 줄로 끝납니다. 매 이벤트마다 등급을 직접 파라미터로 전송했다면, 어느 한 이벤트라도 누락된 순간 그 사용자의 그 이벤트만 ‘등급 없음’으로 집계되어 분석이 어긋났을 가능성이 큽니다.

사용자 레벨 파라미터의 다른 예시

  • 회원 정체성 — 회원 등급, 가입일, 구독 여부, 멤버십 만료일
  • 관심·자가식별 정보 — 연령대, 성별(사이트가 받은 자가 입력값)
  • 장기 행동 결과 — 누적 구매 횟수, 누적 결제액 등급, 마지막 방문일
  • 자동 수집되는 항목 — 언어, 국가, 기기 카테고리, 운영체제 (별도 작업 없이 GA4가 자동으로 부여)

④ 아이템 레벨 파라미터 — 구매 완료 예시

이제 마지막 자리입니다. 사용자가 한 번의 결제에서 ‘청바지 1개 + 티셔츠 1개’를 구매한 상황을 가정합니다. 이 행동은 purchase 이벤트 한 번으로 잡히지만 — 같은 거래 안에서도 상품마다 다른 정보가 있습니다. 청바지는 카테고리가 ‘하의’, 티셔츠는 ‘상의’. 청바지는 17,000원, 티셔츠는 10,000원. 이 ‘상품별로 따로 적용되는 정보’가 아이템 레벨 파라미터입니다.

이건 구매야!purchase이벤트 레벨 파라미터 (거래 정보)transaction_id'A1234567'value27000currency'KRW'(주문 전체에 한 번씩만 적는 정보)아이템 레벨 파라미터 (상품 묶음){ 상품 1 — 청바지 }item_name :'청바지'item_category :'하의'price :17000, quantity :1{ 상품 2 — 티셔츠 }item_name :'티셔츠'item_category :'상의'price :10000, quantity :1왜 상품 정보는 따로 적는가?한 거래에 담긴 상품 수가1개일 수도, 100개일 수도 있어서.상품마다 카테고리·단가·수량이다르니, 상품 묶음 안에 각각 적습니다.
한 번의 구매(purchase) 안에 거래 정보(주문 번호·총 금액·통화)는 한 번씩만, 상품 정보는 상품마다 따로 매답니다. 청바지와 티셔츠의 카테고리·단가·수량이 각각 다르기 때문에 한 줄로 묶을 수 없습니다.

이렇게 분리해 전송하면 GA4 ‘전자상거래 구매’ 리포트에서 — ‘청바지가 몇 번 조회됐고 몇 번 구매됐는지’, ‘상의 카테고리의 총 매출은 얼마인지’ 같은 상품 단위 분석이 그대로 나옵니다.

아이템 레벨 파라미터의 다른 예시

  • 상품 정체성 — 상품 ID(item_id), 상품 이름, 브랜드, 카테고리(1~5단계), 색상·사이즈 같은 옵션(item_variant)
  • 상품 가격·수량 — 단가, 수량, 할인액 등
  • 상품별 컨텍스트 — 그 상품이 노출된 목록 이름(‘BEST·NEW’), 목록 안 위치(인덱스), 상품 쿠폰(특정 상품에만 적용된 쿠폰)

이 아이템 수준의 구조에 대한 더 자세한 설명(왜 상품 묶음만 ‘배열’ 모양인지 등)은 ‘전자상거래 이벤트를 이해하기 위한 프로그래밍 지식’에서 다룹니다.

⑥ 어디에 둘지 — 한 가지 질문

새 파라미터를 어느 레벨에 둘지 결정할 때 던지는 질문은 단 하나입니다.

이 정보의 주인은?‘어느 레벨에 속하는 정보인가?’행동 — 한 번의 클릭/조회/결제검색어·결제 수단·클릭한 메뉴 이름→ 이벤트 레벨사람 — 그 사용자 자체회원 등급·가입일·구독 여부→ 사용자 레벨상품 한 개 — 그 SKU 자체상품 이름·브랜드·카테고리·단가→ 아이템 레벨애매하면 — ‘다음 행동에서도 이 값이 그대로 유지되어야 하나?’를 묻습니다. 유지되면 사용자, 그 행동에만 있으면 이벤트, 상품마다 다르면 아이템.
새 파라미터를 설계할 때 던지는 단 한 가지 질문 — “이 정보의 주인은 누구인가?” 답이 ‘행동’이면 이벤트 레벨, ‘사람’이면 사용자 레벨, ‘상품 한 개’이면 아이템 레벨입니다.

실제로 자주 등장하는 정보들을 표로 정리해 봤습니다.

정보어느 레벨이유 한 줄
회원 등급 (VIP·골드…)사용자 레벨그 사람의 신분. 모든 행동에 똑같이 적용.
구독 여부사용자 레벨그 사람의 상태. 해지 전까지 유지.
가입 일자사용자 레벨한 번 정해지면 안 바뀌는 사람 속성.
누적 구매 횟수 / 등급사용자 레벨그 사람의 누적 결과. 등급이 바뀌면 다시 매답니다.
언어 / 국가 / 기기사용자 레벨GA4가 자동으로 부여. 작업 불필요.
클릭한 메뉴 이름 (gnb_label)이벤트 레벨그 클릭 한 번의 속성.
검색어이벤트 레벨그 검색 한 번의 의미. 다음 행동엔 무의미.
결제 수단 (카드·계좌이체)이벤트 레벨그 구매 한 건의 속성. 다음 구매엔 다를 수 있음.
거래 ID / 총 금액 / 통화이벤트 레벨그 거래 한 건에 묶이는 정보.
주문 쿠폰 (3,000원 할인)이벤트 레벨주문 전체에 적용 — 그 거래의 속성.
배송비 / 배송 등급 / 세액이벤트 레벨그 주문 한 건의 거래 정보.
페이지 URL / 페이지 제목이벤트 레벨그 페이지 조회 한 건의 맥락.
상품 ID / 이름 / 브랜드아이템 레벨상품마다 다른 정보. 상품 묶음 안 각 객체에.
상품 카테고리 (1~5단계)아이템 레벨상품 한 개의 분류.
상품 단가 / 수량아이템 레벨같은 구매라도 상품마다 다름.
상품 쿠폰 (청바지 10%)아이템 레벨특정 상품에만 적용. 상품 묶음 안에.
색상·사이즈 (item_variant)아이템 레벨상품의 옵션.

한 정보가 두 자리에 동시에 있을 수도 있다

대표적인 사례가 쿠폰입니다. ‘5만원 이상 결제 시 3,000원 할인’ 같은 주문 쿠폰은 거래 한 건 전체에 적용되므로 이벤트 레벨에 두고, ‘청바지만 10% 할인’ 같은 상품 쿠폰은 특정 상품에만 적용되므로 아이템 레벨에 둡니다. 같은 ‘쿠폰’이라는 이름이지만 자리가 다르므로 GA4도 두 가지를 별개 데이터로 분리해 보관합니다 — 그래서 ‘주문 쿠폰별 매출’과 ‘상품 쿠폰별 매출’을 각각 분석할 수 있습니다.

자주 묻는 질문

‘로그인 여부’는 매 이벤트에 전송해야 하나요, 아니면 사용자 레벨에 한 번 설정해야 하나요?

사용자 레벨이 정답입니다. 로그인 시점에 한 번 ‘이 사람은 로그인 상태’라는 속성을 부여하면 이후 모든 행동에 자동으로 따라붙습니다. 매 이벤트에 파라미터로 보내면 한 이벤트라도 빠뜨릴 때 그 행동만 ‘로그인 여부 없음’으로 잡혀 분석이 어긋납니다. 로그아웃 시점에는 값만 ‘로그아웃’으로 갱신하면 됩니다.

‘회원 등급’과 ‘회원 ID’ 둘 다 사용자 레벨 파라미터 아닌가요?

비슷한 듯 다른 자리입니다. 회원 ID는 ‘이 사람이 누구인가’를 식별하기 위한 키로, GA4에는 ‘User ID’라는 별도 자리에 들어갑니다(이거 덕에 같은 사람의 PC·모바일을 하나로 묶을 수 있습니다). 회원 등급은 그 사람에 대한 ‘속성’으로 사용자 속성 자리에 들어갑니다. 회원 시스템이 있는 광고주는 보통 둘 다 보내 둡니다 — ID로 식별, 등급으로 분류.

같은 정보를 이벤트와 사용자 두 자리에 동시에 둘 수도 있나요?

가능은 하지만 거의 필요 없습니다. ‘쿠폰’처럼 의미가 다른 경우에는 두 자리에 따로 두는 게 맞지만(주문 쿠폰 vs 상품 쿠폰), 같은 의미의 정보를 두 자리에 중복해 두면 데이터만 무거워지고 분석에서 어느 쪽을 봐야 할지 혼란스러워집니다.

사용자 레벨 파라미터가 GA4 리포트에서 안 보여요.

대부분은 맞춤 측정기준 등록 누락입니다. 사용자 레벨 파라미터를 GA4가 받기는 하지만, 측정기준으로 쓰려면 ‘관리 → 맞춤 정의 → 맞춤 측정기준 만들기’에서 범위 = 사용자로 한 번 등록해야 합니다. GA4 표준 파라미터(언어·국가 등)는 자동으로 잡히지만, 광고주가 직접 만든 이름(membership_grade·store_grade 등)은 등록이 필수입니다. 등록 후 24~48시간 정도 적재 시간이 필요할 수 있습니다.

아이템 레벨 파라미터는 전자상거래 외에는 쓸 일이 없나요?

대부분 그렇습니다. ‘상품 묶음(items)’ 구조는 GA4가 ‘여러 상품을 한 이벤트에 담기 위해’ 정해 둔 자리라, 전자상거래 이벤트(view_item·add_to_cart·purchase 등)가 아닌 곳에서 보내면 GA4가 무시하거나 일반 파라미터로만 처리합니다. 콘텐츠 사이트·앱처럼 상품이 없는 광고주는 ‘이벤트·사용자’ 두 자리만으로 설계합니다.

사용자 속성에는 개수 한도가 있나요?

네 — GA4 무료 버전은 한 속성당 사용자 속성 25개까지, 한 이벤트당 파라미터 25개까지 받습니다. 실제 광고주가 25개에 도달하는 경우는 드뭅니다. 더 자세한 한도는 ‘GA4 한도’ 공식 문서에 있습니다.

사용자 속성은 로그아웃 시 ‘지워야’ 하나요?

지우기보다는 값을 덮어쓰기가 권장됩니다. 로그아웃 시점에 ‘이 사용자의 로그인 상태는 로그아웃’이라는 값으로 다시 설정하면 됩니다. 등급도 마찬가지로 — 회원이 비회원이 되었다면 ‘등급: 비회원’으로 갱신합니다. 같은 기기에서 다른 회원이 로그인하면 그때 새 값으로 다시 설정합니다.

이 문서가 도움이 되셨나요?