> ## 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

> Attribuez les revenus aux canaux marketing avec les analyses DataFast. Suivez quelles sources de trafic génèrent des clients payants et optimisez votre croissance.

## Introduction

DataFast est un outil d'analyse axé sur les revenus qui vous aide à découvrir quels canaux marketing génèrent des clients payants. En intégrant Dodo Payments avec DataFast, vous pouvez attribuer des revenus à vos sources de trafic, identifier des segments de clients à forte valeur et prendre des décisions basées sur les données pour développer votre entreprise.

<Info>
  Cette intégration nécessite votre clé API DataFast, que vous pouvez obtenir depuis votre [tableau de bord DataFast](https://datafa.st/).
</Info>

## Comment ça fonctionne

DataFast suit les visiteurs grâce à un identifiant unique de visiteur stocké dans un cookie. Pour attribuer des revenus aux canaux marketing, vous devez :

1. **Capturez l'identifiant visiteur de DataFast** à partir du cookie `datafast_visitor_id` lors de la création des sessions de paiement
2. **Stockez l'ID visiteur** dans vos métadonnées de paiement
3. **Envoyez les données de paiement à DataFast** lorsque les paiements aboutissent en utilisant leur API Payment

Cela permet à DataFast de faire correspondre les paiements réussis avec la source de trafic d'origine, vous offrant une attribution complète des revenus.

## Prise en main

<Steps>
  <Step title="Install DataFast Script">
    Commencez par installer le script de suivi DataFast sur votre site web. Cela crée le cookie `datafast_visitor_id` qui suit vos visiteurs.

    Consultez la [documentation DataFast](https://datafa.st/docs) pour des instructions d'installation spécifiques à votre plateforme.
  </Step>

  <Step title="Get Your API Key">
    Connectez-vous à votre [tableau de bord DataFast](https://datafa.st/) et accédez aux paramètres de votre site web pour obtenir votre clé API.

    <Warning>
      Gardez votre clé API sécurisée et ne l'exposez jamais dans du code côté client.
    </Warning>
  </Step>

  <Step title="Capture Visitor ID in Checkout">
    Lors de la création d'une session de paiement, capturez l'ID visiteur DataFast depuis le cookie et ajoutez-le à vos métadonnées de paiement.
  </Step>

  <Step title="Send Payment Data via Webhook">
    Configurez un webhook pour envoyer les données de paiement à l'API Payment de DataFast lorsque les paiements réussissent.
  </Step>

  <Step title="Done!">
    🎉 Les données de revenu apparaîtront désormais dans votre tableau de bord DataFast avec l'attribution complète aux canaux marketing.
  </Step>
</Steps>

## Guide d'implémentation

### Étape 1 : Ajouter l'identifiant de visiteur aux métadonnées de paiement

Lors de la création d'une session de paiement, capturez l'identifiant de visiteur DataFast depuis le cookie et incluez-le dans vos métadonnées de paiement.

<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>

### Étape 2 : Envoyer les données de paiement à DataFast

Configurez un point de terminaison webhook pour envoyer les données de paiement à l'API de paiement de DataFast lorsque les paiements réussissent.

<Steps>
  <Step title="Open the Webhook Section">
    Dans votre tableau de bord Dodo Payments, accédez à <b>Webhooks → + Ajouter un point de terminaison</b> et développez le menu déroulant des intégrations.

    <Frame>
      <img src="https://mintcdn.com/dodopayments/VOF9xBBvs1EjN4xq/images/integrations/datafast/add.png?fit=max&auto=format&n=VOF9xBBvs1EjN4xq&q=85&s=3aec6c9e450d0616573a4a7dfe89f78e" alt="Ajouter un point de terminaison et menu déroulant des intégrations" style={{ maxHeight: '500px', width: 'auto' }} width="1720" height="1192" data-path="images/integrations/datafast/add.png" />
    </Frame>
  </Step>

  <Step title="Select DataFast">
    Choisissez la carte d'intégration <b>DataFast</b>.
  </Step>

  <Step title="Enter API Key">
    Fournissez votre clé API DataFast dans le champ de configuration.

    <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="Ajouter une clé API" style={{ maxHeight: '500px', width: 'auto' }} width="1740" height="882" data-path="images/integrations/datafast/api-key.png" />
    </Frame>
  </Step>

  <Step title="Configure Transformation">
    Éditez le code de transformation pour formater les données de paiement selon l'API Payment de DataFast.
  </Step>

  <Step title="Test & Create">
    Testez avec des charges utiles d'exemple et cliquez sur <b>Créer</b> pour activer l'intégration.
  </Step>
</Steps>

## Exemples de code de transformation

### Attribution de paiement de base

```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;
}
```

### Gérer les devises à zéro décimal

Certaines devises (comme le JPY) n'utilisent pas de décimales. Ajustez le calcul du montant en conséquence :

```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;
}
```

### Paiements d'abonnement

Pour les paiements d'abonnement récurrents, vous pouvez suivre chaque paiement :

```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;
}
```

## Meilleures pratiques

<Tip>
  **Capturez l’ID visiteur tôt** : stockez l'ID visiteur DataFast dès que possible dans votre flux de paiement pour garantir une attribution précise, même si l'utilisateur quitte puis revient plus tard.
</Tip>

* **Incluez toujours l'identifiant de visiteur dans les métadonnées** : Sans l'identifiant de visiteur, DataFast ne peut pas attribuer les revenus aux canaux marketing
* **Gérez les devises à zéro décimal** : Certaines devises (JPY, KRW, etc.) n'utilisent pas de décimales—ajustez votre calcul de montant en conséquence
* **Testez avec des paiements d'exemple** : Vérifiez que l'intégration fonctionne correctement avant de passer en production
* **Surveillez votre tableau de bord DataFast** : Vérifiez que les paiements apparaissent correctement avec une attribution appropriée
* **Utilisez des tentatives de webhook** : L'API de paiement de DataFast est idempotente, donc les tentatives sont sûres si un webhook échoue

## Dépannage

<AccordionGroup>
  <Accordion title="Payments not appearing in DataFast">
    * Vérifiez que votre clé API DataFast est correcte et active
    * Assurez-vous que le cookie `datafast_visitor_id` est bien capturé et stocké dans les métadonnées de paiement
    * Confirmez que la transformation du webhook formate correctement la charge utile
    * Vérifiez que le webhook se déclenche sur les événements `payment.succeeded`
    * Consultez le tableau de bord DataFast pour tous messages d'erreur ou journaux API
  </Accordion>

  <Accordion title="Revenue attribution not working">
    * Assurez-vous que le script de suivi DataFast est installé et fonctionne sur votre site
    * Vérifiez que le cookie `datafast_visitor_id` est bien défini
    * Assurez-vous que les ID visiteurs correspondent entre la création du paiement et la validation
    * Veillez à capturer l'ID visiteur avant de créer la session de paiement
    * Consultez la [documentation de l'API Payment](https://datafa.st/docs/payments-api) de DataFast pour des conseils supplémentaires
  </Accordion>

  <Accordion title="Transformation errors">
    * Validez que la structure JSON correspond au format de l'API Payment de DataFast
    * Vérifiez que tous les champs requis (`amount`, `currency`, `transaction_id`, `datafast_visitor_id`) sont présents
    * Assurez-vous que le montant est correctement converti (divisez par 100 pour la plupart des devises, sauf celles à décimales nulles)
    * Vérifiez que l'URL du point de terminaison de l'API est correcte : `https://datafa.st/api/v1/payments`
    * Testez la transformation avec des charges utiles webhook d'exemple
  </Accordion>

  <Accordion title="Currency conversion issues">
    * Pour les devises à décimales nulles (JPY, KRW, CLP, VND, UGX, MGA), envoyez le montant tel quel sans le diviser par 100
    * Pour toutes les autres devises, divisez le montant par 100 pour passer des cents à l'unité de base
    * Vérifiez une dernière fois que le code devise respecte la norme ISO 4217 (par ex. « USD », « EUR », « JPY »)
  </Accordion>
</AccordionGroup>

## Ressources supplémentaires

<CardGroup cols={2}>
  <Card title="DataFast Documentation" icon="book" href="https://datafa.st/docs/payments-api">
    En savoir plus sur l'API Payment de DataFast et les fonctionnalités d'attribution des revenus.
  </Card>

  <Card title="DataFast Dashboard" icon="chart-bar" href="https://datafa.st/">
    Accédez à votre tableau de bord DataFast pour consulter les analyses de revenus et les données d’attribution.
  </Card>
</CardGroup>

<Info>
  Besoin d'aide ? Contactez le support de Dodo Payments à [support@dodopayments.com](mailto:support@dodopayments.com) pour vous assister dans l'intégration.
</Info>
