How do I create a custom workflow interface n8n
I've learned about automation, but I don't know how to integrate websites with the n8n workflow, and I can't find the resources.
I've learned about automation, but I don't know how to integrate websites with the n8n workflow, and I can't find the resources.
👋 Hey Everyone,
Two weeks back I built a support inbox router for my friend Mike's small company – Gmail trigger, AI classifies each email into Billing / Technical / Sales / Other, scores priority, drops a clean summary into the matching Slack channel. Sarah on his finance team was tired of getting CC'd on bug reports, so the routing actually had to work.
After my last stress test post (the one where I broke our extraction with degraded invoices), a bunch of people asked the obvious follow-up: yeah but how do you stress test a classification workflow? Different problem. There's no "ground truth amount" to compare against – the model is making a judgment call.
So I sat down and wrote 50 deliberately awful emails. The kind of stuff that would actually land in Mike's support inbox on a bad week. Here's what I learned.
If you want to follow along or fork this, the template is published on n8n: https://n8n.io/workflows/15366-route-and-prioritize-support-emails-to-slack-channels-with-easybits/
I grouped them into five buckets, each designed to attack a different assumption the workflow makes:
1. Mixed-language emails – German body, English technical term ("authentication error", "timeout", "404"). Tests whether the language detection holds up when it shouldn't.
2. Tone vs. urgency mismatches – polite rage ("just wanted to flag the export has been broken for three days, no rush! 🙂"), and the inverse: aggressive-sounding emails about trivial issues. Tests whether priority leans too hard on sentiment.
3. Category overlap (requested from community) – billing questions that are actually bugs ("my invoice shows €0 but I was charged €49"), sales leads disguised as technical questions ("does your platform support SAML SSO? we're 200 people evaluating tools"), cancellation emails that are really retention conversations.
4. Adversarial structure – all-caps emails, emails with no subject line, emails that are 90% forwarded thread and 10% actual question, emojis-as-punctuation, single-sentence vague pings ("hey can you help?").
5. The not-actually-support stuff – vendor pitches dressed up as support requests, recruiter spam, customers replying "thanks!" to closed tickets, automated bounce notifications.
Three patterns showed up across the failures, and they're more interesting than the individual misses:
Failure pattern 1: Politeness as a priority sedative
The sentiment-based priority scoring weighted tone heavily. Someone writing "no rush, totally understand" about a three-day outage scored Normal. Someone yelling in all caps about a typo on a pricing page scored Urgent. The model was reading the customer's mood, not the situation's severity.
The fix wasn't a smarter prompt. It was admitting that some signals shouldn't go through the model at all. Words like "broken," "down," "can't login," "charged twice," "still waiting" now force Urgent regardless of how nicely they're phrased.
Failure pattern 2: Single-token language confusion
A German email with one English error message ("Hallo, ich bekomme einen 'authentication error' beim Login...") got routed to Sales. One token of English in a 60-word German email was enough to throw the classifier sideways. Made no sense logically, made total sense if you think about how these models actually work.
The fix here was prompt-level – explicit instruction that the language of the email is determined by the dominant language, not isolated technical terms. Not perfect, but cut the misroutes substantially in re-tests.
Failure pattern 3: Category confidence vs. category correctness
This was the most interesting one. The model was confidently wrong on overlap cases – billing-questions-that-are-bugs, sales-disguised-as-support. High confidence score, wrong category. Confidence was measuring "do I know what category this fits" not "does this email fit cleanly into one category."
This is the case where threshold-based fallback alone doesn't save you, because the model isn't uncertain – it's certain about the wrong answer. The honest fix was to stop treating Billing/Technical/Sales as exclusive – letting the model flag a secondary category for overlap cases, with the secondary channel getting a quiet FYI cross-post.
I haven't pushed this updated prompt to the repo yet. Drop a comment if you want it – happy to share.
Three takeaways, none of them about better prompts:
The "Other" channel – the catch-all for low confidence – turned into the most valuable channel in the whole setup. It's where every interesting edge case lands, and where Mike actually learns something about his customers.
'@easybits/n8n-nodes-extractor' – available out of the box on Cloud (just search for easybits Extractor), one-click install on self-hostedHappy to dig into the test cases, the prompt structure, or why I think category overlap is the underrated problem in support automation. And again – comment if you want the updated overlap prompt when it's ready.
Best,
Felix
I have recently started university, and I want to learn a skill that can help me earn money alongside my studies. I am considering learning n8n for AI automation, but with tools like Claude Code becoming increasingly powerful, I am wondering whether n8n is still worth learning.
Is there still a future in n8n, and can I realistically earn money by mastering it? Or are AI coding tools like Claude Code making n8n obsolete?
I would really appreciate some honest advice and guidance from people who have experience in AI automation and freelancing. Should I invest my time in learning n8n, or would it be better to focus on something else?
Looking for full SEO blog posting for Shopify. Basically keyword research, competitor research etc. etc.
Hey guys, Thinking of running a local LLM bot on our 20 year old plant nursery business WhatsApp number.
Reply-only, a few dozen messages a day, human-like delays, no broadcasts.
For anyone using Evolution API, WAHA, Baileys, or whatsapp-web.js:
• Banned or fine? What volume, engine, and account age?
• Any warning signs before a ban?
• Did browser-based setups hold up better than Baileys?
to be honest here i don’t want to give meta a cent of my money.
thanks a bunch
Hi everyone! I hope you're all doing well.
I'm relatively new to n8n and I'm looking for some advice on the business and deployment side of things. I'm building an AI chatbot for Instagram DMs, and I want to know how the actual handoff works when you sell it to a client (like a local e-commerce store).
How do you practically connect your n8n workflow to their specific page?
I have a few specific questions about the standard process:
👋 Hey n8n Community,
Community nodes are where a lot of the real magic in n8n happens, the ones that collapse a tangled setup into something you can actually maintain. I want to share the one that did that for me, and hear which ones did it for you.
My headache was document extraction. My first attempts were a Frankenstein chain: one node to pull text, another to parse it, a Code node to normalize the mess, then more logic to cross check the output and catch the fields that came back wrong. It sort of worked, but every new document format cracked it somewhere, and I spent more time patching than building.
The easybits Extractor node is what finally fixed it for me (full disclosure: I worked on it myself, since there was no simple and robust extraction node built especially for n8n). Extraction, structured output, and a confidence score came out of a single node, so all the normalizing and cross checking I had bolted on by hand was just gone. One node did the job that five were doing badly.
The takeaway is not really about one node though. It is that when a part of your workflow keeps growing extra nodes just to hold itself together, that is usually the signal to go looking for a community node built for exactly that job, instead of hardening the workaround.
So, which community node saved you from a monster setup? What was the before and after? And if you have built a node yourself, feel free to drop it here too, I would genuinely like to see what people are using.
Best,
Felix
P.S.: If you want to see how the community node looks in practice, almost all of the document flows I built are on my GitHub: https://github.com/felix-sattler-easybits/n8n-workflows
I'm sketching a handler for payment-provider webhooks in n8n (for a subscription flow) and want a sanity check before building the rest.
The two things I want to get right:
Verify the signature on the raw body, not the parsed JSON.
Don't process the same event twice, since providers retry.
Webhook node with "Raw Body" enabled, then a Code node:
const crypto = require('crypto');
const raw = (await this.helpers.getBinaryDataBuffer(0, 'data')).toString('utf8');
const sig = $input.first().json.headers['x-signature'];
const expected = crypto.createHmac('sha256', $env.WEBHOOK_SECRET).update(raw).digest('hex');
const ok = sig && sig.length === expected.length &&
crypto.timingSafeEqual(Buffer.from(sig), Buffer.from(expected));
if (!ok) throw new Error('bad signature');
const event = JSON.parse(raw);
const store = $getWorkflowStaticData('global');
store.seen = store.seen || {};
if (store.seen[event.id]) return []; // already handled
store.seen[event.id] = Date.now();
return [{ json: event }];
Caveats I already know about:
- Header name and signature format differ per provider (some sign a timestamp too).
- Static data only persists for active (production) runs, not manual tests.
- It grows forever, so I'd prune old IDs or use a Data Table instead.
- I haven't run this exact code on n8n Cloud, so crypto/$env may be restricted there.
Questions: is static data or a Data Table the better place for the dedupe list? Anything about retries or out-of-order events I should handle before the "grant access" step?
Hey everyone,
I'm looking for a few agencies and automation builders to work with as design partners. I want to learn your experience with silent AI automation failures today, and shape my product around what you actually need.
The problem it solves is simple: "success," but the AI output is wrong, empty, or garbage. Nobody finds out until a client does.
If you run client automations and have been burned by silent failures, I'd love to chat. Drop a comment or DM me. Also curious how you're handling this today.
Been building agent-contracts - a governance layer for n8n workflows - for a while. Just shipped two things worth sharing here since a few people asked about the n8n implementation last time.
What shipped :
Previously every n8n workflow needed a hand-written contract.yaml. That falls apart for dynamic workflows or third-party integrations. Now you can declare governance at runtime:
enforcer = ContractEnforcer.from_declaration({
"node_id": "email-sender-v1",
"permissions": ["email.read", "email.draft"],
"side_effects": ["email.send"],
"approval_points": ["email.send"],
"lifecycle": "triggered"
})
Same enforcement. Same audit log. Same gate behavior. No file needed. Any agent without a declaration defaults to read-only with explicit approval required on every action.
Every contract that loads registers into an append-only versioned store.
registry = ContractRegistry()
enforcer.register(registry)
# Query exactly which contract version was active at any timestamp
entry = registry.get_at_time(
"email-sender-v1",
"2026-09-10T14:30:00Z"
)
Old versions are never deleted. The audit trail is always complete.
Every contract is hashed on load. If the contract.yaml gets edited after the workflow starts, ContractTamperError fires and the workflow stops rather than silently running under modified rules.
What's in the repo
Three n8n implementations: duplicate issue detector, competitor changelog watcher, job application rejection detector - all with contract.yaml files, scyvera enforcement, and the gateway layer wired in. 128 tests passing. MIT licensed. (22 ⭐ | 6 Forks )
GitHub: github.com/Skull-boy/agent-contracts - pip install scyvera
Happy to answer questions about wiring this into existing n8n workflows or adapting the contract schema for specific use cases.
I'm curious about workflows that go beyond a simple trigger → action automation.
For people who have been using n8n for a while:
I'm particularly interested in workflows involving things like research, analysis, decision-making, execution, and review rather than just straightforward integrations.
Would be interested to hear about real workflows you've built and what you've learned from them.
I'm building a vendor due-diligence and monitoring tool for UK companies. I'm not a risk professional, so I'd value input from people who are.
Inputs: Companies House (status, overdue accounts and confirmation statements, charges, insolvency, officer resignations, disqualified officers), UK Sanctions List fuzzy matching on the company, directors and PSCs, and financial figures from iXBRL/PDF (net assets, profit/loss, current ratio).
Current logic:
​
score = sum(category_score * weight) / sum(weights of assessed categories)
grade = "E" if any critical flag else band(score)
The problem: almost everything I screen comes out 100/A. Working through the numbers, the maximum deduction without a critical flag is about 20 points, so C and D can't happen. It's effectively binary: A/B or E.
What I've tried: I screened through 13 different companies, while also providing incomplete data on bulk uploads, still each company I screen comes out with an almost perfect score with all the data intact so, either companies house or gazette connections are not working properly or I am freaking out for having unrealistic expectations.
Questions:
Not looking for code review. Happy to share more detail on the logic :)
My scariest failure was never a crash. Crashes are loud, crashes page you, crashes are almost a relief honestly. It was a dedupe rule that just... stopped firing, and kept running green for weeks.
A working dedupe rule produces zero output. No errors, no logs, nothing to alert on. So success and breakage looked exactly the same, and the first signal came weeks later when I was staring at data that had been quietly piling up the whole time. I used to check my runs from my phone in the morning and everything said green, which made it worse somehow. Cost me a weekend of cleanup and a very awkward conversation.
Anyway, I used to burn real time on this. My ritual was expected-count checks per silent step ("this rule should have matched N rows today"), plus replaying a period against a copy before cutover and diffing outputs. Half of it worked, half of it was vibes. And the quiet fear never fully went away.
So how do you catch the silent ones? Do you write heartbeat rows even on no-op runs? Assert expected counts on steps that should produce zero output? Something completely different? What was the last silent failure that bit you, and how long did it run green before anyone noticed?
Genuinely curious what these jobs are for, too. Own business workflows or client work? Who eats the cost when a silent one breaks, you or the client?
Last one, since I'm sketching something: what if something watched your scheduled jobs for exactly this kind of silent drift, in the cloud over MCP, same context across every agent and tool so decisions, failed attempts, and run history all cross over. You never touch a file again. Would you guys pay for something that fixes this, or does your own heartbeat setup already cover it?
The more I think about adding AI to a member portal, the less I like the idea of just dropping a chat bubble in the corner. If someone is already looking at an event, a certification page or their membership account, the assistant should probably understand that context and help from there.
I could see customgpt.ai handling questions from the association’s approved content, algolia keeping regular search useful and n8n pulling in live things like renewal status or upcoming events when needed. The interesting part to me isn’t really the chatbot. It’s making the portal feel like it actually knows where the member is and what they’re trying to do. Has anyone approached it this way instead of building a separate “AI assistant” experience?