はじめに
DataFastは、収益を最優先に考えた分析ツールで、どのマーケティングチャネルが支払い顧客を引き寄せるかを発見するのに役立ちます。Dodo PaymentsをDataFastと統合することで、トラフィックソースに収益を帰属させ、高価値の顧客セグメントを特定し、データに基づいた意思決定を行ってビジネスを成長させることができます。
仕組み
DataFastは、クッキーに保存されたユニークな訪問者IDを通じて訪問者を追跡します。マーケティングチャネルに収益を帰属させるには、次の手順が必要です:
DataFastの訪問者IDを取得 するには、チェックアウトセッションを作成する際にdatafast_visitor_idクッキーから取得します。
訪問者IDを保存 します。支払いメタデータに保存してください。
支払いデータをDataFastに送信 します。支払いが成功した際に、彼らのPayment APIを使用します。
これにより、DataFastは成功した支払いを元のトラフィックソースと照合し、完全な収益帰属を提供します。
始め方
DataFastスクリプトのインストール
まず、あなたのウェブサイトにDataFastトラッキングスクリプトをインストールします。これにより、訪問者を追跡するためのdatafast_visitor_idクッキーが作成されます。 あなたのプラットフォームに特有のインストール手順については、DataFastのドキュメント を訪れてください。
APIキーを取得
DataFastダッシュボード にログインし、ウェブサイト設定に移動してAPIキーを取得します。APIキーを安全に保管し、クライアントサイドのコードに公開しないでください。
チェックアウトで訪問者IDを取得
チェックアウトセッションを作成する際に、クッキーからDataFastの訪問者IDを取得し、支払いメタデータに追加します。
Webhook経由で支払いデータを送信
支払いが成功した際に、DataFastのPayment APIに支払いデータを送信するWebhookを設定します。
完了!
🎉 収益データは、マーケティングチャネルへの完全な帰属と共に、あなたの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のPayment APIに支払いデータを送信するWebhookエンドポイントを設定します。
Webhookセクションを開く
Dodo Paymentsダッシュボードで、Webhooks → + エンドポイントを追加 に移動し、統合のドロップダウンを展開します。
DataFastを選択
DataFast 統合カードを選択します。
APIキーを入力
設定フィールドにDataFast APIキーを提供します。
変換を設定
支払いデータをDataFastのPayment 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 && 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ダッシュボードを監視する : 支払いが正しく表示され、適切に帰属されていることを確認してください
Webhookの再試行を使用する : DataFastのPayment APIは冪等性があるため、Webhookが失敗した場合の再試行は安全です
トラブルシューティング
DataFastのAPIキーが正しくアクティブであることを確認してください。
datafast_visitor_idがキャプチャされ、支払いメタデータに保存されていることを確認してください。
ウェブフック変換がペイロードを正しくフォーマットしていることを確認してください。
ウェブフックがpayment.succeededイベントでトリガーされていることを確認してください。
DataFastダッシュボードでエラーメッセージやAPIログを確認してください。
DataFastトラッキングスクリプトがあなたのウェブサイトにインストールされ、機能していることを確認してください。
datafast_visitor_idクッキーが正しく設定されていることを確認してください。
チェックアウト作成と支払い完了の間で訪問者IDが一致していることを確認してください。
チェックアウトセッションを作成する前に訪問者IDをキャプチャしていることを確認してください。
追加のガイダンスについては、DataFastのPayment APIドキュメント を確認してください。
JSON構造がDataFastのPayment APIフォーマットに一致していることを確認してください。
必須フィールド(amount、currency、transaction_id、datafast_visitor_id)がすべて存在することを確認してください。
金額が正しく変換されていることを確認してください(ほとんどの通貨では100で割りますが、ゼロ小数通貨を除きます)。
APIエンドポイントURLが正しいことを確認してください:https://datafa.st/api/v1/payments
サンプルウェブフックペイロードで変換をテストしてください。
ゼロ小数通貨(JPY、KRW、CLP、VND、UGX、MGA)の場合、金額を100で割らずにそのまま送信します
その他の通貨については、金額を100で割ってセントから基本単位に変換します
通貨コードがISO 4217フォーマット(例: “USD”, “EUR”, “JPY”)に一致していることを再確認してください
追加リソース