惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 司徒正美
aimingoo的专栏
aimingoo的专栏
MongoDB | Blog
MongoDB | Blog
云风的 BLOG
云风的 BLOG
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 聂微东
Y
Y Combinator Blog
T
Tailwind CSS Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
S
SegmentFault 最新的问题
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 【当耐特】
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
J
Java Code Geeks
美团技术团队
Google DeepMind News
Google DeepMind News
博客园_首页
Apple Machine Learning Research
Apple Machine Learning Research
T
The Blog of Author Tim Ferriss

DEV Community

How to audit what your IDE extension actually sends to the cloud Solving a Logistics Problem Using Genetic Algorithms Claude Code Skills Explained: What They Are & When to Use Them (2026) Maintaining Apache Iceberg Tables: Compaction, Expiry, and Cleanup Zero-Idle Local LLMs: Running Llama 3 in AWS Lambda Containers We scanned 8 B2B SaaS companies across 5 categories. ChatGPT named the same 12 brands in every answer. Unit Testing vs System Testing: Key Differences, Use Cases, and Best Practices for 2026 A game design textbook explains why products with fewer features win How to Build a Raydium Launchpad Bonding Curve in 5 Minutes with forgekit How to turn an AI prototype into a production system How Data Lake Table Storage Degrades Over Time Partition and Sort Keys on DynamoDB: Modeling data for batch-and-stream convergence Auto-Generate Optimized GitHub Actions Workflows For Any Stack With This New CLI Tool Unchaining the African Creator Economy The Treasure Hunt Engine Gotcha - A Lesson in Constrained Performance great_cto v2.17 - no more tambourine dance When Catalogs Are Embedded in Storage SafeMind AI: Instant Health & Safety Intelligence What Is PKCE, How It Works & Flow Examples AI Agent Failure Modes Beyond Hallucination Fastest Way to Understand Stryker Solana Accounts Explained to a Web2 Developer TV Yayın Akışı Sitesi Geliştirirken Öğrendiğim Teknik Dersler $500 Challenge Drop My First Look at Google's Gemma 4: A Quick Introduction How I use an LLM as a translation judge Best Calendar and Scheduling API for Developers — 2026 Comparison Agentic AI in Travel: Why UCP Isn't Travel-Ready Yet — and What We Measured I Finished Machine Learning. And Then Changed The Plan. The Five-Thousand-Line File The AI Whirlwind: Why Your Local Agent Matters More Than Ever I Built an Oracle DBA That Lives in Telegram. It Cut a 500K-Row Scan to 5 - After Asking Permission. The Day 2 Reality of Running a Kubernetes Lab on Your Mac: Stop/Start, CKS Scenarios, and What I Learned Building It. n8n for Airtable Power Users: 5 Automations That Take Your Base to the Next Level Validating Gemma 4 for Industrial IoT: A Governance Pattern VS Code Now Credits Copilot on Every Commit by Default Astro and Islands Architecture: Why Your Portfolio Doesn't Need React for Everything Booting from FAT12: How I added file reading to my x86 kernel Unity’s AI agent went public: the developers of a static analysis tool on what that means for code quality Anna's Archive publica un llms.txt para los LLMs que rastrean su catálogo CRDTs for Offline-First Mobile Sync Why I Built Mneme HQ: Preventing AI Agent Architectural Drift Google Antigravity 2.0 Is the I/O 2026 Announcement You Should Actually Care About I Built a Pay-Per-Call Crypto Signal API with x402 — Heres the Architecture JWT Token Refresh Patterns in React 19: Avoiding the Silent Auth Death Spiral 🚀 “From Prompts to Autonomous Agents: What Google I/O 2026 Changed” The Power of Distributed Consensus in Autonomous SOCs Sixteen TUI components, copy-paste, no dependency The Boring Reliability Layer Every Autonomous Agent Needs Nven - Secret manager Building Multi-Tenant Row-Level Security in PostgreSQL: A Production Pattern The Hardest Part of Being a Developer Isn't Coding Building Vylo — Looking for Collaborators, Partners & Early Support I Thought Memory Fades With Time. It Actually Fades With Information. ORA-00064 오류 원인과 해결 방법 완벽 가이드 I registered an AI agent at 1 AM and something cracked open in my head Pitch: Nven - Sync secrets. Ship faster. Why y=mx+b is the heart of AI From Routines to a Crew — Building a System That Plans Its Own Work & executes it 25 React Interview Questions 2026 (With Answers) — Hooks, React 19, Concurrent Mode An open source LLM eval tool with two independent quality signals Using Dashboard Filtering to Get Customer Usage in Seconds from TBs of Data Skills, Java 17, And Theme Accents 4 Hard Lessons on Optimizing AI Coding Agents Arctype: Cross-Platform Database GUI for LLM Artifacts Your robots.txt says GPTBot is welcome. Your server says 403. Organizing How to Use AWS Glue Workflow 5 n8n Automations Every Digital Agency Should Be Running (Bill More, Work Less) Getting Started with TorchGeo — Remote Sensing with PyTorch Designing a Scalable Cross-Platform Appium Framework Google Antigravity 2.0 & Slash Commands Building a Unified Adaptive Learning Intelligence with Gemma 4, Flutter, and Multi-Model Orchestration Looking for beta testers for a £60 server management application The Disk-Pressure Incident That Taught Me to Always Set LimitRanges and Other Lessons from Mirroring EKS Locally. Why AI Should Not Write SQL Against ERP Databases Vibe coding works until it doesn't. The debt is real. Shipping at the Edge: Migrating a Coffee Subscription Platform to Cloudflare Workers Stop Tab-Switching: A Developer's Guide to Color Tools That Actually Fit the Workflow DevOps vs MLOps vs AIOps: What Changes, What Stays, and a Simple Roadmap to Get Started Run Powerful AI Coding Locally on a Normal Laptop 5 n8n Automations Every WooCommerce Store Needs (Save 10+ Hours/Week) What I Learned Building My Own AI Harness Hytale Servers Will Fail Treasure Hunts Until We Fix Our Event Handling Redux in React: Managing Global State Like a Pro Unfreezing Your GitHub Actions: Troubleshooting Stuck Deployments and Protecting Your Git Repo Statistics Unlocking Project Discoverability on GHES: A Key to Software Engineering Productivity When the Cleanup Code Becomes the Project Rockpack 8.0 - A React Scaffolder Built for the Age of AI-Assisted Development Mismanaging the Treasure Hunt Engine in Hytale Servers Will Get You Killed Stop Calling It an AI Assistant. It’s Already Managing Your Company Why Hardcoded Automations Fail AI Agents Why I built a post-quantum signing API (and why JWT is on borrowed time) Weekend Thought: Frontend Build Tools Suffer From Work Amnesia AI Is Changing Engineering Culture More Than We Realize A 10-Line Playwright Trick That Saved Me Hours on Every Sephora Run Everyone Was Focused on Gemini, But Infinite Scaler Was the Real Twister "Gemma 4 Analyzed My Bank Statements – Apparently I 'Have a Problem' with Coffee and Late-Night Apps" #css #webdev #beginners #codenewbie The Hidden Layer Every AI Developer Must Learn AlphaEvolve: Google DeepMind's Gemini-Powered Evolutionary Coding Agent
I Migrated 23 Make.com Scenarios to n8n and Cut My Bill by 60% — Complete Migration Guide (2026)
Alex Kane · 2026-05-22 · via DEV Community

I was paying $49/month on Make.com and hitting operation limits every few weeks.

My 23 scenarios handled lead captures, Slack notifications, email sequences, and weekly reports. But Make.com counts every module execution as an "operation" — a 6-module scenario running 200 times/month consumes 1,200 operations. With 23 scenarios, I was always near the limit and upgrading every quarter.

Two weeks after switching to n8n, I cut my automation bill to $0 (self-hosted). Here's the complete guide — with 3 import-ready workflow JSONs.

Make.com vs n8n: The Pricing Reality

Make.com charges per operation. n8n charges per workflow execution (not per node).

Make.com n8n (self-hosted)
Free tier 1,000 ops/month Unlimited
Starter $9/month (10k ops) Free
Pro $29/month (40k ops) $24/month cloud / free self-hosted
6-node workflow, 500 runs/month 3,000 ops used 500 executions
Custom code Basic formula functions Full Node.js/Python runtime
AI/LLM nodes Limited Native Claude, GPT-4o, Gemini
Self-hosting No Yes (Docker, npm, Railway)

With n8n self-hosted: zero cost, unlimited workflows, unlimited executions.

The Concept Translation Dictionary

Make.com n8n Notes
Scenario Workflow Same concept
Module Node Same concept
Operation Execution (per workflow run) n8n counts once per run, not per node
Bundle Item n8n calls data records "items"
Router Switch node Branch logic
Iterator SplitInBatches Loop over arrays
Aggregator Merge + Code node Combine results
Filter IF node Conditional branching
Instant Webhook trigger Webhook node Identical
Scheduler Schedule Trigger node Identical
Functions/Formulas Code node (JavaScript) Full Node.js runtime
Data Store PostgreSQL / Airtable / Redis More flexible
HTTP module HTTP Request node Same

Migration 1: Lead Capture Form → Sheets + Confirmation Email

Make.com version: Webhooks → Google Sheets (Add Row) → Gmail = 3 ops per run.

At 200 leads/month = 600 operations/month just for this one scenario.

n8n equivalent:

{
  "name": "Lead Capture - Webhook to Sheets",
  "nodes": [
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "lead-capture",
        "responseMode": "responseNode"
      },
      "name": "Webhook",
      "type": "n8n-nodes-base.webhook",
      "position": [240, 300]
    },
    {
      "parameters": {
        "operation": "appendOrUpdate",
        "documentId": "YOUR_SHEET_ID",
        "sheetName": "Leads",
        "dataMode": "autoMapInputData"
      },
      "name": "Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [480, 300]
    },
    {
      "parameters": {
        "toEmail": "={{ $('Webhook').item.json.body.email }}",
        "subject": "Thanks for reaching out!",
        "message": "Hi {{ $('Webhook').item.json.body.name }},\n\nWe received your message and will reply within 24 hours."
      },
      "name": "Gmail",
      "type": "n8n-nodes-base.gmail",
      "position": [720, 300]
    }
  ],
  "connections": {
    "Webhook": {"main": [[{"node": "Google Sheets", "type": "main", "index": 0}]]},
    "Google Sheets": {"main": [[{"node": "Gmail", "type": "main", "index": 0}]]}
  }
}

Enter fullscreen mode Exit fullscreen mode

Key difference: Make.com uses {{1.name}} (bundle notation). n8n uses {{ $('Webhook').item.json.body.name }} or just {{ $json.body.name }} when referring to the previous node's output.

Migration 2: Stripe Payment → Slack + Log to Sheets

Make.com version: Webhooks → Slack (Send Message) → Google Sheets = 3 ops/run.

At 150 payments/month = 450 ops/month.

{
  "name": "Stripe Payment Notifier",
  "nodes": [
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "stripe-payment",
        "responseMode": "lastNode"
      },
      "name": "Stripe Webhook",
      "type": "n8n-nodes-base.webhook",
      "position": [240, 300]
    },
    {
      "parameters": {
        "channel": "#payments",
        "text": "=💰 New payment: ${{ ($('Stripe Webhook').item.json.body.data.object.amount / 100).toFixed(2) }} from {{ $('Stripe Webhook').item.json.body.data.object.billing_details?.name || 'Customer' }}"
      },
      "name": "Slack",
      "type": "n8n-nodes-base.slack",
      "position": [480, 200]
    },
    {
      "parameters": {
        "operation": "appendOrUpdate",
        "documentId": "YOUR_SHEET_ID",
        "sheetName": "Payments",
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "Timestamp": "={{ new Date().toISOString() }}",
            "Amount": "={{ $('Stripe Webhook').item.json.body.data.object.amount / 100 }}",
            "Customer": "={{ $('Stripe Webhook').item.json.body.data.object.billing_details?.name }}",
            "Status": "={{ $('Stripe Webhook').item.json.body.data.object.status }}"
          }
        }
      },
      "name": "Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [480, 400]
    }
  ],
  "connections": {
    "Stripe Webhook": {
      "main": [
        [
          {"node": "Slack", "type": "main", "index": 0},
          {"node": "Google Sheets", "type": "main", "index": 0}
        ]
      ]
    }
  }
}

Enter fullscreen mode Exit fullscreen mode

Migration tip: Make.com runs Slack then Sheets sequentially (2 separate operations). The n8n fan-out pattern (one node → two connections) runs both in parallel — faster, still 1 execution.

Migration 3: Scheduled Weekly Report

Make.com version: Scheduler → Google Sheets (Get Rows) → Tools (Array Aggregator) → Gmail = 4 ops/run. Weekly = 208 ops/year.

{
  "name": "Weekly Sales Report",
  "nodes": [
    {
      "parameters": {
        "rule": {
          "interval": [{"field": "weeks", "weeksInterval": 1, "triggerAtDay": [1], "triggerAtHour": 8}]
        }
      },
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [240, 300]
    },
    {
      "parameters": {
        "operation": "getAll",
        "documentId": "YOUR_SHEET_ID",
        "sheetName": "Orders",
        "options": {"returnAll": true}
      },
      "name": "Get Orders",
      "type": "n8n-nodes-base.googleSheets",
      "position": [480, 300]
    },
    {
      "parameters": {
        "jsCode": "const items = $input.all();
const total = items.reduce((sum, i) => sum + Number(i.json.Amount || 0), 0);
const count = items.length;
const avg = count > 0 ? (total / count).toFixed(2) : 0;
return [{ json: { total: total.toFixed(2), count, avg } }];"
      },
      "name": "Calculate Stats",
      "type": "n8n-nodes-base.code",
      "position": [720, 300]
    },
    {
      "parameters": {
        "toEmail": "you@yourdomain.com",
        "subject": "=Weekly Sales Report — {{ $now.toFormat('yyyy-WW') }}",
        "message": "=<h2>Weekly Sales Report</h2><p><b>Revenue:</b> ${{ $json.total }}</p><p><b>Orders:</b> {{ $json.count }}</p><p><b>Avg Order:</b> ${{ $json.avg }}</p>"
      },
      "name": "Send Report",
      "type": "n8n-nodes-base.gmail",
      "position": [960, 300]
    }
  ],
  "connections": {
    "Schedule Trigger": {"main": [[{"node": "Get Orders", "type": "main", "index": 0}]]},
    "Get Orders": {"main": [[{"node": "Calculate Stats", "type": "main", "index": 0}]]},
    "Calculate Stats": {"main": [[{"node": "Send Report", "type": "main", "index": 0}]]}
  }
}

Enter fullscreen mode Exit fullscreen mode

Migration tip: Make.com's Array Aggregator + Formula syntax → n8n's Code node. Full JavaScript gives you far more flexibility: conditional logic, external API calls, complex calculations.

What's Harder in n8n (Honest)

  • UI polish: Make.com's module search and drag-and-drop is more beginner-friendly.
  • App coverage: Some niche SaaS tools have Make integrations but no n8n community nodes yet.
  • Error messages: Make.com gives clearer errors for non-technical users.
  • Initial setup: Self-hosting requires Docker or a VPS. Make.com is SaaS — just sign up.

If you run under 10 simple scenarios and hate command lines: Make.com is fine. If you're technical, building complex AI workflows, or hitting operation limits: n8n wins.

Migration Checklist

  • [ ] List all Make.com scenarios + module count + monthly run frequency
  • [ ] Calculate operations per scenario (modules × runs)
  • [ ] Install n8n (npx n8n for local, Docker for production)
  • [ ] Start with your highest-operation scenario first (biggest immediate saving)
  • [ ] Use the concept table above to translate each module
  • [ ] Test with n8n's test webhook URL before switching live traffic
  • [ ] Update webhook URLs in your forms/services to n8n production URLs
  • [ ] Disable Make.com scenario after confirming n8n works
  • [ ] Repeat for remaining scenarios over 2-3 weeks
  • [ ] Cancel Make.com subscription after 30 days

Ready-Made Templates (Skip the Migration Work)

Already running n8n? These pre-built templates save hours of setup:

Browse all 15 templates at stripeai.gumroad.com.


Alex Kane builds automation tools at FlowKit. Ready-to-use n8n workflow templates for businesses, developers, and teams.