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

> Tự động thêm khách hàng vào danh sách người đăng ký MailerLite và kích hoạt tự động hóa email dựa trên các sự kiện Dodo Payments.

## Giới thiệu

Tự động đồng bộ khách hàng đang thanh toán của bạn vào danh sách người đăng ký MailerLite khi các sự kiện thanh toán xảy ra. Thêm khách hàng vào các nhóm cụ thể, kích hoạt quy trình tự động hóa và giữ cho danh sách tiếp thị email của bạn luôn cập nhật với dữ liệu thanh toán thực.

MailerLite là một nền tảng tiếp thị email mạnh mẽ cho bản tin, chiến dịch và tự động hóa. Tích hợp này giúp bạn tự động quản lý người đăng ký dựa trên hoạt động thanh toán - hoàn hảo cho các chuỗi onboarding, phân khúc khách hàng và các chiến dịch tiếp thị nhắm mục tiêu.

<Info>
  Tích hợp này yêu cầu Khóa API MailerLite của bạn để xác thực. Bạn có thể tạo một từ [Trang tích hợp MailerLite](https://dashboard.mailerlite.com/integrations/api).
</Info>

## Bắt đầu

<Steps>
  <Step title="Open the Webhook Section">
    Trong bảng điều khiển Dodo Payments của bạn, điều hướng đến <b>Webhooks + Thêm Endpoint</b> và mở rộng trình đơn tích hợp.

    <Frame>
      <img src="https://mintcdn.com/dodopayments/j9AWnq3yJLUq3cjh/images/integrations/mailerlite.png?fit=max&auto=format&n=j9AWnq3yJLUq3cjh&q=85&s=4f247c342f82ffe529b79970fcf1a4e3" alt="Thêm Endpoint và trình đơn tích hợp" style={{ maxHeight: '500px', width: 'auto' }} width="876" height="769" data-path="images/integrations/mailerlite.png" />
    </Frame>
  </Step>

  <Step title="Select MailerLite">
    Chọn thẻ tích hợp <b>MailerLite</b>.
  </Step>

  <Step title="Enter API Key">
    Cung cấp Khóa API MailerLite của bạn trong cấu hình.
  </Step>

  <Step title="Configure Transformation">
    Chỉnh sửa mã chuyển đổi để định dạng dữ liệu người đăng ký cho API của MailerLite.
  </Step>

  <Step title="Test & Create">
    Kiểm tra với mẫu payload và nhấp <b>Create</b> để kích hoạt đồng bộ người đăng ký.
  </Step>

  <Step title="Done!">
    Các sự kiện thanh toán bây giờ sẽ tự động đồng bộ khách hàng vào danh sách MailerLite của bạn.
  </Step>
</Steps>

## Ví dụ Mã Biến đổi

### Thêm Khách hàng khi Thanh toán Thành công

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

### Thêm Người đăng ký vào Nhiều Nhóm Dựa trên Sản phẩm

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

### Thêm Người đăng ký Mới khi Kích hoạt Đăng ký

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

### Cập nhật Người đăng ký khi Hủy Đăng ký

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

### Thêm Khách hàng với Các Trường Tùy chỉnh

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

### Kích hoạt Tự động hóa qua Sự kiện

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

## Mẹo

* Tạo các trường tùy chỉnh trong MailerLite trước khi sử dụng chúng trong các biến đổi của bạn
* Sử dụng các nhóm để phân khúc khách hàng theo sản phẩm, cấp độ kế hoạch hoặc hành vi mua hàng
* Thiết lập các quy trình tự động hóa trong MailerLite mà kích hoạt khi có cập nhật trường
* Sử dụng hành vi upsert (POST đến /subscribers) để tránh lỗi người đăng ký trùng lặp
* Lưu trữ siêu dữ liệu thanh toán trong các trường tùy chỉnh để có cái nhìn tốt hơn về khách hàng
* Kiểm tra với một nhóm nhỏ trước khi kích hoạt cho tất cả các thanh toán

## Thiết lập Trường Tùy chỉnh

Trước khi sử dụng các trường tùy chỉnh, bạn cần tạo chúng trong MailerLite:

1. Đi đến bảng điều khiển MailerLite của bạn
2. Đi tới **Trường Người đăng ký**
3. Nhấp **Tạo trường** và thêm các trường như:
   * `total_spent` (Number)
   * `customer_since` (Date)
   * `subscription_plan` (Text)
   * `payment_method` (Text)
   * `last_payment_amount` (Number)

## Khắc phục sự cố

<AccordionGroup>
  <Accordion title="Subscribers not being added">
    * Xác minh Khóa API là chính xác và đang hoạt động
    * Kiểm tra rằng địa chỉ email hợp lệ (tuân thủ RFC 2821)
    * Đảm bảo ID nhóm chính xác và tồn tại trong tài khoản của bạn
    * Lưu ý: Người đăng ký đã hủy, bị trả lại, hoặc bị cho là rác không thể được kích hoạt lại qua API
  </Accordion>

  <Accordion title="Custom fields not updating">
    * Xác minh trường tùy chỉnh tồn tại trong MailerLite trước khi sử dụng
    * Kiểm tra tên trường khớp chính xác (phân biệt chữ hoa chữ thường)
    * Đảm bảo giá trị trường khớp loại mong đợi (văn bản, số, ngày tháng)
  </Accordion>

  <Accordion title="Rate limit errors">
    * API MailerLite có giới hạn 120 yêu cầu mỗi phút
    * Sử dụng điểm cuối hàng loạt nếu xử lý nhiều người đăng ký
    * Triển khai chiến lược giảm tần suất cho các tình huống khối lượng lớn
  </Accordion>

  <Accordion title="Group assignment not working">
    * Xác minh ID nhóm là chuỗi số
    * Kiểm tra nhóm tồn tại trong tài khoản MailerLite của bạn
    * Lưu ý: Sử dụng PUT với nhóm sẽ loại bỏ người đăng ký khỏi các nhóm không được liệt kê
  </Accordion>
</AccordionGroup>

## Tài liệu API

API Người đăng ký MailerLite chấp nhận các tham số khóa sau:

| Tham số            | Loại   | Bắt buộc | Mô tả                                                                   |
| ------------------ | ------ | -------- | ----------------------------------------------------------------------- |
| `email`            | string | Yes      | Địa chỉ email hợp lệ (RFC 2821)                                         |
| `fields`           | object | No       | Đối tượng với cặp tên/giá trị trường                                    |
| `fields.name`      | string | No       | Tên riêng của người đăng ký                                             |
| `fields.last_name` | string | No       | Họ của người đăng ký                                                    |
| `fields.company`   | string | No       | Tên công ty                                                             |
| `fields.country`   | string | No       | Quốc gia                                                                |
| `fields.city`      | string | No       | Thành phố                                                               |
| `fields.phone`     | string | No       | Số điện thoại                                                           |
| `groups`           | array  | No       | Mảng ID nhóm để thêm người đăng ký vào                                  |
| `status`           | string | No       | Một trong các giá trị: active, unsubscribed, unconfirmed, bounced, junk |
| `subscribed_at`    | string | No       | Ngày theo định dạng `yyyy-MM-dd HH:mm:ss`                               |
| `ip_address`       | string | No       | Địa chỉ IP của người đăng ký                                            |

Để biết tài liệu API đầy đủ, hãy truy cập [Nhà phát triển MailerLite](https://developers.mailerlite.com/docs/subscribers.html).
