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

> Fügen Sie automatisch Kunden zu MailerLite-Abonnentenlisten hinzu und lösen Sie E-Mail-Automatisierungen basierend auf Dodo Payments-Ereignissen aus.

## Einführung

Synchronisieren Sie automatisch Ihre zahlenden Kunden mit MailerLite-Abonnentenlisten, wenn Zahlungsevents auftreten. Fügen Sie Kunden bestimmten Gruppen hinzu, lösen Sie Automatisierungs-Workflows aus und halten Sie Ihre E-Mail-Marketinglisten mit echten Zahlungsdaten auf dem neuesten Stand.

MailerLite ist eine leistungsstarke E-Mail-Marketing-Plattform für Newsletter, Kampagnen und Automatisierungen. Diese Integration hilft Ihnen, Abonnenten basierend auf Zahlungsaktivitäten automatisch zu verwalten - perfekt für Onboarding-Sequenzen, Kundensegmentierung und gezielte Marketingkampagnen.

<Info>
  Diese Integration erfordert Ihren MailerLite-API-Schlüssel zur Authentifizierung. Sie können einen auf Ihrer [MailerLite-Integrationsseite](https://dashboard.mailerlite.com/integrations/api) erstellen.
</Info>

## Erste Schritte

<Steps>
  <Step title="Open the Webhook Section">
    In Ihrem Dodo Payments-Dashboard navigieren Sie zu <b>Webhooks + Endpoint hinzufügen</b> und erweitern Sie das Integrations-Dropdown.

    <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">
    Wählen Sie die <b>MailerLite</b>-Integrationskarte aus.
  </Step>

  <Step title="Enter API Key">
    Geben Sie Ihren MailerLite-API-Schlüssel in der Konfiguration an.
  </Step>

  <Step title="Configure Transformation">
    Bearbeiten Sie den Transformationscode, um Abonnentendaten für die MailerLite-API zu formatieren.
  </Step>

  <Step title="Test & Create">
    Testen Sie mit Beispiel-Payloads und klicken Sie auf <b>Create</b>, um die Abonnentensynchronisierung zu aktivieren.
  </Step>

  <Step title="Done!">
    Zahlungsereignisse synchronisieren Kunden nun automatisch mit Ihren MailerLite-Listen.
  </Step>
</Steps>

## Transformationscode-Beispiele

### Kunde bei erfolgreicher Zahlung hinzufügen

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

### Abonnent zu mehreren Gruppen basierend auf Produkt hinzufügen

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

### Neuen Abonnenten bei Aktivierung des Abonnements hinzufügen

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

### Abonnenten bei Kündigung des Abonnements aktualisieren

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

### Kunde mit benutzerdefinierten Feldern hinzufügen

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

### Automatisierung über Ereignis auslösen

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

## Tipps

* Erstellen Sie benutzerdefinierte Felder in MailerLite, bevor Sie sie in Ihren Transformationen verwenden
* Verwenden Sie Gruppen, um Kunden nach Produkt, Planstufe oder Kaufverhalten zu segmentieren
* Richten Sie Automatisierungs-Workflows in MailerLite ein, die bei Feldaktualisierungen ausgelöst werden
* Verwenden Sie das Upsert-Verhalten (POST an /subscribers), um doppelte Abonnentenfehler zu vermeiden
* Speichern Sie Zahlungsmetadaten in benutzerdefinierten Feldern für bessere Kundeninsights
* Testen Sie mit einer kleinen Gruppe, bevor Sie es für alle Zahlungen aktivieren

## Einrichtung benutzerdefinierter Felder

Bevor Sie benutzerdefinierte Felder verwenden, müssen Sie diese in MailerLite erstellen:

1. Rufen Sie Ihr MailerLite-Dashboard auf
2. Navigieren Sie zu **Subscribers Fields**
3. Klicken Sie auf **Create field** und fügen Sie Felder hinzu wie:
   * `total_spent` (Number)
   * `customer_since` (Date)
   * `subscription_plan` (Text)
   * `payment_method` (Text)
   * `last_payment_amount` (Number)

## Fehlersuche

<AccordionGroup>
  <Accordion title="Subscribers not being added">
    * Überprüfen Sie, ob der API-Schlüssel korrekt und aktiv ist
    * Prüfen Sie, ob die E-Mail-Adresse gültig ist (RFC-2821-konform)
    * Stellen Sie sicher, dass Gruppen-IDs korrekt sind und in Ihrem Konto vorhanden sind
    * Hinweis: Abgemeldete, zurückgesprungene oder als Spam markierte Abonnenten können über die API nicht reaktiviert werden
  </Accordion>

  <Accordion title="Custom fields not updating">
    * Stellen Sie sicher, dass benutzerdefinierte Felder in MailerLite vorhanden sind, bevor Sie sie verwenden
    * Prüfen Sie, ob Feldnamen exakt übereinstimmen (Groß-/Kleinschreibung beachten)
    * Achten Sie darauf, dass Feldwerte dem erwarteten Typ entsprechen (Text, Number, Date)
  </Accordion>

  <Accordion title="Rate limit errors">
    * Die MailerLite-API hat ein Limit von 120 Anfragen pro Minute
    * Verwenden Sie Batch-Endpunkte, wenn viele Abonnenten verarbeitet werden
    * Implementieren Sie Backoff-Strategien für Szenarien mit hohem Volumen
  </Accordion>

  <Accordion title="Group assignment not working">
    * Überprüfen Sie, ob Gruppen-IDs numerische Strings sind
    * Prüfen Sie, ob Gruppen in Ihrem MailerLite-Konto existieren
    * Hinweis: Die Verwendung von PUT mit Gruppen entfernt den Abonnenten aus nicht aufgeführten Gruppen
  </Accordion>
</AccordionGroup>

## API-Referenz

Die MailerLite Subscribers API akzeptiert die folgenden Schlüsselparameter:

| Parameter          | Type   | Required | Description                                                       |
| ------------------ | ------ | -------- | ----------------------------------------------------------------- |
| `email`            | string | Yes      | Gültige E-Mail-Adresse (RFC 2821)                                 |
| `fields`           | object | No       | Objekt mit Feldname-/Wert-Paaren                                  |
| `fields.name`      | string | No       | Vorname des Abonnenten                                            |
| `fields.last_name` | string | No       | Nachname des Abonnenten                                           |
| `fields.company`   | string | No       | Name des Unternehmens                                             |
| `fields.country`   | string | No       | Land                                                              |
| `fields.city`      | string | No       | Stadt                                                             |
| `fields.phone`     | string | No       | Telefonnummer                                                     |
| `groups`           | array  | No       | Array von Gruppen-IDs, denen der Abonnent hinzugefügt werden soll |
| `status`           | string | No       | Einer von: active, unsubscribed, unconfirmed, bounced, junk       |
| `subscribed_at`    | string | No       | Datum im Format `yyyy-MM-dd HH:mm:ss`                             |
| `ip_address`       | string | No       | IP-Adresse des Abonnenten                                         |

Für die vollständige API-Dokumentation besuchen Sie [MailerLite Developers](https://developers.mailerlite.com/docs/subscribers.html).
