러더스택은 기업이 고객 데이터를 수집, 연동, 다양한 목적지로 라우팅할 수 있도록 지원하는오픈소스 고객 데이터 플랫폼(CDP)입니다. 고객 데이터 파이프라인을 관리할 수 있는 중앙 집중식 플랫폼을 제공하여 웹사이트, 모바일 앱, 서버, 클라우드 서비스 등 다양한 소스에서 데이터를 쉽게 수집할 수 있도록 지원합니다.
Singular는 iOS 및 Android 모바일 활동에 대한 Singular 서버 간(S2S) REST API를 통해 러더스택으로부터 이벤트 데이터를 수신할 수 있습니다. 이를 "클라우드 모드" 대상이라고 합니다. 아래 지침은 Rudderstack에서 Singular 대상을 추가하는 방법을 설명합니다.
대상 가이드 | 엔지니어링 팀 |
전제 조건 | 이 문서에서는 앱에이미 Rudderstack iOS 또는 Android SDK가 연동되어있다고 가정합니다. |
이 연동을 사용하려면 Rudderstack의 모바일 SDK를 사용 중이어야 합니다. 이 연동은 비모바일 이벤트 데이터와 호환되지 않습니다. 서버 또는 웹 이벤트는 지원되지 않습니다.
러더스택은 "클라우드 모드"를 통해 싱귤러로 보낼 수 있는 두 가지 유형의 트랙 이벤트를 지원합니다:
- 세션 이벤트
- 사용자 지정 이벤트
- 기본 인스톨 어트리뷰션
- 구글 인스톨 리퍼러 어트리뷰션
- SkAdNetwork 버전 3 지원 (수동 모드)
- 애플 검색 광고 어트리뷰션
- 맞춤형 인앱 이벤트 추적
- 구매 추적
- 맞춤 사용자 ID
- 추적 제거
- SkAdNetwork 버전 4 지원
- 전환 모델용 SkAdNetwork 관리 모드
- 메타 인스톨 리퍼러 어트리뷰션
- 딥링킹
- 제한된 데이터 공유 지원
싱귤러가 제공하는 '전체 기능'에 대한 S2S 지원이 필요한 경우, 러더스택과 별도로 싱귤러 S2S REST API를 구현해야 합니다. 서버 간(S2S) 연동 가이드는 여기를 참조하세요.
시작하기
- RudderStack 대시보드에서 소스를 추가합니다. 그런 다음 대상 목록에서 Singular를 선택합니다.
- 대상에 이름을 지정하고 계속을 클릭합니다.
연결 설정
Singular를 대상으로 성공적으로 구성하려면 다음 설정을 구성해야 합니다:
-
API 키: 여기에 Singular "SDK 키"를 입력합니다. 이 필드는 필수 입력 항목입니다.
Singular 대시보드의 "개발자 도구 > SDK 연동 > SDK 키" 아래에서 Singular "SDK 키"를 받습니다.
참고: "클라우드 모드" 연동의 경우, API 키(SDK 키) 값만 입력합니다.
"비밀"은 비워둡니다. -
세션 이벤트 이름: 세션 이벤트로 사용할 이벤트 이름을 입력합니다. 이 설정은 클라우드 모드를 통해 이벤트를 전송하는 경우에만 적용됩니다.
러더스택은 싱귤러 런치 API를 통해 세션 이벤트를 싱귤러로 전송합니다.
이벤트가 대시보드 설정에 지정되어 있거나 다음 세 가지 수명 주기 이벤트 중 하나에 해당하는 경우에만 이벤트를 세션 이벤트로 간주합니다:
- 애플리케이션 설치됨
- 애플리케이션이 열림
- 애플리케이션 업데이트됨
라이프사이클 이벤트 추적이 활성화된 경우 RudderStack은 위의 세 가지 라이프사이클 이벤트를 자동으로 추적합니다.
- 이벤트를 전송하려면 기기 모드를 사용합니다: '클라우드 모드'를 사용할 때는 이 토글을 비활성화해야 합니다. Android 또는 iOS 플랫폼을 사용하는 경우 이 설정을 활성화하여 디바이스 모드를 통해 이벤트를 전송할 수 있습니다. 그런 다음 Singular 디바이스 모드 가이드에서 프로젝트에 Singular를 추가하는 단계를 따르세요.
세션 이벤트 요구 사항
지원되는 세션 이벤트 매핑
이 섹션에서는 RudderStack 이벤트 속성의 관련 Singular 필드에 대한 매핑을 나열합니다.
다음 표에는 모바일 플랫폼(Android 및 iOS) 에 대해 RudderStack이 자동으로 캡처하는 속성의 매핑이 나열되어 있습니다:
러더스택 속성 | Singular 속성 | 존재 여부 | 설명 |
---|---|---|---|
context.os.name |
p |
필수 | 소스 플랫폼(Android 또는 iOS)입니다. |
context.app.namespace |
i |
필수 | 앱의 패키지 이름(Android) 또는 번들 ID(iOS)입니다. |
context.app.version |
app_v |
필수 | 앱 버전입니다. |
context.ip / request_ip(순서대로) |
ip |
필수 | 사용자의 IP 주소. IP 익명화에 대한 자세한 내용은 아래 참고 사항을 참조하세요. |
context.os.version |
ve |
필수 | 세션 시점의 디바이스 OS 버전입니다. |
context.device.model |
mo |
필수 | 디바이스 모델입니다. 이 매개변수는 ma 매개변수와 함께 사용해야 합니다. |
context.device.manufacturer |
ma |
필수 | 장치 하드웨어의 제조업체입니다. 이 파라미터는 mo 파라미터와 함께 사용해야 합니다. |
context.locale |
lc |
필수 | 밑줄로 구분된 두 글자로 된 언어와 국가 코드를 사용하는 장치의 IETF 로컬 태그입니다. |
context.device.id |
idfv |
필수 | 대시를 포함한 대문자로 된 원시 IdentifierForVendor입니다. iOS 앱에만 적용됩니다. |
context.device.id |
andi |
필수 | 소문자로 된 원시 Android ID입니다. Android 앱에만 적용되며 기기에서 Android 광고 ID를 사용할 수 없는 경우에만 필요합니다. |
context.app.build |
bd |
필수 | 디바이스 빌드(URL 인코딩)입니다. |
context.device.adTrackingEnabled |
dnt |
필수 | do not track(dnt)가 비활성화(dnt=0)된 경우 참을 전달하고, 그렇지 않으면 거짓(dnt=1)을 전달합니다. 광고 ID를 SDK에 전달하면 자동으로 캡처됩니다. |
context.app.name |
n |
선택 사항 | UI에 표시되는 사람이 읽을 수 있는 앱 이름입니다. |
utime |
선택 사항 | 세션 시간(UNIX 시간 기준)입니다. | |
context.network.wifi |
c |
선택 사항 | 연결 유형(WiFi 또는 통신사)입니다. |
context.network.carrier |
cn |
선택 사항 | 인터넷 제공업체의 통신사 이름입니다. |
다음 표에는 이벤트 속성을 통해 전달해야 하는 속성의 매핑이 나와 있습니다 :
이러한 속성은 SDK에서 유지되지 않으며 모든 이벤트와 함께 전달되어야 합니다.
러더스택 속성 | Singular 속성 | 존재 여부 | 설명 |
---|---|---|---|
properties.install_ref |
install_ref |
필수 | Google 설치 리퍼러 정보입니다. |
properties.referring_application |
install_source |
필수 | Android의 설치 소스 패키지 이름입니다. 이 정보를 검색하려면 getInitiatingPackageName()을 사용합니다. |
properties.install_receipt |
install_receipt |
필수 | 설치에서 받은 영수증입니다. 이를 검색하려면 iOS 설치 영수증 가이드를 따르세요. |
properties.asid |
asid |
필수 | Android v12 이상 기기의 앱 세트 ID입니다. |
properties.url |
openui |
필수 | 앱이 딥링크/유니버설 링크를 통해 열린 경우 인코딩된 딥링크 URL의 값입니다. |
context.device.attTrackingStatus |
att_authorization_status |
필수 | 앱 추적 투명성 인증 상태. |
userId |
custom_user_id |
선택 사항 | 식별 호출을 통해 전달된 사용자 ID. |
properties.attribution_token |
attribution_token |
선택 사항 | iOS 14.3 이상용 Apple 검색 광고 어트리뷰션에 사용됩니다. 자세한 내용은 여기를 참조하세요. |
properties.skan_conversion_value |
skan_conversion_value |
선택 사항 | 세션 알림 시점의 최신 SkAdNetwork 값입니다. |
properties.skan_first_call_timestamp |
skan_first_call_timestamp |
선택 사항 | SkAdNetwork API를 처음 호출한 UNIX 타임스탬프입니다. |
properties.skan_last_call_timestamp |
skan_last_call_timestamp |
선택 사항 | 세션 알림 시점에 SkAdNetwork API에 마지막으로 호출한 UNIX 타임스탬프입니다. |
properties.install |
install |
선택 사항 | 설치 플래그. 앱 설치 후 첫 번째 세션에서는 참으로 설정하고, 그렇지 않으면 거짓으로 설정합니다. 재설치 추적 기능에 필요합니다. |
다음 표에는 이벤트 속성을 통해 한 번만 전달해야 하는 속성의 매핑이 나열되어 있습니다 :
이러한 속성은 SDK에서 유지되며 한 번만 전달해야 합니다.
러더스택 속성 | Singular 속성 | 존재 여부 | 설명 |
---|---|---|---|
context.device.token |
fcm |
선택 사항 | 파이어베이스 클라우드 메시징 디바이스 토큰입니다. Android에서 제거 추적에 필요합니다. |
context.device.token |
apns_token |
선택 사항 | Apple 푸시 알림 서비스 디바이스 토큰. iOS에서 제거 추적을 위해 필요합니다. |
context.device.advertisingId |
idfa |
필수 | 대시가 포함된 대문자로 된 원시 광고 ID. iOS 앱에만 적용됩니다. |
context.device.advertisingId |
aifa |
필수 | 대시가 포함된 소문자 원시 광고 ID입니다. 이는 안드로이드 앱에만 적용됩니다. |
러더스택은 디바이스 토큰 매핑을 위해 fcm만 지원합니다.
사용자 지정 이벤트 요구 사항
러더스택은 세션 이벤트를 제외한 모든 이벤트를 Singular의 evt 엔드포인트를 통해 커스텀 이벤트로 전송합니다.
지원되는 이벤트 매핑
이 섹션에는 RudderStack 이벤트 속성과 관련 Singular 필드에 대한 매핑이 나열되어 있습니다.
다음 표에는 모바일 플랫폼(Android 및 iOS) 에 대해 RudderStack이 자동으로 캡처하는 속성의 매핑이 나열되어 있습니다:
러더스택 속성 | Singular 속성 | 존재 여부 | 설명 |
---|---|---|---|
context.os.name |
p |
필수 | 소스 플랫폼(Android 또는 iOS)입니다. |
context.app.namespace |
i |
필수 | 앱의 패키지 이름(Android) 또는 번들 ID(iOS)입니다. |
context.ip / request_ip(동일한 순서) |
ip |
필수 | 사용자의 IP 주소. |
context.device.advertisingId |
idfa |
필수 | 대시를 포함한 대문자로 된 원시 IdentifierForVendor입니다. iOS 앱에만 적용됩니다. |
context.device.advertisingId |
aifa |
필수 | 대시가 포함된 소문자 원시 광고 ID입니다. Android 앱에만 적용됩니다. |
context.device.id |
idfv |
필수 | 대시를 포함한 대문자로 된 원시 IdentifierForVendor입니다. iOS 앱에만 적용됩니다. |
context.device.id |
andi |
필수 | 소문자로 된 원시 Android ID입니다. Android 앱에만 적용되며 기기에서 Android 광고 ID를 사용할 수 없는 경우에만 필요합니다. |
context.os.version |
ve |
필수 | 세션 시점의 디바이스 OS 버전입니다. |
utime |
선택 사항 | 세션 시간(UNIX 시간 기준)입니다. |
Singular는 asid보다 aifa, andi보다 asid (Android의 경우), idfv보다 idfa (iOS의 경우)를 선호합니다.
다음 표에는 이벤트 속성을 통해 전달해야 하는 속성의 매핑이 나와 있습니다 :
이러한 속성은 SDK에서 유지되지 않으며 모든 이벤트와 함께 전달되어야 합니다.
러더스택 속성 | Singular 속성 | 존재 여부 | 설명 |
---|---|---|---|
event |
n |
필수 | 이벤트의 이름입니다. 사용자가 정의합니다. |
context.device.attTrackingStatus |
att_authorization_status |
필수 | 앱 추적 투명성 권한 부여 상태입니다. |
userId |
custom_user_id |
선택 사항 | 식별 호출을 통해 전달된 사용자 ID입니다. |
properties.skan_conversion_value |
skan_conversion_value |
선택 사항 | 세션 알림 시점의 최신 SkAdNetwork 값입니다. |
properties.skan_first_call_timestamp |
skan_first_call_timestamp |
선택 사항 | SkAdNetwork API를 처음 호출한 UNIX 타임스탬프입니다. |
properties.skan_last_call_timestamp |
skan_last_call_timestamp |
선택 사항 | 세션 알림 시점에 SkAdNetwork API에 마지막으로 호출한 UNIX 타임스탬프입니다. |
properties.eventAttributes |
e |
선택 사항 | JSON 형식의 사용자 지정 이벤트 속성. SDK에서 유지되지 않으므로 모든 이벤트와 함께 전달해야 합니다. |
properties.is_revenue_event |
is_revenue_event |
선택 사항 | 이벤트가 구매 이벤트인지 여부를 결정합니다. 이 속성은 SDK에 유지되지 않으므로 모든 이벤트와 함께 전달해야 합니다. |
다음 표에는 구매 이벤트와 관련된 사용자 정의 속성의 매핑이 나와 있습니다 :
러더스택 속성 | Singular 속성 | 존재 여부 | 설명 |
---|---|---|---|
properties.total/ properties.value / properties.revenue |
amt |
선택 사항 | 통화 금액입니다. |
properties.currency |
cur |
선택 사항 | ISO 4217 세 글자로 구성된 통화 코드입니다. 이 코드는 amt 매개변수와 함께 사용해야 합니다. |
properties.purchase_receipt |
purchase_receipt |
선택 사항 | 구매 시 받은 영수증입니다. |
properties.product_id/properties.sku |
purchase_product_id |
선택 사항 | 제품 SKU 식별자입니다. |
properties.orderId / properties.purchase_transaction_id(순서대로) |
purchase_transaction_id |
선택 사항 | 거래 식별자입니다. |
value, revenue 또는 total 속성 중 하나를 설정하면 is_revenue_event 속성에서 명시적으로 언급하지 않는 한 RudderStack은 해당 이벤트를 자동으로 구매 이벤트로 간주합니다.
사용자 지정 이벤트의 경우 몇 가지 중요한 고려 사항이 아래에 나열되어 있습니다:
- RudderStack은 Android의 경우 context.userAgent에서, iOS의 경우 이벤트 속성에서 사용자 에이전트를 가져옵니다.
- 러더스택은 사용자 지정 이벤트에서 전달된 추가 속성을 Singular의 e 필드에 저장합니다.
테스트
이벤트가 Singular에 성공적으로 전달되었는지 확인하려면 어떻게 해야 하나요?
이벤트가 Singular에 성공적으로 전달되었는지 확인하려면 RudderStack의 대상 라이브 이벤트 기능을 사용할 수 있습니다.
또한 Singular 대시보드로 이동하여 다음 단계를 따라 이벤트 전송을 확인할 수도 있습니다:
테스트 콘솔 사용 방법에 대한 자세한 가이드는 여기를 참조하세요.
-
"개발자 도구 > 테스트 콘솔"로 이동합니다.
-
디바이스 추가를 클릭하고 관련 디바이스 식별자를 입력합니다:
- Singular로 전송된 모든 이벤트의 실시간 로그를 볼 수 있을 것입니다: