npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

n8n-nodes-variables

v0.1.0

Published

n8n community node for managing typed global variables accessible from any workflow stage - like programming language variables with strong typing support

Readme

n8n-nodes-variables

n8n Variables Nodes npm version npm downloads

Typed global variables for n8n workflows - Manage variables like real programming languages with strong typing support!

🎯 Solve Real Problems

❌ The Problem n8n Users Face:

HTTP Request (uses URL) → Process Data → IF (has more pages?)
     ↑                                           ↓
     └── Can't access new URL from here ←─── Set new URL

Common Issues:

  • ❌ Variables only accessible from previously executed nodes
  • ❌ Can't modify upstream node parameters from downstream nodes
  • ❌ No clean way to manage pagination/loops
  • ❌ Workflow state management is complex

✅ Our Solution:

1. Variables Node: Initialize URL = "https://example.com/page/1"
2. HTTP Request: Uses {{ $workflow.variables.URL }}
3. Process Data
4. IF (has more pages?) 
   └─ True: Variables Node: Set URL = "https://example.com/page/2"
5. Loop back - HTTP Request automatically uses new URL!

📦 Three Powerful Nodes Included

1. Variables (Main Node)

🎯 Perfect for: Loops, pagination, state management

  • Typed variables: String, Number, Boolean, JSON, Date
  • Global access: Use anywhere with $workflow.variables.VARIABLE_NAME
  • Clean output: Returns just the variables as key-value pairs
  • Type-specific inputs: Different UI fields based on variable type

2. Variables Dashboard

📊 Perfect for: Debugging, bulk operations

  • Table view: See all variables at once
  • Bulk operations: Set multiple variables simultaneously
  • No connections needed: Works as sticky note
  • Sort & filter: Organize variables by type/name

3. Global Variables

🌐 Perfect for: Cross-workflow sharing

  • Instance-wide: Share variables across all workflows
  • Persistent: Variables survive workflow restarts
  • Legacy support: For existing implementations

🚀 Quick Start

Installation

# Community Nodes (Recommended)
1. Go to Settings → Community Nodes in n8n
2. Install: n8n-nodes-variables

# Manual Installation  
npm install n8n-nodes-variables

Basic Usage Example

// 1. Initialize Variables
Variables Node → Initialize Variables:
- URL (String): "https://api.example.com/page/1"
- pageNumber (Number): 1

// 2. Use in HTTP Request
HTTP Request → URL: {{ $workflow.variables.URL }}

// 3. Update for next iteration
Variables Node → Set Variable:
- Name: URL  
- Type: String
- Value: {{ $json.nextPageUrl }}

// 4. Loop back automatically!

💡 Real-World Use Cases

🔄 Pagination Scraping

// Perfect for scraping multiple pages
Initialize: URL = "https://site.com/page/1", pageNum = 1
HTTP Request: {{ $workflow.variables.URL }}
Process Data
IF hasMorePages:
  ├─ Set URL = nextPageURL  
  ├─ Set pageNum = pageNum + 1
  └─ Loop back to HTTP Request

🔁 API Rate Limiting

// Retry logic with counters
Initialize: retryCount = 0, maxRetries = 3
HTTP Request: Call API
IF request failed && retryCount < maxRetries:
  ├─ Set retryCount = retryCount + 1
  ├─ Wait node: 5 seconds
  └─ Loop back to HTTP Request

📊 Batch Processing

// Process items with progress tracking
Initialize: processed = 0, total = 100, results = []
Process Item
Set processed = processed + 1
Set results = [...results, newResult]
IF processed < total: Loop back

🎨 Variable Types

| Type | Input Field | Example | Use Case | |------|-------------|---------|----------| | String | Text field | "https://api.com" | URLs, API keys, messages | | Number | Number input | 42 | Counters, limits, IDs |
| Boolean | Toggle switch | true | Feature flags, conditions | | JSON | JSON editor | {"key": "value"} | Complex objects, configs | | Date | Date picker | 2024-01-01T00:00:00Z | Timestamps, schedules |

🔧 All Operations

Variables Node

  • Initialize Variables: Set up multiple typed variables
  • Set Variable: Update single variable with type validation
  • Get Variable: Retrieve specific variable value
  • View All Variables: Get all variables as clean object
  • Clear All Variables: Reset all variables

Variables Dashboard

  • View All: Table display of all variables
  • Bulk Set: Update multiple variables at once
  • Clear All: Reset with confirmation

Global Variables

  • Set Variable: Store instance-wide variable
  • Get Variable: Retrieve instance-wide variable
  • List All: Show all global variables

📖 Expression Access

// Use variables anywhere in n8n
{{ $workflow.variables.URL }}           // String variable
{{ $workflow.variables.pageNumber }}    // Number variable  
{{ $workflow.variables.isEnabled }}     // Boolean variable
{{ $workflow.variables.config.timeout }} // JSON object property

// In Function nodes
const url = $workflow.variables.URL;
const page = $workflow.variables.pageNumber;
const settings = $workflow.variables.config;

// In IF conditions  
{{ $workflow.variables.retryCount < $workflow.variables.maxRetries }}

// In HTTP Request headers
{
  "Authorization": "Bearer {{ $workflow.variables.apiToken }}",
  "Page": "{{ $workflow.variables.pageNumber }}"
}

🔄 Migration Guide

From Manual Variable Management

// Before: Complex manual tracking
Function Node: return { url: "page/1", count: 0 };

// After: Clean typed variables  
Variables Node: Initialize URL (String) = "page/1", count (Number) = 0

From Static Values

// Before: Hardcoded values
HTTP Request: URL = "https://api.com/page/1"

// After: Dynamic variables
HTTP Request: URL = {{ $workflow.variables.baseURL }}/page/{{ $workflow.variables.pageNumber }}

🎯 Best Practices

✅ Do's

  • Use Variables node for workflow-specific state
  • Use Variables Dashboard for debugging/development
  • Use Global Variables for cross-workflow sharing
  • Initialize variables at workflow start
  • Use descriptive variable names

❌ Don'ts

  • Don't mix variable management approaches
  • Don't store sensitive data in Global Variables
  • Don't use variables for one-time values
  • Don't forget to clear variables when testing

🐛 Troubleshooting

Variables Not Updating

// ❌ Wrong: Using old syntax
{{ $json.variables.URL }}

// ✅ Correct: Use workflow variables
{{ $workflow.variables.URL }}

Type Errors

// ❌ Wrong: String in number field
pageNumber (Number) = "5"  

// ✅ Correct: Proper type
pageNumber (Number) = 5

Scope Issues

// Workflow Variables: Only within same workflow
// Global Variables: Across all workflows  
// Choose the right scope for your use case

📈 Performance Tips

  • Initialize once: Set up all variables at workflow start
  • Batch updates: Use bulk operations when possible
  • Clean up: Clear variables when workflow completes
  • Type validation: Use proper types to avoid conversion overhead

🤝 Contributing

Found a bug? Have a feature request?

  1. Check existing issues
  2. Create detailed bug reports with workflow examples
  3. Submit pull requests with clear descriptions

📄 License

MIT - See LICENSE.md for details

🔗 Links


Made with ❤️ for the n8n community

Transform your workflows with proper variable management!