Tiếp nối series “Kiến trúc thương mại điện tử hiện đại”, với chủ đề “Thiết kế hệ thống Loyalty và Membership (tích điểm, hạng thành viên)” — đây là module giúp tăng tỷ lệ quay lại (retention), tăng LTV và xây dựng tập khách hàng trung thành.
loyalty_program_3_762824707b.jpg

1) Vì sao cần Loyalty & Membership?

  • Chi phí giữ chân khách hàng rẻ hơn nhiều so với tìm khách mới
  • Tăng giá trị vòng đời khách hàng (CLV / LTV)
  • Tăng tần suất mua hàng, khuyến khích mua thêm để lên hạng cao hơn
  • Cung cấp dữ liệu để cá nhân hóa marketing & ưu đãi
  • Shopee, Tiki, Lazada… đều có hệ thống tích điểm và hạng thành viên như một phần cốt lõi để giữ chân khách.

2) Tổng quan kiến trúc

[Order Service]
     ↓
[Event Bus (:contentReference[oaicite:3]{index=3}/:contentReference[oaicite:4]{index=4})]
     ↓
[Loyalty Service] ←→ [Membership Service]
     ↓
[Point Ledger DB] + [Tier DB]
     ↓
[Reward API / Promotion Engine / CMS]
     ↓
[Web/App hiển thị điểm, hạng, phần thưởng]
  • Tách Loyalty thành service riêng để scale độc lập.
  • Giao tiếp event-driven với Order (nhận sự kiện mua hàng → cộng điểm).
  • Membership Service quản lý cấp bậc/hạng dựa trên điểm tích lũy.

3) Cơ chế tích điểm

3.1 Nguyên tắc

  • Tích điểm theo giá trị đơn hàng: earned_points = floor(order_amount / rate)
  • Có thể cộng điểm bonus cho hành vi: review sản phẩm, mời bạn bè, tham gia campaign

3.2 Dữ liệu

point_transaction
txn_id, user_id, order_id, type (earn/redeem/expire/adjust), points, status, created_at
point_balance
user_id, available_points, lifetime_points, updated_at
Dùng ledger-based design (ghi nhật ký giao dịch điểm) để dễ audit và rollback.

4) Cơ chế đổi điểm (Redeem)

  • Cho phép dùng điểm để giảm giá đơn hàng (convert points → money)
  • Đặt conversion rate: ví dụ 100 điểm = 10.000đ
    Khi checkout:
  • Lock số điểm user → apply giảm giá
  • Khi thanh toán thành công mới trừ điểm
  • Có thể hỗ trợ đổi điểm lấy voucher, quà tặng, miễn phí ship

5) Cơ chế hạng thành viên (Tier / Membership)

Screenshot 2025-09-19 113354.png
  • Tính tổng chi tiêu hoặc điểm tích lũy trong chu kỳ (rolling 12 tháng)
  • Cron job hoặc event-driven cập nhật tier định kỳ
  • Lưu vào bảng membership_tier(user_id, tier, valid_until)

6) Tích hợp với hệ thống khác

  • Promotion Engine: tạo campaign chỉ áp dụng cho tier nhất định
  • Checkout: cho phép dùng điểm để giảm giá
  • CMS: hiển thị banner cá nhân hóa theo tier
  • Recommendation Engine: đề xuất sản phẩm phù hợp tier cao
  • Analytics: đo retention, churn, LTV theo tier

7) Các vấn đề kỹ thuật cần lưu ý

  • Concurrency: lock optimistic khi cộng/trừ điểm để tránh race condition
  • Expiration: điểm có thể hết hạn → lưu expire_at từng giao dịch điểm
  • Rollback: nếu đơn bị hủy → phát sự kiện OrderCancelled để trừ điểm lại
  • Anti-fraud: giới hạn điểm kiếm được từ hành vi phi thương mại (spam review)
  • Observability: log đủ các event điểm để điều tra tranh chấp

8) Hiển thị UX/UI

  • Trang “Tài khoản của tôi” → hiển thị điểm hiện có + lịch sử giao dịch điểm
  • Hiển thị tiến trình lên hạng (Bạn còn 300k để lên Gold)
  • Thông báo tự động khi lên hạng mới hoặc sắp hết hạn điểm
  • Gợi ý ưu đãi riêng cho từng tier

9) Kết luận

  • Loyalty & Membership là trụ cột xây dựng khách hàng trung thành, giúp tăng doanh thu dài hạn và tạo lợi thế cạnh tranh.
  • Loyalty: tích điểm → redeem → expire
  • Membership: phân hạng → cá nhân hóa ưu đãi
  • Cần thiết kế ledger chuẩn, event-driven, chống gian lận, dễ mở rộng
Gợi ý: bắt đầu đơn giản (chỉ tích điểm theo đơn hàng), sau đó bổ sung tier, redeem, campaign khi đã có lượng user lớn.