详细分析 ▾
运行时依赖
版本
Fix: declare all env vars used in workflows in requires.env metadata for security scan compliance
安装命令 点击复制
技能文档
A complete newsletter management system built on n8n and Google Sheets. Handles subscriber signups with double opt-in, automated welcome drip emails, broadcast sending, and daily analytics reports.
Problem
Running a newsletter manually means juggling signup forms, confirmation emails, welcome sequences, and broadcast sends across multiple tools. Most newsletter platforms charge per subscriber, and you lose control of your data.
This system gives you a free, self-hosted newsletter pipeline using n8n and Google Sheets.
什么 做
- Double Opt-在...中 Signup — Webhook receives signups, validates email, sends confirmation 链接, stores 在...中 Sheets
- Welcome Drip Sequence — Automatically sends Day 0 (welcome), Day 3 (tips), Day 7 (resources) emails
- Broadcast Sender — API-triggered broadcast 到 所有 confirmed subscribers 带有 退订 links
- Daily Analytics — Subscriber counts, growth metrics, confirmation rates, top sources
Included Workflows
| # | File | Purpose |
|---|---|---|
| 01 | 01-subscriber-signup.json | Webhook signup with validation, double opt-in, and Sheets storage |
| 02 | 02-welcome-sequence.json | Scheduled drip emails at Day 0, 3, and 7 |
| 03 | 03-broadcast-sender.json | Webhook-triggered broadcast to all confirmed subscribers |
| 04 | 04-subscriber-analytics.json | Daily metrics report email |
Architecture
Signup Form (website)
|
v
Workflow 01: Subscriber Signup
|
+-> Validate email
+-> Save to Google Sheets (status: pending)
+-> Send confirmation email (double opt-in)
+-> Return success responseUser clicks confirmation link
|
v
Update Sheets (status: confirmed)
Scheduled (every 6 hours):
|
v
Workflow 02: Welcome Drip Sequence
+-> Read confirmed subscribers
+-> Check drip schedule (Day 0/3/7)
+-> Send appropriate email
+-> Update last_drip_day in Sheets
API Trigger:
|
v
Workflow 03: Broadcast Sender
+-> Validate request + auth
+-> Fetch confirmed subscribers
+-> Send broadcast email to each
+-> Include unsubscribe link
Daily Schedule:
|
v
Workflow 04: Subscriber Analytics
+-> Read all subscribers
+-> Calculate metrics (total, growth, rates)
+-> Email report to admin
必填 n8n Credentials
| Credential Type | Used For | Placeholder in JSON |
|---|---|---|
| Google Sheets OAuth2 | Subscriber storage | YOUR_GOOGLE_SHEETS_CREDENTIAL_ID |
| SMTP (Gmail or custom) | All emails (confirmation, drip, broadcast, reports) | YOUR_SMTP_CREDENTIAL_ID |
Environment Variables
# Required
NEWSLETTER_ADMIN_EMAIL=admin@yourbusiness.com
NEWSLETTER_BASE_URL=https://yourdomain.com
NEWSLETTER_SECRET=your-broadcast-api-secret
Configuration Placeholders
| Placeholder | Description |
|---|---|
YOUR_SUBSCRIBERS_SHEET_ID | Google Sheet ID for subscriber data |
YOUR_GOOGLE_SHEETS_CREDENTIAL_ID | n8n Google Sheets credential ID |
YOUR_SMTP_CREDENTIAL_ID | n8n SMTP credential ID |
YOUR_NOTIFICATION_EMAIL | Fallback admin email (also set via NEWSLETTER_ADMIN_EMAIL env) |
YOUR_DOMAIN | Fallback domain (also set via NEWSLETTER_BASE_URL env) |
Google Sheets Schema (Subscribers)
| Column | Type | Description |
|---|---|---|
| text | Primary key, subscriber email | |
| name | text | Subscriber name |
| status | text | pending / confirmed / unsubscribed |
| source | text | Where they signed up (website, landing-page, etc.) |
| subscribed_at | datetime | Signup timestamp |
| confirmed | boolean | Whether email is confirmed |
| token | text | Confirmation token |
| last_drip_day | number | Last drip sent (0, 3, or 7) |
| last_drip_at | datetime | When last drip was sent |
Quick 开始
1. Prerequisites
- n8n v2.4+ (self-hosted)
- Google Sheets OAuth2 credentials
- SMTP email credentials
2. 创建 Subscriber Sheet
Create a Google Sheet with the columns above. Name the sheet tab "Subscribers".3. 导入 Workflows
Import all 4 JSON files into n8n. Replace allYOUR_* placeholders.4. Test Signup
curl -X POST https://your-n8n.com/webhook/newsletter/signup \
-H "Content-Type: application/json" \
-d '{"email": "test@example.com", "name": "Test User", "source": "api-test"}'
5. Test Broadcast
curl -X POST https://your-n8n.com/webhook/newsletter/broadcast \
-H "Content-Type: application/json" \
-d '{
"_secret": "your-newsletter-secret",
"subject": "Test Broadcast",
"content": "This is a test broadcast.
"
}'
使用 Cases
- Personal newsletters — Self-hosted alternative 到 Substack 或 ConvertKit
- Business newsletters — Weekly updates 到 customers 带有 zero per-subscriber cost
- Product updates — Notify users 关于 新的 features 和 releases
- Community newsletters — Manage subscriber lists 对于 communities 或 organizations
- Content creators — Build audience 带有 automated drip sequences
Requirements
- n8n v2.4+ (self-hosted recommended)
- Google Sheets OAuth2 credentials
- SMTP email credentials (Gmail, SES, 或 custom)
免费技能或插件可能存在安全风险,如需更匹配、更安全的方案,建议联系付费定制