DataFast는 유료 고객을 유도하는 마케팅 채널을 발견하는 데 도움을 주는 수익 중심의 분석 도구입니다. Dodo Payments와 DataFast를 통합하면 트래픽 소스에 수익을 귀속시키고, 고가치 고객 세그먼트를 식별하며, 데이터 기반 결정을 통해 비즈니스를 성장시킬 수 있습니다.
작동 방식
DataFast는 쿠키에 저장된 고유 방문자 ID를 통해 방문자를 추적합니다. 마케팅 채널에 수익을 귀속시키려면 다음을 수행해야 합니다:
체크아웃 세션을 생성할 때 datafast_visitor_id 쿠키에서 DataFast 방문자 ID를 캡처 합니다
결제 메타데이터에 방문자 ID를 저장 합니다
결제가 성공하면 DataFast의 Payment API를 사용하여 결제 데이터를 DataFast로 전송 합니다
이렇게 하면 DataFast가 성공적인 결제를 원래의 트래픽 소스와 일치시킬 수 있어 완전한 수익 귀속이 가능합니다.
시작하기
Install DataFast Script
먼저 웹사이트에 DataFast 추적 스크립트를 설치합니다. 이렇게 하면 방문자를 추적하는 datafast_visitor_id 쿠키가 생성됩니다. 플랫폼별 설치 지침은 DataFast 문서 를 참조하세요.
Get Your API Key
DataFast 대시보드 에 로그인한 다음 웹사이트 설정으로 이동하여 API 키를 얻습니다.API 키를 안전하게 보관하고 클라이언트 측 코드에 절대 노출하지 마세요.
Capture Visitor ID in Checkout
체크아웃 세션을 생성할 때 쿠키에서 DataFast 방문자 ID를 가져와 결제 메타데이터에 추가하세요.
Send Payment Data via Webhook
결제가 성공할 때 DataFast의 Payment API로 결제 데이터를 전송하도록 웹후크를 구성하세요.
Done!
🎉 이제 수익 데이터가 마케팅 채널에 대한 전체 귀속 정보와 함께 DataFast 대시보드에 표시됩니다.
구현 가이드
1단계: 체크아웃 메타데이터에 방문자 ID 추가
체크아웃 세션을 생성할 때 쿠키에서 DataFast 방문자 ID를 캡처하고 결제 메타데이터에 포함시킵니다.
Next.js
Express.js
Other Frameworks
import { cookies } from 'next/headers' ;
import { dodopayments } from '@/lib/dodopayments' ;
export async function createCheckout ( productId : string ) {
// Capture DataFast visitor ID from cookie
const datafastVisitorId = cookies (). get ( 'datafast_visitor_id' )?. value ;
const payment = await dodopayments . payments . create ({
product_id: productId ,
// ... other payment configuration
metadata: {
datafast_visitor_id: datafastVisitorId , // Store visitor ID in metadata
},
});
return payment ;
}
2단계: DataFast에 결제 데이터 전송
결제가 성공할 때 DataFast의 결제 API에 결제 데이터를 전송하도록 웹훅 엔드포인트를 구성합니다.
Open the Webhook Section
Dodo Payments 대시보드에서 Webhooks → + Add Endpoint 로 이동하고 통합 드롭다운을 확장합니다.
Select DataFast
DataFast 통합 카드를 선택하세요.
Enter API Key
구성 필드에 DataFast API 키를 입력합니다.
Configure Transformation
DataFast의 Payment API에 맞게 결제 데이터를 포맷하도록 변환 코드를 편집합니다.
Test & Create
샘플 페이로드로 테스트하고 Create 를 클릭하여 통합을 활성화합니다.
변환 코드 예제
기본 결제 귀속
function handler ( webhook ) {
if ( webhook . eventType === "payment.succeeded" ) {
const payment = webhook . payload . data ;
// Only send to DataFast if visitor ID exists in metadata
if ( payment . metadata && payment . metadata . datafast_visitor_id ) {
webhook . payload = {
amount: payment . total_amount / 100 , // Convert from cents to dollars
currency: payment . currency ,
transaction_id: payment . payment_id ,
datafast_visitor_id: payment . metadata . datafast_visitor_id ,
};
} else {
// Cancel dispatch if no visitor ID (prevents unnecessary API calls)
webhook . cancel = true ;
}
}
return webhook ;
}
See all 19 lines
소수점 없는 통화 처리
일부 통화(예: JPY)는 소수점을 사용하지 않습니다. 금액 계산을 적절히 조정하세요:
function handler ( webhook ) {
if ( webhook . eventType === "payment.succeeded" ) {
const payment = webhook . payload . data ;
if ( payment . metadata && payment . metadata . datafast_visitor_id ) {
// Zero decimal currencies: JPY, KRW, CLP, etc.
const zeroDecimalCurrencies = [ 'JPY' , 'KRW' , 'CLP' , 'VND' , 'UGX' , 'MGA' ];
const isZeroDecimal = zeroDecimalCurrencies . includes ( payment . currency );
webhook . payload = {
amount: isZeroDecimal
? payment . total_amount // Use amount as-is for zero decimal currencies
: payment . total_amount / 100 , // Convert from cents for other currencies
currency: payment . currency ,
transaction_id: payment . payment_id ,
datafast_visitor_id: payment . metadata . datafast_visitor_id ,
};
} else {
// Cancel dispatch if no visitor ID (prevents unnecessary API calls)
webhook . cancel = true ;
}
}
return webhook ;
}
See all 24 lines
구독 결제
정기 구독 결제의 경우 각 결제를 추적할 수 있습니다:
function handler ( webhook ) {
if ( webhook . eventType === "payment.succeeded" ) {
const payment = webhook . payload . data ;
// Check if this is a subscription payment
const isSubscription = payment . subscription_id !== null ;
if ( payment . metadata && payment . metadata . datafast_visitor_id ) {
webhook . payload = {
amount: payment . total_amount / 100 ,
currency: payment . currency ,
transaction_id: payment . payment_id ,
datafast_visitor_id: payment . metadata . datafast_visitor_id ,
// Optional: Add subscription context
... ( isSubscription && {
subscription_id: payment . subscription_id ,
}),
};
} else {
// Cancel dispatch if no visitor ID (prevents unnecessary API calls)
webhook . cancel = true ;
}
}
return webhook ;
}
See all 25 lines
모범 사례
방문자 ID를 일찍 캡처하세요 : 사용자가 나중에 돌아오더라도 정확한 귀속을 위해 결제 흐름에서 가능한 한 빨리 DataFast 방문자 ID를 저장하세요.
메타데이터에 항상 방문자 ID 포함 : 방문자 ID가 없으면 DataFast는 수익을 마케팅 채널에 귀속시킬 수 없습니다.
소수점 없는 통화 처리 : 일부 통화(JPY, KRW 등)는 소수점을 사용하지 않으므로 금액 계산을 적절히 조정하세요.
샘플 결제로 테스트 : 라이브로 전환하기 전에 통합이 올바르게 작동하는지 확인하세요.
DataFast 대시보드 모니터링 : 결제가 올바르게 나타나고 적절한 귀속이 이루어지고 있는지 확인하세요.
웹훅 재시도 사용 : DataFast의 결제 API는 멱등성이 있으므로 웹훅이 실패할 경우 재시도가 안전합니다.
문제 해결
Payments not appearing in DataFast
DataFast API 키가 올바르고 활성화되어 있는지 확인하세요
datafast_visitor_id가 캡처되어 결제 메타데이터에 저장되고 있는지 확인하세요
웹후크 변환이 페이로드를 올바르게 포맷하는지 확인하세요
웹후크가 payment.succeeded 이벤트에서 트리거되는지 확인하세요
오류 메시지나 API 로그가 있는지 DataFast 대시보드를 확인하세요
Revenue attribution not working
DataFast 추적 스크립트가 웹사이트에 설치되어 제대로 작동하는지 확인하세요
datafast_visitor_id 쿠키가 올바르게 설정되고 있는지 확인하세요
체크아웃 생성과 결제 완료 간에 방문자 ID가 일치하는지 확인하세요
체크아웃 세션을 만들기 전에 방문자 ID를 캡처하고 있는지 확인하세요
추가 안내는 DataFast의 Payment API 문서 를 검토하세요
Currency conversion issues
0소수 통화(JPY, KRW, CLP, VND, UGX, MGA)는 금액을 100으로 나누지 않고 그대로 전송하세요
그 외 모든 통화는 금액을 센트에서 기본 단위로 변환하기 위해 100으로 나누세요
통화 코드는 ISO 4217 형식(예: “USD”, “EUR”, “JPY”)과 일치하는지 다시 확인하세요
추가 리소스
DataFast Documentation DataFast의 Payment API 및 수익 귀속 기능에 대해 자세히 알아보세요.
DataFast Dashboard 수익 분석 및 귀속 데이터를 보려면 DataFast 대시보드에 액세스하세요.