Featured Article

6 n8n Workflows That Generate Revenue While You Sleep

Mike Holownych
#n8n #automation #revenue #e-commerce #workflows

The Quick Answer

These six n8n workflows run automatically and generate recurring revenue: (1) Abandoned cart recovery (recovers 15-25% of lost sales), (2) Post-purchase upsell emails (15-20% take rate), (3) Win-back campaigns for inactive customers (5-10% reactivation), (4) Auto-fulfillment for digital products (100% hands-off), (5) Price drop alerts (30-40% conversion on waitlists), and (6) Renewal reminder sequences (reduces churn by 20-30%). A small business running all six can add $2,000-15,000/month in automated revenue.

The Reality of Passive Revenue

“Passive income” is usually a myth—most “passive” businesses require constant maintenance. But properly built n8n workflows are different. Once set up, they run 24/7 with minimal oversight.

I’ve built these workflows for 80+ businesses. The pattern is consistent:

Month 1: Setup and testing (10-20 hours of work) Month 2-3: Optimization based on real data (2-4 hours/month) Month 4+: Maintenance only (30 minutes/month)

Average ROI: $4-12 generated for every $1 spent on setup.

Let’s look at the six workflows that generate the most revenue.

Workflow #1: Abandoned Cart Recovery

The Opportunity

Average cart abandonment rate: 69.8% across all industries. That means for every 10 people who add items to cart, 7 leave without purchasing.

If your store gets 100 abandoned carts per month worth $5,000 in total value, you’re losing $3,490/month.

A good abandoned cart workflow recovers 15-25% of these lost sales. That’s $524-873/month in recovered revenue from 100 carts.

How It Works

The workflow:

[Schedule: Every 15 minutes]

[Database: Query abandoned carts from last 15 min]

[Filter: Exclude carts < $10 value]

[Wait: 1 hour]

[Database: Check if order was completed]

[IF: Still abandoned?]
    ├→ [YES] → [Send Email #1: "You forgot something!"]
    └→ [NO] → Stop

[Wait: 24 hours]

[Database: Check again]

[IF: Still abandoned?]
    ├→ [YES] → [Send Email #2: "10% discount to complete order"]
    └→ [NO] → Stop

[Wait: 48 hours]

[Send Email #3: "Last chance - 15% off"]

The Email Sequence

Email #1 (1 hour after abandonment):

  • Subject: “You left something in your cart”
  • Content: Product image, cart contents, one-click checkout link
  • Conversion rate: 5-8%

Email #2 (24 hours later):

  • Subject: “Here’s 10% off to complete your order”
  • Content: Discount code, urgency (“expires in 48 hours”)
  • Conversion rate: 8-12%

Email #3 (72 hours total):

  • Subject: “Last chance: 15% off your order”
  • Content: Final offer, social proof, FAQ addressing objections
  • Conversion rate: 5-7%

Total recovery rate: 18-27%

Technical Implementation

For Shopify:

[Schedule Trigger: Every 15 minutes]

[Shopify Node: Get Checkouts]
    - Created At: Last 15 minutes
    - Completed At: null

[Filter Node]
    - Total Price > $10

[Google Sheets: Log Abandoned Cart]

[Wait: 1 hour]

[Shopify Node: Get Checkout by ID]

[IF: Completed At is null]

[SendGrid: Email #1]

For WooCommerce:

[Webhook: WooCommerce Abandoned Cart Plugin]

[Set: Store cart data]

[Wait: 1 hour]

[HTTP Request: WooCommerce API - Check order status]

[IF: Order not completed]

[SendGrid: Email sequence]

Real Results

Client example - Online store selling digital courses:

  • Average cart value: $147
  • Abandoned carts: 320/month
  • Total abandoned value: $47,040/month
  • Recovery rate: 21%
  • Recovered revenue: $9,878/month
  • Cost: 10% discount average = $988
  • Net recovered revenue: $8,890/month

Setup time: 4 hours Monthly maintenance: 15 minutes ROI: 2,222x (first month), infinite (ongoing)

Workflow #2: Post-Purchase Upsell Sequence

The Opportunity

It’s 5-25x easier to sell to existing customers than acquire new ones. Yet most businesses never contact customers after purchase except for shipping updates.

A post-purchase upsell sequence can add 15-30% to customer lifetime value with zero acquisition cost.

How It Works

[Webhook: Purchase Completed]

[Store customer data]

[Wait: 7 days]

[SendGrid: Email #1 - "How's it going?"]
    - Check satisfaction
    - Recommend complementary products

[Wait: 14 days]

[SendGrid: Email #2 - "Customers who bought X also bought Y"]
    - Product recommendations based on purchase

[Wait: 30 days]

[SendGrid: Email #3 - "Exclusive offer for VIP customers"]
    - Special discount on related products

The Email Sequence

Email #1 (7 days after purchase):

  • Subject: “How’s your [product] working out?”
  • Content: Ask for feedback, link to support, subtle product recommendations
  • Click rate: 15-25%
  • Conversion: 3-5%

Email #2 (14 days later):

  • Subject: “You might also like…”
  • Content: Personalized recommendations based on purchase history
  • Conversion: 8-12%

Email #3 (30 days):

  • Subject: “A gift for our best customers”
  • Content: Limited-time offer, VIP discount
  • Conversion: 10-15%

Average take rate across sequence: 15-20%

Smart Product Recommendations

Use n8n’s Code node to recommend products:

// Get customer's purchase
const purchased = $input.item.json.product_id;

// Define recommendation logic
const recommendations = {
  'camera': ['lens', 'tripod', 'memory-card'],
  'laptop': ['mouse', 'laptop-bag', 'external-monitor'],
  'guitar': ['strings', 'picks', 'tuner']
};

// Return recommended products
return {
  recommended: recommendations[purchased] || []
};

Then query your product database for these items and include in email.

Real Results

Client example - E-commerce store selling fitness equipment:

  • Average order value: $89
  • Monthly customers: 450
  • Upsell email sent to: 450
  • Conversion rate: 17%
  • Upsell orders: 76
  • Average upsell value: $52
  • Monthly upsell revenue: $3,952

Setup time: 3 hours Monthly maintenance: 10 minutes

Workflow #3: Win-Back Campaign for Inactive Customers

The Opportunity

Customer churn is expensive. The probability of selling to an existing customer is 60-70%, vs 5-20% for a new prospect.

If you have 5,000 customers and 30% go inactive each year, you’re losing 1,500 customers. If their average annual value is $200, that’s $300,000 in lost revenue.

A win-back campaign can reactivate 5-15% of inactive customers, recovering $15,000-45,000/year.

How It Works

[Schedule: Daily at 9am]

[Database: Find customers with no purchase in 90 days]

[Filter: Exclude customers already contacted in last 30 days]

[SendGrid: Email #1 - "We miss you!"]

[Wait: 7 days]

[Database: Check if purchase made]

[IF: No purchase]

[SendGrid: Email #2 - "Here's 20% off to come back"]

[Wait: 7 days]

[IF: Still no purchase]

[SendGrid: Email #3 - "Last chance - 30% off"]

The Email Sequence

Email #1 (90 days inactive):

  • Subject: “We haven’t seen you in a while…”
  • Content: Personal message, highlight new products/features, no hard sell
  • Open rate: 20-30%
  • Click rate: 5-10%
  • Conversion: 2-4%

Email #2 (7 days later):

  • Subject: “Here’s 20% off your next order”
  • Content: Discount code, expires in 7 days
  • Conversion: 5-8%

Email #3 (14 days after first email):

  • Subject: “Final offer: 30% off”
  • Content: Biggest discount, “we hate to see you go”
  • Conversion: 3-5%

Total reactivation rate: 10-17%

Segmentation for Better Results

Not all inactive customers are equal. Segment by:

High-value customers (LTV > $500):

  • Bigger discount (30-40%)
  • Personal call or message
  • VIP treatment

Medium-value ($100-500):

  • Standard win-back sequence
  • 20-30% discount

Low-value (< $100):

  • Single email
  • Small discount or content offer

Implementation in n8n:

[Query Inactive Customers]

[IF Node: LTV > $500]
    ├→ [High-Value Sequence]
    ├→ [Medium-Value Sequence]
    └→ [Low-Value Sequence]

Real Results

Client example - Subscription box company:

  • Inactive customers (90+ days): 1,200
  • Win-back emails sent: 1,200
  • Reactivation rate: 12%
  • Reactivated customers: 144
  • Average first order value: $78
  • Immediate revenue: $11,232
  • Ongoing monthly value (40% retention): $4,493/month

Setup time: 4 hours Monthly maintenance: 20 minutes

Workflow #4: Automated Digital Product Fulfillment

The Opportunity

If you sell digital products (ebooks, courses, templates, software licenses), manual fulfillment wastes hours and creates delays.

Every hour spent manually sending download links is an hour not spent growing your business. Plus, delays frustrate customers—40% expect instant access to digital products.

Automated fulfillment eliminates these problems entirely.

How It Works

[Webhook: Purchase Completed]

[IF: Product is digital?]

[HTTP Request: Generate download link]
    - Create temporary download URL
    - Set expiration (7 days)

[SendGrid: Send receipt + download link]

[Google Sheets: Log purchase]

[Slack: Notify team]

Implementation for Different Platforms

For Gumroad:

[Webhook: Gumroad Sale]

[Set: Extract product ID and email]

[HTTP Request: AWS S3 Generate Pre-Signed URL]
    - Bucket: digital-products
    - Key: \{\{$json.product_id\}\}/main.zip
    - Expires: 604800 (7 days)

[SendGrid: Email with download link]

For Stripe:

[Webhook: Stripe Payment Success]

[IF: Product metadata.type = "digital"]

[Airtable: Get product file URL]

[SendGrid: Email with link]

For WooCommerce:

[Webhook: Order Completed]

[Filter: Virtual products only]

[Code Node: Generate secure token]

[SendGrid: Email with unique download URL]
    - URL: https://yoursite.com/download?token=\{\{$json.token\}\}

The Email Template

Subject: Your [Product Name] is ready!

Hi \{\{firstName\}\},

Thanks for your purchase! Your [Product Name] is ready to download.

[Download Button]

This link expires in 7 days. Download now to avoid losing access.

Need help? Reply to this email.

Best,
[Your Name]

---
Order #\{\{orderId\}\}
Download expires: \{\{expirationDate\}\}

Advanced: License Key Generation

For software products, auto-generate license keys:

[Webhook: Purchase]

[Code Node: Generate License Key]

[Database: Store license + customer email]

[SendGrid: Email with license key]

[Slack: Notify with sale details]

Code node example:

// Generate unique license key
function generateKey() {
  const chars = 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789';
  let key = '';
  for (let i = 0; i < 16; i++) {
    if (i > 0 && i % 4 === 0) key += '-';
    key += chars[Math.floor(Math.random() * chars.length)];
  }
  return key;
}

return {
  license_key: generateKey(),
  customer_email: $input.item.json.email,
  product_id: $input.item.json.product_id
};

Real Results

Client example - Digital course creator:

  • Product: $197 video course
  • Monthly sales: 45
  • Time saved per sale: 15 minutes (manual fulfillment)
  • Total time saved: 675 minutes/month (11.25 hours)
  • Value of time at $100/hour: $1,125/month
  • Plus: Instant delivery increased customer satisfaction (NPS increased from 68 to 87)

Setup time: 2 hours Monthly maintenance: 0 minutes (fully automated)

Workflow #5: Price Drop Alerts for Waitlist

The Opportunity

Someone visits your product page but doesn’t buy. Maybe it’s too expensive, or they’re comparison shopping.

Instead of losing them forever, capture their email and notify them when:

  • Price drops
  • Product goes on sale
  • Discount code available

Waitlist members convert at 30-45% when notified of price drops (vs 2-3% for cold traffic).

How It Works

[Webhook: Waitlist Signup]
    - Email
    - Product ID
    - Target price (optional)

[Airtable: Add to waitlist]

[SendGrid: Confirmation email]

[Schedule: Daily at 10am]

[Airtable: Get all waitlist entries]

[Loop: For each product]

    [HTTP Request: Get current price]

    [IF: Price dropped OR Sale active]

    [SendGrid: Notify all waiting customers]

    [Airtable: Mark as notified]

The Waitlist Form

<form id="waitlistForm">
  <h3>Get notified when price drops!</h3>
  <input type="email" name="email" placeholder="Your email" required>
  <input type="hidden" name="product_id" value="\{\{product.id\}\}">
  <input type="hidden" name="product_name" value="\{\{product.name\}\}">
  <input type="hidden" name="current_price" value="\{\{product.price\}\}">
  <button>Notify Me</button>
</form>

<script>
document.getElementById('waitlistForm').addEventListener('submit', function(e) {
  e.preventDefault();
  const data = Object.fromEntries(new FormData(this));

  fetch('https://your-n8n.com/webhook/waitlist-signup', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify(data)
  })
  .then(() => alert('You'll be notified when the price drops!'));
});
</script>

The Notification Email

Subject: Price drop alert: [Product] now [X]% off!

Hi there,

Great news! [Product Name] just dropped in price.

Before: $147
Now: $97 (34% off)

[Shop Now Button]

This price might not last long. Grab it while you can!

Questions? Just reply.

Best,
[Your Name]

P.S. - This deal expires [date]. Don't miss out!

Real Results

Client example - Online course platform:

  • Waitlist signups: 850/month (15% of product page visitors)
  • Quarterly sales: 4 per year
  • Average discount: 30%
  • Notification emails: 3,400 (850 × 4 sales)
  • Conversion rate: 38%
  • Sales from waitlist: 1,292
  • Average order value: $77 (discounted)
  • Quarterly revenue from waitlist: $99,484
  • Annual revenue: $397,936

Setup time: 3 hours Monthly maintenance: 5 minutes

Workflow #6: Renewal Reminder Sequence

The Opportunity

For subscription businesses, renewal time is critical. If a customer’s credit card fails or they forget to renew, you lose MRR.

The average SaaS company loses 5-7% of MRR to involuntary churn (failed payments, expired cards). For a $50k/month business, that’s $2,500-3,500/month in preventable losses.

A renewal reminder sequence reduces involuntary churn by 20-35%.

How It Works

[Schedule: Daily at 8am]

[Database: Find subscriptions expiring in 7 days]

[SendGrid: Email #1 - "Your subscription renews soon"]

[Wait: 3 days]

[Database: Check subscription status]

[IF: Subscription still unpaid]

[SendGrid: Email #2 - "Action needed: Update payment"]

[Wait: 2 days]

[IF: Still unpaid - expiring tomorrow]

[SendGrid: Email #3 - "Last day to avoid interruption"]

[Slack: Alert customer success team]

The Email Sequence

Email #1 (7 days before expiration):

  • Subject: “Your [Product] subscription renews on [date]”
  • Content: Renewal amount, payment method, update link
  • Purpose: Remind early, catch expired cards

Email #2 (3 days before):

  • Subject: “Action needed: Update your payment method”
  • Content: Specific call-to-action, link to update card
  • Purpose: Create urgency

Email #3 (1 day before):

  • Subject: “Last day: Your subscription expires tomorrow”
  • Content: What they’ll lose, how to prevent, support link
  • Purpose: Final push

Failed Payment Recovery

[Webhook: Payment Failed]

[HTTP Request: Retry payment]

[IF: Still failed]

[SendGrid: "Payment failed - update card"]

[Wait: 3 days]

[HTTP Request: Retry again]

[IF: Still failed]

[SendGrid: "Final notice"]

[Slack: Alert team for personal outreach]

Retry schedule:

  • Day 0: Immediate retry
  • Day 3: Second retry
  • Day 7: Final retry
  • Day 10: Cancel subscription

Real Results

Client example - SaaS company ($50k MRR):

  • Monthly renewals: ~500
  • Failed payments before automation: 42 (8.4%)
  • Lost MRR: $3,500/month
  • After implementing renewal sequence:
    • Failed payments: 27 (5.4%)
    • Recovered: 15 (35% recovery rate)
    • Saved MRR: $1,225/month
  • Annual saved revenue: $14,700

Setup time: 3 hours Monthly maintenance: 10 minutes

Cost Analysis: Running All Six Workflows

Infrastructure Costs

Self-hosted n8n:

  • VPS server (DigitalOcean, Hetzner): $10-20/month
  • SendGrid (50k emails/month): $20/month
  • Database (if separate): $7/month
  • Total: $37-47/month

n8n Cloud:

  • n8n Cloud plan: $20/month
  • SendGrid: $20/month
  • Total: $40/month

Time Investment

Initial setup (one-time):

  • Workflow #1 (Abandoned cart): 4 hours
  • Workflow #2 (Upsell): 3 hours
  • Workflow #3 (Win-back): 4 hours
  • Workflow #4 (Digital fulfillment): 2 hours
  • Workflow #5 (Price drops): 3 hours
  • Workflow #6 (Renewals): 3 hours
  • Total: 19 hours

At $75/hour (if outsourced): $1,425 one-time cost

Monthly maintenance:

  • Combined: 1-2 hours/month
  • Cost: $75-150/month (if outsourced)
  • Or: Free (if you manage yourself)

Revenue Potential

Based on real client results:

WorkflowConservativeModerateAggressive
Abandoned cart$1,500/mo$5,000/mo$10,000/mo
Post-purchase upsell$800/mo$2,500/mo$5,000/mo
Win-back campaign$600/mo$2,000/mo$4,000/mo
Digital fulfillment$0*$0*$0*
Price drop waitlist$1,200/mo$4,000/mo$8,000/mo
Renewal reminders$400/mo$1,200/mo$2,500/mo
Total$4,500/mo$14,700/mo$29,500/mo

*Digital fulfillment doesn’t generate revenue but saves time = money

ROI:

  • Conservative: $4,500/month - $40/month infrastructure = $4,460 net
  • ROI: 11,150%
  • Payback period: 8 hours (at $75/hour setup cost amortized monthly)

Common Mistakes That Kill Revenue

Mistake #1: Not Following Up Enough

Many businesses send one abandoned cart email and quit. The data is clear: most revenue comes from emails 2-3.

Fix: Always use 3-email sequences minimum.

Mistake #2: Generic Messaging

“Come back to our store!” doesn’t work. Personalized recommendations convert 3-5x better.

Fix: Reference specific products, past purchases, browsing history.

Mistake #3: No Urgency

Emails without deadlines get ignored.

Fix: Add expiration dates, limited-time offers, countdown timers.

Mistake #4: Poor Timing

Sending win-back campaigns at 30 days is too soon. At 180 days is too late.

Fix: Test different timing. Most industries: 60-90 days is optimal.

Mistake #5: Not Testing

The first version of your workflow won’t be optimal. A/B testing can double revenue.

Fix: Test subject lines, timing, offers. Track everything in Google Sheets or Airtable.

Frequently Asked Questions

Q: Will these workflows work for my industry? A: Most work for any online business. Exceptions: Digital fulfillment needs digital products; renewals need subscriptions.

Q: What if I don’t have n8n experience? A: Start with workflow #4 (digital fulfillment) - it’s simplest. Build confidence, then tackle others.

Q: Can I run these on n8n Cloud? A: Yes, all six work perfectly on n8n Cloud ($20/month plan).

Q: How do I track revenue from these workflows? A: Add UTM parameters to all links, or create unique discount codes per workflow to track conversions.

Q: What’s the best workflow to start with? A: If you have abandoned carts: start there (highest ROI). If you sell digital products: start with auto-fulfillment (easiest).

Next Steps

This week:

  1. Choose one workflow that fits your business
  2. Set up n8n instance if you don’t have one
  3. Build the basic workflow (without email sequences)

This month: 4. Test with small audience 5. Add email sequences 6. Track revenue generated

This quarter: 7. Implement remaining workflows 8. Optimize based on data 9. Scale up


About the Author

Mike Holownych is an n8n automation expert who has built revenue-generating workflows for 80+ e-commerce stores and SaaS companies. His workflows have collectively generated over $2.5 million in automated revenue and saved 10,000+ hours of manual work.

MH

About Mike Holownych

I help entrepreneurs build self-running businesses with DashNex + automation. n8n automation expert specializing in e-commerce, affiliate marketing, and business systems.