DataFast 是一款以收入为导向的分析工具,帮助您发现哪些营销渠道驱动付费客户。通过将 Dodo Payments 与 DataFast 集成,您可以将收入归因于您的流量来源,识别高价值客户群体,并做出数据驱动的决策以推动业务增长。
工作原理
DataFast 通过存储在 cookie 中的唯一访客 ID 跟踪访问者。要将收入归因于营销渠道,您需要:
在创建结账会话时 从 datafast_visitor_id cookie 中 捕获 DataFast 的访客 ID
将访客 ID 存储 在您的支付元数据中
在支付成功时使用其支付 API 将支付数据发送到 DataFast
这使 DataFast 能够将成功的支付与原始流量来源匹配,从而为您提供完整的收入归因。
开始使用
安装 DataFast 脚本
首先,在您的网站上安装 DataFast 跟踪脚本。这将创建 datafast_visitor_id cookie 来跟踪您的访问者。 请访问 DataFast 文档 获取特定于您平台的安装说明。
获取您的 API 密钥
登录到您的 DataFast 仪表板 并导航到您的网站设置以获取您的 API 密钥。 请妥善保管您的 API 密钥,切勿在客户端代码中暴露。
在结账中捕获访客 ID
在创建结账会话时,从 cookie 中捕获 DataFast 访客 ID 并将其添加到您的支付元数据中。
通过 Webhook 发送支付数据
配置一个 webhook,在支付成功时将支付数据发送到 DataFast 的支付 API。
完成!
🎉 收入数据现在将在您的 DataFast 仪表板中显示,并完整归因于营销渠道。
实施指南
第 1 步:将访客 ID 添加到结账元数据
在创建结账会话时,从 cookie 中捕获 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
配置一个 webhook 端点,在支付成功时将支付数据发送到 DataFast 的支付 API。
打开 Webhook 部分
在您的 Dodo Payments 仪表板中,导航到 Webhooks → + 添加端点 并展开集成下拉菜单。
选择 DataFast
选择 DataFast 集成卡片。
输入 API 密钥
在配置字段中提供您的 DataFast API 密钥。
配置转换
编辑转换代码以格式化支付数据以适应 DataFast 的支付 API。
测试并创建
使用示例有效负载进行测试,然后单击 创建 以激活集成。
转换代码示例
基本支付归因
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 ?. datafast_visitor_id ) {
webhook . url = "https://datafa.st/api/v1/payments" ;
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 {
// Skip if no visitor ID (prevents unnecessary API calls)
return null ;
}
}
return webhook ;
}
See all 20 lines
处理零小数货币
某些货币(如 JPY)不使用小数位。相应地调整金额计算:
function handler ( webhook ) {
if ( webhook . eventType === "payment.succeeded" ) {
const payment = webhook . payload . data ;
if ( 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 . url = "https://datafa.st/api/v1/payments" ;
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 {
return null ;
}
}
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 ?. datafast_visitor_id ) {
webhook . url = "https://datafa.st/api/v1/payments" ;
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 {
return null ;
}
}
return webhook ;
}
See all 25 lines
最佳实践
尽早捕获访客 ID :在结账流程中尽早存储 DataFast 访客 ID,以确保准确归因,即使用户离开后再返回。
始终在元数据中包含访客 ID :没有访客 ID,DataFast 无法将收入归因于营销渠道
处理零小数货币 :某些货币(JPY、KRW 等)不使用小数位——相应地调整您的金额计算
使用示例支付进行测试 :在上线之前验证集成是否正常工作
监控您的 DataFast 仪表板 :检查支付是否正确显示并具有适当的归因
使用 webhook 重试 :DataFast 的支付 API 是幂等的,因此如果 webhook 失败,重试是安全的
故障排除
验证您的 DataFast API 密钥是否正确且有效
检查 datafast_visitor_id 是否被捕获并存储在支付元数据中
确保 webhook 转换正确格式化有效负载
验证 webhook 是否在 payment.succeeded 事件上触发
检查 DataFast 仪表板是否有任何错误消息或 API 日志
确认 DataFast 跟踪脚本已安装并在您的网站上正常工作
验证 datafast_visitor_id cookie 是否正确设置
检查结账创建和支付完成之间的访客 ID 是否匹配
确保在创建结账会话之前捕获访客 ID
查看 DataFast 的 支付 API 文档 以获取更多指导
验证 JSON 结构是否与 DataFast 的支付 API 格式匹配
检查所有必需字段(amount, currency, transaction_id, datafast_visitor_id)是否存在
确保金额正确转换(对于大多数货币除以 100,零小数货币除外)
验证 API 端点 URL 是否正确: https://datafa.st/api/v1/payments
使用示例 webhook 有效负载测试转换
对于零小数货币(JPY、KRW、CLP、VND、UGX、MGA),直接发送金额而不除以 100
对于所有其他货币,将金额除以 100 以从分转换为基本单位
仔细检查货币代码是否符合 ISO 4217 格式(例如,“USD”、“EUR”、“JPY”)
其他资源