I run 20+ n8n workflows in production. 8,000+ executions/month.
Time saved: 15 hours/week.
Cost: $20/month (vs $99/month for an equivalent Zapier plan).
These aren't theoretical tutorial workflows. These are workflows that publish blog posts, sync data, generate images, send newsletters, create tasks — automatically, 24/7.
I'll show you the 5 most useful workflows (with JSON code to import directly).
The Problem: Zapier Is Expensive, Make Is Limited
Zapier pricing (2026):
- 8,000 tasks/month → Team plan $99/month
Make pricing:
- 10,000 operations/month → Pro plan $79/month
Additional problems:
- Vendor lock-in (workflows live on their platform)
- Limited logic (branching, loops, complex transformations)
- No code inspection (can't see what's happening under the hood)
The Solution: n8n (Self-Hosted + Cloud Hybrid)
n8n = Open source Zapier/Make alternative.
My setup:
- Dev instance: n8n.nyx.yourdomain.com (Docker, VPS)
- Prod instance: n8n.yourdomain.com (Docker, VPS)
- Cloud instance: yourdomain.app.n8n.cloud (external webhooks)
Why 3 instances:
- Dev: Testing without breaking prod
- Prod: Critical workflows self-hosted (cost $0)
- Cloud: External webhooks (Stripe, etc.) that need uptime SLA
Cost:
- Dev + Prod: $0 (self-hosted on VPS I already have)
- Cloud: $20/month (Starter plan)
- Total: $20/month (vs $99 Zapier)
Annual savings: $948/year
Workflow 1: Blog Post → Multi-Channel Distribution
Trigger: WordPress post published
Flow:
WordPress Webhook
↓
Extract post data (title, excerpt, featured image, URL)
↓
IF featured image exists:
├─ Yes → Use it
└─ No → Generate with Replicate API (Synthwave style)
↓
Create LinkedIn post (Late API)
├─ Text: Excerpt + CTA
└─ Image: Featured image
↓
Create Twitter thread (Late API)
├─ Text: Title + 3 key points
└─ Image: Featured image
↓
Create newsletter (Listmonk)
├─ Subject: Post title
└─ Body: Excerpt + "Read more" link
↓
Track in NocoDB (Content Calendar table)
├─ Platform: LinkedIn, Twitter, Newsletter
└─ Status: Scheduled
↓
Notify Telegram: "Post distributed to 3 channels ✅"
Execution time: 30-45 seconds
Manual equivalent: 30-45 minutes
Savings: 44 minutes per post × 8 posts/month = 6 hours/month
Workflow JSON (Import Directly into n8n)
{
"nodes": [
{
"name": "WordPress Webhook",
"type": "n8n-nodes-base.webhook",
"parameters": {
"path": "wordpress-post-published",
"responseMode": "onReceived",
"options": {}
},
"position": [250, 300]
},
{
"name": "Extract Post Data",
"type": "n8n-nodes-base.set",
"parameters": {
"values": {
"string": [
{"name": "title", "value": "={{$json.title}}"},
{"name": "excerpt", "value": "={{$json.excerpt}}"},
{"name": "url", "value": "={{$json.link}}"},
{"name": "featuredImage", "value": "={{$json.featured_media_url}}"}
]
}
},
"position": [450, 300]
}
]
}
Import: n8n dashboard → Workflows → Import from File → Paste JSON
Workflow 2: Stripe → NocoDB Revenue Tracking
Trigger: Stripe webhook (payment successful)
Flow:
Stripe Webhook (charge.succeeded)
↓
Extract payment data (amount, customer, product)
↓
Create NocoDB record (Revenue Tracker table)
├─ Amount: {{amount / 100}} USD
├─ Customer: {{customer_email}}
├─ Product: {{product_name}}
├─ Date: {{created_timestamp}}
└─ Source: Stripe
↓
IF amount > $100:
↓
Notify Telegram: "🎉 New sale: ${{amount}} from {{customer_email}}"
Function Node (Transform Stripe Data)
// Input: Stripe charge object
const charge = $input.item.json;
// Transform to NocoDB format
const record = {
"Amount": charge.amount / 100, // Cents to dollars
"Currency": charge.currency.toUpperCase(),
"Customer": charge.billing_details.email,
"Product": charge.description,
"Date": new Date(charge.created * 1000).toISOString(),
"Source": "Stripe",
"Status": charge.status
};
return { json: record };
Workflow 3: SEO Auto-Indexing
Trigger: New WordPress post published
Flow:
WordPress Webhook
↓
Extract post URL
↓
Submit to IndexNow
├─ Endpoint: https://api.indexnow.org/indexnow
├─ Key: YOUR_INDEX_NOW_KEY
├─ URL: {{post_url}}
↓
Submit to Google Search Console
├─ Auth: Service Account
├─ URL: {{post_url}}
↓
Wait 48 hours (delay node)
↓
Check indexing status (Google API)
↓
IF not indexed:
↓
Notify Telegram: "⚠️ Post not indexed: {{post_url}}"
Value: Posts indexed automatically (no manual submission)
Indexing time: Reduced from 7 days → 1-2 days
Workflow 4: Daily Task Backup (NocoDB → Git)
Trigger: Cron (daily 2 AM)
Flow:
Cron Trigger (daily 2 AM)
↓
Fetch all active tasks from NocoDB
↓
Transform to JSON
↓
Write to file: tasks-YYYY-MM-DD.json
↓
Git add + commit + push
↓
Notify: "✅ Daily backup completed"
Git Commit Node
#!/bin/bash
cd /home/user/backups
echo '$json.tasks' > tasks-$(date +%Y-%m-%d).json
git add tasks-$(date +%Y-%m-%d).json
git commit -m "Daily backup $(date +%Y-%m-%d)"
git push origin main
Workflow 5: Listmonk Campaign Stats → NocoDB
Trigger: Cron (daily 12 PM, 3 hours after typical send time)
Flow:
Cron Trigger
↓
Fetch recent campaigns from Listmonk API
↓
FOR EACH campaign:
├─ Get stats (opens, clicks, bounces)
├─ Find corresponding NocoDB record (by Listmonk ID)
├─ Update record:
├─ Status: Sent
├─ Opens: {{opens}}
├─ Open Rate: {{opens / total * 100}}%
└─ Click Rate: {{clicks / total * 100}}%
↓
Notify: "✅ Newsletter stats updated"
OpenClaw ↔ n8n Integration Patterns
Pattern 1: n8n Triggers OpenClaw
Use case: External event needs AI processing
// n8n HTTP Request node
POST https://gateway.openclaw.local/api/session/send
{
"message": "New customer: {{$json.customer_email}}. Generate personalized thank-you email.",
"sessionKey": "main"
}
Pattern 2: OpenClaw Calls n8n Webhook
## OpenClaw skill
import requests
webhook_url = "https://n8n.yourdomain.com/webhook/upload-to-cdn"
response = requests.post(webhook_url, json={
"image_data": base64_image,
"filename": "synthwave-featured.jpg"
})
cdn_url = response.json()['cdn_url']
Pattern 3: n8n as Middleware
OpenClaw: "Publish blog post X"
↓
OpenClaw calls n8n webhook: /webhook/publish-blog-post
↓
n8n orchestrates:
├─ Generate image (Replicate)
├─ Publish LinkedIn (Late API)
├─ Publish Twitter (Late API)
├─ Create newsletter (Listmonk)
├─ Track in NocoDB
└─ Return summary to OpenClaw
↓
OpenClaw announces: "Post published to 3 platforms ✅"
Lessons Learned
1. Self-Hosted Dev + Cloud Prod = Best of Both
- All self-hosted: ✅ Free — ❌ Public webhooks break
- All cloud: ✅ Reliable — ❌ $99/month for >10K executions
- Hybrid: ✅ Test locally, deploy to cloud — Cost: $20/month
2. Error Handling = Production-Ready
Bad workflow:
Trigger → API Call → Done
If API fails: workflow stops, no notification, no retry.
Production workflow:
Trigger
↓
TRY:
├─ API Call
└─ Success → Log to NocoDB
CATCH:
├─ Log error
├─ Retry 3x (exponential backoff)
└─ IF still fails:
└─ Notify Telegram: "Workflow failed: {{error}}"
3. Sub-Workflows = Reusable Patterns
Create a sub-workflow for common operations (like "generate Synthwave image") and call it from multiple workflows instead of duplicating code.
Results (12 Months)
Stats:
- Active workflows: 20+
- Monthly executions: 8,000+
- Success rate: 97.2%
- Failed executions: 224 (mostly API rate limits, handled by retry)
Time saved:
- Blog distribution: 30 min → 30 sec (60x faster)
- SEO indexing: 15 min → 0 min
- Revenue tracking: 10 min/week → 0 min
- Social scheduling: 2 hours/week → 0 min
- Total: ~15 hours/week
Costs
| Instance | Hosting | Monthly Cost |
|---|---|---|
| Dev | Docker (VPS) | $0 |
| Prod | Docker (VPS) | $0 |
| Cloud | n8n Cloud Starter | $20 |
| Total | $20/month |
vs equivalents:
- Zapier (8K tasks): $99/month
- Make (10K ops): $79/month
Savings: $79-99/month = $948-1,188/year
n8n Self-Hosted Setup
version: '3.8'
services:
n8n:
image: n8nio/n8n:latest
container_name: n8n-prod
restart: always
ports:
- "5678:5678"
environment:
- N8N_HOST=n8n.yourdomain.com
- N8N_PROTOCOL=https
- WEBHOOK_URL=https://n8n.yourdomain.com/
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=${N8N_USER}
- N8N_BASIC_AUTH_PASSWORD=${N8N_PASSWORD}
volumes:
- n8n_data:/home/node/.n8n
volumes:
n8n_data:
docker-compose up -d
Conclusion: 15 Hours/Week Saved
Setup time: 1-2 days (one-time).
Monthly savings: 60 hours (15h/week × 4).
Cost: $20/month.
ROI: 60 hours × $100/hour = $6,000 value / $20 cost = 300x ROI.
If you automate workflows and pay >$50/month in Zapier/Make, n8n self-hosted pays for itself immediately.
Do you use n8n? What workflows are you running? Share in the comments.
📝 Originally published in Spanish at cristiantala.com
Top comments (0)