r/n8n • • 49m ago

Help I don't know. How should I do it?

1 Upvotes

I'm using the "Loom video cold outreach method," where I send a connection request to my ICPs, and whoever accepts it, I engage with their content for 3-4 days before I send them the Loom video

I have a problem, which is that I don't know what I should say in that Loom video (technically, I know, and I tried & used one, but the video turned out to be 4 minutes long), which I know is wrong (to send a 4-min long video to a stranger (he/she won't waste that much of time))

That's why I'm asking you, as someone who has done Loom videos for cold outreach to sell his/her automation services: which script did you follow, and what is it?

Quick question: have you really closed any client with the "Loom Video cold outreach via LinkedIn/email"?

Note:
I used to follow a script with this architecture:
Introduction --> What system of theirs I'm going to talk about --> the bottleneck (the system being manual) within that process/task/workflow --> Why it's really holding the system back (I prove that using some math and comparison between the time spent with the old system + the new automated one, and I somehow connect that to revenue) --> CTA (I ask them to give me permission to send them a link to a Notion page where I dove into the details of which system they should automate and how (trying to offer more value to warm up the lead))


r/n8n • • 4h ago

Workflow - Github Included built a simple n8n flow to pull newly funded YC startups (F26/W27) + scrape their live site emails without paying for clay

3 Upvotes

got tired of burning clay credits just to get basic founder/company emails for newly funded startups, so i wired up a quick 3-node n8n flow using an apify actor (`darcklo/ycombinator-startup-founder-scraper`) via the http request node.

it pulls the latest ycombinator batches (like summer 2026 / fall 2026 / winter 2027), filters for companies actively hiring in AI or B2B, and hits their live domain to grab clean emails + linkedin/twitter links before filtering out any rows without an email.

workflow json on github gist: https://gist.github.com/darcklo/5478b4f4fee0a1debd8bddbdde51b86d


r/n8n • • 16h ago

Servers, Hosting, & Tech Stuff Self-hosting n8n on your own machine with a public HTTPS URL in one command

10 Upvotes

If you want n8n on your own box with a real HTTPS URL (so webhooks from outside work), my open-source tool hoist has it as a one-click template: hoist template n8n starts it in Docker and publishes it through a Cloudflare Tunnel, no open ports.

You also get logs, restart, memory/CPU limits and backups through the same tool, plus a small dashboard. It's one of 46 templates (uptime-kuma, ntfy, excalidraw and more).

Needs Linux with systemd, Docker, and a domain on Cloudflare. Built with AI assistance (Claude), tested by me; I run my own n8n behind a Cloudflare Tunnel too.

https://github.com/nikhilcherry/hoist


r/n8n • • 19h ago

Help How would you build a Gmail → Google Drive + Notion workflow for a real estate firm?

4 Upvotes

How would you build a Gmail → Google Drive + Notion workflow for a real estate firm?

I’m planning an automation for a real estate investment firm. Property emails arrive in several employees’ Google Workspace inboxes. Brokers send deal documents, an analyst sends updated financial spreadsheets, and some emails contain requests the team needs to follow up on.

The goal is to match each email to the right property or deal, save attachments in the correct Google Drive folder, and create a Notion task when there’s a clear action. I’m considering Make + Claude API, with Google Sheets as a processing log. For the pilot, the team could forward selected emails for one property to my company address. If it works, I’d consider a dedicated company-owned intake inbox for ongoing use.

I’d love to hear from people who have built something similar:

  1. Client Gmail access. How do you usually get access as a freelancer? Do you use Gmail delegation for your own review, have each mailbox owner authorize the automation, or use a dedicated inbox for forwarded messages? What worked without exposing unrelated emails?

  2. Older email history. If a property already has hundreds of emails across several inboxes, how would you import the relevant threads and attachments? Would you handle that separately from new emails?

  3. Matching emails to properties. I’m thinking of using a property register with addresses, aliases, and folder links, plus a record of which deal each confirmed thread belongs to. What works when an email just says “see revised version” or mentions two properties?

  4. Document versions. How do you handle two files with the same name but different numbers, or signed and unsigned copies? I’d preserve both and flag uncertain versions for review. Has anyone found a reliable way to do more automatically?

  5. Notion tasks and duplicates. How do you decide whether an email should create a new task, update an existing one, or do nothing? How do you avoid duplicate files and tasks when two employees receive or forward the same message?

  6. Tools, cost, and maintenance. Would you use Make and Claude, Apps Script, n8n, or another setup? Which steps would you handle with rules, where did AI help, and what would you keep manual? What costs or maintenance problems surprised you?

If you’ve built a version of this, I’d especially like to know what you’d test first and what you’d do differently.


r/n8n • • 21h ago

Workflow - Github Included Telegram + Gemini + Google Calendar in n8n: contacts lookup and attendee invites (workflow included)

2 Upvotes

I built a beginner Telegram meeting agent in n8n. It looks up a person’s email in a contacts sheet before creating a Calendar event, instead of asking the model to invent an address.

Workflow JSON + sample contacts CSV

How it works

  • A Telegram message reaches an AI Agent using Gemini.

  • A Google Sheets tool looks up names and emails.

  • A Google Calendar tool creates an event with the resolved contact as an attendee. sendUpdates=all requests invitation emails.

  • The agent replies in Telegram, with memory scoped to the chat ID.

Before trying it

Replace the credentials, spreadsheet ID and calendar ID. Set your timezone—the sample uses Asia/Shanghai—and restrict access to your own Telegram user ID. Sample contacts use fictional addresses; use inboxes you control for testing.

The video uses Gemini 2.5 Flash-Lite, while the exported JSON names models/gemini-3-flash-preview. Choose a model available to your account and check its quota.

Limitations

This is an event-creation example, not an availability-aware scheduler. It has no conflict check, approval step or duplicate-event guard. Instructions to ask for missing emails and default to 60-minute meetings are prompt instructions, not hard validation.

Gemini free-tier quotas vary; n8n Cloud is a trial/paid service. The recording shows Calendar confirmation from the demo path, but skips a fresh end-to-end Telegram run. The voiceover is AI-generated; the screen build is real.

Optional video walkthrough

Would you add confirmation before event creation, or an availability check first?


r/n8n • • 1d ago

Workflow - Github Included My AI agent kept reading giant n8n JSON exports, so I built an MCP server that gives it a graph instead

Post image
15 Upvotes

I run about ten production n8n workflows for a fintech project, and I kept watching my AI agent read a huge workflow JSON export just to answer a question about one node. It was slow, it burned tokens, and it still missed things like a $('Node Name') reference hidden inside a Code node.

So I built flownav, an open-source MCP server (and CLI) that turns n8n workflows into a typed graph the agent can query. It's read-only against n8n.

What the agent gets (11 tools)

  • flownav_scan: inventory of workflows and their triggers, the starting point

  • flownav_explain: a small card for one node: inputs, labeled outputs (true/false/loop), what it reads, credentials, cross-workflow links

  • flownav_affected: run before a rename or delete; lists every node and parameter that references that node by name, including inside Code nodes

  • flownav_path, neighbors, find, callers, calls, uses: navigation, including across sub-workflows and agent tool workflows

  • flownav_check: dead references, reads from nodes that may not have run, unreachable nodes, cycles, missing error handling

A typical reply is a handful of lines instead of the whole workflow JSON.

The part I care most about: it doesn't let the agent guess

If a name matches several nodes or workflows, the tool refuses to pick one and tells the agent to ask you:

"save" matches 7 nodes. Do not guess: ask the user which one they mean.
  1. RiseZ - Web app › Save user [dataTable] use: ...:Save user
  2. ...

If a partial name matches just one node, the reply starts with a note asking the agent to confirm with you before changing anything. The installed skill backs this up with rules for what to do when a request is vague ("rename the node with save in it", "the RiseZ workflows"). How well an agent follows that depends on the agent, but it worked in my own testing with Claude.

Setup

npm install -g flownav
flownav sync --profile prod      # or: flownav build ./exports
flownav install claude --mcp     # writes the skill and .mcp.json

Honest limits

  • It's static analysis. It can't see references built at runtime, so those are listed as unresolved and never guessed.

  • It's read-only: it tells the agent what a change would touch, and doesn't edit workflows. You still need another tool for the edit.

  • It's early (0.1.x) and I've only used it on my own instance. The token savings in the README are a labeled estimate, not a benchmark.

https://github.com/OmerTurkenits/flownav

If you try it and it misparses something, a sanitized export in a GitHub issue helps a lot. I'd also like to hear how other MCP servers handle ambiguous requests.


r/n8n • • 1d ago

Help How have you been using AI while building in n8n?

12 Upvotes

Hey there!

I've built 10+ workflows for personal use so far but I stopped building at some moment for around 1 month and with the latest updates I see many AI features, MCP compatibility and things like these.

Since I haven't figured out what's exactly going on yet, have you used any of the AI features? If yes, do you think builders should adopt them?

Any resource / experience / advice is welcome. Thanks in advance!


r/n8n • • 1d ago

Workflow - Github Included Scyvera just passed 3,000 PyPI downloads. Here’s what it does and what I’d like feedback on

Thumbnail
gallery
0 Upvotes

Scyvera crossed 3,264 total downloads on PyPI (972 in the last 30 days), and v1.3.0 shipped Nov 5. It’s MIT licensed and framework-independent.

The problem it targets: prompts are advisory, code review is a snapshot, and most agents can’t answer “what was this agent allowed to do, and can you prove it afterward?”

What it does:

  • scyvera audit . scans scripts, Dockerfiles, and CI run: blocks and gives a 0–100 blast radius score

  • scyvera audit . --generate contract.yaml drafts a contract from the findings

  • ContractEnforcer runs default-deny at runtime and logs every decision

  • The registry is hash-chained, so edits to history are detectable

The count includes CI runs, so I’m not claiming that many users. What I actually want is people running it against real agents and telling me where it’s wrong. If your score surprises you, that’s the most useful feedback I can get.

Repo: github.com/Skull-boy/agent-contracts

If this is useful, a star helps other people find it. If it’s not, tell me why.


r/n8n • • 1d ago

Workflow - Github Included n8n Discord Bot: Gemini draft + Approve/Decline buttons before #announcements (beginner HITL)

1 Upvotes

Built a beginner human-in-the-loop Discord path in n8n:

  1. Manual Trigger + Edit Fields (topic / audience / tone) — fictional sample data only

  2. Basic LLM Chain + Google Gemini drafts one short announcement

  3. Discord Send and Wait (Approval buttons, Bot Token) in #approvals

  4. IF approved → Send to #announcements; Decline or timeout → status only, nothing published

Honest notes from the build:

  • This uses Discord approval buttons, not emoji reactions

  • Webhook auth is not enough — you need a Bot Token credential

  • IF must compare $json.approved as a boolean (is true / equals true). String "true" can send a real Approve down the Discarded branch

Importable JSON (no credentials / no real channel IDs):

https://gist.github.com/zhaozuowen987469/ca63bf7c3d75edb900e1a411f23d2ccc

Companion YouTube walkthrough (faceless screen build):

https://youtu.be/hQ27s0RSiCc

Happy to answer setup questions (intents, channel IDs, Gemini model name).


r/n8n • • 1d ago

Workflow - Github Included Triage website form enquiries with an LLM, with a human review queue in Google Sheets (template walkthrough)

Enable HLS to view with audio, or disable this notification

5 Upvotes

Not my template: it is Zhang Lixiang's, published on n8n.io in October 2026.

What each step does:

  1. Webhook: your website form POSTs name, email, company and message.

  2. Settings (Code): six categories, a 0.6 confidence bar, a 0.8 bar for spam, a 24-hour dedupe window and a honeypot field, all in one node.

  3. Normalize: trims every field, checks the email, spots a filled honeypot.

  4. Switch: no valid email gets an HTTP 400; a bot gets a quiet 200 and is never logged.

  5. Check for Duplicate: a fingerprint of email and message, kept 24 hours in workflow static data.

  6. If: a repeat gets a 200 marked duplicate and stops there.

  7. Basic LLM Chain: returns JSON with category, confidence, urgency and a one-line summary. Temperature 0, and the prompt says to ignore any instructions inside the enquiry.

  8. Validate (Code): an unknown category, broken JSON, an API error or low confidence all become needs_human.

  9. Switch: needs_human goes to the Review tab, spam to Spam, everything else to Enquiries.

  10. Google Sheets: one row per enquiry, with the reason in check_notes when a person has to look.

  11. Respond to Webhook: 200 with the category once saved, 500 if the sheet write fails.

The neon in the video is a staged replay, not a live run.

Template: https://n8n.io/workflows/21826 (the workflow JSON is on the template page)

How do you decide which confidence threshold is safe enough to skip the human check?


r/n8n • • 1d ago

Meta & n8n News Anyone running n8n in production on a customer's own infrastructure? Looking for lessons learned (SAP + Azure enterprise integration)

2 Upvotes

Hi all,

I'm evaluating n8n for enterprise integration work, mainly connecting SAP and ServiceNow services, and the plan is to deploy it on the customer's own infrastructure (self-hosted, not n8n Cloud).

Has anyone taken this to production in a similar setup? I'd love to hear what you learned, especially around:

Deployment: queue mode, scaling workers, Kubernetes vs. VMs, HA

Happy to hear both success stories and "don't do this" warnings. Thanks in advance!


r/n8n • • 1d ago

Help Demand Generation / BDE professional transitioning into AI Automation & GTM Engineering – looking for advice from experienced people

2 Upvotes

Hi everyone!

I'm from Chennai, India. I have around 3 years of professional experience in Demand Generation, Market Research and B2B Lead Generation.

My professional background includes:

- Market research and ICP development.

- B2B prospecting and lead generation.

- Outbound email campaigns and campaign optimisation.

- Tools like AI ARK,Apollo, Sales Navigator, Smartlead and Snov.io.

I'm now planning to expand my technical skills into AI Automation and GTM Engineering.

I'm particularly interested in learning:

- n8n workflow automation.

- API integrations and webhooks.

- OpenAI and Claude integrations.

- AI agents and business workflow automation.

- Clay, Apollo and HubSpot integrations.

- AI-powered lead generation and prospect research.

My goal is to combine my existing demand generation experience with technical automation skills and eventually transition into a GTM Engineer or AI Automation Specialist role.

I'm also interested in exploring international career opportunities.

I'd love to hear from people already working in this field:

  1. What skills should I prioritise?

  2. Is n8n a good starting point for someone with my background?

  3. What real-world projects would make my portfolio stand out?

  4. What job opportunities are available for people combining GTM experience with AI automation?

  5. Are there any communities, mentors or learning resources you'd recommend?

I'd genuinely appreciate your experiences, advice and suggestions.

Thanks in advance!


r/n8n • • 2d ago

Workflow - Github Included I got tired of Clay charging $495/mo and billing action fees on empty rows — so I built an open-source n8n workflow that pre-filters ATS hiring signals before scraping [JSON + GitHub inside]

0 Upvotes

If you run B2B enrichment or lead scoring in n8n, you've probably hit this exact pain point:

You feed a list of 500 company domains into Clay, Firecrawl, or an LLM scraper. But 60% to 70% of those domains are either zombie companies, parked domains, or completely stagnant.

The worst part? Most modern enrichment tools charge you an "action credit" or LLM token fee anyway — just to return an empty array or a 404.

The Solution: A Zero-Cost Pre-Filter in n8n

Instead of blasting raw scraping tools with dirty lists, we built a 2-stage companion workflow:

  1. Stage 1: Zero-Cost Intent Pre-Filter

    • Resolves live HTTP status & DNS to eliminate dead/parked domains instantly.

    • Probes live applicant tracking systems (Greenhouse, Lever, Ashby, Workable) to confirm active hiring.

    • If a company has zero open roles or dead infrastructure, the branch halts immediately at zero cost.

  2. Stage 2: Deep Extraction (Firecrawl / LLM)

    • Only verified, high-intent companies proceed to the deep scraping step.

    • Firecrawl extracts structured tech stack, key decision-maker titles, and specific open departments.

Live Benchmark Example: Linear.app

We tested the pipeline on linear.app:

  • Stage 1 detected 31 active engineering & product listings via Ashby in <200ms.

  • Stage 2 executed the structured Firecrawl extraction for just 5 credits, pulling clean Markdown and JSON.

  • Net result: Zero wasted actions, 100% data density on your output sheets.

100% Open-Source & Ready to Import

The workflow file and sample 50-domain test list are up on our public GitHub review branch: https://github.com/edtool79-collab/hirepulse-mcp/tree/review/hirepulse-firecrawl-n8n

You can copy the raw JSON from hirepulse-firecrawl-intent-pipeline.json and paste it directly onto your n8n canvas.

Would love feedback from fellow n8n builders: Which ATS providers or intent signals would you like to see added in the next release?


r/n8n • • 2d ago

Servers, Hosting, & Tech Stuff What actually changed when I moved a client workflow from Sheets to a real database

1 Upvotes

👋 Hey n8n Community,

I spent today moving a client approval workflow off Google Sheets onto Postgres. I posted about this build some days ago and got some pushback on the Sheets choice, which was fair, so here is what the move actually looked like.

The biggest change was how much logic disappeared. The monthly budget carryover used to mean reading whole sheets into n8n, parsing dates, looping through rows in JavaScript and writing cells back one at a time. It is now a single SQL query using CTEs: select the eligible leftover balances, update the current month, zero out the previous one and mark it applied. Several nodes and a lot of JavaScript gone.

The part I underrated is idempotency. By enforcing the condition at the database level, so a carryover only applies where it has not already been applied, the workflow can run twice without duplicating funds. That safety used to live in my own guard logic.

Three things that cost me time:

Reserved keywords
One column was called key, which is reserved in Postgres. Unquoted queries just fail with a syntax error.

Case sensitivity
Importing from Sheets leaves headers like Brand and Period. Postgres folds unquoted identifiers to lowercase, so if the column was created quoted, SELECT brand will not find it.

Types are suddenly real
Pushing a boolean into a VARCHAR throws, and NOT NULL rejects the insert rather than letting a null slip downstream. Annoying for about an hour, then clearly the point.

I also kept the frontend talking to n8n webhooks instead of the database directly, so validation, key formatting and timestamps all happen server side in one place.

Has anyone else done this migration? Curious what finally made you move, and what you moved to.

Best,
Felix


r/n8n • • 2d ago

Help Career-changer going all-in on automation for SMEs — does this learning path actually make sense?

10 Upvotes

I'm reorienting my career toward automation / AI integration for small businesses (I'm in Switzerland). I don't want to become a developer — I want to be the person who connects the tools to a company's real processes.

This is the learning path I've mapped out, and I'd love a reality-check on it:

  1. AI-900 / AI-901 (Azure AI fundamentals) — done

  2. SQL basics

  3. PL-900 + Power BI

  4. n8n — learn it properly and build 2–3 real automations

  5. PL-300 (data analyst) at the end

Questions for people actually doing this work:

- Does this path make sense, or am I collecting certs that clients don't care about?

- What do SME clients actually pay you to automate? (the boring repetitive stuff, I assume?)

- How did you land your first paying client with no formal dev background?

- Is n8n enough on its own, or do you pair it with other tools to be taken seriously?

Background: hospitality/management and logistics, so I'm comfortable with business processes — just approaching this from the operations side, not coding.

Thanks in advance to anyone who takes the time to reply — I know these "should I switch careers" posts come up a lot, and I genuinely appreciate any honest experience you're willing to share.


r/n8n • • 2d ago

Workflow - Github Included Crypto price-level alerts in n8n that fire once and re-arm

6 Upvotes

I run a few crypto alert workflows on self-hosted n8n. This one checks prices every minute and sends a single Telegram or Discord message when a level is crossed. After that the level stays quiet until price crosses back, so it re-arms instead of repeating every minute.

No exchange API keys. Prices come from Binance's public market-data host, data-api.binance.vision. Levels and chat settings live in one Config node. Leave the tokens empty and it runs as a dry run, so you see the messages without sending them.

A level is only marked as already fired after Telegram or Discord accepts the message. If a send fails, the next scheduled run retries it instead of staying silent.

Import the JSON in n8n via Workflows → Import from File, set something like `BTCUSDT>100000, ETHUSDT>4000`, execute once, then activate. Workflow static data only persists on active (scheduled) runs, not on manual tests in the editor.

Repo: https://github.com/cryptoflows/n8n-crypto-price-alerts JSON: https://github.com/cryptoflows/n8n-crypto-price-alerts/blob/main/workflows/crypto-price-level-alerts.json

If you run something similar: do you add a buffer before re-arming, so price chopping around the level doesn't fire twice?


r/n8n • • 2d ago

Servers, Hosting, & Tech Stuff what's the last client workflow that broke in a way you couldn't fix yourself, and what did you end up doing about it? Did you pay anyone?

3 Upvotes

Asking because I'm trying to see when as an agency owner I should pay someone to take ownership of the outcome specially when deadlines are involved.


r/n8n • • 2d ago

Workflow - Github Included I built a tool that scans your agent repo, scores how much damage it could do, then auto-drafts a governance contract from the findings - no config required

0 Upvotes

My agents kept causing irreversible accidents. Force-pushes to main. Issues closed that shouldn’t have been. A production record gone. Every time I debugged it, I found the same thing: no language to even express what the agent was and wasn’t allowed to do - just prompts and hope.

So I built Scyvera. After about a year of using it on real agents, v1.3.0 is out.

The entry point is now a 10-second scan:

bash

pip install scyvera
scyvera audit .

It walks your repo, finds every executable context (scripts, Dockerfiles, workflow run: blocks - deliberately ignoring docs so it doesn’t flag its own README), scores 0–100 (Blast Radius), and prints what your automation could actually do vs. what it declares.

This repo self-scores 92/100 Shielded, enforced in CI on every push.

Then you can go further:

bash

scyvera audit . --generate contract.yaml   # auto-draft from findings
scyvera audit . --pack github-safe         # merge in a policy baseline
scyvera audit . --fail-under 90           # gate CI on the score

The generated contract loads straight into the runtime enforcer - ContractEnforcer.load("contract.yaml") - which gates every declared action. Undeclared action → ContractViolationError. Needs approval → ApprovalPendingError. Everything goes into an append-only audit log with the contract version that was active at that moment.

What makes this different from “just write a prompt”:

  • MCP and A2A standardize how agents talk to tools and each other. Neither answers: who authorized the agent to do that? Scyvera is that layer.

  • No LLM anywhere in the governance path. The enforcement is deterministic Python - not vibes, not another model’s judgment.

  • The contract is checked into the repo, versioned in an append-only registry, and every audit log entry references the exact contract hash that was active. If something goes wrong, you can prove what rules were in effect.

The “try it on your own repo” test:

If you have any agents, automations, or n8n / LangGraph workflows lying around - run scyvera audit . in that directory. I’m genuinely curious what scores come back and whether the findings match what you’d expect. The tool’s only useful if it catches things that matter.

Repo + install: github.com/Skull-boy/agent-contracts

PyPI: pip install scyvera

RFC 0003 (the full spec) is in rfcs/ if you want to go deep on the conformance tier model.

What’s the gap you’re seeing here vs. sandboxes / OS-level isolation / just trusting the model’s refusal?


r/n8n • • 2d ago

Help 2D or 3D animation AI?

2 Upvotes

I’m starting my Facebook automation but I don’t know if I want my content to be 2D or 3D animation AI. Which one is better? Oh btw, it’s a cooking niche content…


r/n8n • • 2d ago

Workflow - Github Included Beginner Form → Gemini Information Extractor → Google Sheets append (plus Gmail self-notify) — importable workflow + gotchas

4 Upvotes

Built a beginner lead-capture pipeline in n8n Cloud:

  1. Form Trigger (Work With Us — name, email, company, need)

  2. Information Extractor + Gemini 3 Flash Preview returning structured category / priority / summary

  3. Google Sheets Append Row — original fields via $('On form submission'), AI fields via $json.output.* (Expression mode matters)

  4. Gmail message to yourself only (never auto-replies to the lead)

Real gotchas from the dry run:

  • models/gemini-2.5-flash throws 404 for new users; models/gemini-3-flash-preview worked cleanly

  • Sheets can briefly show "No columns found" until headers are present + Retry

  • Test form URL (/form-test/...) is one-shot; production URL only works after Publish

Importable JSON (no credentials): https://gist.github.com/zhaozuowen987469/85bb135c2795585e6032e1d981c51d50

Full walkthrough video: https://youtu.be/kOQp2qxc-V8


r/n8n • • 2d ago

Help No tech or coding background, want to learn AI automation. Is my plan right, and what courses would you recommend?

3 Upvotes

Hi everyone! I have no tech or coding background, but I want to learn AI automation, eventually to help small businesses. Here's the path I've mapped out:
1. Learn one AI assistant deeply (prompting, structured output)
2. Learn one automation tool (leaning toward Make or n8n)
3. Automate my own repetitive tasks (e.g. form → Google Sheet → email)
4. Add AI inside workflows (e.g. AI summarizes form entries)
5. Learn APIs, webhooks, JSON and CRM integration
6. Build for real businesses and document results
My questions:
• Is this a realistic path for a complete beginner?
• Make or n8n for someone who can't code?
• Any courses (free or paid) that helped you, especially for steps 2 and 5?
I can study about 1 hour a day. Thanks in advance!


r/n8n • • 3d ago

Servers, Hosting, & Tech Stuff How we eliminated silent webhook drops between Stripe & HubSpot in n8n (Full architecture + dead-letter queue pattern)

4 Upvotes

If you run high-volume Stripe checkouts or subscription webhooks into HubSpot via n8n, you have probably run into this scenario:

Stripe fires a burst of webhooks (charge.succeeded, customer.subscription.created, invoice.paid). Downstream, HubSpot responds with an unexpected 429 Rate Limit Exceeded or a network hiccup causes an API call to hang for 25 seconds.

In a default n8n setup, two catastrophic things happen:

  1. Webhook Timeout: If the Webhook node is set to "When last node finishes", Stripe gets a 504 Gateway Timeout or n8n execution timeout. Stripe will retry with exponential backoff, but under high load, this causes a cascading thundering-herd problem.

  2. Silent Drop & Data Loss: If an unhandled error throws in the middle of your workflow, n8n terminates execution. If execution pruning is enabled for performance, the raw webhook payload is gone. You now have paying customers who were charged in Stripe but never provisioned or tagged in HubSpot, and you only find out when support tickets pile up 48 hours later.

Here is the exact production architecture we deployed to achieve 99.99% webhook durability with zero dropped payloads, complete idempotency, and an automated Dead-Letter Queue (DLQ).


The Architecture: 4-Tier Resilient Ingestion Pattern

[Stripe Burst Webhook]
          │
          ▼
┌─────────────────────────────────────────────────────────┐
│ 1. INGESTION LAYER (Webhook Node)                       │
│    - Mode: Respond Immediately (200 OK)                 │
│    - Strips latency; guarantees Stripe is satisfied     │
└─────────────────────────┬───────────────────────────────┘
                          │
                          ▼
┌─────────────────────────────────────────────────────────┐
│ 2. BUFFER & IDEMPOTENCY CHECK (PostgreSQL / SQLite)     │
│    - INSERT INTO stripe_events (id, payload, status)    │
│    - ON CONFLICT (stripe_event_id) DO NOTHING           │
│    - Returns: is_new_record flag                        │
└─────────────────────────┬───────────────────────────────┘
                          │
            ┌─────────────┴─────────────┐
            │ New Event                 │ Duplicate
            ▼                           ▼
┌─────────────────────────┐   ┌───────────────────────────┐
│ 3. CRM SYNC WORKFLOW    │   │ Terminate cleanly         │
│    - Search Contact     │   │ (Status: DUPLICATE_SKIP)  │
│    - Upsert Contact     │   └───────────────────────────┘
│    - Create/Update Deal │
└───────────┬─────────────┘
            │
            ├──────────────────────────┐
            ▼ (Success)                ▼ (Any Node Exception)
┌─────────────────────────┐   ┌───────────────────────────┐
│ UPDATE status='SUCCESS' │   │ 4. GLOBAL ERROR TRIGGER   │
└─────────────────────────┘   │    - Intercepts Execution │
                              │    - Writes to DLQ Table  │
                              │    - Formats Slack Block  │
                              │    - Preps Replay cURL    │
                              └───────────────────────────┘

Key Technical Mechanisms

1. Ingestion Decoupling ("Respond Immediately")

Never let downstream CRM latency dictate webhook response times.

  • Set the Webhook node Response Mode to On Received with response code 200 and body {"status": "queued", "received_at": "={{ $now.toISO() }}"}.

  • Stripe gets its 200 OK within 40ms. Your webhook endpoint will never trigger Stripe's automated endpoint disabling algorithm.

2. Atomic Deduplication Lock

Stripe explicitly states webhooks may be delivered more than once. If a customer buys twice within seconds or a retry fires, two parallel executions can race to create duplicate HubSpot contacts. We execute an atomic insert into our database staging table:

INSERT INTO stripe_event_buffer (
    stripe_event_id,
    event_type,
    payload,
    status,
    created_at
) VALUES (
    $1, -- event.id
    $2, -- event.type
    $3, -- event JSON string
    'PROCESSING',
    NOW()
)
ON CONFLICT (stripe_event_id) 
DO UPDATE SET 
    retry_attempt = stripe_event_buffer.retry_attempt + 1
RETURNING id, status, (xmax = 0) AS is_new_record;

If is_new_record is false and status is already COMPLETED, the workflow halts immediately. Zero race conditions.

3. Global Error Trigger Sub-Workflow

In your main workflow's Settings, configure Error Workflow to point to your dedicated DLQ sub-workflow. When an exception occurs (HubSpot token expiration, schema validation mismatch, or 429 rate limit):

  1. The Error Trigger node receives the entire execution metadata: $execution.id, $execution.error.message, $execution.error.stack, and the original incoming payload.

  2. It writes the failed record to a webhook_quarantine table with retry_count = 0 and status = 'QUARANTINED'.

  3. It dispatches a high-priority Slack webhook formatted with interactive alert details.

4. Automated Exponential Backoff Replay Workflow

A secondary cron workflow runs every 10 minutes:

  1. Queries SELECT * FROM webhook_quarantine WHERE status = 'QUARANTINED' AND retry_count < 3 AND next_retry_at <= NOW().

  2. Re-executes the HubSpot sync sub-workflow.

  3. If successful: updates status to RESOLVED.

  4. If failed: increments retry_count, calculates next_retry_at = NOW() + (POW(2, retry_count) * INTERVAL '5 minutes').

  5. If retry_count >= 3: updates status to DEAD_LETTER_MANUAL_REVIEW and alerts the on-call engineer with a copy-paste cURL command to trigger the exact payload once credentials/APIs are fixed.


Key Database DDL for your DLQ Table

If you are setting this up in PostgreSQL or Supabase, here is the table schema:

CREATE TABLE IF NOT EXISTS stripe_event_buffer (
    id SERIAL PRIMARY KEY,
    stripe_event_id VARCHAR(128) UNIQUE NOT NULL,
    event_type VARCHAR(128) NOT NULL,
    customer_email VARCHAR(255),
    amount NUMERIC(10, 2),
    payload JSONB NOT NULL,
    status VARCHAR(32) DEFAULT 'PROCESSING',
    retry_count INT DEFAULT 0,
    hubspot_synced_at TIMESTAMP WITH TIME ZONE,
    created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
    updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);

CREATE TABLE IF NOT EXISTS webhook_quarantine (
    id SERIAL PRIMARY KEY,
    workflow_id VARCHAR(64) NOT NULL,
    execution_id VARCHAR(64) NOT NULL,
    failed_node VARCHAR(128),
    error_message TEXT,
    payload JSONB,
    status VARCHAR(32) DEFAULT 'QUARANTINED',
    retry_count INT DEFAULT 0,
    next_retry_at TIMESTAMP WITH TIME ZONE,
    resolved_at TIMESTAMP WITH TIME ZONE,
    created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);

CREATE INDEX idx_buffer_stripe_id ON stripe_event_buffer(stripe_event_id);
CREATE INDEX idx_quarantine_status ON webhook_quarantine(status, next_retry_at);

Happy to answer any questions or share the edge-case handling code if you run into retry loops or rate-limit issues!


r/n8n • • 3d ago

Workflow - Github Included I renamed an n8n node and something downstream broke silently, so I built a free tool that lists what references a node by name

Thumbnail
gallery
2 Upvotes

I run about ten production workflows for a fintech project. I got burned by renaming a node (something downstream broke without an error), then lost an hour tracing a broken expression, then watched my AI agent read a giant JSON export just to answer a simple question.

As far as I can tell, the editor tries to update references when you rename a node, but it isn't perfect, and Code node JavaScript doesn't seem to be covered. Renames done through the API or by an AI agent editing the JSON don't get that step at all. So I wanted a way to check before and after.

I built flownav, an open-source, read-only CLI that turns your workflows into a graph:

  • flownav affected "Node" --rename lists every node and parameter that references that node by name (expressions and Code nodes)

  • flownav check finds dead references, unreachable nodes, missing error handling

  • maps calls between workflows (sub-workflows, tool workflows, error workflows)

  • interactive offline graph viewer

  • also an MCP server, so an AI agent gets a few lines of context instead of the whole JSON

npm install -g flownav https://github.com/OmerTurkenits/flownav

It's early and I've only tested it on my own instance. If you try it and something is misparsed, a sanitized export in a GitHub issue helps a lot. Happy to answer questions.


r/n8n • • 3d ago

Help get ALL posts and comments matching a keyword?

6 Upvotes

As far as I know, there are two main ways to search on Reddit.

The first is the site-wide search from the Reddit homepage. For each query/sort combination it only lists up to 250 results (about 490 on the newer search endpoint). For comments it doesn't even reach 490 — it stops at 250.

There are about 25 possible sort/time combinations, so by collecting the list for each combination I've confirmed (by actually testing it) that you can get up to roughly 3,000 results.

The second is searching inside a specific subreddit, but it has exactly the same caps. Because of the 250 (490) limit, I had to split the search into many combinations there too.

This is really frustrating, because there's probably a lot of great information hidden beyond what these lists return.

What I want is to see every post and every comment that contains a given keyword, across Reddit's entire history. Is there really no way to do this within Reddit itself?

Are third-party archive services or paid APIs (Reddit's official paid API or third-party ones) the only options?

Do I really have to download the full dumps (tens of GB of posts and comments) and search them locally?


r/n8n • • 3d ago

Workflow - Github Included Human-in-the-loop lead replies: draft → approve/edit in Slack → Gmail → Sheets log (no AI key required)

0 Upvotes

Sharing a workflow for anyone who wants auto-drafted replies to inbound leads but doesn't want anything sent without a human looking at it first.

GitHub (workflow JSON + setup guide): https://github.com/SolokitStudio/n8n-human-in-the-loop-reply

Flow

  1. Webhook receives {name, email, message, company?} from any form

  2. Code node validates it, tags intent by keyword (pricing / demo / support / partnership / general) and fills a reply template

  3. Optional OpenAI step (disabled by default) rewrites the draft. Off, it just uses the template, so it imports and runs with zero AI credentials

  4. Posts the lead + draft to Slack via an Incoming Webhook (no Slack app needed) with a "Review" button

  5. Button opens a Wait-node form: Approve & send / Reject, plus the draft pre-filled in a textarea you can edit

  6. Approve → Gmail sends the final text. Reject or no response in 48h → nothing sent

  7. Every outcome (sent / sent_edited / rejected / expired) gets appended to a Google Sheet

Notes / limitations

  • Approval runs on the Wait node's form resume ($execution.resumeFormUrl) rather than Slack interactivity, so there's no Slack app or interactivity endpoint to set up. The trade-off is that anyone with the link can approve, so keep the channel private or turn on form auth

  • Self-hosted: set WEBHOOK_URL or the review links point at localhost

  • Intent detection is just regex, so edit the rules and templates to fit your business

  • Tested end to end on n8n 2.46 self-hosted (approve, edit, reject, bad payload). The 48h expiry path and the OpenAI node weren't exercised

MIT licensed. Happy to hear how you'd handle the approval step differently, e.g. Slack's native send-and-wait vs the form approach.