Tất cả bài viết

Hướng dẫnTự động hoán8nGoogle Sheets

Chấm điểm lead từ 0 đến 100 bằng n8n và Google Sheets

Lead nào đáng gọi trước? Cho mỗi lead một điểm, kèm lý do đọc được.

Hoàng Huy Đức · 4 phút đọc

FACEBOOKWEBSITEGIỚI THIỆULEADSĐIỂMNHÓM90NÓNG50ẤM5LẠNH90NÓNG50ẤM5LẠNH04070100··90505LẠNHẤMNÓNG

Một lead vừa xin báo giá sáng nay không nên phải xếp hàng sau một lead chỉ nhắn “xin chào”. Điểm từ 0 đến 100 quyết định thứ tự, và mỗi điểm đi kèm một lý do mà cả đội đọc được, kiểm được và sửa được.

Bài này dựng việc đó trong n8n và ghi mọi lead vào Google Sheets. Từng bước dưới đây đã được chạy thật trên n8n 2.41.4 tự cài, với sáu lead mẫu, trước khi được viết ra.

Các quy tắc

Mỗi quy tắc cộng hoặc trừ điểm. Điểm luôn nằm trong khoảng 0 đến 100.

  • Nguồn: được giới thiệu 25, form trên website 20, Facebook Lead Ads 15, nguồn khác 5.
  • Quy mô đội: từ 50 người trở lên 20, từ 10 đến 49 người 15, dưới 10 người 5.
  • Ngân sách: đã có ngân sách 20, “chưa rõ” 5.
  • Có số điện thoại: 10.
  • Từ khoá mua hàng trong tin nhắn (báo giá, giá, demo, triển khai): 15.
  • Email cá nhân (Gmail, Yahoo, Hotmail) thay vì email công ty: trừ 10.

Sau đó chia ba nhóm: nóng từ 70, ấm từ 40 đến 69, lạnh dưới 40. Nóng nghĩa là một người gọi lại trong vòng một giờ.

Workflow

  1. Đầu vàoCó lead mớiForm gửi vào webhook.
  2. Quy tắcChấm điểmQuy tắc rõ ràng, kèm lý do.
  3. Quy tắcXếp nhómNóng, ấm hay lạnh.
  4. Đầu raGhi lạiMột dòng trong Google Sheets.
  5. Con ngườiNgười gọi lạiLead nóng, trong vòng một giờ.
Màu đỏ là bước duy nhất do người làm: cuộc gọi.
Workflow đã chạy thử trong trình soạn n8n: Webhook, Score, Tier với ba nhánh nóng, ấm, lạnh, ba node Set, Join, Append row và Respond to Webhook.
Workflow đã chạy thử, trong trình soạn của n8n.

Dựng trong n8n

  1. Webhook. Method POST, path lead, phần trả lời chọn “Using ‘Respond to Webhook’ node”. Cho các form của bạn gửi vào production URL của nó.
  2. Code node “Score”. Dán đoạn quy tắc bên dưới. Mỗi quy tắc cộng điểm và ghi lý do, nên cả đội thấy vì sao lead có số điểm đó.
const b = $input.item.json.body || {};
const s = (v) => String(v ?? '').toLowerCase().trim();
let score = 0;
const reasons = [];
const add = (pts, why) => { score += pts; reasons.push(`${why} (${pts > 0 ? '+' : ''}${pts})`); };

// 1. Nguồn lead
const src = s(b.source);
add({ referral: 25, website_form: 20, facebook_lead_ads: 15 }[src] ?? 5, `Nguồn: ${src || 'khác'}`);

// 2. Quy mô đội ngũ
const team = Number(b.team_size);
if (team >= 50) add(20, `Đội ${team} người`);
else if (team >= 10) add(15, `Đội ${team} người`);
else if (team > 0) add(5, `Đội ${team} người`);

// 3. Ngân sách
const budget = s(b.budget);
if (budget === 'chưa rõ') add(5, 'Ngân sách chưa rõ');
else if (budget) add(20, 'Đã có ngân sách');

// 4. Số điện thoại
if (s(b.phone)) add(10, 'Có số điện thoại');

// 5. Từ khóa mua hàng trong tin nhắn
if (/báo giá|giá|demo|triển khai|quote|pricing/i.test(b.message || '')) add(15, 'Hỏi giá/demo/triển khai');

// 6. Email cá nhân thay vì email công ty
if (/@(gmail|yahoo|hotmail)\./.test(s(b.email))) add(-10, 'Email cá nhân');

score = Math.max(0, Math.min(100, score));
return { json: { name: b.name || '', source: src || 'khác', score, reasons } };
  1. Switch node “Tier”. Chế độ Rules, ba nhánh đổi tên thành hot, warm và cold: score từ 70 trở lên; score từ 40 trở lên và dưới 70; score dưới 40.
  2. Mỗi nhóm một Set node. Thêm tier và next_action, ví dụ “Gọi trong 1 giờ”, “Gửi email trong ngày” và “Đưa vào danh sách nuôi dưỡng”.
  3. Join. Một node No Operation mà cả ba nhánh cùng chảy vào, để các bước sau chỉ phải dựng một lần.
  4. Google Sheets, Append row. Nối các cột time, name, source, score, tier, next_action và reasons.
  5. Respond to Webhook. Trả về score, tier, next_action và reasons dạng JSON, để form hoặc người đang thử thấy kết quả ngay.

Bật (publish) workflow rồi gửi thử một lead:

curl -X POST https://your-n8n/webhook/lead -H 'content-type: application/json' \
  -d '{"name": "Lead mẫu 1", "email": "an@congty-mau.example", "source": "referral", "team_size": 60, "budget": "200 triệu", "phone": "0900000001", "message": "Cần báo giá và demo triển khai cho 60 người"}'

Lần chạy thử trả về:

{"score":90,"tier":"hot","next_action":"Gọi trong 1 giờ","reasons":["Nguồn: referral (+25)","Đội 60 người (+20)","Đã có ngân sách (+20)","Có số điện thoại (+10)","Hỏi giá/demo/triển khai (+15)"]}

Sáu lead mẫu được bao nhiêu điểm

  • 90, nóng. Được giới thiệu, đội 60 người, đã có ngân sách, có số điện thoại và xin báo giá.
  • 50, ấm. Form website, đội 12 người, ngân sách chưa rõ, có số điện thoại.
  • 0, lạnh. Nguồn khác, đội 3 người, dùng Gmail.
  • 5, lạnh. Chỉ có tên: quy tắc vẫn trả lời, với điểm của “nguồn khác”.
  • 0, lạnh. 5 trừ 10 sẽ ra số âm, nên điểm dừng ở 0.
  • 70, nóng. Đúng ngưỡng, vẫn tính là nóng.

Cả sáu lead đều được ghi thành dòng trong sheet thử.

Ba chuyện gặp khi chạy thử

  • Lần gọi đầu ngay sau khi publish bị lỗi “The requested webhook “POST lead” is not registered.” Vài giây sau, gọi lại thì chạy. Hãy đợi một chút trước lần thử đầu tiên.
  • n8n không cho publish khi node Google Sheets chưa có credential. Kết nối Google trước, hoặc tắt node đó cho đến khi kết nối xong.
  • Một lần ghi bị Google trả lỗi 502, gửi lại đúng lead đó thì được. Bật Retry On Fail trong phần cài đặt của node để n8n tự thử lại.

Nếu bạn tự cài n8n: phiên bản này cần Node.js 24 trở lên.

Kết nối Google Sheets

Bản chạy thử kết nối Sheets bằng một OAuth client Google có sẵn. Với một bản n8n tự cài mới, hướng dẫn của n8n liệt kê các bước: tạo project trên Google Cloud và bật Google Sheets API, thiết lập màn hình đồng ý OAuth, tạo OAuth client loại “Web application” với redirect URL của n8n, rồi dán ID và secret vào credential và đăng nhập Google.

Để người quyết định

  • Điểm chỉ xếp thứ tự; người mới quyết định. Lead nóng được một người gọi, không phải một tin nhắn tự động.
  • Mỗi tuần đọc lại các lead điểm thấp. Mở năm lead lạnh và xem quy tắc có bỏ sót gì không. Sửa điểm, đừng đổ lỗi cho người.
  • Bắt đầu từ file đã chạy thử. Tải workflow rồi import vào n8n. Bước Google Sheets đang tắt cho đến khi bạn kết nối tài khoản của mình.

Chấm điểm lead trong công việc của Đức

Hoàng Huy Đức thiết kế lớp tự động hoá bên dưới marketing và sales tại Savyu, trong đó có chấm điểm và phân bổ lead (LinkedIn, tháng 9/2026). Xem dịch vụ để biết một dự án như vậy trông ra sao.