N8N

Ok anh chọn 1) WordPress
Dưới đây là bản node-by-node để anh triển khai n8n → WordPress (LearnDash/LifterLMS) → tự tạo tài khoản → gán khóa học → gửi email/Zalo.

Tôi sẽ thiết kế theo hướng không phụ thuộc plugin “lạ”: dùng WordPress REST API + WooCommerce/Stripe webhook + n8n là chạy.


Kiến trúc khuyến nghị (ổn định, ít lỗi)

  • WordPress + LearnDash (hoặc LifterLMS)

  • WooCommerce + Stripe (hoặc cổng thanh toán có webhook)

  • n8n (3 workflow)

  • Google Sheet (lưu lead + trạng thái)


WF-01 — Lead Intake → Tính số → Lưu lead → Gửi kết quả + link mua

Node 1: Webhook (Lead In)

Nhận dữ liệu từ:

  • Form Ladipage/Tally/Typeform (khuyến nghị)

  • ManyChat/Zalo OA cũng được

Expected JSON

{ "name":"...", "dob":"DD/MM/YYYY", "email":"...", "phone":"...", "channel":"tiktok" }

Node 2: Function (Validate & Normalize)

  • Check email có hay không (không có vẫn lưu lead)

  • Chuẩn hóa dob, loại ký tự thừa

Node 3: Function (Compute Numerology)

Dùng đoạn code tôi đưa trước (tính ruling_number, master_number, personal_year).

Node 4: Google Sheets (Append Row)

Cột gợi ý:

  • created_at, name, dob, email, phone, channel

  • ruling_number, master_number, personal_year

  • status = NEW

  • tags = lead

Node 5: IF (Master?)

  • Nếu master_number tồn tại → nhánh Master

  • Không có → nhánh thường

Node 6: Send Email (SMTP/Gmail node)

Gửi kết quả soi nhanh + CTA:

  • Link landing page mua khóa học

  • Link mua gói xem số (upsell)

Nếu anh muốn gửi Zalo OA: thay node này bằng HTTP Request gọi Zalo OA API (anh cung cấp OA token).


WF-02 — Payment Success → Tạo user WP → Gán khóa LearnDash/LifterLMS → Gửi thông tin đăng nhập

A) Nhận thanh toán (2 cách)

Cách A1 (khuyến nghị): Stripe Webhook → n8n

  • Node 1: Webhook (Stripe Success)
    Nhận event: checkout.session.completed hoặc invoice.payment_succeeded

Đầu vào cần có

  • email khách

  • tên

  • product/course_id (map)

  • transaction_id

Cách A2: WooCommerce Webhook → n8n

  • WooCommerce → Settings → Advanced → Webhooks

  • Event: Order created / Order updated

  • Trigger: “Order paid/processing/completed”

  • URL: webhook n8n


B) Tạo tài khoản WordPress tự động

Node 2: Function (Map Course)

Map “gói mua” → “course_id LearnDash” hoặc “membership LifterLMS”
Ví dụ:

  • COURSE_BASIC → course_id = 123

  • COURSE_PRO → course_id = 456

Node 3: HTTP Request (Check WP user by email)

Gọi REST API WP để tìm user theo email.

Option 1 (dễ nhất): dùng Application Passwords (WP 5.6+)

  • Tạo App Password cho 1 user admin kỹ thuật

  • Auth Basic: username:app_password

Endpoint tìm user theo email: WP core không filter email mặc định trên /wp/v2/users. Cách làm ổn:

  • Tạo 1 endpoint nhỏ (snippet plugin) cho “get user by email”

  • Hoặc đơn giản: thử tạo user, nếu báo “email exists” thì chuyển sang nhánh “user already exists”.

Tôi viết theo cách không cần endpoint phụ:

Node 4: HTTP Request (Create WP User)

POST:
https://yourdomain.com/wp-json/wp/v2/users

Body JSON:

{
"username": "{{ $json.email.split('@')[0] }}{{ $json.transaction_id.slice(-4) }}",
"name": "{{ $json.name }}",
"email": "{{ $json.email }}",
"password": "{{ $json.generatedPassword }}",
"roles": ["subscriber"]
}

Node 5: IF (Create user failed because email exists?)

  • Nếu tạo user thành công → lấy user_id

  • Nếu lỗi “existing user” → đi nhánh “Get user id” (cần endpoint phụ)

Giải pháp nhanh để khỏi viết endpoint phụ:

  • Cài plugin WP Webhooks (phổ biến) hoặc viết 20 dòng snippet tạo endpoint /get-user-id-by-email.
    Nếu anh ok, tôi gửi luôn snippet.


C) Gán khóa học tự động

Nếu anh dùng LearnDash

LearnDash có function/endpoint nội bộ; cách ổn định nhất là:

  • Gọi custom endpoint (snippet nhỏ) để:

    1. enroll user vào course_id

    2. (tuỳ chọn) mark as “enrolled”

Node 6: HTTP Request (Enroll LearnDash)

POST:
https://yourdomain.com/wp-json/moneyflow/v1/ld-enroll

Body:

{ "user_id": 789, "course_id": 123 }

Nếu anh dùng LifterLMS

Tương tự: tạo endpoint enroll membership/course.

Vì LearnDash/LifterLMS mỗi bản có khác nhau, cách “ăn chắc” là làm 1 endpoint trung gian để enroll. n8n chỉ việc gọi endpoint đó.


D) Gửi thông tin đăng nhập + link vào học

Node 7: Send Email (Welcome + Login)

Tiêu đề: [MoneyFlow28] Mở khóa thành công – Thông tin vào học

Nội dung mẫu:

Chào {{name}},
Bạn đã thanh toán thành công.

✅ Tài khoản học của bạn: {{email}}
✅ Mật khẩu tạm: {{generatedPassword}}
✅ Link đăng nhập: https://yourdomain.com/login
✅ Vào khóa học: https://yourdomain.com/courses/{{course-slug}}

Khuyến nghị: đăng nhập xong hãy đổi mật khẩu để bảo mật.

Node 8: Google Sheets (Update status)

status = PAID + ENROLLED
kèm: user_id, course_id, order_id


WF-03 — Follow-up tự động (nuôi lead → chốt)

Node 1: Cron (mỗi ngày 9:00)

Node 2: Google Sheets (Read rows)

lọc status = NEW, chưa mua sau 2h/24h/72h

Node 3: IF theo “last_contact”

Node 4: Send Email / Zalo message


Cái anh cần làm trong WordPress (1 lần là xong)

1) Bật Application Passwords

WP 5.6+ → User Profile → Application Passwords → tạo password cho user kỹ thuật.

2) Tạo 2 endpoint nhỏ (khuyến nghị)

  • ld-enroll (enroll LearnDash)

  • get-user-id-by-email (nếu email đã tồn tại)

Nếu anh trả lời “OK”, tôi sẽ gửi luôn 2 đoạn code plugin/snippet (copy dán vào functions.php hoặc làm mini plugin) để endpoint hoạt động ngay.


Checklist triển khai nhanh (đúng “cầm tay chỉ việc”)

  1. Tạo Google Sheet + cột như trên

  2. Tạo 3 workflow n8n: WF-01, WF-02, WF-03

  3. Gắn form landing → Webhook WF-01

  4. Gắn Stripe/Woo webhook → WF-02

  5. Test 1 đơn thanh toán → kiểm tra user + course enrollment + email


Anh trả lời 1 câu để tôi “đóng gói cuối” cho đúng

Anh đang dùng LearnDash hay LifterLMS?

  • LD = LearnDash

  • LLMS = LifterLMS

Anh chỉ cần trả lời: LD hoặc LLMS. Tôi sẽ viết đúng snippet endpoint enroll tương ứng (copy là chạy).

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *