Biz SMTP Form Autoresponder — Tự động gửi email sau khi lead điền form
Skill này biến form đăng ký trên landing page (tên/SĐT/email theo chuẩn traffic VN) thành 2 email tự động ngay khi user submit: (A) email warm welcome gửi cho lead, (B) email notification gửi cho owner. Email được draft riêng cho từng offer dựa vào context có sẵn từ pipeline biz-* (không generic "Cảm ơn anh/chị đã đăng ký, chúng tôi sẽ liên hệ sớm" — đó là copy đốt lead).
Triết lý: Email auto-responder là moment vàng. Lead vừa nhấn nút submit = đang ở peak intent. Email đến trong 30 giây phải (1) confirm họ submit đúng, (2) deliver thứ đã promise trong CTA (lead magnet / booking / payment link), (3) set expectation rõ bước tiếp theo. Một email auto-responder tốt = chuyển 20-40% lead nguội thành lead nóng. Một email generic = lead block sender hoặc forget tên brand trong 24h.
Tại sao SMTP (không lock vào 1 provider): SMTP là chuẩn mở — user pick được provider hợp túi tiền + region + compliance. Gmail SMTP free 500/ngày (đủ cho landing page <50 lead/ngày), Resend SMTP 3000/tháng, SendGrid 100/ngày forever-free, Brevo (phổ biến VN) 300/ngày free, hosting VN (Mắt Bão/PA/Inet) thường tặng kèm SMTP. Code dùng
nodemailer— swap provider chỉ cần đổi 4 env var, không sửa code. Tránh vendor lock-in.
Output skill: code patch + 2 email draft HTML responsive + env vars list + test plan. Skill KHÔNG tự gửi test email — user phải confirm draft trước, vì lead magnet link, brand voice, urgency wording đều thuộc tài sản của user.
Khi nào dùng skill này
- User vừa deploy landing page xong (qua
/biz-deploy-vercel) và form đang submit vào hư không. - User có landing page sẵn (Next.js, Vite, hoặc static HTML trên Vercel) và muốn wire email auto-responder.
- User đang build mới và muốn email integration ngay từ đầu trước khi deploy.
- User đã có Gmail/Google Workspace muốn tận dụng SMTP free thay vì tạo account provider mới.
- User có hosting VN (Mắt Bão, PA, Inet) có sẵn SMTP server muốn dùng.
KHÔNG dùng skill này khi:
- User muốn email marketing broadcast (newsletter, drip campaign 7-30 ngày) → Mailchimp/ConvertKit/MailerLite phù hợp hơn.
- User muốn SMS/Zalo OA auto-responder → use case khác.
- User muốn CRM tích hợp (lead vào Hubspot/Pipedrive/Notion DB) → skill khác.
- User cần cold email outreach hàng loạt → Instantly/Smartlead, không phải transactional.
Workflow tổng quan (7 phase)
Phase 0: DETECT PROJECT STACK (Next.js App / Pages / Vite / static HTML)
↓
Phase 1: PICK SMTP PROVIDER (Gmail / Resend SMTP / SendGrid / Mailgun / Brevo / Zoho / Custom)
↓
Phase 2: GATHER CONTEXT (offer.json + conversion-copy.md, hoặc đọc Next.js app/page.tsx, hoặc đọc HTML đã deploy)
↓
Phase 3: PICK EMAIL PATTERN (lead magnet / booking / payment / nurture)
↓
Phase 4: DRAFT 2 EMAIL (auto-responder + owner notification) — show user
↓
Phase 5: USER REVIEW & EDIT — iterate cho đến khi user duyệt
↓
Phase 6: WIRE CODE (install nodemailer + API route + form binding + env vars)
↓
Phase 7: PROVIDER SETUP + TEST PLAN — hướng dẫn lấy SMTP credentials, verify domain (nếu cần), test live
Mỗi phase dừng để user xác nhận — đặc biệt Phase 1 (provider choice), Phase 4-5 (email content), Phase 7 (provider DNS) vì đó là tài sản brand của user. Code generation ở Phase 6 thì skill chủ động hơn.
Phase 0 — Detect Project Stack
Đọc file root của project để xác định stack. Stack quyết định: API route đặt ở đâu, syntax import nodemailer, kiểu form binding (fetch hay form action).
| File phát hiện | Stack | API route path | Form binding |
|---|---|---|---|
next.config.js/mjs/ts + app/ folder | Next.js App Router | app/api/submit/route.ts | client component fetch('/api/submit') |
next.config.js/mjs/ts + pages/ folder | Next.js Pages Router | pages/api/submit.ts | client component fetch('/api/submit') |
vite.config.js/ts | Vite (React/Vue/Svelte) | api/submit.js (Vercel function) | client component fetch('/api/submit') |
package.json không có framework, có index.html | Static HTML | api/submit.js (Vercel function) | inline <script> với fetch('/api/submit') |
| Không có project local, chỉ có URL | Existing deployed page | Cần user clone repo trước hoặc chỉ ra repo path | — |
Đọc thêm để xác định form fields:
- Tìm
<form>trong code → liệt kê các<input name="...">đã có - Default expected (per project memory):
name,phone,email. Một số page thêm:company,message,budget,utm_source. - Nếu form chưa có → skill sẽ tạo form mới với 3 field tối thiểu (tên/SĐT/email) trong Phase 6.
Quan trọng: Nếu user chưa có project local (chỉ deploy được URL), dừng lại hỏi: "Anh/chị có repo local để em wire code không? Em cần edit file source. Nếu chỉ có URL, anh/chị clone repo về và chỉ em đường dẫn nhé." Không thể wire chỉ qua URL.
Phase 1 — Pick SMTP Provider
Hỏi user chọn 1 trong 7 provider. Mỗi provider có config SMTP khác nhau (host/port/auth), skill auto-fill template env vars khi user pick.
| # | Provider | Free tier | Phù hợp khi | SMTP host | Port | Notes |
|---|---|---|---|---|---|---|
| 1 | Gmail / Google Workspace | 500/ngày | User có sẵn Gmail/Workspace, traffic thấp | smtp.gmail.com | 587 (STARTTLS) | Bắt buộc App Password (2FA), KHÔNG xài password chính |
| 2 | Resend SMTP | 3000/tháng | Muốn deliverability cao + log đẹp, OK setup DNS | smtp.resend.com | 587 | User = resend, Pass = API key. Cần verify domain để gửi từ custom @brand.vn |
| 3 | SendGrid SMTP | 100/ngày forever-free | Stack đã quen SendGrid, cần webhook | smtp.sendgrid.net | 587 | User = apikey literal, Pass = API key |
| 4 | Mailgun SMTP | 100/ngày × 3 tháng | EU/US region, dev-friendly | smtp.mailgun.org (US) hoặc smtp.eu.mailgun.org (EU) | 587 | User/pass từ Mailgun domain settings |
| 5 | Brevo (Sendinblue) SMTP | 300/ngày forever-free | Popular VN, free tier rộng nhất, có VN support | smtp-relay.brevo.com | 587 | User = login email, Pass = SMTP key (khác API key) |
| 6 | Zoho Mail SMTP | 5/ngày free, $1/user/tháng | User đã xài Zoho Workspace | smtp.zoho.com | 587 | Cần App Password nếu bật 2FA |
| 7 | Custom SMTP | Phụ thuộc hosting | Hosting VN (Mắt Bão/PA/Inet/Nhân Hòa) tặng kèm SMTP, hoặc dùng Postfix tự host | User cung cấp | User cung cấp | User paste full host/port/user/pass |
Default recommendation theo offer type:
- Landing page <50 lead/ngày, user có Gmail → Gmail SMTP (zero cost, 5 phút setup).
- Landing page >50 lead/ngày hoặc cần deliverability pro → Brevo (free 300/ngày, deliverability tốt cho VN) hoặc Resend SMTP (3000/tháng, log đẹp).
- User muốn migration-proof, có thể self-host sau này → Custom SMTP ngay từ đầu.
Format câu hỏi cho user:
Anh/chị muốn dùng SMTP provider nào để gửi email tự động?
1. Gmail / Google Workspace (free 500/ngày, dễ nhất nếu đã có Gmail)
2. Resend SMTP (free 3000/tháng, deliverability cao, cần verify domain)
3. SendGrid SMTP (free 100/ngày forever, đã quen API)
4. Mailgun SMTP (free 100/ngày × 3 tháng)
5. Brevo / Sendinblue SMTP (free 300/ngày, popular VN)
6. Zoho Mail SMTP (nếu đã xài Zoho Workspace)
7. Custom SMTP (hosting VN của anh/chị có sẵn / tự host)
Nếu chưa có sẵn account nào, em đề xuất [Gmail nếu traffic thấp / Brevo nếu cần deliverability cao]. Anh/chị chọn số mấy?
Sau khi user chọn → lưu lại để Phase 6 inject vào env template + Phase 7 hướng dẫn lấy credentials đúng provider.
⚠️ Quan trọng — security: SMTP credentials (đặc biệt App Password Gmail) có quyền gửi email từ tài khoản của user. Không bao giờ hardcode vào source code. Luôn qua env var. Cảnh báo user rotate ngay nếu vô tình commit.
Phase 2 — Gather Context
Mục tiêu: hiểu offer đủ sâu để draft email không generic. 3 mode input:
Mode A — Có pipeline artifacts (richest)
User vừa chạy /biz-offer-alex-hormozi và/hoặc ui-ux-pro-max → có file:
output/<case-slug>/offer.json— segment, dream outcome, mechanism, bonus stack, guarantee, pricing (PRIMARY source of truth)output/<case-slug>/conversion-copy.md— hero block paste-ready (headline, subhead, CTA wording)output/<case-slug>/landing-page/app/page.tsx— Next.js sales page hiện tại đã build (đọc để biết sections + form fields đang dùng)
⚠️ Update 2026-05-14: Pipeline cũ có
layout.json+copy.json(từbiz-sales-page-layoutđã DEPRECATED) — quy trình mới SKIP 2 file đó. Chỉ cầnoffer.json+ đọc page.tsx là đủ context.
Đọc 3 source trên. Trích ra cho email:
- Segment + dream outcome → personalize subject line ("[Tên], lộ trình AI Agent 8 tuần đã sẵn sàng" thay vì "Welcome")
- Mechanism name → reinforce trong body ("Hệ thống PROMPT framework anh/chị sắp học...")
- Bonus stack → list trong email (nếu offer free/low-ticket có bonus deliver ngay)
- Guarantee text → quote nguyên trong email để giảm anxiety
- CTA wording → mirror trong email final CTA
Mode B — Có landing page nhưng không có json
User có HTML deployed nhưng không chạy biz-offer/biz-sales-page. Skill đọc HTML:
curl -s <URL>hoặc đọc fileindex.htmllocal- Parse hero h1, subheading, CTA button text, pricing block, guarantee block
- Từ đó infer offer type + segment
Mode B đủ tốt 80% case nhưng email kém personalized hơn Mode A. Suggest user: "Có thể chạy /biz-offer-alex-hormozi để có offer.json rồi quay lại đây, email sẽ chất hơn. Hoặc tiếp tục Mode B."
Mode C — Không có gì
User chỉ có form HTML, chưa có context. Skill phải phỏng vấn 5 câu nhanh:
- Sản phẩm/dịch vụ anh/chị bán là gì? (1 câu)
- Sau khi user điền form, anh/chị muốn gửi cho họ thứ gì? (PDF tải về / link booking / link payment / chỉ confirm và sẽ gọi sau)
- Tên brand + tên người gửi (sẽ hiện trong "From:")
- Email anh/chị muốn nhận notification lead mới
- Domain anh/chị sở hữu để verify SPF/DKIM (nếu chọn Resend/SendGrid/Mailgun/Brevo — Gmail thì skip)
Phase 3 — Pick Email Pattern
Mô hình 2-trigger (cho offer có checkout flow): Với low-ticket course / digital product có thanh toán online, có 2 trigger điểm khác nhau, gửi 2 email khác nhau. Đừng gộp vào 1 email duy nhất.
Lead điền form trên landing page
↓
[Trigger A — /api/submit]
↓
Email P3 (PRE-PAYMENT REMINDER, slim)
↓
Lead thanh toán xong → payment provider webhook
↓
[Trigger B — /api/payment-webhook]
↓
Email P5 (POST-PURCHASE ONBOARDING, full)
Quy tắc nội dung:
- P3 (pre-payment): chỉ có payment link + guarantee ngắn + urgency. KHÔNG list full deliverables/bonus stack — lead chưa "earn" được, list ra giảm urgency thanh toán.
- P5 (post-payment): deliver TOÀN BỘ — access link, full deliverables, bonus stack, group link, lịch office hour, 1 câu hỏi follow-up để personalize. Đây mới là moment vàng.
(Đọc memory feedback_email-autoresponder-2-stage-flow cho rationale chi tiết.)
Từ context Phase 2, chọn pattern phù hợp. Đọc references/email-formulas.md cho template chi tiết tiếng Việt.
| Pattern | Trigger | Khi nào dùng | Subject hint |
|---|---|---|---|
| P1 — Lead Magnet Delivery | Form submit | Offer = tải PDF/ebook/template/swipe file/checklist free | "[Tên], tài liệu [X] đã sẵn sàng — mở file ngay 👇" |
| P2 — Booking Confirmation | Form submit | Offer = đặt lịch call/consultation/demo/free strategy session | "[Tên], đã ghi nhận đăng ký buổi tư vấn — bước tiếp theo bên trong" |
| P3 — Pre-Payment Reminder | Form submit (chưa pay) | Offer = sản phẩm low-ticket (199K-3M VND), email dẫn về checkout | "[Tên], link thanh toán [Khóa X] — giữ giá ưu đãi 24h ⏰" |
| P4 — Nurture (Sale call upcoming) | Form submit | Offer = high-ticket coaching/agency 5M-50M+ VND, sales team sẽ call trong 24h | "[Tên], em [Người gọi] sẽ liên hệ trong 24h — checklist chuẩn bị bên trong" |
| P5 — Post-Purchase Onboarding | Payment webhook | Lead vừa thanh toán xong — deliver full value + 1 câu hỏi personalize | "🎉 Chào mừng [Tên] vào [Khóa X] — mở khoá ngay" |
Quy tắc chọn pattern:
- Offer = free download/training → P1 only (1 trigger, 1 email).
- Offer = booking call free → P2 only (1 trigger, 1 email).
- Offer = low-ticket có thanh toán online (Stripe/Momo/ZaloPay/Sepay) → P3 + P5 (2 trigger, 2 email).
- Offer = high-ticket sale call → P4 only, follow-up qua sales team (onboarding sau khi close deal là 1 process khác).
Skill đề xuất pattern phù hợp + lý do, hỏi user confirm. Ví dụ: "Dựa vào offer.json em thấy đây là khoá 1.99M VND có payment integration. Em đề xuất setup 2 email: P3 (nhắc thanh toán khi điền form) + P5 (onboarding sau khi pay xong + 1 câu hỏi personalize). Anh/chị đồng ý hay chỉ muốn 1 email P3 trước?"
Phase 4 — Draft 2 Email
Generate 2 email tiếng Việt thuần (xưng anh/chị), mobile-responsive HTML.
Email A — Auto-responder gửi cho lead
Cấu trúc 6 block (đọc references/email-formulas.md cho wording cụ thể per pattern):
- Subject line — personalized với
{{name}}, ngắn dưới 50 ký tự, có 1 emoji nhẹ ở cuối nếu phù hợp brand voice (✉️ 👇 ✓), tránh spam trigger ("FREE", "$$$", "guarantee" caps). - Preview text — 1 câu hiển thị dưới subject trong inbox, giải thích value email mở ra.
- Greeting — "Chào anh/chị {{name}}," — không "Dear", không "Xin chào quý khách".
- Body chính — theo pattern đã chọn. Quy tắc:
- Ngắn (dưới 200 từ).
- Có 1 link/button CTA primary rõ ràng.
- Reference cụ thể tên offer/mechanism từ context (không "sản phẩm của chúng tôi").
- Nếu Pattern P3/P4 → có 1 urgency reminder + 1 reassurance (guarantee).
- Signature — Tên người gửi + tên brand + 1 link contact (Zalo/Phone/Website).
- Footer — Address (luật anti-spam yêu cầu) + unsubscribe link (cần cho compliance, dù transactional cũng nên có).
Email B — Notification gửi cho owner
Cấu trúc nội bộ, gửi đến email owner đã cung cấp:
- Subject: "🚨 Lead mới từ [Brand] — {{name}}, {{phone}}, {{email}}"
- Body: Gồm: tên lead, SĐT, email, thời gian submit, UTM params (nếu có), và 1 link đến lead dashboard (nếu có).
- Footer: "Đây là email tự động từ landing page [URL].
Phần còn lại của SKILL.md đã được cắt ngắn trong bản gốc. Nội dung trên đã được dịch và điều chỉnh theo đúng cấu trúc markdown.