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

> Aggiungi automaticamente i clienti alle liste di iscrizione di MailerLite e attiva automazioni email in base agli eventi di Dodo Payments.

## Introduzione

Sincronizza automaticamente i tuoi clienti paganti con le liste di iscrizione di MailerLite quando si verificano eventi di pagamento. Aggiungi i clienti a gruppi specifici, attiva flussi di automazione e mantieni aggiornate le tue liste di email marketing con dati di pagamento reali.

MailerLite è una potente piattaforma di email marketing per newsletter, campagne e automazioni. Questa integrazione ti aiuta a gestire automaticamente gli iscritti in base all'attività di pagamento - perfetta per sequenze di onboarding, segmentazione dei clienti e campagne di marketing mirate.

<Info>
  Questa integrazione richiede la tua chiave API di MailerLite per l'autenticazione. Puoi generarne una dalla tua [MailerLite Integrations page](https://dashboard.mailerlite.com/integrations/api).
</Info>

## Iniziare

<Steps>
  <Step title="Open the Webhook Section">
    Nel tuo dashboard di Dodo Payments, vai su <b>Webhook + Aggiungi Endpoint</b> e espandi il menu a tendina delle integrazioni.

    <Frame>
      <img src="https://mintcdn.com/dodopayments/j9AWnq3yJLUq3cjh/images/integrations/mailerlite.png?fit=max&auto=format&n=j9AWnq3yJLUq3cjh&q=85&s=4f247c342f82ffe529b79970fcf1a4e3" alt="Add Endpoint and integrations dropdown" style={{ maxHeight: '500px', width: 'auto' }} width="876" height="769" data-path="images/integrations/mailerlite.png" />
    </Frame>
  </Step>

  <Step title="Select MailerLite">
    Scegli la scheda di integrazione <b>MailerLite</b>.
  </Step>

  <Step title="Enter API Key">
    Fornisci la tua chiave API MailerLite nella configurazione.
  </Step>

  <Step title="Configure Transformation">
    Modifica il codice di trasformazione per formattare i dati degli iscritti per l'API di MailerLite.
  </Step>

  <Step title="Test & Create">
    Testa con payload di esempio e clicca su <b>Create</b> per attivare la sincronizzazione degli iscritti.
  </Step>

  <Step title="Done!">
    Gli eventi di pagamento sincronizzeranno ora automaticamente i clienti nelle tue liste MailerLite.
  </Step>
</Steps>

## Esempi di codice di trasformazione

### Aggiungi cliente al pagamento riuscito

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

### Aggiungi iscritto a più gruppi in base al prodotto

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

### Aggiungi nuovo iscritto all'attivazione dell'abbonamento

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

### Aggiorna iscritto alla cancellazione dell'abbonamento

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

### Aggiungi cliente con campi personalizzati

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

### Attiva automazione tramite evento

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

## Suggerimenti

* Crea campi personalizzati in MailerLite prima di usarli nelle tue trasformazioni
* Usa gruppi per segmentare i clienti per prodotto, piano o comportamento d'acquisto
* Imposta flussi di automazione in MailerLite che si attivano sugli aggiornamenti dei campi
* Usa il comportamento upsert (POST a /subscribers) per evitare errori di iscritti duplicati
* Memorizza i metadati di pagamento in campi personalizzati per migliori approfondimenti sui clienti
* Testa con un piccolo gruppo prima di abilitare per tutti i pagamenti

## Configurazione dei campi personalizzati

Prima di utilizzare i campi personalizzati, devi crearli in MailerLite:

1. Accedi al tuo cruscotto MailerLite
2. Vai su **Subscribers Fields**
3. Clicca su **Create field** e aggiungi campi come:
   * `total_spent` (Number)
   * `customer_since` (Date)
   * `subscription_plan` (Text)
   * `payment_method` (Text)
   * `last_payment_amount` (Number)

## Risoluzione dei problemi

<AccordionGroup>
  <Accordion title="Subscribers not being added">
    * Verifica che la chiave API sia corretta e attiva
    * Controlla che l'indirizzo email sia valido (conforme a RFC 2821)
    * Assicurati che gli ID dei gruppi siano corretti e presenti nel tuo account
    * Nota: gli iscritti cancellati, rimbalzati o contrassegnati come spam non possono essere riattivati tramite API
  </Accordion>

  <Accordion title="Custom fields not updating">
    * Verifica che i campi personalizzati esistano in MailerLite prima di utilizzarli
    * Controlla che i nomi dei campi corrispondano esattamente (distinguendo maiuscole/minuscole)
    * Assicurati che i valori dei campi corrispondano al tipo previsto (text, number, date)
  </Accordion>

  <Accordion title="Rate limit errors">
    * L'API di MailerLite ha un limite di 120 richieste al minuto
    * Utilizza endpoint batch se stai processando molti iscritti
    * Implementa strategie di backoff per scenari ad alto volume
  </Accordion>

  <Accordion title="Group assignment not working">
    * Verifica che gli ID dei gruppi siano stringhe numeriche
    * Controlla che i gruppi esistano nel tuo account MailerLite
    * Nota: l'uso di PUT con i gruppi rimuoverà l'iscritto dai gruppi non elencati
  </Accordion>
</AccordionGroup>

## Riferimento API

L'API degli iscritti di MailerLite accetta i seguenti parametri chiave:

| Parametro          | Tipo   | Obbligatorio | Descrizione                                               |
| ------------------ | ------ | ------------ | --------------------------------------------------------- |
| `email`            | string | Yes          | Indirizzo email valido (RFC 2821)                         |
| `fields`           | object | No           | Oggetto con coppie nome/valore dei campi                  |
| `fields.name`      | string | No           | Nome dell'iscritto                                        |
| `fields.last_name` | string | No           | Cognome dell'iscritto                                     |
| `fields.company`   | string | No           | Nome azienda                                              |
| `fields.country`   | string | No           | Paese                                                     |
| `fields.city`      | string | No           | Città                                                     |
| `fields.phone`     | string | No           | Numero di telefono                                        |
| `groups`           | array  | No           | Array di ID dei gruppi a cui aggiungere l'iscritto        |
| `status`           | string | No           | Uno tra: active, unsubscribed, unconfirmed, bounced, junk |
| `subscribed_at`    | string | No           | Data nel formato `yyyy-MM-dd HH:mm:ss`                    |
| `ip_address`       | string | No           | Indirizzo IP dell'iscritto                                |

Per la documentazione completa dell'API, visita [Sviluppatori MailerLite](https://developers.mailerlite.com/docs/subscribers.html).
