Email Marketing อัตโนมัติด้วย n8n: ส่งเมลตาม Segment
สร้างระบบ Email Marketing อัตโนมัติด้วย n8n เชื่อม SMTP หรือ SendGrid แบ่ง segment ผู้รับ ส่งเมลตามพฤติกรรม และวัด open rate click rate อัตโนมัติ
Email marketing ยังคงให้ ROI สูงที่สุดในบรรดาช่องทาง digital marketing ทุกวันนี้ แต่การส่งเมล blast เดียวกันไปทุกคนได้ผลน้อยลงมากเมื่อเทียบกับการส่งเมลที่ตรงกับพฤติกรรมและความสนใจของแต่ละกลุ่ม n8n ทำ segmentation และ triggered emails ได้โดยไม่ต้องจ่ายค่า Email Marketing platform แพงๆ
ระบบที่สร้างด้วย n8n เหมาะกับธุรกิจที่มีรายชื่อไม่เกิน 50,000 รายการ และต้องการ logic การส่งที่ยืดหยุ่นกว่าที่ tools สำเร็จรูปให้ได้ เช่น เงื่อนไขที่ดึงข้อมูลจากระบบ CRM, ร้านค้า หรือ database ของตัวเอง
เลือก Email Provider ที่ใช้ร่วมกับ n8n
n8n มี node สำเร็จรูปสำหรับ email หลายตัว
| Provider | n8n Node | ราคา | เหมาะกับ |
|---|---|---|---|
| Gmail | Gmail node | ฟรี (500/วัน) | ทดสอบ, volume น้อย |
| SendGrid | SendGrid node | ฟรีถึง 100/วัน | SME, volume ปานกลาง |
| Mailchimp | Mailchimp node | ฟรีถึง 1,000/เดือน | มี list management ในตัว |
| SMTP | Email node | ตามค่า hosting | มี SMTP server อยู่แล้ว |
| AWS SES | HTTP Request | $0.10/1000 เมล | volume สูง, ราคาถูก |
สำหรับการเริ่มต้น SendGrid ให้ 100 เมลฟรีต่อวันและ API ใช้งานง่าย
ขั้นตอนที่ 1: ตั้งค่า SendGrid
- สมัครที่ sendgrid.com
- ไปที่ Settings → API Keys → Create API Key
- เลือก “Full Access” หรือ Custom ที่มีสิทธิ์ Mail Send
- ใน n8n ไปที่ Credentials → SendGrid API → ใส่ API Key
ตั้งค่า Sender Authentication ใน SendGrid ด้วย เพื่อให้เมลผ่าน spam filter และ open rate ดีขึ้น
ขั้นตอนที่ 2: ออกแบบ Database รายชื่อ
ใช้ Google Sheets หรือ database เก็บข้อมูลผู้รับ
Sheet: subscribers
| คอลัมน์ | ตัวอย่าง |
|---|---|
| user@example.com | |
| first_name | สมชาย |
| last_name | ใจดี |
| segment | customer, lead, vip |
| subscribed_at | 2026-01-15 |
| last_purchase_date | 2026-03-20 |
| total_spend | 15000 |
| last_email_sent | 2026-04-01 |
| open_count | 12 |
| click_count | 5 |
| unsubscribed | FALSE |
| tags | new_customer,promo_accepted |
กฎ Segmentation ตัวอย่าง:
- VIP: total_spend > 10,000 และ last_purchase_date ภายใน 90 วัน
- Lapsed: ซื้อครั้งสุดท้ายนานกว่า 180 วัน
- New: subscribed ภายใน 30 วัน ยังไม่เคยซื้อ
- Engaged: open_count > 5 ใน 3 เดือนล่าสุด
Workflow 1: Welcome Email Series
Trigger: มี subscriber ใหม่เข้ามา (Webhook จาก form หรือ Google Sheets รายการใหม่)
Webhook / Google Sheets Trigger
→ Code: ตรวจสอบว่าส่ง welcome แล้วยัง
→ IF: ยังไม่ได้ส่ง?
→ SendGrid: ส่ง Email วันที่ 1
→ Google Sheets: บันทึก "welcome_sent: true"
→ Wait 3 วัน
→ SendGrid: ส่ง Email วันที่ 3 (Tips & Resources)
→ Wait 4 วัน
→ SendGrid: ส่ง Email วันที่ 7 (Case Study / Social Proof)
Workflow 2: Segment-based Broadcast
ส่ง newsletter ไปยังกลุ่มเฉพาะ รันทุกอาทิตย์
Schedule Trigger (ทุกวันอังคาร 10:00)
→ Google Sheets: ดึง subscribers ทั้งหมดที่ unsubscribed = FALSE
→ Code: คัดแยกตาม segment logic
→ Split In Batches (batch size 50)
→ Loop:
→ Code: สร้าง personalized content ตาม segment
→ SendGrid: ส่งเมล
→ Wait 1 วินาที (rate limiting)
→ Google Sheets: update last_email_sent
→ Log: บันทึกสถิติการส่ง
Code node สำหรับสร้าง personalized content:
const subscriber = $input.first().json;
let subject, preheader, cta_text, cta_url;
if (subscriber.segment === 'vip') {
subject = `${subscriber.first_name} สิทธิพิเศษสำหรับลูกค้า VIP เดือนนี้`;
preheader = 'ส่วนลด 20% เฉพาะคุณ';
cta_text = 'ดูสิทธิพิเศษ';
cta_url = 'https://yoursite.com/vip-offer';
} else if (subscriber.segment === 'lapsed') {
subject = `${subscriber.first_name} เรายังคิดถึงคุณอยู่`;
preheader = 'กลับมาช้อปรับส่วนลด 15%';
cta_text = 'ช้อปเลย';
cta_url = 'https://yoursite.com/comeback';
} else {
subject = 'อัปเดตสินค้าใหม่ประจำสัปดาห์';
preheader = 'สินค้าใหม่มาแล้ว';
cta_text = 'ดูสินค้าใหม่';
cta_url = 'https://yoursite.com/new-arrivals';
}
return [{
json: {
...subscriber,
email_subject: subject,
email_preheader: preheader,
email_cta_text: cta_text,
email_cta_url: cta_url
}
}];
Workflow 3: Abandoned Cart Email
Trigger: ลูกค้าเพิ่มสินค้าในตะกร้าแต่ไม่ checkout ภายใน 1 ชั่วโมง
Webhook (จาก e-commerce platform)
→ Code: ตรวจสอบว่ามี cart item
→ Wait 1 ชั่วโมง
→ HTTP Request: ตรวจสอบว่า order complete แล้วหรือยัง
→ IF: ยังไม่ complete?
→ SendGrid: ส่ง Abandoned Cart Email
→ Wait 24 ชั่วโมง
→ HTTP Request: ตรวจอีกครั้ง
→ IF: ยังไม่ complete?
→ SendGrid: ส่งเมล reminder พร้อมส่วนลด
วัด Open Rate และ Click Rate
SendGrid รองรับ Event Webhook ที่ส่ง event กลับมาเมื่อมี open หรือ click สร้าง Webhook endpoint ใน n8n รับ event แล้วอัปเดต Google Sheets
n8n Webhook endpoint:
POST /webhook/sendgrid-events
Body (จาก SendGrid):
[
{
"email": "user@example.com",
"event": "open",
"timestamp": 1712345678,
"sg_message_id": "abc123"
}
]
Update Sheets:
// เพิ่ม open_count หรือ click_count
const event = $input.first().json;
if (event.event === 'open') {
// หา row ใน subscribers sheet แล้ว +1 open_count
} else if (event.event === 'click') {
// +1 click_count
} else if (event.event === 'unsubscribe') {
// set unsubscribed = TRUE
}
จัดการ Unsubscribe อย่างถูกต้อง
กฎหมาย PDPA ของไทยและ CAN-SPAM กำหนดให้มีกลไก unsubscribe ทุกเมล ใช้ SendGrid Unsubscribe Group หรือสร้างระบบเอง ทุก unsubscribe event จาก SendGrid Webhook ต้องอัปเดต database ทันทีและหยุดส่งเมลไปยัง email นั้น ไม่มีข้อยกเว้น
อยากเรียน n8n แบบเป็นระบบ ตั้งแต่เริ่มต้นจนสร้าง Workflow ใช้งานจริงได้ ลองดู คอร์สสอน n8n ที่ aiunlock.co
Related posts
แจ้งเตือนหลายช่องทางพร้อมกันด้วย n8n: LINE + Email + Slack
สร้าง workflow n8n ส่ง notification ไปพร้อมกันทั้ง LINE Email และ Slack จาก trigger เดียว ตั้งค่า routing ตามความสำคัญ และสร้าง escalation chain อัตโนมัติ
AI ตอบอีเมลอัตโนมัติด้วย n8n + ChatGPT
สร้างระบบ AI ตอบอีเมลอัตโนมัติด้วย n8n และ ChatGPT จำแนกประเภทอีเมล ร่างคำตอบ และส่งหรือรอ approve ตามที่ตั้งค่า
Automation สำหรับร้านค้าออนไลน์ด้วย n8n: คู่มือฉบับเต็ม
คู่มือครบจบสำหรับเจ้าของร้านออนไลน์ที่อยากใช้ n8n จัดการ Shopee, Lazada, WooCommerce, สต็อก, ออเดอร์ และแจ้งเตือนลูกค้าแบบอัตโนมัติ