> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dodopayments.com/llms.txt
> Use this file to discover all available pages before exploring further.

# DataFast

> DataFast एनालिटिक्स के साथ मार्केटिंग चैनलों को राजस्व सौंपें। ट्रैक करें कि कौन से ट्रैफ़िक स्रोत भुगतान करने वाले ग्राहकों को लाते हैं और अपनी वृद्धि को अनुकूलित करें।

## परिचय

DataFast एक राजस्व-प्रथम एनालिटिक्स उपकरण है जो आपको यह पता लगाने में मदद करता है कि कौन से मार्केटिंग चैनल भुगतान करने वाले ग्राहकों को लाते हैं। DataFast के साथ Dodo Payments को एकीकृत करके, आप अपने ट्रैफ़िक स्रोतों को राजस्व सौंप सकते हैं, उच्च-मूल्य वाले ग्राहक खंडों की पहचान कर सकते हैं, और अपने व्यवसाय को बढ़ाने के लिए डेटा-संचालित निर्णय ले सकते हैं।

<Info>
  यह एकीकरण आपके DataFast API Key की आवश्यकता करता है, जिसे आप अपने [DataFast डैशबोर्ड](https://datafa.st/) से प्राप्त कर सकते हैं।
</Info>

## यह कैसे काम करता है

DataFast आगंतुकों को एक अद्वितीय आगंतुक आईडी के माध्यम से ट्रैक करता है जो एक कुकी में संग्रहीत होती है। मार्केटिंग चैनलों को राजस्व सौंपने के लिए, आपको करना होगा:

1. **चेकआउट सत्र बनाते समय `datafast_visitor_id` कुकी से DataFast का विज़िटर ID कैप्चर करें**
2. **विज़िटर ID को अपने भुगतान मेटाडाटा में संग्रहीत करें**
3. **भुगतान सफल होने पर DataFast को उनके Payment API के माध्यम से भुगतान डेटा भेजें**

यह DataFast को सफल भुगतानों को मूल ट्रैफ़िक स्रोत से मिलाने की अनुमति देता है, जिससे आपको पूर्ण राजस्व सौंपने की जानकारी मिलती है।

## प्रारंभ करना

<Steps>
  <Step title="Install DataFast Script">
    सबसे पहले, अपनी वेबसाइट पर DataFast ट्रैकिंग स्क्रिप्ट इंस्टॉल करें। यह `datafast_visitor_id` कुकी बनाती है जो आपके विज़िटर्स को ट्रैक करती है।

    अपने प्लेटफ़ॉर्म के लिए इंस्टॉलेशन निर्देशों के लिए [DataFast प्रलेखन](https://datafa.st/docs) देखें।
  </Step>

  <Step title="Get Your API Key">
    अपने [DataFast डैशबोर्ड](https://datafa.st/) में लॉग इन करें और अपना API key प्राप्त करने के लिए अपनी वेबसाइट सेटिंग्स पर जाएँ।

    <Warning>
      अपने API key को सुरक्षित रखें और इसे क्लाइंट-साइड कोड में कभी प्रकट न करें।
    </Warning>
  </Step>

  <Step title="Capture Visitor ID in Checkout">
    जब आप चेकआउट सत्र बना रहे हों, तो कुकी से DataFast विज़िटर ID कैप्चर करें और इसे अपने भुगतान मेटाडाटा में जोड़ें।
  </Step>

  <Step title="Send Payment Data via Webhook">
    भुगतान सफल होने पर भुगतान डेटा DataFast के Payment API पर भेजने के लिए एक वेबहुक कॉन्फ़िगर करें।
  </Step>

  <Step title="Done!">
    🎉 अब राजस्व डेटा आपके DataFast डैशबोर्ड में पूरी मार्केटिंग चैनलों की एट्रिब्यूशन के साथ दिखाई देगा।
  </Step>
</Steps>

## कार्यान्वयन गाइड

### चरण 1: चेकआउट मेटाडेटा में आगंतुक आईडी जोड़ें

चेकआउट सत्र बनाते समय, कुकी से DataFast आगंतुक आईडी को कैप्चर करें और इसे अपने भुगतान मेटाडेटा में शामिल करें।

<CodeGroup>
  ```typescript Next.js theme={null}
  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_cart: [{ product_id: productId, quantity: 1 }],
      // ... other payment configuration
      metadata: {
        datafast_visitor_id: datafastVisitorId, // Store visitor ID in metadata
      },
    });

    return payment;
  }
  ```

  ```javascript Express.js theme={null}
  const express = require('express');
  const router = express.Router();

  router.post('/create-checkout', async (req, res) => {
    // Capture DataFast visitor ID from cookie
    const datafastVisitorId = req.cookies?.datafast_visitor_id;

    const payment = await dodopayments.payments.create({
      product_cart: [{ product_id: req.body.productId, quantity: 1 }],
      // ... other payment configuration
      metadata: {
        datafast_visitor_id: datafastVisitorId, // Store visitor ID in metadata
      },
    });

    res.json({ payment });
  });
  ```

  ```javascript Other Frameworks theme={null}
  // Capture DataFast visitor ID from cookie
  const datafastVisitorId = getCookie('datafast_visitor_id'); // Use your framework's cookie method

  const payment = await dodopayments.payments.create({
    product_cart: [{ product_id: productId, quantity: 1 }],
    // ... other payment configuration
    metadata: {
      datafast_visitor_id: datafastVisitorId, // Store visitor ID in metadata
    },
  });
  ```
</CodeGroup>

### चरण 2: DataFast को भुगतान डेटा भेजें

भुगतान सफल होने पर DataFast के भुगतान API को भुगतान डेटा भेजने के लिए एक वेबहुक एंडपॉइंट कॉन्फ़िगर करें।

<Steps>
  <Step title="Open the Webhook Section">
    अपने Dodo Payments डैशबोर्ड में, <b>Webhooks → + Add Endpoint</b> पर जाएं और इंटीग्रेशन ड्रॉपडाउन को विस्तारित करें।

    <Frame>
      <img src="https://mintcdn.com/dodopayments/VOF9xBBvs1EjN4xq/images/integrations/datafast/add.png?fit=max&auto=format&n=VOF9xBBvs1EjN4xq&q=85&s=3aec6c9e450d0616573a4a7dfe89f78e" alt="Add Endpoint and integrations dropdown" style={{ maxHeight: '500px', width: 'auto' }} width="1720" height="1192" data-path="images/integrations/datafast/add.png" />
    </Frame>
  </Step>

  <Step title="Select DataFast">
    <b>DataFast</b> एकीकरण कार्ड चुनें।
  </Step>

  <Step title="Enter API Key">
    अपनी DataFast API Key को कॉन्फ़िगरेशन क्षेत्र में प्रदान करें।

    <Frame>
      <img src="https://mintcdn.com/dodopayments/VOF9xBBvs1EjN4xq/images/integrations/datafast/api-key.png?fit=max&auto=format&n=VOF9xBBvs1EjN4xq&q=85&s=25129c8ca64e38ef44a6960c2f3a2993" alt="Add API Key" style={{ maxHeight: '500px', width: 'auto' }} width="1740" height="882" data-path="images/integrations/datafast/api-key.png" />
    </Frame>
  </Step>

  <Step title="Configure Transformation">
    DataFast के Payment API के लिए भुगतान डेटा को प्रारूपित करने हेतु रूपांतरण कोड संपादित करें।
  </Step>

  <Step title="Test & Create">
    नमूना पेलोड के साथ परीक्षण करें और <b>Create</b> पर क्लिक करके एकीकरण को सक्रिय करें।
  </Step>
</Steps>

## रूपांतरण कोड उदाहरण

### बुनियादी भुगतान सौंपना

```javascript basic_payment.js icon="js" expandable theme={null}
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;
}
```

### शून्य दशमलव मुद्राओं को संभालना

कुछ मुद्राएँ (जैसे JPY) दशमलव स्थानों का उपयोग नहीं करती हैं। राशि की गणना को तदनुसार समायोजित करें:

```javascript zero_decimal.js icon="js" expandable theme={null}
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;
}
```

### सदस्यता भुगतान

आवर्ती सदस्यता भुगतानों के लिए, आप प्रत्येक भुगतान को ट्रैक कर सकते हैं:

```javascript subscription_payment.js icon="js" expandable theme={null}
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;
}
```

## सर्वोत्तम प्रथाएँ

<Tip>
  **विज़िटर ID जल्दी कैप्चर करें**: सटीक एट्रिब्यूशन सुनिश्चित करने के लिए अपने चेकआउट फ्लो में जितना जल्दी हो सके DataFast विज़िटर ID संग्रहीत करें, भले ही उपयोगकर्ता आगे चला जाए और फिर लौट आए।
</Tip>

* **हमेशा मेटाडेटा में आगंतुक आईडी शामिल करें**: बिना आगंतुक आईडी के, DataFast राजस्व को मार्केटिंग चैनलों को सौंप नहीं सकता
* **शून्य दशमलव मुद्राओं को संभालें**: कुछ मुद्राएँ (JPY, KRW, आदि) दशमलव स्थानों का उपयोग नहीं करती हैं—अपनी राशि की गणना को तदनुसार समायोजित करें
* **नमूना भुगतानों के साथ परीक्षण करें**: सुनिश्चित करें कि एकीकरण सही ढंग से काम कर रहा है इससे पहले कि आप लाइव जाएं
* **अपने DataFast डैशबोर्ड की निगरानी करें**: जांचें कि भुगतान सही ढंग से उचित सौंपने के साथ दिखाई दे रहे हैं
* **Webhook पुनः प्रयासों का उपयोग करें**: DataFast का भुगतान API idempotent है, इसलिए यदि कोई वेबहुक विफल हो जाता है तो पुनः प्रयास सुरक्षित हैं

## समस्या निवारण

<AccordionGroup>
  <Accordion title="Payments not appearing in DataFast">
    * सुनिश्चित करें कि आपका DataFast API key सही और सक्रिय है
    * जांचें कि `datafast_visitor_id` कैप्चर हो रहा है और भुगतान मेटाडाटा में संग्रहीत हो रहा है
    * सुनिश्चित करें कि वेबहुक रूपांतरण सही ढंग से पेलोड प्रारूपित कर रहा है
    * पुष्टि करें कि वेबहुक `payment.succeeded` घटनाओं पर ट्रिगर हो रहा है
    * किसी भी त्रुटि संदेश या API लॉग के लिए DataFast डैशबोर्ड की जाँच करें
  </Accordion>

  <Accordion title="Revenue attribution not working">
    * पुष्टि करें कि DataFast ट्रैकिंग स्क्रिप्ट आपकी वेबसाइट पर इंस्टॉल है और काम कर रही है
    * जांचें कि `datafast_visitor_id` कुकी सही ढंग से सेट हो रही है
    * सुनिश्चित करें कि चेकआउट निर्माण और भुगतान पूर्णता के बीच विज़िटर ID मेल खा रहा है
    * यह सुनिश्चित करें कि आप चेकआउट सत्र बनाने से पहले विज़िटर ID कैप्चर कर रहे हैं
    * अतिरिक्त मार्गदर्शन के लिए DataFast के [Payment API दस्तावेज़](https://datafa.st/docs/payments-api) की समीक्षा करें
  </Accordion>

  <Accordion title="Transformation errors">
    * सत्यापित करें कि JSON संरचना DataFast के Payment API प्रारूप से मेल खाती है
    * जांचें कि सभी आवश्यक फ़ील्ड (`amount`, `currency`, `transaction_id`, `datafast_visitor_id`) मौजूद हैं
    * सुनिश्चित करें कि राशि सही ढंग से रूपांतरित हो रही है (अधिकांश मुद्राओं के लिए 100 से भाग करें, सिवाय शून्य दशमलव मुद्राओं के)
    * API एंडपॉइंट URL सही है यह सत्यापित करें: `https://datafa.st/api/v1/payments`
    * नमूना वेबहुक पेलोड के साथ रूपांतरण का परीक्षण करें
  </Accordion>

  <Accordion title="Currency conversion issues">
    * शून्य दशमलव मुद्राओं (JPY, KRW, CLP, VND, UGX, MGA) के लिए राशि को बिना 100 से भाग किए वैसे ही भेजें
    * अन्य सभी मुद्राओं के लिए राशि को सेंट से बेस यूनिट में बदलने के लिए 100 से भाग करें
    * यह सुनिश्चित करने के लिए दोबारा जाँचें कि मुद्रा कोड ISO 4217 प्रारूप (जैसे "USD", "EUR", "JPY") से मेल खाता है
  </Accordion>
</AccordionGroup>

## अतिरिक्त संसाधन

<CardGroup cols={2}>
  <Card title="DataFast Documentation" icon="book" href="https://datafa.st/docs/payments-api">
    DataFast के Payment API और राजस्व एट्रिब्यूशन सुविधाओं के बारे में और जानें।
  </Card>

  <Card title="DataFast Dashboard" icon="chart-bar" href="https://datafa.st/">
    राजस्व विश्लेषण और एट्रिब्यूशन डेटा देखने के लिए अपने DataFast डैशबोर्ड का उपयोग करें।
  </Card>
</CardGroup>

<Info>
  सहायता चाहिए? एकीकरण में सहायता के लिए [support@dodopayments.com](mailto:support@dodopayments.com) पर Dodo Payments सपोर्ट से संपर्क करें।
</Info>
