EVENT 엔드포인트 API 레퍼런스

EVENT 엔드포인트 API 레퍼런스

SDK 구현 대신 server-to-server 연동을 통해 Singular의 REST API를 사용하여 인앱 이벤트와 매출을 추적하고, 어트리뷰션 분석 및 캠페인 최적화에 활용하세요.


개요

Server-to-Server 사용 사례

EVENT API는 인앱 이벤트 추적을 지원합니다. 앱이 사용자 상호작용 데이터를 여러분의 백엔드로 전달하면, 백엔드가 이를 Singular 서버로 전송하여 이벤트 어트리뷰션 및 매출 분석 리포팅에 사용합니다.

지원 기능:

  • 이벤트 어트리뷰션: 사용자 행동을 마케팅 캠페인과 연결
  • 매출 추적: 인앱 구매 및 거래를 측정하고 어트리뷰션
  • 커스텀 이벤트: 회원 가입부터 레벨 완료까지 모든 사용자 상호작용 추적
  • 이벤트 속성: 보다 심층적인 분석을 위해 이벤트에 맥락 데이터 첨부

데이터 흐름 아키텍처

Server-to-server 이벤트 추적은 4단계 데이터 전송 프로세스를 따릅니다.

  1. 클라이언트 수집: 앱이 이벤트 데이터와 디바이스 식별자를 수집
  2. 서버 전송: 앱이 이벤트 데이터를 여러분의 백엔드 서버로 전달
  3. 디바이스 그래프 조회: 서버가 Singular 디바이스 그래프에서 디바이스 정보를 조회하거나 업데이트
  4. Event API 호출: 서버가 이벤트를 Singular REST API 엔드포인트로 전송

이벤트 데이터 흐름 다이어그램


필수 요구사항

사전 요구사항:

  • 이벤트 이전에 SESSION: 이벤트 추적을 하기 전에 반드시 SESSION이 먼저 성립되어야 함
  • 순차적 순서: 잘못된 세션 순서는 데이터 불일치 및 어트리뷰션 오류를 유발

연동 제약사항:

  • 실시간 처리: 요청은 개별적으로 처리됨—배치는 지원되지 않음
  • 시간순 이벤트: 이벤트는 발생한 순서대로 전송되어야 함
  • 중복 제거 없음: Singular는 데이터를 중복 제거하지 않음—중복을 방지하려면 서버 측에서 중복 제거를 구현
  • 데이터 영속성: 디바이스 수준 데이터는 수집 후 삭제할 수 없음—전송 전에 검증

이벤트 추적 가이드라인

네이밍 규칙과 데이터 구조에 대한 Singular의 모범 사례를 따라 이벤트 추적을 구현하세요.

이벤트 정의

이벤트 정의하기

S2S 연동을 구현하기 전에, 캠페인 성과 분석을 위해 여러분의 조직이 추적하려는 이벤트의 전체 목록을 정의하세요.

이벤트 계획 가이드: 인앱 이벤트 정의하기

이벤트 네이밍의 영향: Singular로 전달되는 이벤트 이름은 이벤트가 리포트, 익스포트, 포스트백에 어떻게 표시되는지를 직접적으로 결정합니다.


표준 이벤트 네이밍

모범 사례:


문자 제한

길이 제한:

  • 이벤트 이름: 최대 32 ASCII 문자(non-ASCII의 경우 UTF-8 변환 시 32바이트)
  • 이벤트 속성: 속성 키와 값당 최대 500 ASCII 문자

API 엔드포인트 선택

Singular은 서로 다른 연동 아키텍처에 최적화된 두 가지 EVENT 엔드포인트 버전을 제공합니다.

엔드포인트 선택: 연동 아키텍처와 디바이스 식별자 전략에 따라 엔드포인트를 선택하세요. 사용 사례가 올바른 엔드포인트를 결정합니다.

Event Endpoint V1

V1 사용 사례

플랫폼별 디바이스 식별자(IDFA, IDFV, AIFA, ASID 등)에 의존하는 연동에는 Event Endpoint V1을 사용하세요.

권장 대상:

  • 순수 서버 측: Singular SDK 구현이 없는 서버 측 연동
  • 하이브리드(비-SDID): Singular SDK가 Singular Device ID(SDID)를 사용하지 않는 하이브리드 연동

엔드포인트 URL:

GET https://s2s.singular.net/api/v1/evt

Event Endpoint V2

V2 사용 사례

Singular SDK가 SDID를 사용하여 세션을 추적하고 서버가 동일한 SDID로 이벤트를 전송하는 하이브리드 연동에는 Event Endpoint V2를 사용하세요.

권장 대상:

  • 하이브리드(SDID 기반): Singular SDK가 SDID로 세션을 추적하고 서버 측 이벤트가 동일한 SDID를 사용
  • 단순화된 식별자: 플랫폼별 디바이스 식별자(IDFA, AIFA 등)를 사용하지 않는 구현

엔드포인트 URL:

GET https://s2s.singular.net/api/v2/evt

계정 활성화: V2 엔드포인트는 SDID 사용을 위한 Singular 계정 구성이 필요합니다. 활성화를 위해 담당 Solution Engineer 또는 CSM에게 문의하세요.


웹(p=Web) 변형

웹 연동은 이 동일한 EVENT 엔드포인트를 p=Web 과 함께 사용합니다. 웹에는 SESSION 호출이 없습니다. conversion_event=true 가 설정된 첫 번째 __PAGE_VISIT__ 이벤트가 앱 실행을 대신하여 어트리뷰션 터치포인트를 성립시킵니다.

전체 가이드: 전체 브라우저 지원 패턴(SDID 유지, __PAGE_VISIT__ 시퀀싱, web-to-app, 클립보드 디퍼드 딥링킹)에 대해서는 Web S2S 구현 가이드 를 참조하세요.

웹 전용 파라미터

이 파라미터들은 p=Web 일 때 적용됩니다. 공유 파라미터 ( a , i , ip , sdid , custom_user_id )는 S2S Fundamentals 에 정의되어 있습니다.

파라미터 세부 정보
conversion_event

boolean

어트리뷰션 이벤트인 __PAGE_VISIT__ 에만 true 로 설정하고, 그 외 모든 웹 이벤트에는 false 로 설정합니다. 컨버전 이벤트보다 먼저 도착한 비컨버전 이벤트는 매칭을 기다리기 위해 잠시 지연됩니다.

예시: true

attribution_data

JSON

랜딩 URL에서 파싱된 캠페인 데이터의 URL 인코딩된 JSON으로, __PAGE_VISIT__ 이벤트에 전송됩니다. 필드 매핑은 attribution_data 및 웹 클릭 ID 를 참조하세요.

예시: %7B%22partner_name%22%3A%22Snapchat%22%2C%22is_attributed%22%3A%22true%22%7D

web_url

string

마케팅 파라미터(UTM / wp* / pc* )를 포함했던 캠페인 랜딩 URL입니다. 어트리뷰션(터치포인트 생성)에 사용됩니다.

예시: http://my.landing.page/?utm_campaign=test&utm_source=test

web_page_referrer

string

리퍼러( document.referrer )입니다. 자연량 소스/유형 분류에 사용됩니다.

예시: https://www.google.com/

웹 클릭 ID: 파트너 클릭 ID ( ScCid , ttclid , gclid / gbraid / wbraid , dclid , fbclid , rdt_uuid )는 이벤트 e 파라미터 안에 전달합니다.


필수 디바이스 식별자

디바이스 식별자 요구사항은 엔드포인트 버전과 플랫폼에 따라 다릅니다. 아래 플랫폼별 요구사항을 검토하세요.

V1 엔드포인트 식별자

플랫폼별 식별자

Event Endpoint V1은 디바이스 운영체제 및 앱 배포 방식에 따라 플랫폼별 광고 식별자를 필요로 합니다.

이들은 S2S Fundamentals 에 한 번 정의된 공유 S2S 파라미터입니다.


V2 엔드포인트 식별자

SDID 전용 요구사항

Event Endpoint V2는 모든 플랫폼에서 Singular Device ID(SDID)만을 필요로 하여 디바이스 식별을 단순화합니다.

파라미터 세부 정보
sdid

플랫폼: iOS, Android, Web, PC, Xbox, PlayStation, Nintendo, MetaQuest, CTV

Singular SDK에서 얻거나 클라이언트 측에서 생성한 Singular Device ID입니다.

  • iOS/Android: SDID 사용을 위해 계정 활성화가 필요함—SDK 콜백 메서드가 초기화 후 SDID를 제공
  • 식별자 단순화: AIFA, ASID, IDFA, IDFV 파라미터가 필요 없어짐
  • Web: Singular Web SDK에서 조회
  • PC/콘솔/CTV: 고유한 앱 설치를 나타내는 클라이언트 생성 UUIDv4
  • SDID 조회하기

예시: 40009df0-d618-4d81-9da1-cbb3337b8dec


필수 파라미터

모든 EVENT 요청은 디바이스 식별자 외에 다음 필수 파라미터를 포함해야 합니다.

파라미터 형식: 모든 파라미터는 GET 메서드를 사용하여 URL 쿼리 파라미터로 전달해야 합니다. JSON 요청 본문으로 파라미터를 전송하지 마세요.

API 인증

이들은 S2S Fundamentals 에 한 번 정의된 공유 S2S 파라미터입니다.


디바이스 파라미터

이들은 S2S Fundamentals 에 한 번 정의된 공유 S2S 파라미터입니다.


애플리케이션 파라미터

이들은 S2S Fundamentals 에 한 번 정의된 공유 S2S 파라미터입니다.


이벤트 파라미터

파라미터 세부 정보
n

string

추적하는 이벤트의 이름입니다.

예시: sng_add_to_cart


선택 파라미터

선택 파라미터는 추가적인 맥락과 기능으로 이벤트 추적을 강화합니다.

타임스탬프 파라미터

파라미터 세부 정보
utime

integer

이벤트의 10자리 Unix 타임스탬프입니다.

예시: 1483228800

umilisec

integer

밀리초 단위의 13자리 Unix 타임스탬프입니다.

예시: 1483228800000


이벤트 속성

파트너 Conversion API 지원: Singular의 Conversion API 연동을 통해 이러한 이벤트를 광고 네트워크 파트너로 전달하려면, 표준 선택적 이벤트 속성(eventIdehash와 같은 해시된 자사 데이터)을 포함하세요. Conversion API 연동을 위한 표준 이벤트 속성을 참조하세요.

파라미터 세부 정보
e

JSON

커스텀 이벤트 속성을 지정하는 JSON URL 인코딩 문자열입니다.

JSON 구조:

{
  "sng_attr_content_id": 5581,
  "sng_attr_content": "XBox",
  "sng_attr_content_type": "electronics"
}

URL 인코딩 예시:

%7B%22sng_attr_content_id%22%3A5581%2C%22sng_attr_content%22%3A%22XBox%22%2C%22sng_attr_content_type%22%3A%22electronics%22%7D
global_properties

JSON

이벤트에 전역적으로 적용되는 커스텀 키-값 쌍을 담은 JSON URL 인코딩 오브젝트입니다.

제한:

  • 최대 5개의 키-값 쌍
  • 키와 값당 최대 200자

JSON: {"key1":"value1","key2":"value2"}

URL 인코딩: %7B%22key1%22%3A%22value1%22%2C%22key2%22%3A%22value2%22%7D


네트워크 파라미터

이들은 S2S Fundamentals 에 한 번 정의된 공유 S2S 파라미터입니다.


데이터 프라이버시

이들은 S2S Fundamentals 에 한 번 정의된 공유 S2S 파라미터입니다.


크로스 디바이스 지원

이들은 S2S Fundamentals 에 한 번 정의된 공유 S2S 파라미터입니다.


SKAdNetwork 지원

파라미터 세부 정보
skan_conversion_value
iOS

integer

이벤트 시점의 최신 SKAdNetwork 컨버전 값입니다.

자세히 알아보기: SKAdNetwork 구현

예시: 7

skan_first_call_timestamp
iOS

integer

SKAdNetwork API에 대한 첫 호출의 Unix 타임스탬프입니다.

예시: 1483228800

skan_last_call_timestamp
iOS

integer

이벤트 시점의 SKAdNetwork API에 대한 가장 최근 호출의 Unix 타임스탬프입니다.

예시: 1483228800


매출 추적

적절한 검증 및 통화 처리로 인앱 구매와 매출 이벤트를 추적하세요.

필수 매출 파라미터

기본 매출 추적

직접 매출 검증을 수행할 때 매출 이벤트 추적에 필요한 최소 파라미터입니다.

모범 사례: 이벤트 요청을 Singular로 전송하기 전에 서버 측에서 App Store와 매출 이벤트를 검증하세요. 직접 검증을 수행하는 경우 이 파라미터들만 필요합니다.

파라미터 세부 정보
is_revenue_event

boolean

이벤트가 매출 이벤트인지 여부를 지정합니다.

  • 이벤트 이름이 __iap__ 이거나 0이 아닌 amt 가 제공되면 생략 가능

예시: true

amt

number

거래의 통화 금액입니다.

  • cur 파라미터와 함께 사용

예시: 2.51

cur

string

ISO 4217 세 글자 대문자 통화 코드입니다.

  • amt 파라미터와 함께 사용

예시: USD


매출 검증 파라미터

Singular 검증 매출

Singular이 App Store와 서버 측 매출 검증을 수행하도록 하는 선택 파라미터입니다.

검증 요구사항:

  • App Store와의 매출 검증을 Singular에 의존하는 경우 필수
  • 구매 영수증 및 서명 값의 올바른 구문을 확인
  • 잘못된 형식은 Singular이 매출을 차단하고 __iapinvalid__ 이벤트를 생성하게 함
파라미터 세부 정보
purchase_receipt
iOS, Android

JSON

구매 거래에서 받은 영수증입니다.

예시(iOS):

MIISqwYJKoZI...cNqts0jvcNvPcK7yuj0KhJ9nTTQ54kDKfReihzc6aw==

예시(Android, URL 인코딩):

%7B%22orderId%22%3A%22GPA.1234%22%2C%22packageName%22%3A%22com.example%22%2C%22productId%22%3A%22com.example.product%22...
receipt_signature
Android

string

구매 영수증에 서명하는 데 사용된 서명(Android 전용)입니다.

예시:

TyVJfHg8OAoW7W4wuJt...5agEDMnNXvhfrw==
purchase_product_id

string

제품 SKU 식별자입니다.

예시: com.example.product

purchase_transaction_id

string

거래 식별자입니다.

예시(iOS): 380000123004321

예시(Android): GPA.1234-1234-1234-12345


요청 예시

샘플 코드는 여러 프로그래밍 언어에 걸친 EVENT 엔드포인트 연동을 보여줍니다.

예시 고지사항: 코드 샘플에 모든 필수 파라미터가 포함되어 있지 않을 수 있습니다. 프로덕션 구현 전에 전체 파라미터 목록을 검증하세요. 개발/테스트에는 고유한 i (앱 식별자)를 사용하세요.

PYTHON CURL HTTP JAVA

Python 예시

import requests

params = {
    'a': 'sdk_key_here',
    'p': 'Android',
    'i': 'com.singular.app',
    'ip': '10.1.2.3',
    've': '9.2',
    'ma': 'samsung',
    'mo': 'SM-G935F',
    'lc': 'en_US',
    'bd': 'Build/13D15',
    'aifa': '8ecd7512-2864-440c-93f3-a3cabe62525b',
    'asid': 'edee92a2-7b2f-45f4-a509-840f170fc6d9',
    'n': 'sng_add_to_cart'
}

response = requests.get('https://s2s.singular.net/api/v1/evt', params=params)
print(response.json())

응답 코드 및 오류

EVENT 엔드포인트는 요청 성공 또는 실패를 나타내는 HTTP 상태 코드와 JSON 응답을 반환합니다.

전체 오류 문서: S2S 응답 코드 및 오류 처리


테스트 및 검증

실시간 데이터 검증을 위해 Singular SDK Console을 사용하여 프로덕션 배포 전에 S2S 이벤트 연동을 확인하세요.

테스트 절차

엔드투엔드 검증

  1. 테스트 디바이스 등록: 디바이스 광고 ID를 확보하여 Singular SDK Console 에 추가
  2. Console 로깅 활성화: 테스트 데이터를 캡처하기 위해 SDK Console에 디바이스 식별자 추가
  3. 개발용 App ID 사용: 테스트 데이터를 프로덕션 데이터와 분리하기 위해 앱 식별자를 개발 버전(예: com.singular.app.dev )으로 재정의
  4. 빌드 및 실행: 종료된 상태에서 앱을 빌드하거나 열기
  5. 클라이언트 데이터 검증: 앱이 필요한 모든 Singular 데이터 포인트를 여러분의 서버로 전송하는지 확인
  6. 세션 확인: 여러분의 서버가 필요한 모든 파라미터와 함께 https://s2s.singular.net/api/v1/launch 로 SESSION 요청을 전송하는지 확인
  7. SDK Console 확인(세션): 몇 초 이내에 SESSION 이벤트가 SDK Console에 나타나야 함

SDK Console 세션 이벤트


이벤트 테스트

  1. 이벤트 트리거: 앱에서 이벤트를 트리거하는 단계로 진행
  2. 이벤트 데이터 검증: 이벤트가 필요한 모든 Singular 데이터 포인트와 함께 여러분의 서버로 전송되는지 확인
  3. 서버 요청 확인: 여러분의 서버가 필요한 모든 파라미터와 함께 https://s2s.singular.net/api/v1/evt 로 EVENT 요청을 전송하는지 확인
  4. SDK Console 확인(이벤트): 몇 초 이내에 EVENT가 SDK Console에 나타나야 함
  5. 테스트 반복: 전송된 모든 이벤트가 예상 값을 갖는지 검증

SDK Console 이벤트

필수 확인 사항:

  • EVENT가 수신되기 전에 앱 열기/포그라운드 시 SESSION 이벤트가 발생하는지 확인
  • EVENT의 필수 데이터 포인트가 SESSION 데이터 포인트와 일치하는지 확인

성공 지표: 이벤트가 SDK Console에 나타나면, 성공적인 엔드투엔드 이벤트 연동 테스트를 완료한 것입니다!


추가 리소스

테스트 문서

포괄적인 테스트 가이드: S2S 연동 테스트 가이드