Chiến dịch, automation và báo cáo

Đọc chiến dịch gửi tin, automation (flow), chuỗi tin chăm sóc và báo cáo của chúng; báo cáo giao dịch theo Space; tình trạng gửi email và Zalo ZNS; lịch sử credit và nhật ký hoạt động. Mọi API trong nhóm này chỉ đọc.

Mọi API trong trang gọi bằng POST https://api.ladipage.net/2.0/api/{tên-api} với header api-key. Xem Xác thực và Mã lỗi.

APIViệc làmLoại
lw-list-campaignsLiệt kê chiến dịch gửi tinĐọc
lw-get-campaign-limitXem hạn mức gửi chiến dịch trong ngàyĐọc
lw-list-flowsLiệt kê flow tự độngĐọc
lw-list-sequencesLiệt kê chuỗi tin tự độngĐọc
lw-list-sequence-messagesLiệt kê tin trong chuỗi tinĐọc
lw-get-email-healthXem email bị trả lại và báo spamĐọc
lw-get-zalo-zns-statusXem tình trạng Zalo ZNSĐọc
lw-report-campaignBáo cáo tổng quan chiến dịchĐọc
lw-report-campaign-customersLiệt kê khách hàng của chiến dịch theo trạng tháiĐọc
lw-report-flowBáo cáo tổng quan flowĐọc
lw-report-flow-customersLiệt kê khách hàng theo bước của flowĐọc
lw-report-flow-stepBáo cáo chi tiết một bước của flowĐọc
lw-report-sequenceBáo cáo tổng quan chuỗi tinĐọc
lw-report-sequence-customersLiệt kê khách hàng đăng ký chuỗi tinĐọc
lw-report-sequence-messageBáo cáo chi tiết một tin trong chuỗi tinĐọc
lw-report-dealsBáo cáo giá trị Space bán hàng theo giai đoạnĐọc
lw-report-deal-notesTổng hợp ghi chú trên thẻĐọc
lw-report-lost-reasonsThống kê lý do thất bạiĐọc
lw-report-pipeline-complianceBáo cáo tuân thủ quy trình bán hàngĐọc
lw-list-activity-logsXem nhật ký hoạt độngĐọc
lw-list-credit-topupsXem lịch sử nạp điểm và tiềnĐọc
lw-list-credit-transactionsXem giao dịch chi tiêu creditĐọc

Quy ước chung

  • store_id là tham số chung của mọi API lw-*: giá trị store_id lấy từ account-list-workspaces. Tài khoản chỉ có một workspace thì bỏ trống được; từ hai workspace trở lên mà thiếu store_id thì API trả lỗi kèm danh sách workspace hợp lệ (tên + mã). Truyền mã không thuộc tài khoản cũng bị từ chối.
  • Mọi kết quả thành công có thêm trường store_context gồm store_id, store_name (tên workspace) và you (tên người cầm token).
  • Email và số điện thoại trong kết quả (các trường email, phone, phone_2) bị che một phần, ví dụ ma***@gmail.com, 0912***678. Đầu vào không bị ảnh hưởng: tìm theo email/số điện thoại đầy đủ vẫn chạy bình thường. Trường tuỳ chỉnh có nhãn nhạy cảm (OTP, mật khẩu, CCCD/CMND, số thẻ, token...) bị thay bằng [đã ẩn].
  • Token của nhân viên chỉ thấy dữ liệu trong quyền của họ: không có quyền xem khách hàng thì bị từ chối; không có quyền xem tất cả khách thì chỉ thấy khách mình phụ trách hoặc theo dõi. API về giao dịch, công việc, tổ chức còn yêu cầu nhân viên đã được thêm vào LadiWork của workspace.
  • Thời gian trả về theo múi giờ của workspace (mặc định +07:00), dạng ISO 8601 có offset.
  • Lỗi nghiệp vụ trả HTTP 400, message là câu mô tả lỗi bằng tiếng Việt.

Liệt kê chiến dịch gửi tin Đọc

POST/2.0/api/lw-list-campaigns

Liệt kê hoặc tìm chiến dịch gửi tin (campaign) của workspace, kèm trạng thái và chỉ số gửi, nhận, đọc, click. Dùng để lấy campaign_id cho lw-report-campaign và lw-report-campaign-customers.

Tham số

Tham sốKiểuMô tả
store_idstringID workspace cần làm việc, lấy từ account-list-workspaces. Bắt buộc khi tài khoản có từ hai workspace trở lên; chỉ có một workspace thì bỏ trống.
keywordstringTìm theo tên chiến dịch, khớp một phần, không phân biệt hoa thường. Bỏ trống = tất cả, chiến dịch cập nhật gần nhất trước.
statusstringLọc theo trạng thái. RUNNING gộp các chiến dịch đang gửi hoặc đang chờ xử lý; SCHEDULE gồm mọi chiến dịch đã đặt lịch; READY gồm mọi chiến dịch sẵn sàng; giá trị khác so khớp đúng mã. Bỏ trống = tất cả.Giá trị: DRAFT, SCHEDULE, READY, RUNNING, DONE, FINISHED, STOP, ERROR
pagenumberSố trang.Mặc định: 1
limitnumberSố chiến dịch mỗi trang, tối đa 50.Mặc định: 20

Ví dụ

cURL
curl -X POST https://api.ladipage.net/2.0/api/lw-list-campaigns \
  -H "api-key: $LADIPAGE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "keyword": "Khuyến mãi tháng 11",
  "status": "DONE",
  "page": 1,
  "limit": 20
}'

Kết quả

Phản hồi mẫu · JSON
{
  "code": 200,
  "message": "Success",
  "data": {
    "total": 2,
    "page": 1,
    "limit": 20,
    "keyword": "Khuyến mãi tháng 11",
    "count": 2,
    "is_empty": false,
    "items": [
      {
        "id": "6718a3f2c4e5b20012ab34cd",
        "name": "Khuyến mãi tháng 11 - Email",
        "type": "EMAIL",
        "type_label": "Email",
        "status": "DONE",
        "status_label": "Hoàn thành",
        "total_customer": 1250,
        "total_customer_valid": 1198,
        "total_send": 1198,
        "total_delivery": 1172,
        "total_read": 486,
        "total_click": 93,
        "tags": ["khuyen-mai", "thang-11"],
        "start_date": "2026-10-25T08:00:00+07:00",
        "completed_date": "2026-10-25T08:42:00+07:00",
        "created_at": "2026-10-22T10:05:00+07:00",
        "updated_at": "2026-10-25T08:42:00+07:00",
        "detail_url": "https://work.ladipage.com/campaigns/6718a3f2c4e5b20012ab34cd"
      },
      {
        "id": "6718a3f2c4e5b20012ab34ce",
        "name": "Khuyến mãi tháng 11 - SMS",
        "type": "SMS",
        "type_label": "SMS",
        "status": "DONE",
        "status_label": "Hoàn thành",
        "total_customer": 800,
        "total_customer_valid": 782,
        "total_send": 782,
        "total_delivery": 770,
        "total_read": 0,
        "total_click": 41,
        "tags": ["khuyen-mai"],
        "start_date": "2026-10-26T09:00:00+07:00",
        "completed_date": "2026-10-26T09:20:00+07:00",
        "created_at": "2026-10-23T15:40:00+07:00",
        "updated_at": "2026-10-26T09:20:00+07:00",
        "detail_url": "https://work.ladipage.com/campaigns/6718a3f2c4e5b20012ab34ce"
      }
    ]
  }
}

is_empty = true khi workspace chưa có chiến dịch nào. type: MESSENGER | EMAIL | SMS | START_FLOW. total_customer là số khách trong tệp gửi, total_customer_valid là số khách hợp lệ.

Lưu ý

  • Sắp xếp theo thời điểm cập nhật, mới nhất trước.
  • Trường status trong kết quả là mã gốc, có thể là mã trung gian không dùng để lọc được (STARTED, DONE_SC, PENDING_QUEUE, RESUME, SCHEDULE_SCAN, READY_SCAN); dùng status_label để hiển thị.
  • Nhãn trạng thái và loại kênh theo ngôn ngữ của workspace (vi hoặc en).
  • Thành viên không phải chủ hoặc quản lý workspace chỉ thấy chiến dịch công khai, được chia sẻ cho mình hoặc nhóm của mình.

Xem hạn mức gửi chiến dịch trong ngày Đọc

POST/2.0/api/lw-get-campaign-limit

Xem số tin chiến dịch tối đa được gửi, đã gửi và còn lại trong cửa sổ 24 giờ hiện tại của workspace. Dùng trước khi chạy chiến dịch lớn để biết còn đủ hạn mức hay không.

Tham số

Tham sốKiểuMô tả
store_idstringID workspace cần làm việc, lấy từ account-list-workspaces. Bắt buộc khi tài khoản có từ hai workspace trở lên; chỉ có một workspace thì bỏ trống.

Ví dụ

cURL
curl -X POST https://api.ladipage.net/2.0/api/lw-get-campaign-limit \
  -H "api-key: $LADIPAGE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'

Kết quả

Phản hồi mẫu · JSON
{
  "code": 200,
  "message": "Success",
  "data": {
    "has_data": true,
    "window_hours": 24,
    "max_messages": 20000,
    "sent_messages": 3450,
    "remaining_messages": 16550,
    "remaining_percent": 82.75,
    "window_reset_at": "2026-10-30T09:15:00+07:00"
  }
}

window_hours luôn bằng 24. remaining_percent từ 0–100, làm tròn 2 chữ số. window_reset_at là thời điểm cửa sổ 24 giờ kết thúc, null khi chưa gửi tin nào.

Lưu ý

  • has_data = false nghĩa là chưa gửi tin nào trong cửa sổ hiện tại: còn 100%, max_messages là mức mặc định 20.000.
  • Thành viên vai trò Người xem (VIEWER) không gọi được API này.

Liệt kê flow tự động Đọc

POST/2.0/api/lw-list-flows

Liệt kê hoặc tìm flow tự động (automation) của workspace. Dùng để lấy flow_id cho lw-report-flow, lw-report-flow-step và lw-report-flow-customers.

Tham số

Tham sốKiểuMô tả
store_idstringID workspace cần làm việc, lấy từ account-list-workspaces. Bắt buộc khi tài khoản có từ hai workspace trở lên; chỉ có một workspace thì bỏ trống.
keywordstringTìm theo tên flow, khớp một phần, không phân biệt hoa thường và dấu tiếng Việt. Bỏ trống = tất cả, flow cập nhật gần nhất trước.
statusstringLọc theo trạng thái: DRAF (nháp, viết đúng là DRAF), RUNNING (đang chạy), PUBLISHED (đã xuất bản). Bỏ trống = tất cả.Giá trị: DRAF, RUNNING, PUBLISHED
pagenumberSố trang.Mặc định: 1
limitnumberSố flow mỗi trang, tối đa 50.Mặc định: 20

Ví dụ

cURL
curl -X POST https://api.ladipage.net/2.0/api/lw-list-flows \
  -H "api-key: $LADIPAGE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "keyword": "chăm sóc sau mua",
  "status": "PUBLISHED"
}'

Kết quả

Phản hồi mẫu · JSON
{
  "code": 200,
  "message": "Success",
  "data": {
    "total": 1,
    "page": 1,
    "limit": 20,
    "keyword": "chào mừng",
    "count": 1,
    "is_empty": false,
    "items": [
      {
        "id": "6712b8e1a9d4c30015f0e7a2",
        "name": "Flow chào mừng khách mới",
        "status": "PUBLISHED",
        "status_label": "Đã xuất bản",
        "total_subscribe": 2384,
        "flow_config_count": 5,
        "trigger_types": ["FORM_SUBMIT", "TAG_ADDED"],
        "trigger_type_labels": ["Gửi form", "Gắn thẻ"],
        "tags": ["onboarding"],
        "is_default": false,
        "created_at": "2026-10-03T11:20:00+07:00",
        "updated_at": "2026-10-27T09:15:00+07:00",
        "detail_url": "https://work.ladipage.com/flows/6712b8e1a9d4c30015f0e7a2"
      }
    ]
  }
}

is_empty = true khi workspace chưa có flow nào. total_subscribe là tổng lượt khách vào flow, flow_config_count là số bước, trigger_types là các loại sự kiện kích hoạt.

Lưu ý

  • Không gồm flow nội bộ của chiến dịch và chuỗi tin.
  • Sắp xếp theo thời điểm cập nhật, mới nhất trước.
  • Thành viên không phải chủ hoặc quản lý workspace chỉ thấy flow công khai, được chia sẻ cho mình hoặc nhóm của mình.

Liệt kê chuỗi tin tự động Đọc

POST/2.0/api/lw-list-sequences

Liệt kê hoặc tìm chuỗi tin tự động (sequence) của workspace, kèm số tin, lượt đăng ký và lượt hoàn tất. Dùng để lấy sequence_id cho các API báo cáo chuỗi tin.

Tham số

Tham sốKiểuMô tả
store_idstringID workspace cần làm việc, lấy từ account-list-workspaces. Bắt buộc khi tài khoản có từ hai workspace trở lên; chỉ có một workspace thì bỏ trống.
keywordstringTìm theo tên chuỗi tin, khớp một phần, không phân biệt hoa thường và dấu tiếng Việt. Bỏ trống = tất cả.
pagenumberSố trang.Mặc định: 1
limitnumberSố chuỗi tin mỗi trang, tối đa 50.Mặc định: 20

Ví dụ

cURL
curl -X POST https://api.ladipage.net/2.0/api/lw-list-sequences \
  -H "api-key: $LADIPAGE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "keyword": "Onboarding khách mới"
}'

Kết quả

Phản hồi mẫu · JSON
{
  "code": 200,
  "message": "Success",
  "data": {
    "total": 1,
    "page": 1,
    "limit": 20,
    "keyword": "",
    "count": 1,
    "is_empty": false,
    "field_labels": {
      "name": "Tên chuỗi tin",
      "total_message": "Số tin",
      "total_subscribe": "Lượt đăng ký",
      "total_complete": "Lượt hoàn tất",
      "open_rate": "Tỉ lệ mở",
      "ctr": "Tỉ lệ click"
    },
    "items": [
      {
        "id": "6713c4d2b7e8f10019a2c5b3",
        "name": "Chuỗi nuôi dưỡng khách dùng thử",
        "total_message": 4,
        "total_subscribe": 962,
        "total_complete": 418,
        "open_rate": 38.5,
        "ctr": 6.2,
        "tags": ["trial"],
        "created_at": "2026-10-05T09:00:00+07:00",
        "updated_at": "2026-10-28T14:30:00+07:00",
        "detail_url": "https://work.ladipage.com/sequences/6713c4d2b7e8f10019a2c5b3"
      }
    ]
  }
}

field_labels là nhãn tiếng Việt của từng trường. total_message là số tin trong chuỗi, total_subscribe là lượt đăng ký, total_complete là lượt hoàn tất.

Lưu ý

  • Sắp xếp theo thời điểm cập nhật, mới nhất trước.
  • Thành viên không phải chủ hoặc quản lý workspace chỉ thấy chuỗi tin công khai, được chia sẻ cho mình hoặc nhóm của mình.

Liệt kê tin trong chuỗi tin Đọc

POST/2.0/api/lw-list-sequence-messages

Liệt kê các tin (bước) của một chuỗi tin kèm số gửi, nhận, đọc, click và đang chờ gửi. Dùng để lấy flow_id của từng tin cho lw-report-sequence-message.

Tham số

Tham sốKiểuMô tả
store_idstringID workspace cần làm việc, lấy từ account-list-workspaces. Bắt buộc khi tài khoản có từ hai workspace trở lên; chỉ có một workspace thì bỏ trống.
sequence_idbắt buộcstringID chuỗi tin, lấy từ lw-list-sequences.

Ví dụ

cURL
curl -X POST https://api.ladipage.net/2.0/api/lw-list-sequence-messages \
  -H "api-key: $LADIPAGE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "sequence_id": "6650f1c2a9b3e4d5f6a7b8c9"
}'

Kết quả

Phản hồi mẫu · JSON
{
  "code": 200,
  "message": "Success",
  "data": {
    "sequence_id": "6713c4d2b7e8f10019a2c5b3",
    "count": 2,
    "field_labels": {
      "name": "Tên tin",
      "total_send": "Đã gửi",
      "total_delivery": "Đã nhận",
      "total_read": "Đã đọc",
      "total_click": "Đã click",
      "total_waiting": "Đang chờ gửi"
    },
    "items": [
      {
        "id": "6713c5a1b7e8f10019a2c5c1",
        "name": "Tin 1 - Chào mừng dùng thử",
        "flow_id": "6713c5a1b7e8f10019a2c5c0",
        "total_send": 962,
        "total_delivery": 945,
        "total_read": 512,
        "total_click": 88,
        "total_waiting": 0,
        "created_at": "2026-10-05T09:10:00+07:00",
        "updated_at": "2026-10-28T14:30:00+07:00"
      },
      {
        "id": "6713c5b8b7e8f10019a2c5d4",
        "name": "Tin 2 - Hướng dẫn tạo trang đầu tiên",
        "flow_id": "6713c5b8b7e8f10019a2c5d3",
        "total_send": 874,
        "total_delivery": 861,
        "total_read": 402,
        "total_click": 71,
        "total_waiting": 36,
        "created_at": "2026-10-05T09:25:00+07:00",
        "updated_at": "2026-10-28T14:30:00+07:00"
      }
    ]
  }
}

items[] xếp theo thứ tự tạo, tin đầu tiên trước. flow_id dùng cho lw-report-sequence-message; total_waiting là số tin đang chờ gửi.

Lưu ý

  • Không phân trang: trả toàn bộ tin của chuỗi.
  • Số liệu từng tin là bản đã lưu gần nhất; hệ thống làm mới ở nền sau mỗi lần gọi nên lần gọi sau có thể có số mới hơn.
  • Trả lỗi khi chuỗi tin không tồn tại hoặc đã bị xoá.

Xem email bị trả lại và báo spam Đọc

POST/2.0/api/lw-get-email-health

Xem các địa chỉ email bị trả lại (Bounce) hoặc bị khách báo spam (Complaint) khi gửi từ workspace, kèm tổng số mỗi loại. Dùng để theo dõi chất lượng danh sách email.

Tham số

Tham sốKiểuMô tả
store_idstringID workspace cần làm việc, lấy từ account-list-workspaces. Bắt buộc khi tài khoản có từ hai workspace trở lên; chỉ có một workspace thì bỏ trống.
keywordstringLọc theo địa chỉ email, khớp một phần, không phân biệt hoa thường. Giá trị được hiểu như biểu thức chính quy nên các ký tự . + ? * có nghĩa đặc biệt. Bỏ trống = tất cả.
eventstringLọc theo loại sự kiện, phân biệt hoa thường: Bounce (gửi trả lại) | Complaint (báo spam). Bỏ trống = tất cả.Giá trị: Bounce, Complaint
pagenumberSố trang.Mặc định: 1
limitnumberSố bản ghi mỗi trang, tối đa 50.Mặc định: 20

Ví dụ

cURL
curl -X POST https://api.ladipage.net/2.0/api/lw-get-email-health \
  -H "api-key: $LADIPAGE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "event": "Bounce",
  "limit": 50
}'

Kết quả

Phản hồi mẫu · JSON
{
  "code": 200,
  "message": "Success",
  "data": {
    "total": 2,
    "total_bounce": 14,
    "total_complaint": 3,
    "page": 1,
    "limit": 20,
    "keyword": "",
    "event": "",
    "count": 2,
    "items": [
      {
        "email": "an***@gmail.com",
        "event": "Bounce",
        "event_label": "Gửi trả lại",
        "num": 2,
        "created_at": "2026-10-28T14:30:00+07:00"
      },
      {
        "email": "lin***@yahoo.com",
        "event": "Complaint",
        "event_label": "Báo spam",
        "num": 1,
        "created_at": "2026-10-27T09:15:00+07:00"
      }
    ]
  }
}

total tính theo bộ lọc. num là số lần ghi nhận sự kiện với email đó.

Lưu ý

  • total_bounce và total_complaint tính theo keyword nhưng không theo event.
  • Địa chỉ email trong kết quả đã được che một phần (ví dụ ab***@gmail.com). Lọc bằng keyword vẫn dùng được địa chỉ đầy đủ.
  • Sắp xếp theo thời điểm ghi nhận, mới nhất trước.
  • Thành viên vai trò Người xem (VIEWER) không gọi được API này.

Xem tình trạng Zalo ZNS Đọc

POST/2.0/api/lw-get-zalo-zns-status

Không truyền integration_id: liệt kê các Zalo OA đã kết nối. Truyền integration_id: xem hạn mức gửi ZNS trong ngày, hạn mức miễn phí, chất lượng OA và loại nội dung được phép gửi.

Tham số

Tham sốKiểuMô tả
store_idstringID workspace cần làm việc, lấy từ account-list-workspaces. Bắt buộc khi tài khoản có từ hai workspace trở lên; chỉ có một workspace thì bỏ trống.
integration_idstringID của Zalo OA cần xem chi tiết, lấy từ integrations[].id của chính API này khi gọi không có tham số. Bỏ trống = liệt kê OA.

Ví dụ

cURL
curl -X POST https://api.ladipage.net/2.0/api/lw-get-zalo-zns-status \
  -H "api-key: $LADIPAGE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "integration_id": "6650f1c2a9b3e4d5f6a7b8d0"
}'

Kết quả

Phản hồi mẫu · JSON
{
  "code": 200,
  "message": "Success",
  "data": {
    "mode": "list",
    "count": 1,
    "is_empty": false,
    "integrations": [
      {
        "id": "6710a2c3d4e5f60017b8c9d0",
        "name": "Zalo OA LadiPage",
        "oa_name": "LadiPage Việt Nam",
        "is_active": true,
        "free_send_expired_at": "2026-12-31T23:59:59+07:00",
        "created_at": "2026-10-01T10:00:00+07:00"
      }
    ]
  }
}

Ví dụ trên là chế độ liệt kê (gọi không có integration_id); free_send_expired_at là hạn gửi miễn phí. Chế độ chi tiết (có integration_id) trả về:

Phản hồi mẫu · JSON
{
  "code": 200,
  "message": "Success",
  "data": {
    "mode": "detail",
    "integration_id": "6710a2c3d4e5f60017b8c9d0",
    "daily_quota": 2000,
    "remaining_quota": 1735,
    "total_sent": 265,
    "free_send_expired_at": "2026-12-31T23:59:59+07:00",
    "daily_quota_promotion": 500,
    "remaining_quota_promotion": 480,
    "current_quality": "HIGH",
    "current_quality_label": "Cao",
    "quality_7day": "MEDIUM",
    "quality_7day_label": "Trung bình",
    "allowed_content_types": ["TRANSACTION", "CUSTOMER_CARE"],
    "allowed_content_type_labels": ["Giao dịch", "Chăm sóc khách hàng"]
  }
}

current_quality và quality_7day: HIGH | MEDIUM | LOW, null khi chưa xác định. allowed_content_types: TRANSACTION | CUSTOMER_CARE | PROMOTION.

Lưu ý

  • Chế độ liệt kê trả tối đa 100 OA.
  • Chế độ chi tiết lấy số liệu trực tiếp từ Zalo; nếu kết nối OA đã hết hạn, API trả lỗi và cần kết nối lại OA trong LadiWork.
  • Thành viên vai trò Người xem (VIEWER) không gọi được API này, kể cả chế độ liệt kê.

Báo cáo tổng quan chiến dịch Đọc

POST/2.0/api/lw-report-campaign

Báo cáo phễu gửi, nhận, đọc, click của một chiến dịch gửi tin cùng tỉ lệ và số hủy nhận, trả lại, báo spam. Chỉ báo cáo từng chiến dịch, không gộp nhiều chiến dịch.

Tham số

Tham sốKiểuMô tả
store_idstringID workspace cần làm việc, lấy từ account-list-workspaces. Bắt buộc khi tài khoản có từ hai workspace trở lên; chỉ có một workspace thì bỏ trống.
campaign_idbắt buộcstringID chiến dịch, lấy từ lw-list-campaigns.
from_datestringTừ ngày (ISO 8601). Hiện được nhận và trả lại nguyên giá trị nhưng không làm thay đổi số liệu: báo cáo luôn tính từ ngày tạo chiến dịch tới hiện tại.
to_datestringĐến ngày (ISO 8601). Như from_date: hiện không làm thay đổi số liệu.

Ví dụ

cURL
curl -X POST https://api.ladipage.net/2.0/api/lw-report-campaign \
  -H "api-key: $LADIPAGE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "campaign_id": "6650f1c2a9b3e4d5f6a7b8c9"
}'

Kết quả

Phản hồi mẫu · JSON
{
  "code": 200,
  "message": "Success",
  "data": {
    "campaign_id": "6718a3f2c4e5b20012ab34cd",
    "from_date": "2026-10-01T00:00:00+07:00",
    "to_date": "2026-10-31T23:59:59+07:00",
    "detail_url": "https://work.ladipage.com/campaigns/6718a3f2c4e5b20012ab34cd",
    "field_labels": {
      "total_send": "Đã gửi",
      "total_delivery": "Đã nhận",
      "total_read": "Đã đọc",
      "total_click": "Đã click",
      "total_unsubscribe_mail": "Hủy nhận mail",
      "total_bounce": "Bị trả lại",
      "total_complaint": "Báo spam",
      "delivery_rate": "Tỉ lệ nhận",
      "read_rate": "Tỉ lệ đọc",
      "click_rate": "Tỉ lệ click"
    },
    "overview": {
      "total_send": 1198,
      "total_delivery": 1172,
      "total_read": 486,
      "total_click": 93,
      "total_unsubscribe_mail": 7,
      "total_bounce": 26,
      "total_complaint": 2,
      "delivery_rate": 97.83,
      "read_rate": 41.47,
      "click_rate": 7.94
    }
  }
}

delivery_rate = nhận / gửi, read_rate = đọc / nhận, click_rate = click / nhận, đơn vị %. total_unsubscribe_mail là số hủy nhận mail, total_bounce là số bị trả lại, total_complaint là số báo spam.

Lưu ý

  • Số liệu là của tin chính (bước đầu tiên) của chiến dịch, tính từ ngày tạo chiến dịch tới thời điểm gọi.
  • Tỉ lệ làm tròn 2 chữ số thập phân; mẫu số bằng 0 thì tỉ lệ = 0.
  • Chiến dịch chưa gắn nội dung gửi thì mọi chỉ số bằng 0.

Liệt kê khách hàng của chiến dịch theo trạng thái Đọc

POST/2.0/api/lw-report-campaign-customers

Liệt kê khách hàng của một chiến dịch theo trạng thái tương tác (đã gửi, nhận, đọc, click, lỗi...) kèm tổng số theo từng trạng thái. Dùng để xuất danh sách khách đã mở hoặc gửi lỗi.

Tham số

Tham sốKiểuMô tả
store_idstringID workspace cần làm việc, lấy từ account-list-workspaces. Bắt buộc khi tài khoản có từ hai workspace trở lên; chỉ có một workspace thì bỏ trống.
campaign_idbắt buộcstringID chiến dịch, lấy từ lw-list-campaigns.
flow_config_idstringID một bước cụ thể của chiến dịch. Bỏ trống = tin chính (bước đầu tiên) của chiến dịch.
statusstringTrạng thái tương tác: SEND (đã gửi), DELIVERY (đã nhận), READ (đã đọc), CLICK (đã click), BOUNCE (bị trả lại), COMPLAINT (báo spam), PROCESSING (đang xử lý), ERROR (lỗi gửi), WAITING (đang chờ gửi). Giá trị không hợp lệ được coi là SEND.Giá trị: SEND, DELIVERY, READ, CLICK, BOUNCE, COMPLAINT, PROCESSING, ERROR, WAITINGMặc định: SEND
namestringLọc theo tên khách hàng, khớp một phần, không phân biệt hoa thường và dấu tiếng Việt.
from_datestringTừ thời điểm (ISO 8601), lọc theo thời điểm tương tác của khách. Bỏ trống cả hai mốc = toàn bộ thời gian. Giá trị được so đúng thời điểm: nên truyền kèm giờ và múi giờ, ví dụ 2026-10-01T00:00:00+07:00.
to_datestringĐến thời điểm (ISO 8601). Ngày không kèm giờ được hiểu là 00:00 UTC của ngày đó; để lấy trọn ngày cuối, truyền ví dụ 2026-10-31T23:59:59+07:00.
pagenumberSố trang.Mặc định: 1
limitnumberSố khách mỗi trang, tối đa 50.Mặc định: 20

Ví dụ

cURL
curl -X POST https://api.ladipage.net/2.0/api/lw-report-campaign-customers \
  -H "api-key: $LADIPAGE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "campaign_id": "6650f1c2a9b3e4d5f6a7b8c9",
  "status": "READ",
  "page": 1,
  "limit": 50
}'

Kết quả

Phản hồi mẫu · JSON
{
  "code": 200,
  "message": "Success",
  "data": {
    "campaign_id": "6718a3f2c4e5b20012ab34cd",
    "flow_config_id": "6718a3f2c4e5b20012ab34d0",
    "status": "READ",
    "status_label": "Đã đọc",
    "detail_url": "https://work.ladipage.com/campaigns/6718a3f2c4e5b20012ab34cd",
    "page": 1,
    "limit": 20,
    "total": 486,
    "count": 2,
    "summary": {
      "send": 1198,
      "delivery": 1172,
      "read": 486,
      "click": 93,
      "bounce": 26,
      "complaint": 2,
      "processing": 0,
      "error": 0,
      "waiting": 0
    },
    "summary_labels": {
      "send": "Đã gửi",
      "delivery": "Đã nhận",
      "read": "Đã đọc",
      "click": "Đã click",
      "bounce": "Bị trả lại",
      "complaint": "Báo spam",
      "processing": "Đang xử lý",
      "error": "Lỗi gửi",
      "waiting": "Đang chờ gửi"
    },
    "field_labels": {
      "name": "Tên khách hàng",
      "email": "Email",
      "phone": "Số điện thoại",
      "total_action": "Số lượt",
      "report_date": "Ngày ghi nhận",
      "last_time_action": "Lần tương tác gần nhất"
    },
    "items": [
      {
        "id": "6701d2e3f4a5b60011c7d8e9",
        "name": "Nguyễn Văn An",
        "email": "an***@gmail.com",
        "phone": "******5678",
        "total_action": 2,
        "report_date": "2026-10-25",
        "last_time_action": "2026-10-25T10:12:00+07:00",
        "error_message": null,
        "ai_call_duration": null,
        "detail_url": "https://work.ladipage.com/customers/6701d2e3f4a5b60011c7d8e9"
      },
      {
        "id": "6701d2e3f4a5b60011c7d8ea",
        "name": "Trần Thị Bình",
        "email": "bi***@example.com",
        "phone": "******4321",
        "total_action": 1,
        "report_date": "2026-10-25",
        "last_time_action": "2026-10-25T10:12:00+07:00",
        "error_message": null,
        "ai_call_duration": null,
        "detail_url": "https://work.ladipage.com/customers/6701d2e3f4a5b60011c7d8ea"
      }
    ]
  }
}

id trong items[] là mã khách hàng. total_action là số lượt theo trạng thái đang xem. error_message chỉ có giá trị khi gửi lỗi; ai_call_duration tính bằng giây, chỉ có với bước gọi AI. Email và số điện thoại đã được che một phần.

Lưu ý

  • Sắp xếp theo lần tương tác gần nhất trước.
  • Email và số điện thoại trong kết quả đã được che một phần.
  • Khách đã bị xoá có name = DELETED_CUSTOMER. Khách tạo sau thời điểm workspace vượt hạn mức số khách hàng bị ẩn tên, email, số điện thoại và id.
  • Trả lỗi khi chiến dịch không tồn tại hoặc chưa gắn nội dung gửi.

Báo cáo tổng quan flow Đọc

POST/2.0/api/lw-report-flow

Báo cáo một flow: số lượt và số khách vào flow, doanh thu, credit và chi phí đã dùng, cùng phễu gửi, nhận, đọc, click của từng bước. Mỗi bước có flow_config_id để xem chi tiết bằng lw-report-flow-step hoặc lw-report-flow-customers.

Tham số

Tham sốKiểuMô tả
store_idstringID workspace cần làm việc, lấy từ account-list-workspaces. Bắt buộc khi tài khoản có từ hai workspace trở lên; chỉ có một workspace thì bỏ trống.
flow_idbắt buộcstringID flow, lấy từ lw-list-flows. Flow phải ở trạng thái PUBLISHED.
trigger_idstringChỉ tính lượt vào flow từ một sự kiện kích hoạt (trigger) cụ thể. Bỏ trống = mọi trigger.
from_datestringTừ ngày, định dạng YYYY-MM-DD (ISO 8601). Phải đi cùng to_date. Bỏ trống cả hai = toàn bộ thời gian. Số liệu được lưu theo ngày của múi giờ workspace và cả hai mốc đều được tính.
to_datestringĐến ngày, định dạng YYYY-MM-DD (ISO 8601). Phải đi cùng from_date. from_date = to_date là báo cáo một ngày.

Ví dụ

cURL
curl -X POST https://api.ladipage.net/2.0/api/lw-report-flow \
  -H "api-key: $LADIPAGE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "flow_id": "6650f1c2a9b3e4d5f6a7b8c9",
  "from_date": "2026-10-01",
  "to_date": "2026-10-31"
}'

Kết quả

Phản hồi mẫu · JSON
{
  "code": 200,
  "message": "Success",
  "data": {
    "flow_id": "6712b8e1a9d4c30015f0e7a2",
    "name": "Flow chào mừng khách mới",
    "type": "AUTOMATION",
    "status": "PUBLISHED",
    "query_type": "RANGE_TIME",
    "from_date": "2026-10-01",
    "to_date": "2026-10-28",
    "detail_url": "https://work.ladipage.com/flows/6712b8e1a9d4c30015f0e7a2",
    "overview": {
      "total_subscribe": 2384,
      "unique_subscribe": 2210,
      "total_revenue": 45600000,
      "spend_credits": 1520,
      "spend_money": 1824000
    },
    "steps": [
      {
        "flow_config_id": "6712b9a0a9d4c30015f0e7b1",
        "name": "Gửi email chào mừng",
        "type": "EMAIL",
        "type_label": "Email",
        "ordering": 1,
        "total_send": 2384,
        "total_send_percent": 100.0,
        "total_delivery": 2331,
        "total_delivery_percent": 97.78,
        "total_read": 1104,
        "total_read_percent": 47.36,
        "total_click": 215,
        "total_click_percent": 9.22,
        "spend_credits": 0,
        "spend_money": 0,
        "total_revenue": 28400000
      },
      {
        "flow_config_id": "6712b9c4a9d4c30015f0e7b5",
        "name": "Gửi Zalo ZNS nhắc dùng thử",
        "type": "ZALO_ZNS",
        "type_label": "Zalo ZNS",
        "ordering": 2,
        "total_send": 1520,
        "total_send_percent": 63.76,
        "total_delivery": 1488,
        "total_delivery_percent": 97.89,
        "total_read": 1012,
        "total_read_percent": 68.01,
        "total_click": 134,
        "total_click_percent": 9.01,
        "spend_credits": 1520,
        "spend_money": 1824000,
        "total_revenue": 17200000
      }
    ],
    "created_at": "2026-10-03T11:20:00+07:00",
    "updated_at": "2026-10-27T09:15:00+07:00"
  }
}

query_type: ALL_TIME | DAILY | RANGE_TIME. Trong overview: total_subscribe là tổng lượt vào flow, unique_subscribe là số khách duy nhất, total_revenue là doanh thu, spend_credits là credit đã dùng, spend_money là chi phí. steps[] theo thứ tự bước; total_send_percent tính trên lượt vào flow, total_delivery_percent trên số đã gửi, total_read_percent và total_click_percent trên số đã nhận.

Lưu ý

  • Chỉ truyền một trong hai mốc ngày sẽ bị từ chối.
  • Flow ở trạng thái DRAF hoặc RUNNING (chưa xuất bản) trả lỗi.
  • Khoảng ngày kết thúc trước 23/10/2023 trả số liệu tổng hợp theo cách tính cũ, không theo đúng khoảng ngày.
  • Flow nhiều dữ liệu có thể mất vài chục giây vì phải tính chi phí và doanh thu; đặt thời gian chờ phía client đủ dài.
  • Phần trăm làm tròn 2 chữ số thập phân.

Liệt kê khách hàng theo bước của flow Đọc

POST/2.0/api/lw-report-flow-customers

Liệt kê khách hàng của một bước trong flow theo trạng thái tương tác (đã gửi, nhận, đọc, click, lỗi...) kèm tổng số theo từng trạng thái.

Tham số

Tham sốKiểuMô tả
store_idstringID workspace cần làm việc, lấy từ account-list-workspaces. Bắt buộc khi tài khoản có từ hai workspace trở lên; chỉ có một workspace thì bỏ trống.
flow_idbắt buộcstringID flow, lấy từ lw-list-flows.
flow_config_idstringID bước, lấy từ steps[].flow_config_id của lw-report-flow. Nên truyền: bỏ trống thì không lọc theo bước.
statusstringTrạng thái tương tác: SEND (đã gửi), DELIVERY (đã nhận), READ (đã đọc), CLICK (đã click), BOUNCE (bị trả lại), COMPLAINT (báo spam), PROCESSING (đang xử lý), ERROR (lỗi gửi), WAITING (đang chờ gửi). Giá trị không hợp lệ được coi là SEND.Giá trị: SEND, DELIVERY, READ, CLICK, BOUNCE, COMPLAINT, PROCESSING, ERROR, WAITINGMặc định: SEND
namestringLọc theo tên khách hàng, khớp một phần, không phân biệt hoa thường và dấu tiếng Việt.
from_datestringTừ thời điểm (ISO 8601), lọc theo thời điểm tương tác của khách. Bỏ trống cả hai mốc = toàn bộ thời gian. Nên truyền kèm giờ và múi giờ, ví dụ 2026-10-01T00:00:00+07:00.
to_datestringĐến thời điểm (ISO 8601). Ngày không kèm giờ được hiểu là 00:00 UTC; để lấy trọn ngày cuối, truyền ví dụ 2026-10-31T23:59:59+07:00.
pagenumberSố trang.Mặc định: 1
limitnumberSố khách mỗi trang, tối đa 50.Mặc định: 20

Ví dụ

cURL
curl -X POST https://api.ladipage.net/2.0/api/lw-report-flow-customers \
  -H "api-key: $LADIPAGE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "flow_id": "6650f1c2a9b3e4d5f6a7b8c9",
  "flow_config_id": "6650f1c2a9b3e4d5f6a7b8e1",
  "status": "CLICK"
}'

Kết quả

Phản hồi mẫu · JSON
{
  "code": 200,
  "message": "Success",
  "data": {
    "flow_id": "6712b8e1a9d4c30015f0e7a2",
    "flow_config_id": "6712b9c4a9d4c30015f0e7b5",
    "status": "CLICK",
    "status_label": "Đã click",
    "page": 1,
    "limit": 20,
    "total": 134,
    "count": 2,
    "summary": {
      "send": 1520,
      "delivery": 1488,
      "read": 1012,
      "click": 134,
      "bounce": 0,
      "complaint": 0,
      "processing": 4,
      "error": 28,
      "waiting": 12
    },
    "summary_labels": {
      "send": "Đã gửi",
      "delivery": "Đã nhận",
      "read": "Đã đọc",
      "click": "Đã click",
      "bounce": "Bị trả lại",
      "complaint": "Báo spam",
      "processing": "Đang xử lý",
      "error": "Lỗi gửi",
      "waiting": "Đang chờ gửi"
    },
    "field_labels": {
      "name": "Tên khách hàng",
      "email": "Email",
      "phone": "Số điện thoại",
      "total_action": "Số lượt",
      "report_date": "Ngày ghi nhận",
      "last_time_action": "Lần tương tác gần nhất"
    },
    "items": [
      {
        "id": "6701d2e3f4a5b60011c7d8e9",
        "name": "Nguyễn Văn An",
        "email": "an***@gmail.com",
        "phone": "******5678",
        "total_action": 1,
        "report_date": "2026-10-25",
        "last_time_action": "2026-10-25T10:12:00+07:00",
        "error_message": null,
        "ai_call_duration": null,
        "detail_url": "https://work.ladipage.com/customers/6701d2e3f4a5b60011c7d8e9"
      },
      {
        "id": "6701d2e3f4a5b60011c7d8eb",
        "name": "Lê Minh Châu",
        "email": "ch***@example.com",
        "phone": "******9012",
        "total_action": 2,
        "report_date": "2026-10-25",
        "last_time_action": "2026-10-25T10:12:00+07:00",
        "error_message": null,
        "ai_call_duration": null,
        "detail_url": "https://work.ladipage.com/customers/6701d2e3f4a5b60011c7d8eb"
      }
    ]
  }
}

id trong items[] là mã khách hàng. error_message chỉ có giá trị khi gửi lỗi; ai_call_duration tính bằng giây, chỉ có với bước gọi AI. Email và số điện thoại đã được che một phần.

Lưu ý

  • Sắp xếp theo lần tương tác gần nhất trước.
  • Email và số điện thoại trong kết quả đã được che một phần.
  • Khách đã bị xoá có name = DELETED_CUSTOMER. Khách tạo sau thời điểm workspace vượt hạn mức số khách hàng bị ẩn tên, email, số điện thoại và id.

Báo cáo chi tiết một bước của flow Đọc

POST/2.0/api/lw-report-flow-step

Báo cáo một bước (hành động) trong flow: phễu gửi, nhận, đọc, click với tỉ lệ, số trả lại, báo spam, hủy nhận mail, và credit, chi phí, doanh thu của riêng bước đó.

Tham số

Tham sốKiểuMô tả
store_idstringID workspace cần làm việc, lấy từ account-list-workspaces. Bắt buộc khi tài khoản có từ hai workspace trở lên; chỉ có một workspace thì bỏ trống.
flow_idbắt buộcstringID flow, lấy từ lw-list-flows.
flow_config_idbắt buộcstringID bước, lấy từ steps[].flow_config_id của lw-report-flow.
from_datestringTừ ngày, định dạng YYYY-MM-DD (ISO 8601). Nên truyền cùng to_date. Bỏ trống cả hai = toàn bộ thời gian. Số liệu được lưu theo ngày của múi giờ workspace và cả hai mốc đều được tính.
to_datestringĐến ngày, định dạng YYYY-MM-DD (ISO 8601). from_date = to_date là báo cáo một ngày.

Ví dụ

cURL
curl -X POST https://api.ladipage.net/2.0/api/lw-report-flow-step \
  -H "api-key: $LADIPAGE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "flow_id": "6650f1c2a9b3e4d5f6a7b8c9",
  "flow_config_id": "6650f1c2a9b3e4d5f6a7b8e1",
  "from_date": "2026-10-01",
  "to_date": "2026-10-31"
}'

Kết quả

Phản hồi mẫu · JSON
{
  "code": 200,
  "message": "Success",
  "data": {
    "flow_id": "6712b8e1a9d4c30015f0e7a2",
    "flow_config_id": "6712b9a0a9d4c30015f0e7b1",
    "from_date": "2026-10-01",
    "to_date": "2026-10-28",
    "detail_url": "https://work.ladipage.com/flows/6712b8e1a9d4c30015f0e7a2",
    "field_labels": {
      "total_send": "Đã gửi",
      "total_delivery": "Đã nhận",
      "total_read": "Đã đọc",
      "total_click": "Đã click",
      "total_bounce": "Bị trả lại",
      "total_complaint": "Báo spam",
      "total_unsubscribe_mail": "Hủy nhận mail",
      "spend_credits": "Credit đã dùng",
      "spend_money": "Chi phí",
      "total_revenue": "Doanh thu"
    },
    "overview": {
      "total_send": 2384,
      "total_delivery": 2331,
      "total_read": 1104,
      "total_click": 215,
      "total_bounce": 53,
      "total_complaint": 4,
      "total_unsubscribe_mail": 11,
      "delivery_rate": 97.78,
      "read_rate": 47.36,
      "click_rate": 9.22,
      "bounce_rate": 2.22,
      "complaint_rate": 0.17,
      "unsubscribe_mail_rate": 0.47,
      "spend_credits": 0,
      "spend_money": 0,
      "total_revenue": 28400000
    }
  }
}

Các tỉ lệ tính bằng %: delivery_rate = nhận / gửi, read_rate = đọc / nhận, click_rate = click / nhận, bounce_rate = trả lại / gửi, complaint_rate = báo spam / gửi, unsubscribe_mail_rate = hủy nhận / nhận.

Lưu ý

  • Khoảng ngày kết thúc trước 23/10/2023 trả số liệu tổng hợp theo cách tính cũ.
  • Để xem danh sách khách của bước này, dùng lw-report-flow-customers.

Báo cáo tổng quan chuỗi tin Đọc

POST/2.0/api/lw-report-sequence

Báo cáo một chuỗi tin tự động: lượt đăng ký, số khách duy nhất, lượt hoàn tất và dở dang cùng tỉ lệ, số tin trong chuỗi.

Tham số

Tham sốKiểuMô tả
store_idstringID workspace cần làm việc, lấy từ account-list-workspaces. Bắt buộc khi tài khoản có từ hai workspace trở lên; chỉ có một workspace thì bỏ trống.
sequence_idbắt buộcstringID chuỗi tin, lấy từ lw-list-sequences.
from_datestringTừ ngày (ISO 8601). Hiện được nhận và trả lại nguyên giá trị nhưng không làm thay đổi số liệu: báo cáo luôn tính trên toàn bộ thời gian.
to_datestringĐến ngày (ISO 8601). Như from_date: hiện không làm thay đổi số liệu.

Ví dụ

cURL
curl -X POST https://api.ladipage.net/2.0/api/lw-report-sequence \
  -H "api-key: $LADIPAGE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "sequence_id": "6650f1c2a9b3e4d5f6a7b8c9"
}'

Kết quả

Phản hồi mẫu · JSON
{
  "code": 200,
  "message": "Success",
  "data": {
    "sequence_id": "6713c4d2b7e8f10019a2c5b3",
    "from_date": "2026-10-01T00:00:00+07:00",
    "to_date": "2026-10-31T23:59:59+07:00",
    "detail_url": "https://work.ladipage.com/sequences/6713c4d2b7e8f10019a2c5b3",
    "field_labels": {
      "total_subscribe": "Lượt đăng ký",
      "unique_subscriber": "Số khách",
      "total_complete": "Lượt hoàn tất",
      "total_incomplete": "Lượt dở dang",
      "complete_percent": "Tỉ lệ hoàn tất",
      "incomplete_percent": "Tỉ lệ dở dang",
      "total_message": "Số tin"
    },
    "overview": {
      "total_subscribe": 962,
      "unique_subscriber": 940,
      "total_complete": 418,
      "total_incomplete": 544,
      "complete_percent": 43,
      "incomplete_percent": 57,
      "total_message": 4
    }
  }
}

total_subscribe là lượt đăng ký, unique_subscriber là số khách duy nhất, total_complete / total_incomplete là lượt hoàn tất / dở dang; complete_percent và incomplete_percent làm tròn số nguyên. total_message là số tin trong chuỗi.

Lưu ý

  • Trả lỗi khi chuỗi tin không tồn tại hoặc đã bị xoá.

Liệt kê khách hàng đăng ký chuỗi tin Đọc

POST/2.0/api/lw-report-sequence-customers

Liệt kê khách hàng đã đăng ký một chuỗi tin, kèm phần trăm hoàn thành, tin hiện tại và trạng thái, cùng tổng lượt đăng ký, hoàn tất, chưa hoàn tất.

Tham số

Tham sốKiểuMô tả
store_idstringID workspace cần làm việc, lấy từ account-list-workspaces. Bắt buộc khi tài khoản có từ hai workspace trở lên; chỉ có một workspace thì bỏ trống.
sequence_idbắt buộcstringID chuỗi tin, lấy từ lw-list-sequences.
statusstringCOMPLETE = đã hoàn tất; INCOMPLETE = chưa hoàn tất (gồm cả khách đã hủy đăng ký). Bỏ trống hoặc giá trị khác = tất cả.Giá trị: COMPLETE, INCOMPLETE
keywordstringTìm theo tên khách hàng, khớp một phần, không phân biệt hoa thường và dấu tiếng Việt.
pagenumberSố trang.Mặc định: 1
limitnumberSố khách mỗi trang, tối đa 50.Mặc định: 20

Ví dụ

cURL
curl -X POST https://api.ladipage.net/2.0/api/lw-report-sequence-customers \
  -H "api-key: $LADIPAGE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "sequence_id": "6650f1c2a9b3e4d5f6a7b8c9",
  "status": "INCOMPLETE"
}'

Kết quả

Phản hồi mẫu · JSON
{
  "code": 200,
  "message": "Success",
  "data": {
    "sequence_id": "6713c4d2b7e8f10019a2c5b3",
    "status": "",
    "page": 1,
    "limit": 20,
    "total": 962,
    "count": 2,
    "summary": {
      "total_subscribe": 962,
      "total_complete": 418,
      "total_incomplete": 544
    },
    "summary_labels": {
      "total_subscribe": "Lượt đăng ký",
      "total_complete": "Lượt hoàn tất",
      "total_incomplete": "Lượt dở dang"
    },
    "field_labels": {
      "name": "Tên khách hàng",
      "email": "Email",
      "phone": "Số điện thoại",
      "complete_percent": "Tiến độ",
      "current_step": "Tin hiện tại",
      "last_subscribe_time": "Lần đăng ký gần nhất"
    },
    "items": [
      {
        "id": "6701d2e3f4a5b60011c7d8e9",
        "name": "Nguyễn Văn An",
        "email": "an***@gmail.com",
        "phone": "******5678",
        "total_subscribe": 1,
        "complete_percent": 100,
        "current_step": "Tin 4 - Ưu đãi nâng cấp",
        "current_step_index": 4,
        "status": "COMPLETE",
        "status_label": "Đã hoàn tất",
        "last_subscribe_time": "2026-10-20T08:45:00+07:00",
        "detail_url": "https://work.ladipage.com/customers/6701d2e3f4a5b60011c7d8e9"
      },
      {
        "id": "6701d2e3f4a5b60011c7d8ec",
        "name": "Phạm Thu Hà",
        "email": "ha***@example.com",
        "phone": "******3456",
        "total_subscribe": 1,
        "complete_percent": 50,
        "current_step": "Tin 2 - Hướng dẫn tạo trang đầu tiên",
        "current_step_index": 2,
        "status": "INCOMPLETE",
        "status_label": "Chưa hoàn tất",
        "last_subscribe_time": "2026-10-20T08:45:00+07:00",
        "detail_url": "https://work.ladipage.com/customers/6701d2e3f4a5b60011c7d8ec"
      }
    ]
  }
}

total tính theo bộ lọc; summary tính trên toàn chuỗi, không theo bộ lọc. id trong items[] là mã khách hàng. complete_percent là null khi khách chưa nhận tin nào. current_step là tên tin hiện tại, hiện (đã xoá) nếu tin đã bị xoá. status: COMPLETE | INCOMPLETE | UNSUBSCRIBE. Email và số điện thoại đã được che một phần.

Lưu ý

  • Không có bộ lọc thời gian.
  • Sắp xếp theo lần đăng ký gần nhất trước.
  • Email và số điện thoại trong kết quả đã được che một phần.

Báo cáo chi tiết một tin trong chuỗi tin Đọc

POST/2.0/api/lw-report-sequence-message

Báo cáo một tin trong chuỗi tin: phễu gửi, nhận, đọc, click với tỉ lệ, số đang chờ gửi, trả lại, báo spam, hủy nhận mail.

Tham số

Tham sốKiểuMô tả
store_idstringID workspace cần làm việc, lấy từ account-list-workspaces. Bắt buộc khi tài khoản có từ hai workspace trở lên; chỉ có một workspace thì bỏ trống.
sequence_idbắt buộcstringID chuỗi tin, lấy từ lw-list-sequences.
flow_idbắt buộcstringflow_id của tin, lấy từ items[].flow_id của lw-list-sequence-messages.
flow_config_idstringID một bước cụ thể của tin. Bỏ trống = bước chính (bước đầu tiên) của tin.
from_datestringTừ ngày (ISO 8601). Hiện được nhận và trả lại nguyên giá trị nhưng không làm thay đổi số liệu: báo cáo luôn tính trên toàn bộ thời gian.
to_datestringĐến ngày (ISO 8601). Như from_date: hiện không làm thay đổi số liệu.

Ví dụ

cURL
curl -X POST https://api.ladipage.net/2.0/api/lw-report-sequence-message \
  -H "api-key: $LADIPAGE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "sequence_id": "6650f1c2a9b3e4d5f6a7b8c9",
  "flow_id": "6650f1c2a9b3e4d5f6a7b8d2"
}'

Kết quả

Phản hồi mẫu · JSON
{
  "code": 200,
  "message": "Success",
  "data": {
    "sequence_id": "6713c4d2b7e8f10019a2c5b3",
    "flow_id": "6713c5a1b7e8f10019a2c5c0",
    "flow_config_id": "6713c5a1b7e8f10019a2c5c2",
    "from_date": "2026-10-01T00:00:00+07:00",
    "to_date": "2026-10-31T23:59:59+07:00",
    "detail_url": "https://work.ladipage.com/sequences/6713c4d2b7e8f10019a2c5b3",
    "field_labels": {
      "total_send": "Đã gửi",
      "total_delivery": "Đã nhận",
      "total_read": "Đã đọc",
      "total_click": "Đã click",
      "total_bounce": "Bị trả lại",
      "total_complaint": "Báo spam",
      "total_unsubscribe_mail": "Hủy nhận mail",
      "total_waiting": "Đang chờ gửi"
    },
    "overview": {
      "total_send": 962,
      "total_delivery": 945,
      "total_read": 512,
      "total_click": 88,
      "total_bounce": 17,
      "total_complaint": 1,
      "total_unsubscribe_mail": 5,
      "total_waiting": 0,
      "delivery_rate": 98.23,
      "read_rate": 54.18,
      "click_rate": 9.31
    }
  }
}

flow_config_id là bước đã dùng để tính. total_waiting là số tin đang chờ gửi. delivery_rate = nhận / gửi, read_rate = đọc / nhận, click_rate = click / nhận, đơn vị %.

Lưu ý

  • Tỉ lệ làm tròn 2 chữ số thập phân; mẫu số bằng 0 thì tỉ lệ = 0.

Báo cáo giá trị Space bán hàng theo giai đoạn Đọc

POST/2.0/api/lw-report-deals

Số tổng của một Space bán hàng giống đầu cột trên board: mỗi giai đoạn có số thẻ đang mở, tổng giá trị, tỉ lệ chốt và giá trị dự kiến chốt, kèm tổng cả Space. Dùng để biết Space đang có bao nhiêu tiền và dự kiến chốt được bao nhiêu.

Tham số

Tham sốKiểuMô tả
store_idstringID workspace cần làm việc, lấy từ account-list-workspaces. Bắt buộc khi tài khoản có từ hai workspace trở lên; chỉ có một workspace thì bỏ trống.
pipeline_idbắt buộcstringID Space bán hàng (loại SALES_PIPELINE), lấy từ lw-list-pipelines.

Ví dụ

cURL
curl -X POST https://api.ladipage.net/2.0/api/lw-report-deals \
  -H "api-key: $LADIPAGE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "pipeline_id": "6650f1c2a9b3e4d5f6a7b8c9"
}'

Kết quả

Phản hồi mẫu · JSON
{
  "code": 200,
  "message": "Success",
  "data": {
    "pipeline_id": "6705e1f2a3b4c50013d6e7f8",
    "pipeline_name": "Bán hàng gói Doanh nghiệp",
    "url": "https://work.ladipage.com/pipelines/6705e1f2a3b4c50013d6e7f8",
    "scope_note": "Chỉ tính thẻ đang mở mà bạn được xem.",
    "field_labels": {
      "total_deals": "Tổng số thẻ",
      "total_value": "Tổng giá trị",
      "total_expected_value": "Giá trị kỳ vọng",
      "win_probability_percent": "Tỉ lệ chốt (%)"
    },
    "total_deals": 30,
    "total_value": 540000000,
    "total_expected_value": 210000000,
    "stages": [
      {
        "stage_id": "6705e2a1a3b4c50013d6e801",
        "stage_name": "Liên hệ lần đầu",
        "deal_count": 18,
        "total_value": 300000000,
        "win_probability_percent": 20,
        "expected_value": 60000000
      },
      {
        "stage_id": "6705e2b6a3b4c50013d6e802",
        "stage_name": "Đàm phán",
        "deal_count": 12,
        "total_value": 240000000,
        "win_probability_percent": 62.5,
        "expected_value": 150000000
      }
    ]
  }
}

url là link board của Space. stages[] theo thứ tự cột trên board; win_probability_percent là tỉ lệ chốt (%), expected_value = tổng giá trị × tỉ lệ chốt.

Lưu ý

  • Chỉ tính thẻ đang mở (chưa Thành công, chưa Thất bại); không có bộ lọc thời gian, số liệu là hiện trạng tại thời điểm gọi.
  • Space bật xác suất theo từng thẻ thì tỉ lệ chốt của giai đoạn là trung bình của các thẻ.
  • Space công việc (WORK_PIPELINE) trả lỗi vì không có giá trị và tỉ lệ chốt.
  • Quyền: người gọi phải là thành viên LadiWork của workspace (chủ workspace luôn được), được xem Space đó và có quyền xem báo cáo. Số liệu chỉ tính các thẻ người gọi được mở trên ứng dụng.

Tổng hợp ghi chú trên thẻ Đọc

POST/2.0/api/lw-report-deal-notes

Tổng hợp ghi chú nhân viên viết trên thẻ của 1–5 Space trong một khoảng thời gian (theo ngày viết ghi chú): số ghi chú, số thẻ có ghi chú, thống kê theo người viết và danh sách ghi chú kèm thông tin thẻ. Dùng để đọc khách hỏi gì, phản đối gì, vì sao thắng hoặc thua.

Tham số

Tham sốKiểuMô tả
store_idstringID workspace cần làm việc, lấy từ account-list-workspaces. Bắt buộc khi tài khoản có từ hai workspace trở lên; chỉ có một workspace thì bỏ trống.
pipeline_idsbắt buộcarrayMảng 1–5 ID Space (chuỗi), lấy từ lw-list-pipelines.
pipeline_ids[]bắt buộcstringID một Space.
from_datebắt buộcstringTừ thời điểm viết ghi chú (ISO 8601). Giá trị được so đúng thời điểm, nên truyền kèm giờ và múi giờ, ví dụ 2026-10-01T00:00:00+07:00.
to_datebắt buộcstringĐến thời điểm viết ghi chú (ISO 8601), ví dụ 2026-10-31T23:59:59+07:00. Phải sau from_date và cách from_date không quá 92 ngày.
keywordstringChỉ lấy ghi chú chứa cụm từ này, không phân biệt hoa thường. Tối đa 200 ký tự.
staff_namestringLọc theo tên người viết ghi chú (chứa chuỗi này, không phân biệt hoa thường).
deal_statusarrayLọc theo trạng thái HIỆN TẠI của thẻ. Bỏ trống = mọi trạng thái.
deal_status[]stringOPEN (đang mở), WON (thành công), LOST (thất bại).Giá trị: OPEN, WON, LOST
pinned_onlybooleantrue = chỉ lấy ghi chú được ghim.Mặc định: false
oldest_firstbooleantrue = ghi chú cũ trước; mặc định mới trước.Mặc định: false
pagenumberSố trang.Mặc định: 1
limitnumberSố ghi chú mỗi trang, tối đa 100.Mặc định: 50

Ví dụ

cURL
curl -X POST https://api.ladipage.net/2.0/api/lw-report-deal-notes \
  -H "api-key: $LADIPAGE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "pipeline_ids": [
    "6650f1c2a9b3e4d5f6a7b8c9"
  ],
  "from_date": "2026-10-01T00:00:00+07:00",
  "to_date": "2026-10-31T23:59:59+07:00",
  "deal_status": [
    "LOST"
  ]
}'

Kết quả

Phản hồi mẫu · JSON
{
  "code": 200,
  "message": "Success",
  "data": {
    "from_date": "2026-10-01T00:00:00+07:00",
    "to_date": "2026-10-31T23:59:59+07:00",
    "spaces": ["Bán hàng gói Doanh nghiệp"],
    "total_notes": 2,
    "deals_with_notes": 2,
    "by_staff": [
      {
        "staff": "Nguyễn Văn An",
        "notes": 1,
        "deals": 1
      },
      {
        "staff": "Trần Thị Bình",
        "notes": 1,
        "deals": 1
      }
    ],
    "items": [
      {
        "content": "Đã gọi khách, khách muốn demo tính năng A/B Testing vào thứ 5.",
        "is_reply": false,
        "pinned": true,
        "attachment_count": 0,
        "written_by": "Nguyễn Văn An",
        "written_at": "2026-10-28T14:30:00+07:00",
        "deal_number": 1024,
        "deal_title": "Công ty TNHH Minh Phát - gói Doanh nghiệp",
        "deal_status": "Đang mở",
        "deal_value": 36000000,
        "customer_name": "Lê Minh Châu",
        "space": "Bán hàng gói Doanh nghiệp",
        "stage": "Đàm phán",
        "detail_url": "https://work.ladipage.com/deals/6719f0a1b2c3d40015e6f701"
      },
      {
        "content": "Khách đã chuyển khoản, chốt hợp đồng 12 tháng.",
        "is_reply": false,
        "pinned": false,
        "attachment_count": 1,
        "written_by": "Trần Thị Bình",
        "written_at": "2026-10-27T09:15:00+07:00",
        "deal_number": 1019,
        "deal_title": "Shop Thời trang Hà Linh - gia hạn",
        "deal_status": "Thành công",
        "deal_value": 12000000,
        "customer_name": "Phạm Thu Hà",
        "space": "Bán hàng gói Doanh nghiệp",
        "stage": "Chốt hợp đồng",
        "detail_url": "https://work.ladipage.com/deals/6719f0a1b2c3d40015e6f6fa"
      }
    ],
    "total": 2,
    "page": 1,
    "limit": 50
  }
}

spaces là tên các Space. by_staff[] tính trên toàn bộ ghi chú khớp bộ lọc, không chỉ trang hiện tại. content là chữ thuần, cắt ở 1.000 ký tự. deal_status là nhãn: Đang mở | Thành công | Thất bại.

Lưu ý

  • Đã loại ghi chú do automation tự tạo (ghi chú hướng dẫn gắn vào thẻ mới).
  • Phạm vi quyền giống khi mở thẻ trên ứng dụng: người gọi phải là thành viên LadiWork của workspace và có quyền xem báo cáo ghi chú. Chỉ tính các Space người gọi được xem và các thẻ người gọi được mở (thẻ mình phụ trách, tham gia hoặc theo dõi, thẻ công khai; trưởng nhóm thấy thêm thẻ của thành viên nhóm). Chủ workspace và quản lý LadiWork thấy tất cả.
  • Space bán hàng bật chế độ riêng tư: thành viên thường chỉ thấy ghi chú do chính mình viết; chủ Space, quản trị Space và quản lý LadiWork thấy hết.
  • Truyền một Space mà người gọi không được xem thì bị từ chối; truyền nhiều Space thì các Space không được xem bị bỏ qua.
  • Người viết chỉ trả về tên, không trả id.

Thống kê lý do thất bại Đọc

POST/2.0/api/lw-report-lost-reasons

Thống kê các thẻ bị đánh Thất bại trong khoảng thời gian (theo thời điểm thất bại) trên 1–5 Space bán hàng: đếm theo lý do, số thẻ không ghi lý do, lý do theo từng người phụ trách và danh sách thẻ.

Tham số

Tham sốKiểuMô tả
store_idstringID workspace cần làm việc, lấy từ account-list-workspaces. Bắt buộc khi tài khoản có từ hai workspace trở lên; chỉ có một workspace thì bỏ trống.
pipeline_idsbắt buộcarrayMảng 1–5 ID Space bán hàng (chuỗi), lấy từ lw-list-pipelines.
pipeline_ids[]bắt buộcstringID một Space bán hàng.
from_datebắt buộcstringTừ thời điểm thất bại (ISO 8601). Giá trị được so đúng thời điểm, nên truyền kèm giờ và múi giờ, ví dụ 2026-10-01T00:00:00+07:00.
to_datebắt buộcstringĐến thời điểm thất bại (ISO 8601), ví dụ 2026-10-31T23:59:59+07:00. Phải sau from_date và cách from_date không quá 92 ngày.
reasonstringLọc danh sách thẻ theo một lý do. So khớp sau khi bỏ dấu, hoa thường, khoảng trắng và dấu câu ở hai đầu, nên viết khác dấu vẫn khớp. Chuỗi rỗng = thẻ không ghi lý do. Không truyền = mọi lý do.
staff_namestringLọc danh sách thẻ theo tên người phụ trách (chứa chuỗi này, không phân biệt hoa thường).
pagenumberTrang của danh sách thẻ.Mặc định: 1
limitnumberSố thẻ mỗi trang, tối đa 50.Mặc định: 20

Ví dụ

cURL
curl -X POST https://api.ladipage.net/2.0/api/lw-report-lost-reasons \
  -H "api-key: $LADIPAGE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "pipeline_ids": [
    "6650f1c2a9b3e4d5f6a7b8c9",
    "6650f1c2a9b3e4d5f6a7b8ca"
  ],
  "from_date": "2026-10-01T00:00:00+07:00",
  "to_date": "2026-10-31T23:59:59+07:00"
}'

Kết quả

Phản hồi mẫu · JSON
{
  "code": 200,
  "message": "Success",
  "data": {
    "from_date": "2026-10-01T00:00:00+07:00",
    "to_date": "2026-10-31T23:59:59+07:00",
    "spaces": ["Bán hàng gói Doanh nghiệp"],
    "total_lost": 9,
    "reasons": [
      {
        "reason": "Giá cao",
        "count": 6,
        "share_percent": 66.67,
        "by_space": {
          "Bán hàng gói Doanh nghiệp": 6
        }
      },
      {
        "reason": "Không ghi lý do",
        "count": 3,
        "share_percent": 33.33,
        "by_space": {
          "Bán hàng gói Doanh nghiệp": 3
        }
      }
    ],
    "by_staff": [
      {
        "staff": "Nguyễn Văn An",
        "lost": 5,
        "no_reason": 1,
        "top_reasons": [
          {
            "reason": "Giá cao",
            "count": 4
          },
          {
            "reason": "Không ghi lý do",
            "count": 1
          }
        ]
      },
      {
        "staff": "Chưa giao",
        "lost": 4,
        "no_reason": 2,
        "top_reasons": [
          {
            "reason": "Không ghi lý do",
            "count": 2
          },
          {
            "reason": "Giá cao",
            "count": 2
          }
        ]
      }
    ],
    "items": [
      {
        "deal_number": 1007,
        "title": "Công ty CP Sao Việt - gói Doanh nghiệp",
        "space": "Bán hàng gói Doanh nghiệp",
        "stage": "Đàm phán",
        "staff": "Nguyễn Văn An",
        "customer_name": "Hoàng Đức Long",
        "created_at": "2026-10-02T10:00:00+07:00",
        "lost_time": "2026-10-21T16:20:00+07:00",
        "lost_reason": "Giá cao",
        "lost_comment": "Khách chọn gói của đối thủ rẻ hơn 20%.",
        "detail_url": "https://work.ladipage.com/deals/6719f0a1b2c3d40015e6f6e7"
      }
    ],
    "total": 9,
    "page": 1,
    "limit": 20
  }
}

reason là 'Không ghi lý do' khi thẻ không có lý do; by_space là {tên Space: số thẻ}. Trong by_staff[], staff là 'Chưa giao' khi thẻ không có người phụ trách; top_reasons gồm tối đa 5 lý do.

Lưu ý

  • Các cách viết khác nhau của cùng một câu được gộp (bỏ dấu, hoa thường); lý do khác chữ nhưng cùng ý không được gộp. Nhãn reason là cách viết gặp nhiều nhất.
  • reasons và by_staff tính trên toàn bộ thẻ thất bại trong kỳ; reason và staff_name chỉ lọc danh sách items.
  • Danh sách thẻ sắp xếp theo thời điểm thất bại, mới nhất trước.
  • Quyền: người gọi phải là thành viên LadiWork của workspace và có quyền xem báo cáo lý do thất bại. Chỉ tính các Space và thẻ người gọi được xem, như trên ứng dụng.
  • Người phụ trách chỉ trả về tên, không trả id.

Báo cáo tuân thủ quy trình bán hàng Đọc

POST/2.0/api/lw-report-pipeline-compliance

Kiểm tra nhân viên bán hàng có đi đúng quy trình trên 1–5 Space bán hàng không, tính trên các thẻ TẠO trong khoảng thời gian. Trả bảng tổng theo người phụ trách (tỷ lệ tuân thủ, số vi phạm từng loại) và danh sách thẻ vi phạm.

Tham số

Tham sốKiểuMô tả
store_idstringID workspace cần làm việc, lấy từ account-list-workspaces. Bắt buộc khi tài khoản có từ hai workspace trở lên; chỉ có một workspace thì bỏ trống.
pipeline_idsbắt buộcarrayMảng 1–5 ID Space bán hàng (chuỗi), lấy từ lw-list-pipelines.
pipeline_ids[]bắt buộcstringID một Space bán hàng.
from_datebắt buộcstringTừ thời điểm tạo thẻ (ISO 8601). Giá trị được so đúng thời điểm, nên truyền kèm giờ và múi giờ, ví dụ 2026-10-01T00:00:00+07:00.
to_datebắt buộcstringĐến thời điểm tạo thẻ (ISO 8601), ví dụ 2026-10-31T23:59:59+07:00. Phải sau from_date và cách from_date không quá 92 ngày.
first_contact_hoursnumberNgưỡng liên hệ lần đầu, tính bằng giờ, từ 1 đến 720. Ngoài khoảng này dùng mặc định.Mặc định: 24
stale_daysnumberSố ngày không có thay đổi hay liên hệ để coi thẻ đang mở là bị bỏ quên, từ 1 đến 365. Ngoài khoảng này dùng mặc định.Mặc định: 7
staff_namestringLọc danh sách thẻ vi phạm theo tên người phụ trách (chứa chuỗi này, không phân biệt hoa thường).
violationstringChỉ lấy thẻ có một loại vi phạm. Giá trị khác danh sách bị bỏ qua.Giá trị: LOST_NO_CONTACT, LOST_NO_REASON, CALL_TASK_NO_CALL, SLOW_FIRST_CONTACT, MOVED_NO_CONTACT, STALE
pagenumberTrang của danh sách thẻ vi phạm.Mặc định: 1
limitnumberSố thẻ mỗi trang, tối đa 50.Mặc định: 20

Ví dụ

cURL
curl -X POST https://api.ladipage.net/2.0/api/lw-report-pipeline-compliance \
  -H "api-key: $LADIPAGE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "pipeline_ids": [
    "6650f1c2a9b3e4d5f6a7b8c9"
  ],
  "from_date": "2026-10-01T00:00:00+07:00",
  "to_date": "2026-10-31T23:59:59+07:00",
  "violation": "SLOW_FIRST_CONTACT"
}'

Kết quả

Phản hồi mẫu · JSON
{
  "code": 200,
  "message": "Success",
  "data": {
    "from_date": "2026-10-01T00:00:00+07:00",
    "to_date": "2026-10-31T23:59:59+07:00",
    "first_contact_hours": 24,
    "stale_days": 7,
    "call_source": "LadiWork Call",
    "spaces": ["Bán hàng gói Doanh nghiệp"],
    "summary": [
      {
        "staff": "Nguyễn Văn An",
        "deals": 20,
        "open": 12,
        "won": 5,
        "lost": 3,
        "deals_with_violation": 4,
        "compliance_rate_percent": 80,
        "violations": {
          "Liên hệ lần đầu chậm": 3,
          "Thất bại không ghi lý do": 1
        }
      }
    ],
    "items": [
      {
        "deal_number": 1031,
        "title": "Công ty TNHH Minh Phát - gói Doanh nghiệp",
        "space": "Bán hàng gói Doanh nghiệp",
        "stage": "Liên hệ lần đầu",
        "status": "Đang mở",
        "staff": "Nguyễn Văn An",
        "customer_name": "Lê Minh Châu",
        "created_at": "2026-10-20T09:00:00+07:00",
        "lost_time": null,
        "lost_reason": null,
        "calls": 1,
        "answered_calls": 0,
        "stage_changed": false,
        "activities_by_sales": 1,
        "done_call_activities": 0,
        "notes_by_sales": 0,
        "first_contact_hours": 30.5,
        "last_touch_at": "2026-10-21T15:30:00+07:00",
        "violations": ["Liên hệ lần đầu chậm"],
        "detail_url": "https://work.ladipage.com/deals/6719f0a1b2c3d40015e6f710"
      }
    ],
    "total": 4,
    "page": 1,
    "limit": 20
  }
}

first_contact_hours và stale_days ở cấp gốc là giá trị đã áp dụng; call_source là nguồn dữ liệu cuộc gọi. summary[] theo người phụ trách; compliance_rate_percent = % thẻ không vi phạm; violations là {nhãn loại vi phạm: số thẻ}. items[] chỉ gồm thẻ có ít nhất một vi phạm, violations là mảng nhãn vi phạm.

Lưu ý

  • Sáu loại vi phạm được kiểm: LOST_NO_CONTACT — thẻ Thất bại khi chưa có liên hệ nào; LOST_NO_REASON — thẻ Thất bại không ghi lý do; CALL_TASK_NO_CALL — có hoạt động gọi (tên chứa gọi/call) được đánh dấu hoàn thành nhưng thẻ không có cuộc gọi nào; SLOW_FIRST_CONTACT — từ lúc tạo thẻ tới lần liên hệ đầu vượt first_contact_hours, hoặc chưa liên hệ mà thẻ đã quá ngưỡng (không xét thẻ Thành công và thẻ đã tính LOST_NO_CONTACT); MOVED_NO_CONTACT — thẻ đã đổi giai đoạn khi chưa có liên hệ nào; STALE — thẻ đang mở không có thay đổi hay liên hệ quá stale_days ngày.
  • Liên hệ = cuộc gọi, hoặc hoạt động / ghi chú do nhân viên tạo. Không tính hoạt động do automation tạo và hoạt động / ghi chú tạo trong 2 phút đầu sau khi tạo thẻ.
  • Trong kết quả, loại vi phạm được trả bằng nhãn tiếng Việt chứ không bằng mã.
  • summary tính trên mọi thẻ trong kỳ; staff_name và violation chỉ lọc danh sách items.
  • Quá 20.000 thẻ trong khoảng đã chọn thì trả lỗi; hãy thu hẹp khoảng thời gian hoặc số Space.
  • Quyền: người gọi phải là thành viên LadiWork của workspace và có quyền xem báo cáo tuân thủ. Chỉ tính các Space và thẻ người gọi được xem, như trên ứng dụng. Người phụ trách chỉ trả về tên.

Xem nhật ký hoạt động Đọc

POST/2.0/api/lw-list-activity-logs

Xem nhật ký thao tác trong workspace: ai đã tạo, sửa, xoá, nhập, xuất... đối tượng nào và khi nào. Dùng để rà soát thao tác gần đây của nhân viên.

Tham số

Tham sốKiểuMô tả
store_idstringID workspace cần làm việc, lấy từ account-list-workspaces. Bắt buộc khi tài khoản có từ hai workspace trở lên; chỉ có một workspace thì bỏ trống.
from_datestringTừ thời điểm (ISO 8601), ví dụ 2026-10-01T00:00:00+07:00. Phải đi cùng to_date; thiếu một trong hai mốc thì dùng 30 ngày gần nhất.
to_datestringĐến thời điểm (ISO 8601), ví dụ 2026-10-31T23:59:59+07:00. Giá trị được so đúng thời điểm.
object_typestringLọc theo loại đối tượng, mã viết hoa, ví dụ CUSTOMER, FLOW, BROADCAST (chiến dịch), SEQUENCE, SEGMENT, TEMPLATE, VOUCHER, STAFF, TRIGGER, GOAL. Bỏ trống = tất cả.
actionstringLọc theo hành động, mã viết hoa, ví dụ CREATE, UPDATE, DELETE, DUPLICATE, IMPORT_CUSTOMER, EXPORT_CUSTOMER. Bỏ trống = tất cả.
keywordstringTìm theo tên hoặc email người thực hiện, khớp một phần, không phân biệt hoa thường.
pagenumberSố trang.Mặc định: 1
limitnumberSố dòng mỗi trang, tối đa 50.Mặc định: 20

Ví dụ

cURL
curl -X POST https://api.ladipage.net/2.0/api/lw-list-activity-logs \
  -H "api-key: $LADIPAGE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "from_date": "2026-10-01T00:00:00+07:00",
  "to_date": "2026-10-31T23:59:59+07:00",
  "action": "DELETE"
}'

Kết quả

Phản hồi mẫu · JSON
{
  "code": 200,
  "message": "Success",
  "data": {
    "from_date": "2026-10-01T00:00:00+07:00",
    "to_date": "2026-10-31T23:59:59+07:00",
    "object_type": "CUSTOMER",
    "action": "CREATE",
    "page": 1,
    "limit": 20,
    "total": 1,
    "count": 1,
    "field_labels": {
      "actor": "Người thực hiện",
      "action": "Hành động",
      "object_type": "Loại đối tượng",
      "object_name": "Đối tượng",
      "created_at": "Thời điểm"
    },
    "items": [
      {
        "actor": "Nguyễn Văn An",
        "actor_email": "an.nguyen@example.com",
        "action": "CREATE",
        "action_label": "Tạo mới",
        "object_type": "CUSTOMER",
        "object_type_label": "Khách hàng",
        "object_name": "Trần Thị Bình",
        "summary": "Nguyễn Văn An đã tạo mới Khách hàng Trần Thị Bình",
        "created_at": "2026-10-28T14:30:00+07:00"
      }
    ]
  }
}

from_date, to_date là khoảng thời gian đã áp dụng. actor là tên người thực hiện; summary là câu tóm tắt hành động.

Lưu ý

  • Sắp xếp theo thời điểm, mới nhất trước.
  • Thành viên vai trò Người xem (VIEWER) không gọi được API này.

Xem lịch sử nạp điểm và tiền Đọc

POST/2.0/api/lw-list-credit-topups

Xem các lần nạp điểm (APP_DEPOSIT) và nạp tiền (MONEY_ADD) vào tài khoản, kèm số dư trước và sau mỗi lần, và tổng đã nạp theo loại. Khác lw-list-credit-transactions (chi tiêu credit).

Tham số

Tham sốKiểuMô tả
store_idstringID workspace cần làm việc, lấy từ account-list-workspaces. Bắt buộc khi tài khoản có từ hai workspace trở lên; chỉ có một workspace thì bỏ trống.
from_datestringTừ thời điểm (ISO 8601), ví dụ 2026-01-01T00:00:00+07:00. Phải đi cùng to_date; thiếu một trong hai mốc thì dùng 12 tháng gần nhất.
to_datestringĐến thời điểm (ISO 8601), ví dụ 2026-10-31T23:59:59+07:00.
typestringLọc theo loại: APP_DEPOSIT (nạp điểm) | MONEY_ADD (nạp tiền). Bỏ trống = cả hai.Giá trị: APP_DEPOSIT, MONEY_ADD
pagenumberSố trang.Mặc định: 1
limitnumberSố dòng mỗi trang, tối đa 50.Mặc định: 20

Ví dụ

cURL
curl -X POST https://api.ladipage.net/2.0/api/lw-list-credit-topups \
  -H "api-key: $LADIPAGE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "from_date": "2026-01-01T00:00:00+07:00",
  "to_date": "2026-10-31T23:59:59+07:00"
}'

Kết quả

Phản hồi mẫu · JSON
{
  "code": 200,
  "message": "Success",
  "data": {
    "from_date": "2026-01-01T00:00:00+07:00",
    "to_date": "2026-10-31T23:59:59+07:00",
    "type": "",
    "page": 1,
    "limit": 20,
    "total": 2,
    "total_page": 1,
    "count": 2,
    "summary": {
      "total_points": 50000,
      "total_money": 2000000
    },
    "summary_labels": {
      "total_points": "Tổng điểm đã nạp",
      "total_money": "Tổng tiền đã nạp"
    },
    "summary_by_type": [
      {
        "type": "APP_DEPOSIT",
        "type_label": "Nạp điểm",
        "total": 50000
      },
      {
        "type": "MONEY_ADD",
        "type_label": "Nạp tiền",
        "total": 2000000
      }
    ],
    "field_labels": {
      "credit": "Giá trị",
      "type": "Loại",
      "description": "Mô tả",
      "before_balance": "Số dư trước",
      "after_balance": "Số dư sau",
      "created_at": "Thời điểm"
    },
    "items": [
      {
        "credit": 2000000,
        "type": "MONEY_ADD",
        "type_label": "Nạp tiền",
        "description": "Nạp tiền qua chuyển khoản",
        "before_balance": 350000,
        "after_balance": 2350000,
        "created_at": "2026-10-28T14:30:00+07:00"
      },
      {
        "credit": 50000,
        "type": "APP_DEPOSIT",
        "type_label": "Nạp điểm",
        "description": "Nạp điểm gói 50.000",
        "before_balance": 12000,
        "after_balance": 62000,
        "created_at": "2026-10-10T11:00:00+07:00"
      }
    ]
  }
}

summary: total_points là tổng điểm đã nạp, total_money là tổng tiền đã nạp. credit là giá trị của lần nạp.

Lưu ý

  • Sắp xếp theo thời điểm, mới nhất trước.
  • Số tiền làm tròn 2 chữ số thập phân.

Xem giao dịch chi tiêu credit Đọc

POST/2.0/api/lw-list-credit-transactions

Xem các giao dịch tiêu credit (điểm) của workspace khi gửi Zalo ZNS, SMS, email, gọi AI... kèm nguồn phát sinh, số điểm, số tiền, trạng thái, và tổng điểm, tổng tiền trong kỳ.

Tham số

Tham sốKiểuMô tả
store_idstringID workspace cần làm việc, lấy từ account-list-workspaces. Bắt buộc khi tài khoản có từ hai workspace trở lên; chỉ có một workspace thì bỏ trống.
from_datestringTừ thời điểm xử lý giao dịch (ISO 8601), ví dụ 2026-10-01T00:00:00+07:00. Phải đi cùng to_date; thiếu một trong hai mốc thì dùng 30 ngày gần nhất.
to_datestringĐến thời điểm xử lý giao dịch (ISO 8601), ví dụ 2026-10-31T23:59:59+07:00.
typestringLọc theo loại giao dịch (kênh), mã viết hoa, ví dụ ZALO (Zalo ZNS), SMS, EMAIL, ZALO_CARE, AI_CALL, EMAIL_AI, CONTENT_AI. Bỏ trống = tất cả.
sourcestringLọc theo nguồn phát sinh: FLOW | CAMPAIGN | SEQUENCE. Giá trị khác bị bỏ qua. Bỏ trống = tất cả.Giá trị: FLOW, CAMPAIGN, SEQUENCE
pagenumberSố trang.Mặc định: 1
limitnumberSố giao dịch mỗi trang, tối đa 50.Mặc định: 20

Ví dụ

cURL
curl -X POST https://api.ladipage.net/2.0/api/lw-list-credit-transactions \
  -H "api-key: $LADIPAGE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "from_date": "2026-10-01T00:00:00+07:00",
  "to_date": "2026-10-31T23:59:59+07:00",
  "type": "ZALO",
  "source": "CAMPAIGN"
}'

Kết quả

Phản hồi mẫu · JSON
{
  "code": 200,
  "message": "Success",
  "data": {
    "from_date": "2026-10-01T00:00:00+07:00",
    "to_date": "2026-10-31T23:59:59+07:00",
    "type": "",
    "source": "",
    "page": 1,
    "limit": 20,
    "total": 2,
    "count": 2,
    "summary": {
      "total_credits": 1530,
      "total_money": 1836000
    },
    "summary_labels": {
      "total_credits": "Tổng credit",
      "total_money": "Tổng tiền"
    },
    "field_labels": {
      "app_trans_id": "Mã giao dịch",
      "type": "Loại",
      "source_label": "Nguồn",
      "credits": "Credit",
      "money": "Số tiền",
      "status": "Trạng thái",
      "note": "Ghi chú",
      "updated_at": "Thời điểm xử lý"
    },
    "items": [
      {
        "app_trans_id": "ZNS2610280001",
        "type": "ZALO_ZNS",
        "type_label": "Zalo ZNS",
        "source_label": "Flow",
        "credits": 1520,
        "money": 1824000,
        "status": "DONE",
        "status_label": "Đã thanh toán",
        "note": "Flow chào mừng khách mới",
        "created_at": "2026-10-28T08:00:00+07:00",
        "updated_at": "2026-10-28T08:05:00+07:00"
      },
      {
        "app_trans_id": "SMS2610270002",
        "type": "SMS",
        "type_label": "SMS",
        "source_label": "Chiến dịch",
        "credits": 10,
        "money": 12000,
        "status": "PENDING",
        "status_label": "Đang chờ duyệt",
        "note": "Khuyến mãi tháng 11 - SMS",
        "created_at": "2026-10-27T09:00:00+07:00",
        "updated_at": "2026-10-27T09:15:00+07:00"
      }
    ]
  }
}

summary (total_credits, total_money) tính theo bộ lọc. app_trans_id là mã giao dịch; source_label: Flow | Chiến dịch | Sequence. status DONE = Đã thanh toán, các giá trị khác = Đang chờ duyệt. updated_at là thời điểm xử lý.

Lưu ý

  • Khoảng thời gian lọc theo thời điểm xử lý giao dịch (updated_at), không theo thời điểm tạo. Sắp xếp theo thời điểm xử lý, mới nhất trước.
  • Lọc type = ZALO trả các giao dịch có mã ZALO_ZNS.