추적 분석
작동 방식
추적 분석을 통해 사용자가 생성한 이벤트를 수집하고 집계하여 프로그램 실적과 추천인 수를 평가할 수 있습니다. 정확한 통계가 제안을 보다 매력적으로 만들기 때문에 제공된 데이터는 회원 네트워크에 참여하는 추가 방법으로 사용할 수 있습니다.
다음과 같은 이벤트를 처리할 수 있습니다.
- 랜딩 페이지로 전환
- 랜딩 페이지에서 스토어로 전환
획득 방법
추적 분석을 통합하려면, 다음을 수행합니다.
- JSON 웹 토큰을 얻도록 합니다(JWT).
- tracking_id를 요청 매개 변수로부터 웹 사이트 쿠키에 저장합니다.tracking_id와의 요청 예시:
https://playnewz.com?utm_source=n6LI9yVu&utm_campaign=5b9bff5f9d31b&tracking_id=19e2DLjNTk2YOdXA4d8J3NReNkXNafhC
. - 새로운 사용자가 만들어진 후에 user_id와 tracking_id를 등록 이벤트 전송 메소드 통해 전송합니다.
- 엑솔라 트래킹 API 응답을 기다리는 동안 사용자 등록을 방해하지 않도록 요청을 비동기적으로 전송하기를 권장합니다.
- 혹은 타임아웃을 사용하세요. 엑솔라 트래킹 API 응답을 기다리는 것이 지정한 것보다 길게 걸리는 경우, 새로운 사용자는 추적되지 않음에 유의하세요.
- 사용자 지정 이벤트를 만들고 관리하려면 구현해야 하는 트래킹 API 메소드: 만들기, 초기화, 전송 이벤트.
- 내 웹사이트에서 트래킹 스크립트를 구현하세요.
토큰 가져오기
HTTP 요청
Copy
- http
POST https://tracking-api.xsolla.com/v1/tokens
헤더 | 설명 |
---|---|
ContentType | application/json |
Authorization | Authorization: Basic <your_authorization_basic_key> 헤더. 여기에서 <your_authorization_basic_key> 는 Base64 표준으로 인코딩된 판매자 ID:API 키 쌍입니다. 이러한 매개변수를 찾으려면 관리자 페이지으로 이동합니다.
|
주의
API 키 작업에 대한 자세한 정보는 API 참조를 확인하세요.
주요 권장 사항:
- 본인의 공간에 생성된 API 키를 저장합니다. 생성된 API 키는 관리자 페이지에서 한 번만 볼 수 있습니다.
- API 키를 비밀로 유지해야 합니다. 이러한 API 키는 개인 계정과 관리자 페이지의 프로젝트에 대한 액세스를 제공합니다.
- API 키는 서버에 저장해야 하며 바이너리나 프론트엔드에는 저장해선 안 됩니다.
필요로 하는 API 호출에 project_id
경로 매개 변수가 포함되어 있지 않으면 회사의 모든 프로젝트에서 유효한 API 키를 사용하여 인증을 설정해 주세요.
매개변수 | 설명 |
---|---|
sourceType | 데이터 소스 유형. 따를 수 있는 값:
|
sourceName | 데이터 소스 이름. |
projectId | 프로젝트 ID. |
Copy
http
- http
- php
POST https://tracking-api.xsolla.com/v1/tokens
Headers:
Content-Type: application/json
Authorization: Basic 12kj3hlk1j2hlkjhlk1j2h3lkj
Body:
{
"sourceType": "client",
"sourceName": "landing",
"projectId": 1
}
HTTP/1.1 201 Token created
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJsaW5rIjoiaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2 g_dj1kUXc0dzlXZ1hjUSJ9.aVigY6UVY3jgoEKoBv31cZnROL3I6WKtcr5K-Z7B1du"
}
<?php
$curl = curl_init();
$merchantId = 1;
$projectId = 2;
$apiKey = '<apiKey>';
$payload = [
'sourceType' => 'server',
'sourceName' => 's1',
'projectId' => $projectId,
];
curl_setopt($curl, CURLOPT_USERPWD, $merchantId . ":" . $apiKey);
curl_setopt_array($curl, array(
CURLOPT_URL => "https://tracking-api.xsolla.com/v1/tokens",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode($payload),
CURLOPT_HTTPHEADER => [
"Content-type: application/json"
],
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
응답 코드 | 설명 |
---|---|
201 | 토큰 생성됨 |
400 | 쿼리 매개 변수가 유효하지 않음 |
401 | 프로젝트 키가 유효하지 않음 |
등록 이벤트 전송
이를 수행하려면 먼저 토큰을 가져와야 합니다.
HTTP 요청
Copy
- http
POST https://tracking-api.xsolla.com/v1/events
메소드를 전송하는 동안 완료되는 단계:
- 최종 사용자가 트래픽 소스(인플루언서 스트리밍, 프로모션 페이지 등)에서 발견한 추적 링크를 팔로우합니다. 해당 작업에는 클릭 ID가 부여됩니다.
- 추적 ID가 프록시 페이지에 형성되며 매개변수의 방문 페이지로 전달됩니다.
- 사용자가 방문 페이지를 방문하여 가입합니다.
- 게임 개발자는 추적 API를 통해 등록 이벤트를 전송하는 방식으로 매개변수의 사용자 ID 및 추적 ID를 사용자에게 전달합니다.
헤더 | 설명 |
---|---|
Authorization | 이미 가져온 토큰입니다. |
매개변수 | 유형 | 설명 |
---|---|---|
type | 문자열 | 이미 가져온 토큰입니다. |
traits | 개체 | 사용자 식별 데이터:
|
context | 개체 | 비어 있어야 합니다. |
properties | 개체 | 비어 있어야 합니다. |
Copy
http
- http
- php
POST https://tracking-api.xsolla.com/v1/events
Headers:
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJsaW5rIjoiaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g_d j1kUXc0dzlXZ1hjUSJ9.aVigY6UVY3jgoEKoBv31cZnROL3I6WKtcr5K-Z7B1yU
Body:
{
"type": "registration",
"traits": {
"trackingId": "19e2DLjNTk2YOdXA4d8J3NReNkXNafhC",
"userId": "20181126"
},
"properties": {
},
"context": {
}
}'
<?php
$curl = curl_init();
$token = '<token>';
$payload = [
'type' => 'registration',
'traits' => [
'trackingId' => "19e2DLjNTk2YOdXA4d8J3NReNkXNafhC",
'userId' => "20181126",
],
'properties' => [],
'context' => [],
];
curl_setopt_array($curl, array(
CURLOPT_URL => "https://tracking-api.xsolla.com/v1/events",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode($payload,JSON_FORCE_OBJECT),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer {$token}",
"Content-type: application/json"
],
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
}
이벤트 생성
이를 수행하려면 먼저 토큰을 가져와야 합니다.
HTTP 요청
Copy
- http
POST https://tracking-api.xsolla.com/v1/events
헤더 | 설명 |
---|---|
Authorization | 이미 가져온 토큰입니다. |
매개변수 | 유형 | 설명 |
---|---|---|
type | 문자열 | 이벤트 유형. |
traits | 개체 | 사용자 식별 데이터: 전화, 이메일, 인게임 ID 등. |
context | 개체 | 문맥 데이터. |
properties | 개체 | 이벤트 속성. |
createdAt | 날짜 | 형식: RFC 3339 또는 ISO 8601에 따른 날짜 시간. |
Copy
- http
POST https://tracking-api.xsolla.com/v1/events
Headers:
Content-Type: application/json
Authorization: Bearer
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJsaW5rIjoiaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g_d j1kUXc0dzlXZ1hjUSJ9.aVigY6UVY3jgoEKoBv31cZnROL3I6WKtcr5K-Z7B1yU
Body:
{
"type": "landing_visit",
"traits":{
},
"properties":{
},
"context": {
"user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36", "user_locale":"ru"
}
}
예제 이벤트: 결제 스테이션으로 전환
Copy
- http
POST https://tracking-api.xsolla.com/v1/events
Headers:
Content-Type: application/json
Authorization: Bearer
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJsaW5rIjoiaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g_d j1kUXc0dzlXZ1hjUSJ9.aVigY6UVY3jgoEKoBv31cZnROL3I6WKtcr5K-Z7B1yU
Body:
{
"type": "buy_btn",
"traits":{
},
"properties":{
"pkg_type":"bronze"
},
"context": {
"user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36", "user_locale":"ru"
}
}
응답 코드 | 설명 |
---|---|
204 | 이벤트 추가됨 |
400 | 이벤트가 유효하지 않습니다 |
401 | 토큰이 유효하지 않습니다 |
이벤트 초기화
이를 수행하려면 먼저 토큰을 가져와야 합니다.
Copy
- html
xnt("init", YOUR_TOKEN);
이벤트 전송
Copy
- html
xnt("sendEvent", EVENT_TYPE, EVENT_PROPERTIES);
매개변수 | 설명 |
---|---|
EVENT_TYPE | 이벤트 이름(문자열). 예: landing_visit . |
EVENT_PROPERTIES | 이벤트 속성(JS 오브젝트). |
Copy
- html
xnt("sendEvent", "landing_visit");
xnt("sendEvent", "buy_btn", { pkg_type: $(this).data('id') });
이벤트 매개변수
매개변수 | 설명 |
---|---|
source | 이벤트 소스(결제 스테이션, landing_page 등). |
type | 이벤트 유형(user_visit, 히트 등). |
traits | 사용자 데이터(이메일, user_id, 예칭 등). |
context | 이벤트 컨텍스트(ip, gaClientId 등). |
properties | 이벤트 속성(합계, 레벨업 등). |
createdAt | 소스가 전달한 이벤트 시간입니다. |
timestamp | 시스템이 수신한 이벤트 시간. |
context
및 traits
매개 변수를 사용하여 이벤트를 보충하려면 다음 방법을 사용하십시오.Copy
- html
xnt("putContext", CONTEXT_OBJECT);
xnt("putTraits", TRAITS_OBJECT);
매개변수 | 설명 |
---|---|
CONTEXT_OBJECT | 이벤트 컨텍스트(JS 오브젝트). |
TRAITS_OBJECT | 사용자 데이터(JS 오브젝트). |
알림
컨텍스트의
userAgent
및 userLocale
이 자동으로 추가됩니다. 이 두 가지 방법으로 추가된 데이터는 이벤트 데이터와 결합됩니다.스크립트 구현
랜딩 페이지에 다음 스크립트를 구현합니다.
Copy
- html
<script>
(function(i,s,o,g,r,a,m){i['XsollaNetworkTrackingObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(ar guments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.inse rtBefore(a,m)})(window,document,'script','https://cdn.xsolla.net/network/xtracking-0.1.js','xnt');
xnt("init", "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJsaW5rIjoiaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g_ dj1kUXc0dzlXZ1hjUSJ9.aVigY6UVY3jgoEKoBv31cZnROL3I6WKtcr5K-Z7B1du");
xnt("sendEvent", "buy_btn", { pkg_type : "gold" });
</script>
이 기사가 도움이 되었나요?
의견을 보내 주셔서 감사드립니다!
메시지를 검토한 후 사용자 경험 향상에 사용하겠습니다.오자 또는 기타 텍스트 오류를 찾으셨나요? 텍스트를 선택하고 컨트롤+엔터를 누르세요.