Flowlint R10: Stop Using Generic Node Names in Your n8n Workflows

By Piotr Sikora

  • n8n

  • 2 December 2025

Quick Fix: Click any node -> Change name from HTTP Request to describe what it does -> Example: "Fetch Customer Profile from Stripe API"

You've built a sophisticated n8n workflow with 20+ nodes. It works perfectly... until you need to debug it three months later. You stare at a sea of HTTP Request, Set, Code, Merge, and IF nodes, trying to remember which one fetches customer data and which one sends the welcome email.

Flowlint catches this common mistake with rule R10: Node uses a generic name. This rule ensures every node in your workflow has a descriptive name that explains its purpose, making your automations self-documenting and dramatically easier to maintain.

Why Node Names Matter

Generic names like HTTP Request, Merge, or Code create several problems:

Maintenance Nightmare When you return to a workflow weeks later, generic names force you to open each node to understand what it does. With 15 "HTTP Request" nodes and 5 "Merge" nodes, this becomes painful quickly.

Team Collaboration Issues Other team members (or future you) waste time deciphering your workflow logic. What seems obvious today becomes cryptic tomorrow.

Documentation Burden Without descriptive names, you need separate documentation explaining what each node does. Proper names make workflows self-documenting.

Real-World Example: SEO WordPress Audit

Let's look at a typical SEO WordPress Audit workflow before and after applying proper naming:

Before: Generic Names

Flowlint - R10: Nodes with generic names

A workflow with nodes named:

  • Edit fields
  • HTTP Request
  • HTTP Request 1
  • HTTP Request 2
  • Merge
  • Code
  • Append row in sheet

Without opening each node, can you tell what this workflow does? Neither can anyone else. Even me can't tell what this workflow does. Especially not after three months :)

Code of this workflow is available here.

After: Descriptive Names

Flowlint - R10: Nodes with descriptive names - Nodes names fixes

The same workflow with proper names:

  • Set per_page limit
  • Get Posts Tags from WordPress
  • Get Posts Categories from WordPress
  • Get Posts from WordPress
  • Combine Post Data
  • Save Post data to Google Sheet

Now the workflow tells a story. You can understand the logic at a glance.

Node Naming Best Practices

1. Use Action Verbs

Start node names with verbs that describe what the node does:

Good naming patterns:

  • Fetch - Getting data from an API
  • Send - Transmitting data somewhere
  • Update - Modifying existing records
  • Create - Adding new records
  • Calculate - Processing numbers or data
  • Check - Conditional logic
  • Transform - Converting data formats
  • Filter - Removing unwanted items
  • Combine - Merging multiple data streams
  • Parse - Extracting structured data
  • Validate - Checking data quality
  • Enrich - Adding data to existing records
  • Deduplicate - Removing duplicate entries
  • Sort - Ordering data
  • Aggregate - Summarizing data

Examples:

  • HTTP Request -> ✅ Fetch Post Data from WordPress
  • Set -> ✅ Prepare Webhook Payload
  • Code -> ✅ Calculate Monthly Revenue
  • IF -> ✅ Check if User is Premium
  • Merge -> ✅ Combine Orders with Customer Data
  • Filter -> ✅ Filter Active Subscribers
  • Webhook -> ✅ Receive Stripe Payment Event

2. Include Context and Specifics

Add enough detail to distinguish similar nodes:

Avoid:

  • Get Data (too vague)
  • API Call (which API?)
  • Process Items (process how?)
  • Merge Data (merge what with what?)

Prefer:

  • Get Customer Orders from Last 30 Days
  • Call Slack API to Post Message
  • Process Items: Filter by Status=Active
  • Combine User Info with Purchase History

3. Name by Business Logic, Not Technical Implementation

Focus on what the node accomplishes, not how:

Technical (bad):

  • HTTP GET to /api/v2/users
  • MongoDB Query
  • Run Python Script
  • Merge Mode: Multiplex

Business-focused (good):

  • Fetch Active Users
  • Store Lead in Database
  • Calculate Commission Rates
  • Combine Order and Shipping Info

4. Keep Names Concise but Clear

Aim for 3-7 words. Long enough to be descriptive, short enough to read quickly:

Too short:

  • Get User (which user? from where?)
  • Merge (merge what?)

Too long:

  • Make HTTP Request to Stripe API to Fetch Customer Payment Methods and Filter Only Active Cards
  • Merge Together the Customer Data from CRM with Order Data from Shopify Using Customer ID

Just right:

  • Fetch Active Payment Methods from Stripe
  • Combine Customer and Order Data

5. Use Consistent Patterns

Establish naming conventions for your team:

Pattern for HTTP Requests: [Action] [Data] from/to [Service]

  • Fetch Orders from Shopify
  • Send Invoice to Xero
  • Update Contact in HubSpot

Pattern for Conditional Nodes: Check if [Condition]

  • Check if Email is Valid
  • Check if Order Exceeds Budget
  • Check if User Exists

Pattern for Data Transformation: [Action] [Data] or Prepare [Data] for [Purpose]

  • Format Date Fields
  • Prepare Payload for Webhook
  • Transform JSON to CSV

Pattern for Merge Nodes: Combine [Data A] with [Data B]

  • Combine Users with Transactions
  • Merge Order and Inventory Data
  • Join Leads with Company Info

Common Generic Names to Avoid

Generic Name Why It's Bad Better Alternatives
HTTP Request Doesn't explain what you're requesting Fetch Customer Profile, Send Order to Warehouse
Set Doesn't explain what data you're setting Prepare Email Variables, Build API Payload
Code Doesn't explain what the code does Calculate Discount Amount, Parse JSON Response
IF Doesn't explain the condition Check if Premium User, Validate Email Format
Merge Doesn't explain what's being merged Combine Orders with Customers, Join User and Transaction Data
Filter Doesn't explain filtering criteria Filter Active Subscribers, Remove Test Accounts
Sort Doesn't explain sorting logic Sort by Date Descending, Order by Priority
Aggregate Doesn't explain aggregation Sum Monthly Revenue, Count Orders by Status
Webhook Doesn't explain what triggers it Receive Stripe Payment, Handle New Form Submission
Function Doesn't explain the function's purpose Validate Phone Number, Generate UUID
Split in Batches Doesn't explain what you're batching Process Orders in Batches of 100
Wait Doesn't explain why you're waiting Wait for Payment Confirmation, Delay for Rate Limit
Edit Fields Doesn't explain which fields or why Add Timestamp Fields, Rename Customer Columns
Remove Duplicates Doesn't explain duplicates of what Deduplicate Contacts by Email, Remove Duplicate Order IDs
Move Binary Data Doesn't explain what data or why Attach Invoice PDF to Email, Convert Image to Base64

Naming Strategy for Different Node Types

HTTP Request Nodes

Template: [Action] [Data] from/to [Service]

Examples:

  • Fetch User Profile from Auth0
  • Send Notification to Slack
  • Update Deal in Pipedrive
  • Delete Expired Token from API

Set Nodes

Template: Prepare [Data] or Build [Data] or Extract [Data]

Examples:

  • Prepare Customer Fields
  • Build Webhook Payload
  • Extract Email and Name
  • Set Default Values

Code Nodes

Template: [Action/Calculate/Transform] [Data]

Examples:

  • Calculate Tax Amount
  • Transform CSV to JSON
  • Validate Credit Card Number
  • Generate Unique Order ID

IF Nodes

Template: Check if [Condition]

Examples:

  • Check if Order Total > $100
  • Check if Email Domain is Allowed
  • Check if User is Active
  • Check if Weekend

Switch Nodes

Template: Route by [Criteria]

Examples:

  • Route by Customer Tier
  • Route by Order Status
  • Route by Country Code
  • Route by Error Type

Merge Nodes

Template: Combine [Data A] with [Data B] or Join [Data] by [Key]

Examples:

  • Combine Orders with Customer Details
  • Merge User Data with Preferences
  • Join Products with Inventory Levels
  • Match Invoices to Payments by ID

Merge Mode Context:

  • Multiplex: Combine All User Records
  • Append: Append New Orders to Existing List
  • Keep Key Matches: Match Orders with Customers by Email
  • Merge by Position: Pair Questions with Answers by Order

Filter Nodes

Template: Filter [Data] by [Criteria] or Remove [Unwanted Data]

Examples:

  • Filter Active Subscriptions
  • Remove Test Email Addresses
  • Keep Only Premium Users
  • Filter Orders from Last Week

Sort Nodes

Template: Sort [Data] by [Criteria]

Examples:

  • Sort Orders by Date Descending
  • Order Customers by Revenue
  • Sort Products by Popularity
  • Rank Leads by Score

Aggregate Nodes

Template: [Aggregate Function] [Data] by [Group]

Examples:

  • Sum Revenue by Product Category
  • Count Orders by Customer
  • Calculate Average Rating by Product
  • Total Sales by Region and Month

Edit Fields Nodes

Template: [Add/Remove/Rename] [Field Names] or Modify [Data Structure]

Examples:

  • Add Timestamp and User ID
  • Rename Customer Columns
  • Remove Sensitive Data Fields
  • Flatten Nested Order Structure

Remove Duplicates Nodes

Template: Deduplicate [Data] by [Key]

Examples:

  • Deduplicate Contacts by Email
  • Remove Duplicate Orders by ID
  • Keep Unique Products by SKU
  • Filter Duplicate Transactions

Move Binary Data Nodes

Template: [Action] [File/Data] to/from [Location]

Examples:

  • Attach Invoice PDF to Email
  • Convert Product Image to Base64
  • Extract CSV Data to JSON
  • Move Uploaded File to Binary Field

Loop Nodes

Template: For Each [Item] or Process [Items]

Examples:

  • For Each Invoice
  • Process Each Customer Record
  • Loop Through Product IDs
  • Iterate Over Failed Orders

Execute Workflow Nodes

Template: Run [Workflow Name] or Execute [Purpose]

Examples:

  • Run Customer Enrichment Workflow
  • Execute Invoice Generation
  • Trigger Email Validation Process
  • Run Backup Workflow

Spreadsheet File Nodes

Template: [Action] [Data] to/from [Spreadsheet]

Examples:

  • Read Customer List from Excel
  • Write Sales Report to CSV
  • Export Orders to Google Sheets
  • Parse Invoice Data from XLSX

Real-World Workflow Examples

Example 1: Customer Onboarding with Data Enrichment

Before (generic names):

Categories

Recent Posts

About Me

Piotr Sikora - Process Automation | AI | n8n | Python | JavaScript

Piotr Sikora

Process Automation Specialist

I implement automation that saves time and money, streamlines operations, and increases the predictability of results. Specializing in process automation, AI implementation, and workflow optimization using n8n, Python, and JavaScript.

n8n Workflows

n8n workflow automation templates

Explore my workflow templates on n8n. Ready-to-use automations for blog management, data collection, and AI-powered content processing.

3Workflow Templates

• Auto-Categorize Blog Posts with AI

• Collect LinkedIn Profiles

• Export WordPress Posts for SEO

Similar Articles

Discover more related content

Flowlint CLI: Make Your n8n Workflows Robust

Flowlint CLI: Make Your n8n Workflows Robust

A quick guide to setting up and using Flowlint CLI to improve the reliability and maintainability of your n8n workflows.

Flowlint R1:  Why Your n8n Nodes Need Retry/Backoff Configuration

Flowlint R1: Why Your n8n Nodes Need Retry/Backoff Configuration

Learn how to make n8n workflows more resilient by configuring retry and backoff settings for HTTP Request nodes. A practical guide with Flowlint.

n8n Linter - Flowlint

n8n Linter - Flowlint

Let the Flowlint check your n8n workflows for errors and security issues.