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

# Keplars

> Envoyez des emails transactionnels via Keplars basés sur les événements de Dodo Payments.

## Introduction

Envoyez automatiquement des emails transactionnels professionnels lorsque des événements de paiement et d'abonnement se produisent. Envoyez des confirmations de paiement, des mises à jour d'abonnement, et des notifications d'échec via Keplars sans nécessiter de serveur intermédiaire. Dodo Payments appelle directement l'API Keplars en utilisant un gestionnaire de transformation JavaScript.

<Info>
  Cette intégration nécessite votre clé API Keplars pour l'authentification. Trouvez-la dans le tableau de bord Keplars sous **Paramètres → Clés API**, et vérifiez un domaine ou une adresse d'expéditeur sous **Domaines**.
</Info>

## Démarrage

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

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

    <Frame>
      <img src="https://mintcdn.com/dodopayments/tM0KgwbOo2xwg7zr/images/integrations/keplars/select.png?fit=max&auto=format&n=tM0KgwbOo2xwg7zr&q=85&s=776a4a2228efa0822b15b13d2baaf5bb" alt="Sélectionner la carte d'intégration Keplars" style={{ maxHeight: '500px', width: 'auto' }} width="1040" height="731" data-path="images/integrations/keplars/select.png" />
    </Frame>
  </Step>

  <Step title="Enter API Key">
    Fournissez votre clé API Keplars. Elle est envoyée comme jeton Bearer à chaque requête.

    <Frame>
      <img src="https://mintcdn.com/dodopayments/tM0KgwbOo2xwg7zr/images/integrations/keplars/api-key.png?fit=max&auto=format&n=tM0KgwbOo2xwg7zr&q=85&s=f3e0917155715d0587a6012c1bfd3f26" alt="Entrez l'URL API Keplars, la clé API, et abonnez-vous aux événements" style={{ maxHeight: '500px', width: 'auto' }} width="982" height="854" data-path="images/integrations/keplars/api-key.png" />
    </Frame>
  </Step>

  <Step title="Configure Transformation">
    Modifiez le code de transformation pour formater les emails pour Keplars. Remplacez l'adresse de l'expéditeur et les ID de modèle par les vôtres.
  </Step>

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

  <Step title="Done!">
    🎉 Les événements de paiement déclencheront désormais automatiquement les emails transactionnels via Keplars.
  </Step>
</Steps>

## Exemples de Code de Transformation

Chaque gestionnaire définit `webhook.url` sur le point de terminaison d'envoi haute priorité de Keplars et réécrit `webhook.payload` en une requête Keplars (la clé API est envoyée automatiquement comme jeton Bearer). Remplacez `payments@mail.yourdomain.com` par votre expéditeur vérifié et `your-keplars-*-template-id` par vos ID de modèles réels.

<Warning>
  `to` doit être un **tableau**, même pour un seul destinataire. Lors de l'utilisation de `template_id`, ne pas envoyer également `subject` ou `body`. Le modèle les fournit.
</Warning>

### Email de Confirmation de Paiement

```javascript payment_succeeded.js icon="js" expandable theme={null}
function handler(webhook) {
  if (webhook.eventType !== "payment.succeeded") return webhook;

  const data = webhook.payload.data || {};
  const paymentDate = new Date(webhook.payload.timestamp).toLocaleDateString("en-US", {
    year: "numeric", month: "long", day: "numeric",
  });

  webhook.url = "https://api.keplars.com/api/v1/send-email/high";
  webhook.payload = {
    to: [data.customer?.email],
    from: "payments@mail.yourdomain.com",
    template_id: "your-keplars-payment-success-template-id",
    params: {
      customer_name: data.customer?.name,
      amount: ((data.total_amount || 0) / 100).toFixed(2),
      currency: data.currency || "USD",
      payment_id: data.payment_id,
      payment_method: data.payment_method,
      payment_date: paymentDate,
    },
  };
  return webhook;
}
```

### Notification d'Échec de Paiement

```javascript payment_failed.js icon="js" expandable theme={null}
function handler(webhook) {
  if (webhook.eventType !== "payment.failed") return webhook;

  const data = webhook.payload.data || {};
  const paymentDate = new Date(webhook.payload.timestamp).toLocaleDateString("en-US", {
    year: "numeric", month: "long", day: "numeric",
  });

  webhook.url = "https://api.keplars.com/api/v1/send-email/high";
  webhook.payload = {
    to: [data.customer?.email],
    from: "payments@mail.yourdomain.com",
    template_id: "your-keplars-payment-failed-template-id",
    params: {
      customer_name: data.customer?.name,
      amount: ((data.total_amount || 0) / 100).toFixed(2),
      currency: data.currency || "USD",
      payment_id: data.payment_id,
      error_message: data.error_message || "Your payment could not be processed.",
      payment_date: paymentDate,
    },
  };
  return webhook;
}
```

### Email de Bienvenue à l'Abonnement

```javascript subscription_active.js icon="js" expandable theme={null}
function handler(webhook) {
  if (webhook.eventType !== "subscription.active") return webhook;

  const data = webhook.payload.data || {};
  const nextBilling = data.next_billing_date
    ? new Date(data.next_billing_date).toLocaleDateString("en-US", {
        year: "numeric", month: "long", day: "numeric",
      })
    : "";

  webhook.url = "https://api.keplars.com/api/v1/send-email/high";
  webhook.payload = {
    to: [data.customer?.email],
    from: "payments@mail.yourdomain.com",
    template_id: "your-keplars-subscription-active-template-id",
    params: {
      customer_name: data.customer?.name,
      subscription_id: data.subscription_id,
      product_id: data.product_id,
      amount: ((data.recurring_pre_tax_amount || 0) / 100).toFixed(2),
      currency: data.currency || "USD",
      billing_interval: data.payment_frequency_interval || "month",
      next_billing_date: nextBilling,
    },
  };
  return webhook;
}
```

### Email d'Annulation d'Abonnement

```javascript subscription_cancelled.js icon="js" expandable theme={null}
function handler(webhook) {
  if (webhook.eventType !== "subscription.cancelled") return webhook;

  const data = webhook.payload.data || {};
  const cancellationDate = new Date(webhook.payload.timestamp).toLocaleDateString("en-US", {
    year: "numeric", month: "long", day: "numeric",
  });

  webhook.url = "https://api.keplars.com/api/v1/send-email/high";
  webhook.payload = {
    to: [data.customer?.email],
    from: "payments@mail.yourdomain.com",
    template_id: "your-keplars-subscription-cancelled-template-id",
    params: {
      customer_name: data.customer?.name,
      subscription_id: data.subscription_id,
      cancellation_date: cancellationDate,
    },
  };
  return webhook;
}
```

## Conseils

* Utilisez un domaine ou une adresse d'expéditeur vérifié pour une meilleure délivrabilité.
* Créez un modèle Keplars dédié par type d'événement pour que chaque email reste conforme à la marque et au message.
* Personnalisez chaque email en transmettant les données client comme le nom, le montant, et l'ID de paiement via `params`.
* Testez d'abord en mode sandbox. Les envois en sandbox sont capturés dans la Boîte de Réception Test Keplars plutôt que livrés.

## Dépannage

<AccordionGroup>
  <Accordion title="Emails not being sent">
    * Vérifiez que votre clé API est correcte et active dans Keplars sous **Paramètres → Clés API**.
    * Vérifiez que votre domaine ou adresse d'expéditeur est vérifié.
    * Dodo Payments affiche la réponse d'erreur brute de Keplars dans le journal de livraison des webhooks. Vérifiez-le pour plus de détails.
  </Accordion>

  <Accordion title="Template not found">
    * Le `template_id` dans votre gestionnaire doit correspondre à un modèle actif dans votre compte Keplars. Vérifiez l'ID (et qu'il est actif) dans le tableau de bord.
  </Accordion>

  <Accordion title="Wrong event triggered">
    * Chaque gestionnaire vérifie `webhook.eventType` et revient plus tôt si cela ne correspond pas. Assurez-vous que les événements corrects sont abonnés sur le point de terminaison de webhook Dodo Payments.
  </Accordion>
</AccordionGroup>
