추적 분석

작동 방식

추적 분석을 통해 사용자가 생성한 이벤트를 수집하고 집계하여 프로그램 실적과 추천인 수를 평가할 수 있습니다. 정확한 통계가 제안을 보다 매력적으로 만들기 때문에 제공된 데이터는 회원 네트워크에 참여하는 추가 방법으로 사용할 수 있습니다.

다음과 같은 이벤트를 처리할 수 있습니다.

  • 랜딩 페이지로 전환
  • 랜딩 페이지에서 스토어로 전환

획득 방법

추적 분석을 통합하려면, 다음을 수행합니다.

  1. JSON 웹 토큰을 얻도록 합니다(JWT).
  2. tracking_id를 요청 매개 변수로부터 웹 사이트 쿠키에 저장합니다.tracking_id와의 요청 예시:https://playnewz.com?utm_source=n6LI9yVu&utm_campaign=5b9bff5f9d31b&tracking_id=19e2DLjNTk2YOdXA4d8J3NReNkXNafhC.
  3. 새로운 사용자가 만들어진 후에 user_idtracking_id등록 이벤트 전송 메소드 통해 전송합니다.
    • 엑솔라 트래킹 API 응답을 기다리는 동안 사용자 등록을 방해하지 않도록 요청을 비동기적으로 전송하기를 권장합니다.
    • 혹은 타임아웃을 사용하세요. 엑솔라 트래킹 API 응답을 기다리는 것이 지정한 것보다 길게 걸리는 경우, 새로운 사용자는 추적되지 않음에 유의하세요.
  4. 사용자 지정 이벤트를 만들고 관리하려면 구현해야 하는 트래킹 API 메소드: 만들기, 초기화, 전송 이벤트.
  5. 내 웹사이트에서 트래킹 스크립트를 구현하세요.

토큰 가져오기

HTTP 요청

Copy
Full screen
Small screen
POST https://tracking-api.xsolla.com/v1/tokens
헤더설명
ContentTypeapplication/json
AuthorizationAuthorization: Basic <your_authorization_basic_key> 헤더. 여기에서 <your_authorization_basic_key>는 Base64 표준으로 인코딩된 판매자 ID:API 키 쌍입니다. 이러한 매개변수를 찾으려면 관리자 페이지으로 이동합니다.
  • 판매자 ID 표시 위치:
    • 회사 설정 > 회사 섹션.
    • 관리자 페이지의 브라우저 주소 표시줄에 있는 URL. 해당 URL은 https:​//publisher.xsolla.com/<merchant ID>/<Publisher Account section> 형식으로 되어 있습니다.
  • API 키는 생성할 때 한 번만 관리자 페이지에 표시되며 따로 저장하고 관리해야 합니다. 다음 섹션에서 새 키를 생성할 수 있습니다.
    • 회사 설정 > API 키
    • 프로젝트 설정 > API 키
필수입니다.
주의

API 키 작업에 대한 자세한 정보는 API 참조를 확인하세요.

주요 권장 사항:

  • 본인의 공간에 생성된 API 키를 저장합니다. 생성된 API 키는 관리자 페이지에서 한 번만 볼 수 있습니다.
  • API 키를 비밀로 유지해야 합니다. 이러한 API 키는 개인 계정과 관리자 페이지의 프로젝트에 대한 액세스를 제공합니다.
  • API 키는 서버에 저장해야 하며 바이너리나 프론트엔드에는 저장해선 안 됩니다.

필요로 하는 API 호출에 project_id 경로 매개 변수가 포함되어 있지 않으면 회사의 모든 프로젝트에서 유효한 API 키를 사용하여 인증을 설정해 주세요.

매개변수설명
sourceType데이터 소스 유형. 따를 수 있는 값:
  • client. 이 소스 유형은 신뢰할 수 없는 것으로 간주하며 저장소의 모든 개별 이벤트는 trusted: false의 상태로 표시됩니다.
  • server. 이 소스 유형은 신뢰할 수 있는 것으로 간주하며, 저장소의 모든 개별 이벤트는 trusted: true의 상태로 표시됩니다.
sourceName데이터 소스 이름.
projectId프로젝트 ID.
예제
Copy
Full screen
Small screen

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
Full screen
Small screen
POST https://tracking-api.xsolla.com/v1/events

메소드를 전송하는 동안 완료되는 단계:

  1. 최종 사용자가 트래픽 소스(인플루언서 스트리밍, 프로모션 페이지 등)에서 발견한 추적 링크를 팔로우합니다. 해당 작업에는 클릭 ID가 부여됩니다.
  2. 추적 ID가 프록시 페이지에 형성되며 매개변수의 방문 페이지로 전달됩니다.
  3. 사용자가 방문 페이지를 방문하여 가입합니다.
  4. 게임 개발자는 추적 API를 통해 등록 이벤트를 전송하는 방식으로 매개변수의 사용자 ID추적 ID를 사용자에게 전달합니다.

헤더설명
Authorization이미 가져온 토큰입니다.
매개변수유형설명
type문자열이미 가져온 토큰입니다.
traits개체사용자 식별 데이터:
  • trackingId — 사용자의 Tracking ID는 게임 웹 사이트로 리디렉션. 리디렉션 후 엑솔라가 이를 요청 매개변수에서 전송.
  • userId토큰 생성 시 할당되는 user ID.
context개체비어 있어야 합니다.
properties개체비어 있어야 합니다.
예제
Copy
Full screen
Small screen

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
Full screen
Small screen
POST https://tracking-api.xsolla.com/v1/events
헤더설명
Authorization이미 가져온 토큰입니다.
매개변수유형설명
type문자열이벤트 유형.
traits개체사용자 식별 데이터: 전화, 이메일, 인게임 ID 등.
context개체문맥 데이터.
properties개체이벤트 속성.
createdAt날짜형식: RFC 3339 또는 ISO 8601에 따른 날짜 시간.
예제 이벤트: 랜딩 페이지로 전환
Copy
Full screen
Small screen
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
Full screen
Small screen
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
Full screen
Small screen
xnt("init", YOUR_TOKEN);

이벤트 전송

Copy
Full screen
Small screen
xnt("sendEvent", EVENT_TYPE, EVENT_PROPERTIES);
매개변수설명
EVENT_TYPE이벤트 이름(문자열). 예: landing_visit.
EVENT_PROPERTIES이벤트 속성(JS 오브젝트).
예제
Copy
Full screen
Small screen
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시스템이 수신한 이벤트 시간.
contexttraits 매개 변수를 사용하여 이벤트를 보충하려면 다음 방법을 사용하십시오.
Copy
Full screen
Small screen
xnt("putContext", CONTEXT_OBJECT);
xnt("putTraits", TRAITS_OBJECT);
매개변수설명
CONTEXT_OBJECT이벤트 컨텍스트(JS 오브젝트).
TRAITS_OBJECT사용자 데이터(JS 오브젝트).
알림
컨텍스트의 userAgentuserLocale이 자동으로 추가됩니다. 이 두 가지 방법으로 추가된 데이터는 이벤트 데이터와 결합됩니다.

스크립트 구현

랜딩 페이지에 다음 스크립트를 구현합니다.

Copy
Full screen
Small screen
<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>
이 기사가 도움이 되었나요?
감사합니다!
개선해야 할 점이 있을까요? 메시지
유감입니다
이 기사가 도움이 안 된 이유를 설명해 주세요. 메시지
의견을 보내 주셔서 감사드립니다!
메시지를 검토한 후 사용자 경험 향상에 사용하겠습니다.
마지막 업데이트: 2024년 5월 13일

오자 또는 기타 텍스트 오류를 찾으셨나요? 텍스트를 선택하고 컨트롤+엔터를 누르세요.

문제 보고
콘텐츠를 항상 검토합니다. 여러분의 피드백은 콘텐츠를 개선에 도움이 됩니다.
후속 조치를 위해 이메일을 제공해 주세요
의견을 보내 주셔서 감사드립니다!