이벤트 이름과 표기법
이벤트 이름은 결국 사람이 짓고, 사람이 입력합니다. 같은 행동이 사람마다 다른 모양으로 적히면 GA4는 모두 ‘다른 이벤트’로 인식하므로, 한 가지 약속을 정해 두지 않으면 보고서가 흩어집니다. 이 글은 허들러스의 이벤트 이름 패턴 — [행위]_[대상] — 과, GA4 표준 표기법인 snake_case를 왜·어떻게 쓰는지를 정리합니다.
이름 패턴 — [행위]_[대상]
이벤트 이름은 두 조각으로 만듭니다. 앞쪽에는 고객의 ‘행위’를 나타내는 동사가, 뒤쪽에는 그 행위의 ‘대상’이 되는 명사가 들어가고, 두 조각 사이를 언더바(_)로 잇습니다.
| 이벤트 이름 | 행위(앞) | 대상(뒤) | 의미 |
|---|---|---|---|
click_gnb | click | gnb | 글로벌 내비게이션의 어떤 항목을 클릭함 |
click_btn | click | btn | 일반 버튼·CTA를 클릭함 |
click_tab | click | tab | 탭을 전환함 |
view_item | view | item | 상품 상세 페이지를 봄(추천 이벤트) |
submit_survey | submit | survey | 설문을 제출함 |
play_video | play | video | 영상 재생을 시작함 |
이 패턴의 장점은 단순합니다 — 이벤트 목록만 봐도 ‘무엇을 한 것’인지 즉시 보이고, 같은 행위끼리(모든 click_*) 또는 같은 대상끼리(모든 *_gnb) 묶어서 분석할 수 있습니다. 동사·명사 어휘를 어떻게 좁혀 둘지에 대한 규약은 별도 글(‘이벤트 이름 짓는 규칙’)에서 더 자세히 다룹니다.
왜 ‘표기법’이라는 게 필요한가?
이벤트 이름은 사람이 짓고, 사람이 코드/태그에 입력합니다. 그런데 컴퓨터는 글자를 ‘하나하나 정확히’ 비교합니다. 사람 눈에는 같아 보이는 두 이름이 GA4에는 완전히 다른 이벤트로 들어옵니다.
‘GNB 클릭’이라는 한 가지 행동을, 한 사이트의 여러 사람이 각자 다른 식으로 적었다고 해 봅시다.
대표 표기법 — snake / camel / kebab
같은 두 단어 ‘click gnb’를 각 표기법으로 옮기면 다음과 같이 달라집니다.
snake_case (GA4 표준)
click_gnb
띄어쓰기 자리에 언더바(_)를 넣고, 글자는 모두 소문자. Python·SQL·BigQuery에서 표준.
camelCase
clickGnb
두 번째 단어부터 첫 글자만 대문자. JavaScript·Java 변수/메서드에서 표준.
kebab-case
click-gnb
띄어쓰기 자리에 하이픈(-). URL·CSS 클래스명에선 표준 — GA4 이벤트 이름에선 비권장(아래 ‘기술 규칙’ 참고).
PascalCase
ClickGnb
모든 단어 첫 글자 대문자. 클래스명·React 컴포넌트에서 표준 — 이벤트 이름엔 거의 안 씀.
각 표기법은 어느 분야에서 출발했느냐의 차이일 뿐, 정답은 없습니다. 다만 한 시스템 안에서는 한 가지로 통일하는 것이 정답이고, GA4 환경에서는 그 한 가지가 snake_case입니다.
왜 GA4는 snake_case인가
GA4의 자동 수집·향상된 측정·추천 이벤트가 모두 snake_case로 정의되어 있습니다 — page_view, session_start, first_visit, sign_up, add_to_cart, begin_checkout, view_item… 우리가 만드는 맞춤 이벤트도 같은 모양을 따르는 것이 자연스럽습니다.
| 이유 | 내용 |
|---|---|
| GA4 표준이 그렇게 되어 있음 | 자동/추천 이벤트와 맞춤 이벤트가 같은 표기법이라야 보고서에서 ‘이것은 자동 이벤트, 저것은 우리가 만든 이벤트’의 시각적 일관성이 유지됩니다. |
| BigQuery·SQL 친화 | GA4 → BigQuery 내보내기를 켜면 이벤트 이름이 그대로 컬럼 값으로 들어갑니다. SQL에서 대소문자 섞인 식별자는 따옴표 처리가 필요해 쿼리가 지저분해지지만, 모두 소문자면 그런 부담이 없습니다. |
| 오탈자 노출 최소화 | ‘대소문자만 다른’ 실수(Click_Gnb vs click_gnb)가 사라집니다. 모두 소문자이므로 사람의 손이 헷갈릴 여지가 줄어듭니다. |
| 한국어 가독성 | 한국어를 모국어로 쓰는 사람의 눈에는 click_gnb가 clickGnb보다 단어 경계가 명확히 보입니다(언더바가 시각적 공백 역할). |
이벤트 이름의 기술 규칙
GA4가 요구하는 기술적 제약 + 사내 규약을 한 표로 정리합니다.
| 규칙 | GA4 공식 명세 | 사내 규약(허들러스) |
|---|---|---|
| 시작 문자 | 문자로 시작 (숫자·언더바·기호로 시작 금지). 시작이 잘못되면 GA4가 이벤트를 무시. | 영문 소문자로 시작 |
| 허용 문자 | 문자(영문·다국어 모두 포함), 숫자, 언더바(_). 공백·특수문자 금지. | 영문 소문자·숫자·_만 |
하이픈(-) | 공식 미허용. 일부 환경에서 Google이 자동으로 _로 치환하지만 보장되지 않음. | 아예 안 씀(자동 치환 의존 회피) |
| 한글 등 비영문 | 기술적으로 허용(‘non-English letters’ 명시). | 사용 안 함 — UTF-8에서 한 글자 3바이트라 메모리·전송 효율↓, 한·영 전환과 받침 입력으로 오탈자 확률↑, BigQuery·SQL·URL 처리 부담 |
| 대소문자 | 대소문자 구분(case-sensitive). Click_Gnb와 click_gnb는 다른 이벤트. | 모두 소문자(대소문자 실수 원천 차단) |
| 길이 | 40자 이내. 초과분은 잘림(다국어도 한 글자당 1자로 계산). | 의미가 통하는 가장 짧은 이름 |
| 예약 접두사 | ga_ · google_ · firebase_로 시작 금지. 위반 시 GA4가 무시할 수 있음. | 동일 |
| 개수 | 한 속성당 고유 이벤트 이름 약 500개까지(맞춤 이벤트 기준). | ‘분석에 쓸 것’ 위주로 설계 |
자주 묻는 질문
click과 tap을 구분해야 하나요?
본 위키는 웹·앱 모두 click으로 통일합니다. 모바일 환경에서도 ‘탭’이라는 행동이 결국 ‘클릭’과 분석상 같은 의미를 가지기 때문에, 두 단어를 섞어 쓰면 합산할 때마다 불편해집니다. (구분이 꼭 필요하면 매개변수에 device_type을 함께 보내는 방식을 권장합니다.)
동사 종류는 몇 개나 쓰면 적당한가요?
본 위키는 5개로 좁혀 둡니다 — click, view, submit, play, search. 그 외의 행동도 대부분 이 다섯 중 하나로 분류됩니다(select_tab 대신 click_tab, open_popup 대신 click_popup). 자세한 동사 어휘는 ‘이벤트 이름 짓는 규칙’ 글에서 다룹니다.
패턴을 벗어나는 이벤트도 있나요?
네 — GA4 추천 이벤트는 sign_up·purchase·add_to_cart처럼 ‘의미론적 이름’(동사 단독·동사+대상이 자유 형태)을 씁니다. 추천 이벤트는 GA4가 이미 이름을 정해 둔 영역이라 본 위키의 [행위]_[대상] 패턴을 강제하지 않습니다 — 추천 이벤트는 그 이름 그대로 쓰는 게 표준입니다(→ GA4 이벤트의 종류).
이름에 한글을 넣으면 안 되나요?
‘기술적으로 안 되는 것’은 아닙니다 — GA4 공식 명세는 이벤트 이름에 ‘English and non-English letters’를 모두 허용한다고 명시하고 있어, click_핫딜 같은 이름도 통과 자체는 됩니다. 다만 실무에서는 권장하지 않습니다:
- 메모리·전송 효율 ↓ — 한글은 UTF-8 기준 한 글자당 3바이트(UTF-16에선 2바이트지만 GA4·BigQuery·웹은 UTF-8 표준). 이름·인덱스·로그 어디에 들어가든 영문보다 부피가 큽니다.
- 오탈자 확률 ↑ — 한·영 키보드 전환과 받침이 있는 조합형 한글 입력 특성상, 사람이 같은 이름을 매번 정확히 적기 어렵습니다.
- 운영 부담 ↑ — BigQuery SQL·URL 인코딩·외부 분석 도구 연동 단계마다 별도 처리가 필요해 유지보수 손이 더 갑니다.
그래서 이름은 영문 소문자로만 만들고, 한글 콘텐츠(예: ‘핫딜’이라는 메뉴 이름)는 매개변수 값으로 보냅니다 — 예: click_gnb + gnb_name="핫딜". 이름은 ‘무엇을 했나’의 유형까지만, 한국어 콘텐츠는 값으로 — 라는 분리가 핵심입니다.
이미 운영 중인 사이트에 표기법이 섞여 있으면 어떻게 하나요?
두 가지 동시 처리 — ① 신규 이벤트는 무조건 snake_case로 통일하고, ② GA4의 ‘이벤트 수정’ 기능으로 기존의 clickGnb·ClickGnb 같은 변형을 click_gnb로 매핑해 줍니다. 과거 데이터까지 소급되지는 않지만, ‘앞으로의 데이터는 한 이름으로 모이게’ 만들 수 있습니다.
왜 kebab-case는 안 쓰나요? — 하이픈도 받긴 받지 않나요?
받는 경우도 있고, 안 받는 경우도 있어 ‘일관되지 않음’이 문제입니다. GA4 공식 명세에는 허용 문자가 letters · digits · underscores로 한정되어 있어 하이픈은 공식 미허용입니다. 다만 실제 동작상 Google이 하이픈을 자동으로 언더바로 치환해 받아 주는 사례가 있어 — click-gnb가 click_gnb로 바뀌어 들어올 수 있습니다. 이 자동 치환은 보장된 동작이 아니므로, ‘하이픈이 항상 안전하다’고 가정하면 곤란합니다.
그리고 보장되더라도 snake_case가 더 편합니다 — GA4 자동/추천 이벤트가 모두 snake_case라 우리 맞춤 이벤트도 같은 스타일을 따르는 게 시각적으로 일관되고, BigQuery SQL에서도 하이픈 식별자는 따옴표 처리가 필요해 번거롭습니다. 그래서 본 위키는 “하이픈 안 됨”보다 “snake_case 하나로 통일”이라는 표현을 씁니다.
