파라미터의 타입(type)

파라미터(parameter)는 ‘이름 : 값’의 한 쌍입니다. 그런데 ‘값’ 자리에 들어가는 데이터에도 형식(type)이 있고, 그 형식이 무엇이냐에 따라 GA4가 그 데이터로 할 수 있는 일이 달라집니다 — 합계를 낼 수 있는지, 정렬할 수 있는지, 그룹핑할 수 있는지가 결정됩니다. 이 글은 ‘값의 형식’ — 데이터 타입 — 의 기본과, GA4에 보낼 때 string으로 보낼지 number로 보낼지의 결정 기준을 정리합니다.

① 파라미터의 타입이란?

프로그래밍에서 ‘값(value)’이 가질 수 있는 형식을 ‘데이터 타입(data type)’이라고 부릅니다. JavaScript 기준으로 마케터가 알아 두면 좋은 타입은 여섯입니다.

GA4 지원

string

따옴표로 감싼 ‘문자열’. 글자·문장·코드 등 텍스트로 다루는 값.

"청바지" "SKU_12345" "VIP"
GA4 지원

number

따옴표 없는 ‘숫자’. 정수와 소수 모두 포함하며 사칙연산이 가능.

17000 3.14 0
참고

boolean

참/거짓 두 값만 가짐. ‘예/아니오’ 형태의 정보.

true false
참고

null / undefined

‘값이 없음’ 또는 ‘정의되지 않음’. 빈 자리를 표시.

null undefined
참고

array

대괄호로 감싼 ‘여러 값을 순서대로 담은 묶음’.

["사과","배"] [1, 2, 3]
참고

object

중괄호로 감싼 ‘이름:값 쌍의 묶음’. 한 대상의 여러 속성을 담음.

{ name: "사과", price: 2000 }

위 여섯 가운데 GA4가 파라미터 값으로 공식 지원하는 것은 두 가지 — stringnumber뿐입니다. 나머지(boolean·array·object)는 GA4가 직접 받지 않거나, 받더라도 string 또는 별도 구조(예: 전자상거래의 items 배열)로 변환되어 들어갑니다.

② GA4가 받는 두 가지 — string과 number

파라미터 값의 자리에 들어갈 수 있는 형식은 단 두 가지로 줄어듭니다.

프로그래밍의 6가지 타입string"청바지"number17000booleantruenullnullarray[1,2,3]object{a:1}GA4두 타입만string분류·이름·코드 등number계산·정렬이 필요한 수치
프로그래밍의 6가지 데이터 타입 중 GA4 파라미터가 공식적으로 받는 형식은 string과 number 둘뿐입니다. 나머지 타입은 GA4가 직접 받지 않거나 string으로 변환되어 들어갑니다.

나머지 타입은 어떻게 처리되나

  • boolean(true/false) → string으로 변환해 보냅니다("true"·"false").
  • array(여러 값의 묶음) → 일반 파라미터로는 못 보냅니다. 전자상거래의 items 같은 정해진 자리에서만 배열 형태가 허용됩니다.
  • object(이름:값 쌍 묶음) → 객체 자체를 보낼 수는 없고, 안의 각 속성을 별도 파라미터로 펼쳐 보냅니다.
  • null/undefined(없음) → 보내지 않는 것과 같습니다.

그래서 실제 설계할 때 던지는 질문은 단 하나입니다 — ‘이 값을 string으로 보낼까, number로 보낼까?

③ number로 보내야 하는 값 — 계산과 정렬이 필요한 모든 수치

다음 분석 중 하나라도 하게 될 값이라면 number로 보냅니다.

  • 사칙연산 — 합계, 평균, 최솟값, 최댓값 (예: 매출 합계, 평균 객단가)
  • 정렬 — 내림차순(descending) · 오름차순(ascending) (예: 가격 높은 순으로 정렬)
  • 구간 분석 — ‘1만원 이상 ~ 5만원 미만’ 같은 범위 그룹핑

대표적인 number 값들 — 상품 단가, 수량, 결제 금액, 배송비, 점수, 페이지 깊이, 체류 시간 등입니다. GA4에서 측정항목(metric)이 되어 표의 숫자 열에 들어가려면 number여야 합니다.

number로 보낸 가격price :17000price :10000따옴표 없이 숫자로 — GA4가 number 타입으로 인식GA4에서 자동 계산 가능합계27,000평균13,500최댓값17,000정렬 (내림차순)17,000 → 10,000
number 타입은 GA4 안에서 합계·평균·최대/최솟값·정렬이 자유롭습니다. 가격·수량·금액 같은 ‘수치 분석을 할 값’은 number로 보내야 측정항목(metric)으로 잡힙니다.

④ string으로 보내야 하는 값 — 분류·이름·코드

다음 두 조건 중 하나라도 해당하면 string으로 보냅니다.

  • ‘이걸로 그룹핑(GROUP BY)’을 한다 — 상품 이름별·카테고리별·등급별 분석
  • 값에 의미가 없고 식별만 한다 — 상품 ID, 사용자 ID, 거래 ID, 페이지 경로

대표적인 string 값들 — 상품 이름, 상품 ID(SKU), 카테고리, 브랜드, 회원 등급, 검색어, 페이지 URL·제목, 결제 수단 이름 등입니다. GA4에서 측정기준(dimension)이 되어 표의 ‘쪼개는 축’으로 쓰입니다.

이 값을 더하거나 평균 낼 일이 없다’가 핵심 판단입니다. 상품 ID 값들의 평균이 의미 없듯, 합계나 정렬이 무의미한 값은 string으로 보냅니다.

⑤ 결정 가이드 — 이 값은 string인가 number인가?

새 파라미터를 설계할 때 ‘값 자리에 무엇이 들어갈까’를 정한 다음 던지는 질문은 한 줄입니다 — “이 값을 합하거나 정렬할 일이 있는가?” 있으면 number, 없으면 string.

타입이유 한 줄
상품 단가 (17000)number합계·평균·정렬이 모두 의미 있음.
수량 (1, 2, 3…)number합계가 곧 ‘총 판매 수량’.
총 결제 금액 (24300)number매출 합계로 흐름.
배송비 (3000)number총 배송비·평균 배송비 분석.
체류 시간(초)number평균·구간 분석.
스크롤 깊이 (%)number평균 깊이·구간 분포.
상품 이름 ("청바지")string상품별 그룹핑.
상품 ID ("SKU_12345")string식별만 — 합·평균 의미 없음.
카테고리 ("의류")string분류 축.
회원 등급 ("VIP")string등급별 그룹핑.
검색어 ("청바지")string키워드별 빈도 분석.
결제 수단 ("카드")string수단별 그룹핑.
거래 ID ("a1b2c3...")string식별만 — 합·평균 의미 없음.
구독 여부 (true/false)stringboolean은 GA4에서 string으로 — "true"·"false".

자주 묻는 질문

number로 보내야 할 가격을 실수로 string("17000")으로 보내면 어떻게 되나요?

가격·수량 같은 수치는 처음부터 number로 — 따옴표 없이 — 전송하는 것이 안전합니다. string으로 보내면 GA4에서 측정기준(dimension)으로만 잡혀 합계·평균 같은 수치 분석이 어려워질 수 있습니다.

boolean(true/false)은 어떻게 보내면 되나요?

GA4는 boolean 타입을 직접 받지 않으므로 string으로 변환해 보냅니다 — is_subscriber : "true" 또는 "yes"·"no" 형태로. 분석할 때 ‘구독자/비구독자’ 두 그룹으로 나눠 보는 것이 목적이라면 어느 표기든 일관되게만 쓰면 됩니다.

array(배열)나 object(객체)는 정말 못 보내나요?

일반 파라미터로는 못 보냅니다. 예외는 전자상거래의 items 배열 — 이 자리는 GA4가 ‘여러 상품 객체를 한 이벤트에 담기 위해’ 미리 정해 둔 자리입니다. 그 외 자리에 배열이나 객체를 넣으면 GA4가 무시하거나 일부만 잘라 받습니다. 묶음 형태의 정보가 필요하면 이름을 여러 개로 펼쳐 각각 보내는 방식이 일반적입니다.

날짜·시간 값은 string인가요 number인가요?

분석 목적에 따라 다릅니다. ‘가입 일자’처럼 그룹핑·범위 조회를 할 거라면 ISO 형식의 string("2024-08-15")이 표준이고, ‘체류 시간(초)’처럼 평균·합계를 낼 거라면 number(초 단위 정수)로 보냅니다. ‘날짜 = string·시간 길이 = number’ 정도로 기억해 두면 됩니다.

한 파라미터를 두 타입으로 동시에 보낼 수도 있나요?

이름이 같으면 GA4는 하나의 파라미터로 인식하므로 일관된 타입으로만 보냅니다. ‘가격을 숫자로도 보고 싶고 가격대(구간)로도 보고 싶다’면 두 개의 다른 이름으로 — 예: price(number) + price_band(string, "1만원대"·"2만원대") — 분리해 보냅니다.

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