# AdBrix 이벤트 전송

AdBrix 표준 이벤트와 커스텀 이벤트를 iOS/Android SDK API로 전송하는 기본 규칙과 코드 예시.

- 카테고리: AdBrix
- 소요 시간: 약 6분
- 난이도: 쉬움
- 업데이트: 2026.05.21
- 원문: /wiki/playbook/adbrix/how-to-send-adbrix-events

## 목차

- [이 문서의 목적](#purpose)
- [데이터 모델](#model)
- [1단계 · 표준 이벤트](#step-1)
- [2단계 · 커스텀 이벤트](#step-2)
- [3단계 · 사용자 정보 전달](#step-3)
- [참고 링크](#references)
- [자주 묻는 질문](#faq)

이 문서는 SDK 초기화 이후 AdBrix로 이벤트를 전송하는 기본 방식을 정리합니다. 표준 이벤트로 표현 가능한 행동은 표준 이벤트를 우선 사용하고, 서비스 고유 행동은 커스텀 이벤트로 보냅니다.

## 데이터 모델

> **이 문서 핵심**
>
> - 표준 이벤트는 AdBrix가 미리 정의한 핵심 행동입니다.
>
> - 커스텀 이벤트는 서비스 고유 행동을 직접 이름 지어 보냅니다.
>
> - 이벤트 속성은 Key-Value 형태로 이벤트의 맥락을 설명합니다.

![AdBrix 앱 상세 화면에서 Application Key와 Secret Key가 표시된 화면.](/wiki-assets/playbook/how-to-send-adbrix-events/01-app-keys.png)

> **화면 1.** 이벤트를 보내는 앱이 콘솔에서 보고 있는 앱과 같은지 AppKey 기준으로 확인합니다.

> **정보**
>
> 이벤트명은 2~32자, 영문 소문자·숫자·`-`·`_` 기준으로 설계합니다. 속성 키도 같은 규칙으로 통일하는 것이 리포트 운영에 유리합니다.

| 항목 | 공식 제한 |
| --- | --- |
| 커스텀 이벤트명 | String, 2~32자, 영문 소문자·숫자·`-`·`_` |
| 속성 개수 | 한 이벤트당 최대 100개 |
| 속성 Key | String, 2~32자, 영문 소문자·숫자·`_` |
| 속성 Value | 최대 1024 bytes, `null` 불가, Long/Double/Boolean/String |

## 1단계. 표준 이벤트 전송

로그인, 회원가입, 구매처럼 AdBrix가 정의한 행동은 표준 이벤트 상수를 사용합니다. 표준 이벤트는 콘솔에서 별도 매핑 없이 분석에 활용하기 쉽습니다.

**iOS · 표준 이벤트**
```swift
// iOS
Adbrix.shared().logEvent(ABEvent.LOGIN)
Adbrix.shared().logEvent(ABEvent.LOGOUT)
```

**Android · 표준 이벤트**
```kotlin
// Android
Adbrix.getInstance().logEvent(ABEvent.LOGIN)
Adbrix.getInstance().logEvent(ABEvent.LOGOUT)
```

회원가입 채널처럼 이벤트 맥락이 필요하면 properties를 함께 보냅니다.

**iOS · 속성과 함께 전송**
```swift
// iOS
let properties: [String: Any] = [
    ABEventProperty.SIGN_CHANNEL: ABSignUpChannel.KAKAO
]
Adbrix.shared().logEvent(name: ABEvent.SIGN_UP, properties: properties)
```

**Android · 속성과 함께 전송**
```kotlin
// Android
val properties = JSONObject().apply {
    put(ABEventProperty.SIGN_CHANNEL, ABSignUpChannel.KAKAO)
}
Adbrix.getInstance().logEvent(ABEvent.SIGN_UP, properties)
```

구매 같은 표준 커머스 이벤트는 필수 속성이 정해져 있습니다. 최소 상품 배열, 주문 ID, 결제 수단, 주문 금액, 배송비, 할인 금액을 함께 보냅니다.

**iOS · 구매 이벤트**
```swift
let item: [String: Any] = [
    ABEventProperty.ITEM_PRODUCT_ID: "product-001",
    ABEventProperty.ITEM_PRODUCT_NAME: "상품명",
    ABEventProperty.ITEM_PRICE: 1500.0,
    ABEventProperty.ITEM_QUANTITY: 1
]

let properties: [String: Any] = [
    ABEventProperty.ITEMS: [item],
    ABEventProperty.ORDER_ID: "order-001",
    ABEventProperty.PAYMENT_METHOD: ABPaymentMethod.CREDIT_CARD,
    ABEventProperty.ORDER_SALES: 1500.0,
    ABEventProperty.DELIVERY_CHARGE: 0.0,
    ABEventProperty.DISCOUNT: 0.0
]

Adbrix.shared().logEvent(name: ABEvent.PURCHASE, properties: properties)
```

**Android · 구매 이벤트**
```kotlin
val item = JSONObject().apply {
    put(ABEventProperty.ITEM_PRODUCT_ID, "product-001")
    put(ABEventProperty.ITEM_PRODUCT_NAME, "상품명")
    put(ABEventProperty.ITEM_PRICE, 1500.0)
    put(ABEventProperty.ITEM_QUANTITY, 1L)
}

val items = JSONArray().apply {
    put(item)
}

val properties = JSONObject().apply {
    put(ABEventProperty.ITEMS, items)
    put(ABEventProperty.ORDER_ID, "order-001")
    put(ABEventProperty.PAYMENT_METHOD, ABPaymentMethod.CREDIT_CARD)
    put(ABEventProperty.ORDER_SALES, 1500.0)
    put(ABEventProperty.DELIVERY_CHARGE, 0.0)
    put(ABEventProperty.DISCOUNT, 0.0)
}

Adbrix.getInstance().logEvent(ABEvent.PURCHASE, properties)
```

## 2단계. 커스텀 이벤트 전송

표준 이벤트로 표현하기 어려운 행동은 커스텀 이벤트로 보냅니다. 처음 검증할 때는 운영 이벤트 대신 `webview_bridge_test`처럼 테스트용 이름을 사용합니다.

**iOS · 커스텀 이벤트**
```swift
// iOS
Adbrix.shared().logEvent("custom_event_name")

Adbrix.shared().logEvent(
    name: "custom_event_name",
    properties: ["custom_property_key": "custom_property_value"]
)
```

**Android · 커스텀 이벤트**
```kotlin
// Android
Adbrix.getInstance().logEvent("custom_event_name", JSONObject())

val props = JSONObject().apply {
    put("custom_property_key", "custom_property_value")
}
Adbrix.getInstance().logEvent("custom_event_name", props)
```

## 3단계. 사용자 정보는 이벤트 속성으로 전달

AdBrix는 Mixpanel처럼 별도의 User Property API를 운영하는 구조가 아닙니다. 가입 채널, 등급, 플랜처럼 분석에 필요한 사용자 맥락은 표준 이벤트 속성이나 커스텀 이벤트 속성에 함께 담습니다.

**공통 사용자 맥락 예시**
```swift
let userMeta: [String: Any] = [
    "plan": "premium",
    "grade": "gold"
]
Adbrix.shared().logEvent(name: "screen_view", properties: userMeta)
```

> **팁**
>
> 모든 이벤트에 같은 메타 정보가 필요하다면 앱 단에서 공통 properties helper를 만들고, 이벤트 호출 시 합쳐서 보내는 방식을 권장합니다.

## 참고 링크

- [AdBrix iOS 이벤트 가이드](https://adbrix.gitbook.io/developer-guide/platform/ios/event)
- [AdBrix Android 이벤트 가이드](https://adbrix.gitbook.io/developer-guide/platform/android/event)
- [AdBrix 공통 상수](https://adbrix.gitbook.io/developer-guide/common/constants)
- [AdBrix 자체 테스트 가이드](https://adbrix.gitbook.io/developer-guide/common/self-test)
- [AdBrix 헬프센터](https://help.adbrix.io/hc/ko)

## 자주 묻는 질문

### 첫 테스트를 구매 이벤트로 해도 되나요?

권장하지 않습니다. 실제 분석 데이터에 노이즈가 섞이므로 테스트용 커스텀 이벤트로 먼저 경로를 확인합니다.

### 표준 이벤트와 커스텀 이벤트 중 무엇을 우선해야 하나요?

AdBrix가 표준으로 정의한 행동이면 표준 이벤트를 우선 사용합니다. 리포트와 어트리뷰션 해석이 쉬워집니다.

### 이벤트 속성이 100개를 넘으면 어떻게 되나요?

공식 가이드 기준으로 한 번에 100개를 초과한 속성은 적용되지 않습니다. 분석에 필요한 핵심 속성만 남기고 나머지는 서버 로그나 별도 분석 체계로 분리합니다.

## Navigation

- [전체 플레이북 Markdown sitemap](/wiki/playbook/sitemap.md)

### AdBrix

- [AdBrix](/wiki/playbook/adbrix)
- [AdBrix SDK 초기화](/wiki/playbook/adbrix/how-to-initialize-adbrix-sdk)
- [AdBrix 딥링크 설정](/wiki/playbook/adbrix/how-to-set-up-adbrix-deeplinks)
- [AdBrix WebView 이벤트 연동](/wiki/playbook/adbrix/how-to-connect-adbrix-webview-events)
- [AdBrix 이벤트 전송](/wiki/playbook/adbrix/how-to-send-adbrix-events) (현재 문서)
- [AdBrix 연동 검증](/wiki/playbook/adbrix/how-to-verify-adbrix-integration)
