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

# MailerLite

> Ajoutez automatiquement des clients aux listes d'abonnés MailerLite et déclenchez des automatisations d'e-mails en fonction des événements de Dodo Payments.

## Introduction

Synchronisez automatiquement vos clients payants avec les listes d'abonnés MailerLite lorsque des événements de paiement se produisent. Ajoutez des clients à des groupes spécifiques, déclenchez des flux de travail d'automatisation et maintenez vos listes de marketing par e-mail à jour avec des données de paiement réelles.

MailerLite est une plateforme puissante de marketing par e-mail pour les newsletters, les campagnes et les automatisations. Cette intégration vous aide à gérer automatiquement les abonnés en fonction de l'activité de paiement - parfaite pour les séquences d'intégration, la segmentation des clients et les campagnes de marketing ciblées.

<Info>
  Cette intégration nécessite votre clé API MailerLite pour l'authentification. Vous pouvez en générer une depuis votre [page d'intégrations MailerLite](https://dashboard.mailerlite.com/integrations/api).
</Info>

## Prise en main

<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/j9AWnq3yJLUq3cjh/images/integrations/mailerlite.png?fit=max&auto=format&n=j9AWnq3yJLUq3cjh&q=85&s=4f247c342f82ffe529b79970fcf1a4e3" alt="Ajouter un point de terminaison et menu déroulant des intégrations" style={{ maxHeight: '500px', width: 'auto' }} width="876" height="769" data-path="images/integrations/mailerlite.png" />
    </Frame>
  </Step>

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

  <Step title="Enter API Key">
    Saisissez votre clé API MailerLite dans la configuration.
  </Step>

  <Step title="Configure Transformation">
    Modifiez le code de transformation pour formater les données des abonnés en fonction de l'API de MailerLite.
  </Step>

  <Step title="Test & Create">
    Testez avec des payloads d'exemple et cliquez sur <b>Créer</b> pour activer la synchronisation des abonnés.
  </Step>

  <Step title="Done!">
    Les événements de paiement synchroniseront désormais automatiquement les clients vers vos listes MailerLite.
  </Step>
</Steps>

## Exemples de code de transformation

### Ajouter un client lors d'un paiement réussi

```javascript add_customer.js icon="js" expandable theme={null}
function handler(webhook) {
  if (webhook.eventType === "payment.succeeded") {
    const p = webhook.payload.data;
    webhook.url = "https://connect.mailerlite.com/api/subscribers";
    webhook.payload = {
      email: p.customer.email,
      fields: {
        name: p.customer.name,
        company: p.customer.business_name || "",
        last_name: ""
      },
      groups: ["your-group-id-here"],
      status: "active"
    };
  }
  return webhook;
}
```

### Ajouter un abonné à plusieurs groupes en fonction du produit

```javascript product_segmentation.js icon="js" expandable theme={null}
function handler(webhook) {
  if (webhook.eventType === "payment.succeeded") {
    const p = webhook.payload.data;
    
    // Determine groups based on product or amount
    const groups = ["customers-group-id"];
    
    // Add to premium group if high-value purchase
    if (p.total_amount >= 10000) { // $100+
      groups.push("premium-customers-group-id");
    }
    
    webhook.url = "https://connect.mailerlite.com/api/subscribers";
    webhook.payload = {
      email: p.customer.email,
      fields: {
        name: p.customer.name,
        last_purchase_amount: (p.total_amount / 100).toFixed(2),
        last_purchase_date: new Date(webhook.payload.timestamp).toISOString().split('T')[0],
        payment_id: p.payment_id
      },
      groups: groups,
      status: "active"
    };
  }
  return webhook;
}
```

### Ajouter un nouvel abonné lors de l'activation de l'abonnement

```javascript subscription_subscriber.js icon="js" expandable theme={null}
function handler(webhook) {
  if (webhook.eventType === "subscription.active") {
    const s = webhook.payload.data;
    webhook.url = "https://connect.mailerlite.com/api/subscribers";
    webhook.payload = {
      email: s.customer.email,
      fields: {
        name: s.customer.name,
        subscription_plan: s.product_id,
        subscription_amount: (s.recurring_pre_tax_amount / 100).toFixed(2),
        billing_frequency: s.payment_frequency_interval,
        subscription_start: new Date().toISOString().split('T')[0]
      },
      groups: ["subscribers-group-id", "active-subscriptions-group-id"],
      status: "active"
    };
  }
  return webhook;
}
```

### Mettre à jour un abonné lors de l'annulation de l'abonnement

```javascript subscription_cancelled.js icon="js" expandable theme={null}
function handler(webhook) {
  if (webhook.eventType === "subscription.cancelled") {
    const s = webhook.payload.data;
    // Use PUT to update existing subscriber
    webhook.url = "https://connect.mailerlite.com/api/subscribers/" + encodeURIComponent(s.customer.email);
    webhook.method = "PUT";
    webhook.payload = {
      fields: {
        subscription_status: "cancelled",
        cancellation_date: new Date().toISOString().split('T')[0]
      },
      groups: ["churned-customers-group-id"]
    };
  }
  return webhook;
}
```

### Ajouter un client avec des champs personnalisés

```javascript custom_fields.js icon="js" expandable theme={null}
function handler(webhook) {
  if (webhook.eventType === "payment.succeeded") {
    const p = webhook.payload.data;
    webhook.url = "https://connect.mailerlite.com/api/subscribers";
    webhook.payload = {
      email: p.customer.email,
      fields: {
        name: p.customer.name,
        company: p.customer.business_name || "",
        country: p.customer.country || "",
        city: p.customer.city || "",
        phone: p.customer.phone || "",
        // Custom fields (must be created in MailerLite first)
        total_spent: (p.total_amount / 100).toFixed(2),
        customer_since: new Date().toISOString().split('T')[0],
        payment_method: p.payment_method || "unknown",
        currency: p.currency || "USD"
      },
      groups: ["paying-customers-group-id"],
      status: "active",
      subscribed_at: new Date().toISOString().replace('T', ' ').split('.')[0]
    };
  }
  return webhook;
}
```

### Déclencher une automatisation via un événement

```javascript trigger_automation.js icon="js" expandable theme={null}
function handler(webhook) {
  if (webhook.eventType === "payment.succeeded") {
    const p = webhook.payload.data;
    
    // First, ensure subscriber exists
    webhook.url = "https://connect.mailerlite.com/api/subscribers";
    webhook.payload = {
      email: p.customer.email,
      fields: {
        name: p.customer.name,
        // Add a trigger field that your automation watches
        last_payment_trigger: new Date().toISOString(),
        last_payment_amount: (p.total_amount / 100).toFixed(2)
      },
      status: "active"
    };
    
    // Tip: Create an automation in MailerLite that triggers
    // when 'last_payment_trigger' field is updated
  }
  return webhook;
}
```

## Conseils

* Créez des champs personnalisés dans MailerLite avant de les utiliser dans vos transformations
* Utilisez des groupes pour segmenter les clients par produit, niveau de plan ou comportement d'achat
* Configurez des flux de travail d'automatisation dans MailerLite qui se déclenchent lors des mises à jour de champs
* Utilisez le comportement upsert (POST à /subscribers) pour éviter les erreurs d'abonnés en double
* Stockez les métadonnées de paiement dans des champs personnalisés pour de meilleures informations sur les clients
* Testez avec un petit groupe avant d'activer pour tous les paiements

## Configuration des champs personnalisés

Avant d'utiliser des champs personnalisés, vous devez les créer dans MailerLite :

1. Accédez à votre tableau de bord MailerLite
2. Rendez-vous dans **Champs d'abonnés**
3. Cliquez sur **Créer un champ** et ajoutez des champs tels que :
   * `total_spent` (Numéro)
   * `customer_since` (Date)
   * `subscription_plan` (Texte)
   * `payment_method` (Texte)
   * `last_payment_amount` (Numéro)

## Dépannage

<AccordionGroup>
  <Accordion title="Subscribers not being added">
    * Vérifiez que la clé API est correcte et active
    * Assurez-vous que l'adresse e-mail est valide (conforme à la norme RFC 2821)
    * Vérifiez que les identifiants de groupe sont corrects et existent dans votre compte
    * Remarque : les abonnés désabonnés, en rebond ou marqués comme indésirables ne peuvent pas être réactivés via l'API
  </Accordion>

  <Accordion title="Custom fields not updating">
    * Vérifiez que les champs personnalisés existent déjà dans MailerLite avant de les utiliser
    * Assurez-vous que les noms de champs correspondent exactement (respect de la casse)
    * Vérifiez que les valeurs des champs correspondent au type attendu (texte, nombre, date)
  </Accordion>

  <Accordion title="Rate limit errors">
    * L'API MailerLite a une limite de 120 requêtes par minute
    * Utilisez les points de terminaison par lot si vous traitez de nombreux abonnés
    * Mettez en œuvre des stratégies de temporisation progressive pour les scénarios à fort volume
  </Accordion>

  <Accordion title="Group assignment not working">
    * Vérifiez que les identifiants de groupe sont des chaînes numériques
    * Assurez-vous que les groupes existent dans votre compte MailerLite
    * Remarque : l'utilisation de PUT avec les groupes supprimera l'abonné des groupes non listés
  </Accordion>
</AccordionGroup>

## Référence API

L'API des abonnés MailerLite accepte les paramètres clés suivants :

| Paramètre          | Type   | Obligatoire | Description                                                 |
| ------------------ | ------ | ----------- | ----------------------------------------------------------- |
| `email`            | string | Oui         | Adresse e-mail valide (RFC 2821)                            |
| `fields`           | object | Non         | Objet avec paires nom de champ/valeur                       |
| `fields.name`      | string | Non         | Prénom de l'abonné                                          |
| `fields.last_name` | string | Non         | Nom de famille de l'abonné                                  |
| `fields.company`   | string | Non         | Nom de l'entreprise                                         |
| `fields.country`   | string | Non         | Pays                                                        |
| `fields.city`      | string | Non         | Ville                                                       |
| `fields.phone`     | string | Non         | Numéro de téléphone                                         |
| `groups`           | array  | Non         | Tableau d'identifiants de groupes auxquels ajouter l'abonné |
| `status`           | string | Non         | L'un des : active, unsubscribed, unconfirmed, bounced, junk |
| `subscribed_at`    | string | Non         | Date au format `yyyy-MM-dd HH:mm:ss`                        |
| `ip_address`       | string | Non         | Adresse IP de l'abonné                                      |

Pour une documentation API complète, visitez [Développeurs MailerLite](https://developers.mailerlite.com/docs/subscribers.html).
