어떻게 도와드릴까요?

웹 성능 측정을 위한 서버 간(S2S) API

  • 업데이트 시간

한눈에 보기: 웹 성능 측정을 위한 S2S API를 사용하면 광고 차단기나 쿠키 제한과 같은 브라우저 제한을 우회하여 웹 방문 및 이벤트를 서버에서 AppsFlyer로 직접 전송할 수 있습니다. 웹 SDK와 함께 사용하거나 단독으로 사용하여 더 완전하고 품질 높은 어트리뷰션 데이터를 얻으십시오.

웹 어트리뷰션을 위한 S2S API 소개

AppsFlyer는 웹 어트리뷰션을 위해 웹 SDK(클라이언트 측)와 S2S API(서버 간, 또는 S2S)라는 두 가지 웹 데이터 전송 방식을 지원합니다. 설정 및 필요에 따라 두 가지 방법 중 하나를 독립적으로 사용하거나 결합하여 사용할 수 있습니다.

웹 SDK는 브라우저에서 실행됩니다. S2S API를 사용하면 대신 자체 백엔드에서 동일한 데이터를 전송할 수 있습니다. 이것이 중요한 이유는 Safari ITP, Firefox ETP, Brave를 포함한 개인정보 보호 중심 브라우저와 광고 차단기가 클라이언트 측 측정을 차단하거나 제한할 수 있기 때문입니다. 업계 추산에 따르면 웹 사용자 중 25~40%가 브라우저 수준의 차단을 경험하고 있습니다. S2S 호출은 서버에서 시작되어 브라우저를 거치지 않으므로 이러한 제한의 영향을 전혀 받지 않습니다.

작동 원리

  1. 사용자가 웹사이트를 방문하거나 브라우저에서 이벤트를 트리거합니다.
  2. 귀하의 서버가 이벤트를 수신합니다.
  3. 귀하의 서버가 어트리뷰션을 위해 이벤트를 AppsFlyer 서버로 직접 전송합니다.

S2S를 사용하는 이유

S2S API 사용이 귀하에게 어떤 의미가 있는지 이점별로 정리했습니다.

  • 서버 측 이벤트 측정: 백엔드에서 처리되는 구독 갱신이나 CRM 시스템에서 발생하는 이벤트와 같이 브라우저를 전혀 거치지 않는 전환도 있습니다. 이러한 데이터를 AppsFlyer로 가져와 올바른 캠페인과 연결할 수 있는 유일한 방법은 S2S입니다.
  • 측정 범위 확대: S2S 호출은 브라우저가 아닌 서버에서 발생하므로 광고 차단기, Safari ITP 쿠키 제한 및 기타 브라우저 수준의 제한 사항이 적용되지 않습니다. 클라이언트 측 측정만으로는 놓칠 수 있는 방문 및 전환을 캡처할 수 있습니다.
  • 백엔드로부터의 데이터 보강: S2S를 사용하면 서버에서 이벤트를 전송하기 전에 고객 사용자 ID, 해시된 이메일 또는 전화번호, CRM 속성, 구독 상태 또는 기타 내부 식별자를 포함한 추가 데이터를 이벤트에 추가할 수 있습니다. 이는 ID 확인을 개선하고 신호 품질을 강화합니다.
  • 보안 개발자 키, 사용자 식별자 및 추가된 모든 데이터는 서버에 유지되며 보안 연결을 통해 전송되므로 인프라에서 나가는 데이터를 완전히 제어할 수 있습니다.

API 사양

https://events.appsflyer.com기본 URLhttps://events.appsflyer.com:

인증

모든 요청에는 유효한 S2S API 토큰과 올바른 콘텐츠 유형이 요청 헤더에 포함되어야 합니다.

머리말 유형 설명
Authorization API 토큰

S2S API 토큰은 다음 형식으로 헤더에 포함됩니다.

Authorization: Bearer {s2s-token}
Content-Type 문자열 application/json이어야 합니다. 모든 요청에 필수입니다.

참고

S2S API 토큰을 생성하려면 AppsFlyer 토큰 관리의 지침을 참조하십시오.

이벤트 측정

POST /v2.0/s2s/inapps/app/web/{appId}

특정 앱에 대한 웹 이벤트(예: 구매, 가입 또는 맞춤 작업)를 측정합니다.

경로 파라미터

파라미터 필수 설명
appId 필수 AppsFlyer에 정의된 unified_app_id입니다. 예: website-www.example.com

요청 본문

필드 유형 필수 설명
user_id 객체입니다. 필수 사용자 식별자 customer_user_id 또는 appsflyer_id 중 하나 이상을 포함해야 합니다.
event_name 문자열 필수 이벤트 이름 문자 @ = + -을(를) 포함할 수 없습니다. 예시: af_purchase
event_revenue 숫자(double) 선택 사항 구매 또는 수익화 이벤트에 대한 수익 금액입니다.
event_revenue_currency 문자열(ISO-4217) 선택 사항 수익 값에 대한 통화 코드입니다. 예:USD 또는 EUR.
event_value 객체입니다. 선택 사항 자유 형식 이벤트 매개변수입니다. custom_parameters 하위 객체를 지원합니다.
event_url 문자열 선택 사항 이벤트가 발생한 페이지 URL입니다. 유효한 HTTP URL, 최대 4,096자입니다.
timestamp 정수(int64) 선택 사항 ms 단위의 Unix 시간(UTC)입니다. 생략할 경우 AppsFlyer는 수신 시간을 사용합니다. 지연 수락 기간: 이벤트는 앱 시간대 기준으로 다음 날 00:30까지 도착해야 합니다.
ip 문자열 선택 사항 기기 IP 주소(IPv4 또는 IPv6)입니다. 최대 30자
user_agent 문자열 선택 사항 브라우저의 전체 사용자 에이전트 문자열입니다. 최대 30자
http_referrer 문자열 선택 사항 현재 페이지의 리퍼러 URL입니다.
af_customer_event_id 문자열 선택 사항

광고 네트워크 플랫폼에서 전환을 중복 제거하는 데 사용하는 이벤트 고유 ID입니다. AppsFlyer는 이를 이벤트 ID로 네트워크에 전달합니다.

다음 중 하나가 적용될 때 전송하십시오.

  • AppsFlyer 추적과 함께 사이트에서 네트워크 픽셀을 실행하는 경우.
  • Web SDK와 이 API를 모두 통해 동일한 이벤트를 전송하는 경우.

전송할 때 네트워크 자체 픽셀 이벤트(예: fbq()의 eventID)에도 동일한 값을 전송하여 네트워크가 전환을 두 번이 아닌 한 번만 집계하도록 하십시오.

생략하면 AppsFlyer가 자체 ID를 생성하며, 네트워크에서 귀하의 픽셀 이벤트를 일치시킬 수 없습니다.

제한 사항: 최대 30자 일치는 정확하며 대소문자를 구분합니다.

email_hashed 문자열 선택 사항 정규화된(소문자, 공백 제거) 이메일의 SHA256입니다. 64자 16진수 문자열이어야 합니다.
phone_number_hashed 문자열 선택 사항 전화번호의 SHA256입니다. 64자 16진수 문자열이어야 합니다.
phone_number_e164_hashed 문자열 선택 사항 E.164 전화번호의 SHA256입니다(예: +14155552671). 64자 16진수 문자열이어야 합니다.
first_name_hashed 문자열 선택 사항 정규화된 이름의 SHA256입니다. 64자 16진수 문자열이어야 합니다.
last_name_hashed 문자열 선택 사항 정규화된 성의 SHA256입니다. 64자 16진수 문자열이어야 합니다.

요청 예시

{"user_id":{"customer_user_id":"15667737-366d-4994-ac8b-653fe6b2be4a"},"event_name":"af_purchase","event_revenue":49.99,"event_revenue_currency":"USD","af_customer_event_id": "550e8400-e29b-41d4-a716-446655440000","event_value":{"af_content_id":"SKU-001","af_quantity":2,"custom_parameters":{"promo_code":"SUMMER10"}},"event_url":"https://example.com/checkout/success","timestamp":1712000000000,"ip":"35.244.183.10","user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) ...","email_hashed":"a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2"}

응답

상태 설명
수락 요청이 수락되었습니다. 상태, 메시지 및 선택적 messageId을(를) 반환합니다.
잘못된 요청 유효하지 않거나 누락된 필드입니다.
401 Unauthorized 앱이 존재하지 않거나 인증에 실패했습니다.
금지됨 모든 트래픽이 차단되었습니다.
415 지원되지 않는 미디어 유형 Content-Type은(는) application/json이어야 합니다.

방문 측정

POST /v2.0/s2s/visits/app/web/{appId}

특정 웹 앱에 대한 페이지 방문을 측정합니다. 이 엔드포인트는 이벤트 엔드포인트와 모든 기본 필드를 공유하지만 두 가지 주요 차이점이 있습니다. event_url이(가) 필수이며, 이벤트 이름 및 수익 필드는 적용되지 않습니다.

경로 파라미터

파라미터 필수 설명
appId 필수 AppsFlyer에 정의된 unified_app_id입니다. 예: website-www.example.com

요청 본문

필드 유형 필수 설명
user_id 객체입니다. 필수 사용자 식별자 customer_user_id 또는 appsflyer_id 중 하나 이상을 포함해야 합니다.
event_url 문자열 필수 방문한 페이지의 URL입니다. 유효한 HTTP URL, 최대 4,096자입니다.
timestamp 정수(int64) 선택 사항 ms 단위의 Unix 시간(UTC)입니다. 생략할 경우 AppsFlyer는 수신 시간을 사용합니다. 지연 수락 기간: 방문은 앱 시간대 기준으로 다음 날 00:30까지 도착해야 합니다.
ip 문자열 선택 사항 기기 IP 주소(IPv4 또는 IPv6)입니다. 최대 30자
user_agent 문자열 선택 사항 브라우저의 전체 사용자 에이전트 문자열입니다. 최대 30자
http_referrer 문자열 선택 사항 현재 페이지의 리퍼러 URL입니다.
event_value 객체입니다. 선택 사항 custom_parameters 하위 객체를 포함한 자유 형식 이벤트 매개변수입니다.
customer_dedup_id 문자열 선택 사항 고객이 제공한 중복 제거 식별자입니다.
email_hashed 문자열 선택 사항 정규화된 이메일의 SHA256입니다. 64자 16진수 문자열이어야 합니다.
phone_number_hashed 문자열 선택 사항 전화번호의 SHA256입니다. 64자 16진수 문자열이어야 합니다.
phone_number_e164_hashed 문자열 선택 사항 E.164 전화번호의 SHA256입니다. 64자 16진수 문자열이어야 합니다.
first_name_hashed 문자열 선택 사항 정규화된 이름의 SHA256입니다. 64자 16진수 문자열이어야 합니다.
last_name_hashed 문자열 선택 사항 정규화된 성의 SHA256입니다. 64자 16진수 문자열이어야 합니다.

요청 예시

{"user_id":{"appsflyer_id":"1234567890abcdef","customer_user_id":"15667737-366d-4994-ac8b-653fe6b2be4a"},"event_url":"https://example.com/products/sneakers","timestamp":1712000000000,"ip":"35.244.183.10","user_agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) ...","http_referrer":"https://www.google.com/","email_hashed":"a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2"}

응답

상태 설명
수락 요청이 수락되었습니다. 상태, 메시지 및 선택적 messageId을(를) 반환합니다.
잘못된 요청 유효하지 않거나 누락된 필드입니다.
401 Unauthorized 앱이 존재하지 않거나 인증에 실패했습니다.
금지됨 모든 트래픽이 차단되었습니다.
415 지원되지 않는 미디어 유형 Content-Type은(는) application/json이어야 합니다.

완전한 서버 측 통합 설정

Web SDK와 S2S를 함께 실행하는 경우 대신 Web SDK afUserID 추출을 사용하세요. 이 섹션은 SDK가 전혀 없는 통합을 위한 것입니다.

사이트에서 Web SDK를 전혀 실행하지 않는 경우, 사용자 쿠키 할당, 올바른 식별자 전송, 모든 이벤트 페이로드 유지 등 SDK가 일반적으로 처리하는 모든 작업을 직접 수행해야 합니다. 이 설정을 올바르게 수행하면 S2S를 사용하는 이유에 설명된 모든 이점을 누릴 수 있지만, 세부 사항을 정확하게 설정하는 것이 중요합니다.

이벤트뿐만 아니라 방문도 전송하세요

방문은 그 이후의 모든 이벤트가 의존하는 기여 매개변수를 포함하며, 시스템은 사용자로부터 발생하는 모든 이벤트 이전에 방문이 있을 것으로 예상합니다. 방문 전에 이벤트를 전송하면 시스템은 이를 오가닉으로 분류합니다.

HTTP를 통해 자사 쿠키 할당

afUserId 쿠키를 설정해 주는 Web SDK가 없으므로, JavaScript로 작성된 클라이언트 측 쿠키가 아닌 Set-Cookie 응답 헤더에 설정된 HTTP 쿠키로서 직접 할당하고 관리해야 합니다.

이것이 중요한 이유는 document.cookie을 통해 설정된 클라이언트 측 쿠키는 Safari에서는 7일, ITP 적용 도메인에서는 24시간 이내로 빠르게 만료되기 때문입니다. 만료되면 식별자가 재설정되어 재방문자가 신규 방문자로 보입니다. 서버에서 설정한 쿠키는 이러한 제한을 받지 않으며 브라우저 최대 기간(Chrome은 최대 400일 허용)까지 유지될 수 있습니다. 또한 HttpOnly로 표시할 수 있으므로 페이지 스크립트와 광고 차단기가 이를 읽거나 제거할 수 없으며, 페이지에서 실행되는 스크립트에 전혀 의존하지 않습니다.

설정 및 읽기 방법:

  1. 쿠키가 없는 방문자의 첫 번째 요청 시, 서버에서 안정적인 고유 ID(예: UUID)를 생성하십시오.
  2. 자사 쿠키로 반환하십시오:

    Set-Cookie: af_web_id=<generated-id>; Max-Age=34128000; Path=/; Secure; HttpOnly; SameSite=Lax
  3. 이후의 모든 요청에서 들어오는 Cookie 헤더의 값을 읽고 재사용하십시오. 다시 생성하지 마십시오.
  4. 요청의 user_id 객체 내부에 appsflyer_id로 모든 호출 시 해당 값을 AppsFlyer로 전송하십시오.

쿠키 이름은 원하는 대로 지정할 수 있습니다. AppsFlyer는 쿠키 이름이 아닌 전송한 값을 읽습니다. 자신의 자사 도메인에서 설정해야 합니다.

각 호출 시 올바른 식별자 전송

모든 호출에는 appsflyer_id(쿠키 값) 또는 customer_user_id(내부 사용자 ID) 중 하나 이상을 포함하는 user_id 객체가 필요합니다. 두 가지를 모두 가지고 있을 때 함께 전송하면 ID 식별이 향상됩니다.

기억해야 할 점은 방문은 대부분 익명이므로 항상 쿠키 값을 전송해야 한다는 것입니다. 현장 이벤트의 경우, 사용자가 식별되면 customer_user_id을(를) 추가하고 쿠키를 함께 계속 전송하십시오. 브라우저에서 시작되지 않는 이벤트의 경우, AppsFlyer가 이전에 식별된 세션을 통해 해당 사용자를 이미 알고 있다면 customer_user_id만으로도 충분합니다.

고려 사항

사용자 식별

user_id 객체는 모든 요청에 필수입니다. 다음 식별자 중 하나 이상을 제공해야 합니다.

필드 유형 설명
customer_user_id 100자의 문자열 시스템에 설정된 귀하의 내부 사용자 식별자입니다.
appsflyer_id 문자열(최소 1자) 웹 사용자에 대한 AppsFlyer의 내부 식별자입니다. AppsFlyer Web SDK를 사용하는 경우 appsflyer_id 값은 Web SDK 쿠키에서 검색됩니다. afUserId에서 추출하십시오. 웹 SDK에서 afUserID 추출

지연 수락 기간

이벤트와 방문은 앱 시간대 기준으로 다음 날 00:30 이전까지 수신되어야 합니다. 지연된 이벤트는 서버 수신 시간으로 대체됩니다.

해시된 PII 필드

모든 개인 데이터 필드는 전송하기 전에 SHA256으로 해시되어야 합니다. 해싱하기 전에 텍스트를 정규화(소문자 변환, 공백 제거)하십시오. 각 해시는 정확히 64자의 16진수 문자(대소문자 구분 없음)여야 합니다.

  • 모든 해시된 필드에 대한 패턴: ^[a-fA-F0-9]{64}$
  • phone_number_e164_hashed 필드를 사용하는 전화번호는 해싱하기 전에 E.164 형식(예: +14155552671)을 준수해야 합니다.

웹 SDK에서 afUserID 추출

  • afUserID는 귀하의 웹사이트를 사용자가 첫 방문했을 때 웹 SDK에 의해 부여되는 고유 식별자입니다.
  • 필요한 경우 아래 방법 중 하나를 사용하세요.

HTTP 쿠키 헤더에서 afUserId 획득

  • afUserId방문자의 브라우저가 귀하의 사이트로 요청을 보낼 때 이(가) 전송됩니다.afUserId
  • 필요하다면 HTTP 쿠키 헤더에서 추출하십시오.

방문자 브라우저에서 afUserId 확인

  • 방문자의 브라우저에서 afUserID를 확인하여 문제를 해결하거나 디버깅할 수 있습니다.
  • 이를 확인하기 위해 방문자는 최소 한 번 웹 SDK가 있는 페이지를 방문해야 합니다.
  • afUserId을(를) 포함하는 쿠키는 귀사의 도메인과 관련된 자사 쿠키입니다.afUserId
  • 이 절차는 크롬 버전 81을 기반으로 준비되었습니다. 브라우저와 운영 체제에 따라 차이가 있을 수 있습니다.

방문자 브라우저에서 afUserId 가져오는 방법:

  1. 브라우저에서 귀하의 웹사이트로 이동하십시오.
  2. '검사'를 선택하기 위해 마우스 오른쪽 버튼을 클릭하세요 브라우저의 요소 검사 창이 나타납니다.
  3. '애플리케이션(Application)' 탭으로 이동하세요.
  4. 측면 메뉴에서 '쿠키(Cookies)'를 확장하세요.
  5. 귀하의 웹사이트를 선택하세요. 보이지 않는다면 브라우저를 새로고침하세요.
  6. (C) 필터 필드에 afUserIdafUserId을(를)}입력하세요. afUserID의 값이 나타납니다.