メインコンテンツへスキップ

はじめに

DataFastは、収益を最優先に考えた分析ツールで、どのマーケティングチャネルが支払い顧客を引き寄せるかを発見するのに役立ちます。Dodo PaymentsをDataFastと統合することで、トラフィックソースに収益を帰属させ、高価値の顧客セグメントを特定し、データに基づいた意思決定を行ってビジネスを成長させることができます。
この統合には、あなたのDataFastダッシュボードから取得できるDataFast APIキーが必要です。

仕組み

DataFastは、クッキーに保存されたユニークな訪問者IDを通じて訪問者を追跡します。マーケティングチャネルに収益を帰属させるには、次の手順が必要です:
  1. チェックアウトセッションを作成する際に、datafast_visitor_idクッキーからDataFastの訪問者IDを取得します
  2. 訪問者IDを支払いメタデータに保存します
  3. 支払いが成功した際に、DataFastのPayment APIを使用して支払いデータを送信します
これにより、DataFastは成功した支払いを元のトラフィックソースと照合し、完全な収益帰属を提供します。

始め方

1

DataFastスクリプトをインストール

まず、あなたのウェブサイトにDataFastトラッキングスクリプトをインストールします。これにより、訪問者を追跡するdatafast_visitor_idクッキーが作成されます。あなたのプラットフォームに特有のインストール手順については、DataFastのドキュメントを訪れてください。
2

APIキーを取得

DataFastダッシュボードにログインし、ウェブサイト設定に移動してAPIキーを取得します。
APIキーを安全に保管し、クライアントサイドのコードに公開しないでください。
3

チェックアウトで訪問者IDを取得

チェックアウトセッションを作成する際に、クッキーからDataFastの訪問者IDを取得し、支払いメタデータに追加します。
4

Webhook経由で支払いデータを送信

支払いが成功した際に、DataFastのPayment APIに支払いデータを送信するWebhookを設定します。
5

完了!

🎉 収益データは、マーケティングチャネルへの完全な帰属と共に、あなたのDataFastダッシュボードに表示されます。

実装ガイド

ステップ1: チェックアウトメタデータに訪問者IDを追加

チェックアウトセッションを作成する際に、クッキーからDataFastの訪問者IDを取得し、支払いメタデータに含めます。
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エンドポイントを設定します。
1

Webhookセクションを開く

Dodo Paymentsダッシュボードで、Webhooks → + エンドポイントを追加に移動し、統合のドロップダウンを展開します。
エンドポイントの追加と統合のドロップダウン
2

DataFastを選択

DataFast統合カードを選択します。
3

APIキーを入力

設定フィールドにDataFast APIキーを提供します。
APIキーの追加
4

変換を設定

支払いデータをDataFastのPayment API用にフォーマットするために、変換コードを編集します。
5

テストと作成

サンプルペイロードでテストし、作成をクリックして統合を有効にします。

変換コードの例

基本的な支払い帰属

basic_payment.js
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;
}

ゼロ小数通貨の処理

一部の通貨(JPYなど)は小数点以下を使用しません。金額計算を適切に調整してください:
zero_decimal.js
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;
}

サブスクリプション支払い

定期的なサブスクリプション支払いについては、各支払いを追跡できます:
subscription_payment.js
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;
}

ベストプラクティス

訪問者IDを早期に取得: チェックアウトフローの早い段階でDataFastの訪問者IDを保存し、正確な帰属を確保します。ユーザーが離脱して後で戻ってきた場合でも、正確な帰属が可能です。
  • 常にメタデータに訪問者IDを含める: 訪問者IDがないと、DataFastは収益をマーケティングチャネルに帰属させることができません
  • ゼロ小数通貨を処理する: 一部の通貨(JPY、KRWなど)は小数点以下を使用しません—金額計算を適切に調整してください
  • サンプル支払いでテストする: 本番環境に移行する前に、統合が正しく機能することを確認してください
  • DataFastダッシュボードを監視する: 支払いが正しく表示され、適切に帰属されていることを確認してください
  • Webhookの再試行を使用する: DataFastのPayment APIは冪等性があるため、Webhookが失敗した場合の再試行は安全です

トラブルシューティング

  • DataFast APIキーが正しくアクティブであることを確認してください
  • datafast_visitor_idが支払いメタデータにキャプチャされ、保存されていることを確認してください
  • Webhookの変換がペイロードを正しくフォーマットしていることを確認してください
  • payment.succeededイベントでWebhookがトリガーされていることを確認してください
  • 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
  • サンプルWebhookペイロードで変換をテストしてください
  • ゼロ小数通貨(JPY、KRW、CLP、VND、UGX、MGA)の場合、金額を100で割らずにそのまま送信します
  • その他の通貨については、金額を100で割ってセントから基本単位に変換します
  • 通貨コードがISO 4217フォーマット(例: “USD”, “EUR”, “JPY”)に一致していることを再確認してください

追加リソース

助けが必要ですか?統合に関するサポートは、Dodo Paymentsサポートに[email protected]までお問い合わせください。