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

> Adicione automaticamente clientes às listas de assinantes do MailerLite e acione automações de e-mail com base em eventos de pagamentos do Dodo Payments.

## Introdução

Sincronize automaticamente seus clientes pagantes com as listas de assinantes do MailerLite quando eventos de pagamento ocorrerem. Adicione clientes a grupos específicos, acione fluxos de automação e mantenha suas listas de marketing por e-mail atualizadas com dados reais de pagamento.

MailerLite é uma poderosa plataforma de marketing por e-mail para newsletters, campanhas e automações. Esta integração ajuda você a gerenciar automaticamente os assinantes com base na atividade de pagamento - perfeita para sequências de integração, segmentação de clientes e campanhas de marketing direcionadas.

<Info>
  Esta integração exige sua chave de API do MailerLite para autenticação. Você pode gerar uma em sua [MailerLite Integrations page](https://dashboard.mailerlite.com/integrations/api).
</Info>

## Começando

<Steps>
  <Step title="Open the Webhook Section">
    No seu painel do Dodo Payments, navegue até <b>Webhooks + Adicionar Endpoint</b> e expanda o menu suspenso de integrações.

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

  <Step title="Select MailerLite">
    Escolha o cartão de integração <b>MailerLite</b>.
  </Step>

  <Step title="Enter API Key">
    Forneça sua chave de API do MailerLite na configuração.
  </Step>

  <Step title="Configure Transformation">
    Edite o código de transformação para formatar os dados do assinante para a API do MailerLite.
  </Step>

  <Step title="Test & Create">
    Teste com cargas úteis de amostra e clique em <b>Create</b> para ativar a sincronização de assinantes.
  </Step>

  <Step title="Done!">
    Os eventos de pagamento agora sincronizarão automaticamente os clientes com suas listas do MailerLite.
  </Step>
</Steps>

## Exemplos de Código de Transformação

### Adicionar Cliente em Pagamento Bem-Sucedido

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

### Adicionar Assinante a Múltiplos Grupos com Base no Produto

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

### Adicionar Novo Assinante na Ativação da Assinatura

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

### Atualizar Assinante na Cancelamento da Assinatura

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

### Adicionar Cliente com Campos Personalizados

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

### Acionar Automação via 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;
}
```

## Dicas

* Crie campos personalizados no MailerLite antes de usá-los em suas transformações
* Use grupos para segmentar clientes por produto, nível de plano ou comportamento de compra
* Configure fluxos de automação no MailerLite que sejam acionados por atualizações de campo
* Use o comportamento upsert (POST para /subscribers) para evitar erros de assinante duplicado
* Armazene metadados de pagamento em campos personalizados para melhores insights sobre os clientes
* Teste com um pequeno grupo antes de habilitar para todos os pagamentos

## Configuração de Campos Personalizados

Antes de usar campos personalizados, você precisa criá-los no MailerLite:

1. Acesse seu painel do MailerLite
2. Navegue até **Subscribers Fields**
3. Clique em **Create field** e adicione campos como:
   * `total_spent` (Número)
   * `customer_since` (Data)
   * `subscription_plan` (Texto)
   * `payment_method` (Texto)
   * `last_payment_amount` (Número)

## Solução de Problemas

<AccordionGroup>
  <Accordion title="Subscribers not being added">
    * Verifique se a chave de API está correta e ativa
    * Confirme se o endereço de e-mail é válido (compatível com RFC 2821)
    * Certifique-se de que os IDs dos grupos estão corretos e existem na sua conta
    * Observação: assinantes cancelados, com bounce ou marcados como spam não podem ser reativados via API
  </Accordion>

  <Accordion title="Custom fields not updating">
    * Verifique se os campos personalizados existem no MailerLite antes de usá-los
    * Confira se os nomes dos campos correspondem exatamente (sensível a maiúsculas/minúsculas)
    * Garanta que os valores dos campos correspondam ao tipo esperado (texto, número, data)
  </Accordion>

  <Accordion title="Rate limit errors">
    * A API do MailerLite possui um limite de 120 requisições por minuto
    * Use endpoints em lote se estiver processando muitos assinantes
    * Implemente estratégias de backoff para cenários de alto volume
  </Accordion>

  <Accordion title="Group assignment not working">
    * Verifique se os IDs dos grupos são strings numéricas
    * Confirme se os grupos existem em sua conta do MailerLite
    * Observação: usar PUT com grupos removerá o assinante de grupos não listados
  </Accordion>
</AccordionGroup>

## Referência da API

A API de Assinantes do MailerLite aceita os seguintes parâmetros principais:

| Parâmetro          | Tipo   | Obrigatório | Descrição                                                          |
| ------------------ | ------ | ----------- | ------------------------------------------------------------------ |
| `email`            | string | Sim         | Endereço de e-mail válido (RFC 2821)                               |
| `fields`           | object | Não         | Objeto com pares nome/valor de campo                               |
| `fields.name`      | string | Não         | Primeira nome do assinante                                         |
| `fields.last_name` | string | Não         | Sobrenome do assinante                                             |
| `fields.company`   | string | Não         | Nome da empresa                                                    |
| `fields.country`   | string | Não         | País                                                               |
| `fields.city`      | string | Não         | Cidade                                                             |
| `fields.phone`     | string | Não         | Número de telefone                                                 |
| `groups`           | array  | Não         | Array de IDs de grupo para adicionar o assinante                   |
| `status`           | string | Não         | Um dos seguintes: active, unsubscribed, unconfirmed, bounced, junk |
| `subscribed_at`    | string | Não         | Data no formato `yyyy-MM-dd HH:mm:ss`                              |
| `ip_address`       | string | Não         | Endereço IP do assinante                                           |

Para documentação completa da API, visite [Desenvolvedores do MailerLite](https://developers.mailerlite.com/docs/subscribers.html).
