FlowKit - User Guide
Complete guide for using nodes from FlowKit and creating your own nodes to share with the community.
Table of Contents
Using Nodes from the Directory
Step 1: Browse & Search
- Visit the directory - Open FlowKit.directory
- Search - Use the search bar to find nodes by name, description, or tags
- Filter - Click category buttons (API Integration, Data Processing, etc.)
- Browse - Scroll through the node cards to see what's available
Step 2: View Node Details
- Click "View Details" on any node card
- Review the information:
- Node Information - Type, category, version, compatibility
- HTTP Request Details - For HTTP nodes: method, endpoint, request body
- Required Credentials - What authentication you'll need
- Use Cases - Real-world examples
- Installation Instructions - How to add to your workflow
Step 3: Copy the Node
Method 1: One-Click Copy (Recommended)
- Click the 📋 Copy button
- You'll see a success notification with instructions
- Open your n8n workflow editor
- Press Ctrl+V (Windows/Linux) or Cmd+V (Mac)
- The node will appear on your canvas!
Method 2: Download JSON (If copy doesn't work)
- Click the 💾 Download button
- Open the downloaded
.json
file in a text editor - Select all content (Ctrl+A / Cmd+A)
- Copy (Ctrl+C / Cmd+C)
- Open n8n workflow editor
- Paste (Ctrl+V / Cmd+V)
Step 4: Configure the Node
After pasting the node into n8n:
- Set up credentials (if required)
- Click on the node
- Click "Select Credential" or "Create New Credential"
- Follow the authentication setup
- Customize parameters
- Update URLs, endpoints, or paths
- Modify request bodies with your data
- Adjust field mappings to match your workflow
- Test the node
- Click "Execute Node" to test
- Verify the output matches your expectations
- Debug any errors in the execution panel
Creating New Nodes
What Makes a Good Node?
- ✅ Solves a specific problem - Clear, focused functionality
- ✅ Well-documented - Good description and use cases
- ✅ Tested - Works reliably in n8n
- ✅ Reusable - Others can easily adapt it
- ✅ Clean code - Properly formatted JSON and expressions
Step 1: Build Your Node in n8n
- Open n8n and create a new workflow
- Add nodes to accomplish your task
- Configure everything:
- Set up HTTP requests
- Add transformations (Code nodes, Set nodes, etc.)
- Configure error handling
- Test thoroughly
- Use expressions where appropriate:
// Good - dynamic
"locationId": "={{ $json.locationId }}"
// Bad - hardcoded
"locationId": "abc123xyz"
- Test with real data:
- Run the workflow multiple times
- Test with different inputs
- Verify error handling works
Step 2: Export Your Node
For Single Node:
- Click on your node in n8n
- Right-click → Copy
- Paste into a text editor
- You'll get JSON like:
{
"nodes": [{ ... }],
"connections": {},
"pinData": {}
}
For Multi-Node Workflow:
- Select all the nodes you want to share (Ctrl+A or drag-select)
- Right-click → Copy
- Paste into a text editor
- This includes all nodes and their connections
Clean Up the JSON:
- Remove any sensitive data (API keys, tokens, personal info)
- Replace hardcoded values with expressions where possible
- Remove unnecessary
pinData
if not needed - Format the JSON (use a JSON formatter tool)
Step 3: Prepare Metadata
Required:
- Node Name - Clear, descriptive (e.g., "Discord - Send Rich Embed")
- Description - What it does, key features (1-2 sentences)
- Category - Choose: API Integration, Data Processing, Automation, or Utilities
- Tags - 3-5 relevant tags (e.g., "discord, webhook, notifications")
- Your Name - Credit for creating the node
- Your Email - For questions about the node
Optional but Recommended:
- Use Cases - 3 real-world examples of how to use it
- Required Credentials - What authentication is needed
- GitHub URL - Link to documentation or repo
Step 4: Submit Your Node
- Go to the submission form - Click "Submit a Node" on the website
- Fill out the form with all the information
- Paste your node JSON in the configuration field
- Review everything before submitting
- Click "Submit Node for Review"
You'll receive:
- ✅ Success confirmation on screen
- 📧 Follow-up email if there are questions
- 🎉 Your node will be added to the directory after review!
Best Practices
For HTTP Request Nodes
1. Use Clear Endpoints
// Good
"url": "=https://api.example.com/v1/contacts"
// Bad
"url": "=https://{{ $json.baseUrl }}/{{ $json.version }}/{{ $json.endpoint }}"
2. Document Required Headers
Include all necessary headers in your node:
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
},
{
"name": "Authorization",
"value": "={{ $credentials.token }}"
}
]
}
3. Use Proper HTTP Methods
- GET - Retrieving data
- POST - Creating new resources
- PUT - Updating entire resources
- PATCH - Partial updates
- DELETE - Removing resources
4. Include Error Handling
Add "On Error" settings to handle failures gracefully.
For Code Nodes
1. Add Comments
// Transform contact data for API
const contacts = $input.all();
// Map to required format
const formatted = contacts.map(item => ({
firstName: item.json.first_name,
lastName: item.json.last_name,
email: item.json.email
}));
return formatted;
2. Handle Edge Cases
// Check if data exists
if (!$json.email || !$json.phone) {
throw new Error('Missing required contact info');
}
// Provide defaults
const tags = $json.tags || [];
const source = $json.source || 'Unknown';
3. Use Descriptive Variable Names
// Good
const customerEmail = $json.email;
const orderTotal = $json.total;
// Bad
const e = $json.email;
const t = $json.total;
General Tips
1. Test Before Submitting
- Run your node with sample data
- Test error scenarios
- Verify all credentials work
- Check expressions evaluate correctly
2. Make It Reusable
- Use expressions instead of hardcoded values
- Allow users to customize important parameters
- Include clear placeholder values
- Document any required setup
3. Security First
- Never include real API keys
- Never include passwords or tokens
- Never include personal/customer data
- Use credential placeholders instead
4. Documentation
- Write clear descriptions
- Include realistic use cases
- Explain any complex logic
- Note any limitations
Troubleshooting
"Copy button doesn't work"
Solution: Use the Download button instead, or ensure you're using HTTPS (not HTTP or file://).
"Node won't paste in n8n"
Solution:
- Make sure you copied the entire JSON
- Verify JSON is valid (use jsonlint.com)
- Try pasting as text first, then copy again
"Credentials not working"
Solution:
- Create new credentials in n8n for this node
- Check if the credential type matches
- Verify API keys/tokens are valid
- Ensure you have required permissions
"Expression errors"
Solution:
- Check for syntax errors in expressions
- Verify field names match your data structure
- Use the Expression Editor in n8n to test
- Replace
$json.field
with your actual field names
"HTTP request fails"
Solution:
- Verify the endpoint URL is correct
- Check required headers are included
- Ensure authentication is properly configured
- Test the API endpoint outside n8n first (Postman, curl)
"Node not showing in directory"
Solution:
- Check your email for review status
- Ensure your submission was successful
- Contact support if it's been more than a week
Getting Help
For n8n Issues:
Join the Community:
- Share your workflows
- Help others with their nodes
- Request nodes you need
- Provide feedback on existing nodes
Quick Reference
Node Categories
Category | Use For |
---|---|
API Integration | HTTP requests, webhooks, third-party APIs |
Data Processing | Transformations, parsing, formatting |
Automation | Notifications, scheduling, triggers |
Utilities | Helper functions, validation, tools |
Common Node Types
Type | Purpose |
---|---|
httpRequest |
Make HTTP API calls |
code |
Custom JavaScript logic |
webhook |
Receive incoming data |
set |
Transform/set data fields |
if |
Conditional logic |
function |
Reusable functions |
Useful n8n Expressions
// Current date/time
{{ $now.toISOString() }}
// Access input data
{{ $json.fieldName }}
// Loop through items
{{ $items.map(item => item.json.field) }}
// Conditional
{{ $json.status === 'active' ? 'yes' : 'no' }}
// String manipulation
{{ $json.name.toLowerCase() }}
{{ $json.email.includes('@gmail.com') }}
// JSON operations
{{ JSON.stringify($json) }}
{{ JSON.parse($json.stringData) }}
Ready to start? 🚀
Browse the directory, copy some nodes, and start building amazing automations!
← Back to Directory