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-handit

v0.2.3

Published

n8n community nodes for Handit tracing and prompt management

Downloads

100

Readme

Banner image

n8n-nodes-handit

This is an n8n community node package that provides comprehensive Handit integration for workflow analytics and AI prompt management.

Nodes Included

🔍 Handit Tracing

  • Workflow Data Collection: Automatically collects input/output data from specified nodes in your workflow
  • API Integration: Sends collected data to your Handit API endpoint for analysis
  • Flexible Configuration: Configure which nodes to trace and add custom metadata
  • Error Handling: Graceful error handling with detailed error reporting

🤖 Handit Prompt Fetcher

  • Production Prompt Management: Fetch production-ready prompts from your Handit API
  • LLM Integration: Automatically format prompts as variables for easy use in LLM nodes (GPT, Claude, etc.)
  • Multi-Environment Support: Fetch prompts from different environments (production, staging, development)
  • Flexible Output: Choose between individual variables, JSON objects, or both

Installation

Prerequisites

  • n8n installed (version 0.190.0 or later)
  • Node.js 18.17.0 or later

Install the node

  1. For local development/testing:

    # Clone this repository
    git clone <your-repo-url>
    cd n8n-nodes-handit
       
    # Install dependencies and build
    npm install
    npm run build
       
    # Link the package locally
    npm link
       
    # In your n8n installation directory
    npm link n8n-nodes-handit
  2. For production (when published to npm):

    npm install n8n-nodes-handit
  3. Restart n8n to load the new node.

Configuration

1. Set up Handit API Credentials

  1. In n8n, go to Settings > Credentials
  2. Click Add Credential and search for "Handit API"
  3. Configure:
    • API Token: Your Handit API authentication token
    • Base URL: Your Handit API base URL (default: https://api.handit.com)

2. Add Handit Nodes to Your Workflow

Handit Tracing Node

  1. In your workflow, add the Handit Tracing node
  2. Configure the node:
    • API Endpoint: The specific endpoint for tracing (default: https://api.handit.com/trace)
    • Node Names: Comma-separated list of node names to trace (leave empty for default)
    • Additional Fields: Optional metadata like Workflow ID, User ID, Environment

Handit Prompt Fetcher Node

  1. Add the Handit Prompt Fetcher node at the beginning of your workflow
  2. Configure the node:
    • API Endpoint: The endpoint for fetching prompts (default: https://api.handit.com/prompts)
    • Agent Name/Slug: The identifier of your agent/assistant
    • Output Format: Choose how to format the prompts (Individual Variables, JSON Object, or Both)
    • Variable Prefix: Optional prefix for variable names (e.g., "prompt_")
    • Additional Options: Environment, version, cache duration

Usage

Handit Tracing - Basic Usage

  1. Add the Handit Tracing node to your workflow
  2. Connect it to receive data from previous nodes
  3. Configure your API credentials
  4. The node will automatically collect data from specified nodes and send it to your Handit API

Handit Prompt Fetcher - Basic Usage

  1. Add the Handit Prompt Fetcher node at the start of your workflow
  2. Configure the agent slug and output format
  3. Connect it to your LLM nodes
  4. Use the fetched prompts in your LLM nodes with expressions like {{ $gpt4_prompt }} or {{ $claude_prompt }}

Advanced Configuration

Node Names

Specify which nodes to trace by providing a comma-separated list:

Telegram Trigger, Edit Fields, AI Agent, Telegram

If left empty, the node will use a default set of common node names.

Additional Fields

Add custom metadata to your traces:

  • Workflow ID: Custom identifier for your workflow
  • User ID: User identifier for user-specific tracing
  • Environment: Deployment environment (Development, Staging, Production)

Example Workflows

Workflow with Prompt Fetcher + LLM + Tracing

[Telegram Trigger] → [Handit Prompt Fetcher] → [OpenAI GPT] → [Handit Tracing] → [Telegram]
  1. Handit Prompt Fetcher fetches production prompts for your agent
  2. OpenAI GPT uses the fetched prompt: {{ $gpt4_prompt }} or {{ $system_prompt }}
  3. Handit Tracing logs the entire workflow execution
  4. Telegram sends the response back

API Response from Prompt Fetcher

If your API returns:

{
  "prompts": {
    "gpt4": "You are a helpful assistant specialized in customer support...",
    "claude": "You are an AI assistant focused on providing accurate information...",
    "system": "Always be polite and professional in your responses."
  }
}

The node creates these variables:

  • $gpt4 and $gpt4_prompt
  • $claude and $claude_prompt
  • $system and $system_prompt

Tracing Workflow Example

[Telegram Trigger] → [Edit Fields] → [AI Agent] → [Handit Tracing] → [Telegram]

The Handit Tracing node will collect data from all specified nodes and send a payload like:

{
  "workflowData": [
    {
      "slug": "Telegram Trigger",
      "input": {
        "nodeName": "Telegram Trigger",
        "timestamp": "2024-01-01T12:00:00.000Z"
      },
      "output": {
        "message": "Hello from Telegram"
      }
    },
    {
      "slug": "Edit Fields",
      "input": {
        "nodeName": "Edit Fields",
        "timestamp": "2024-01-01T12:00:00.000Z"
      },
      "output": {
        "processedMessage": "Processed: Hello from Telegram"
      }
    }
  ],
  "timestamp": "2024-01-01T12:00:00.000Z",
  "executionId": "exec_123",
  "workflowId": "workflow_456",
  "environment": "production"
}

Comparison with Manual Implementation

Before (Manual Implementation)

You needed two separate nodes:

  1. Code Node with custom JavaScript:

    const nodes = ['Telegram Trigger', 'Edit Fields', 'AI Agent', 'Telegram'];
    const workflowDataArray = [];
       
    // Complex logic to collect workflow data...
    // Expression resolution...
    // Data transformation...
       
    return { workflowData: workflowDataArray };
  2. HTTP Request Node to send data to Handit API

After (Handit Tracing Node)

Single node that:

  • ✅ Automatically collects workflow data
  • ✅ Handles API authentication
  • ✅ Provides user-friendly configuration
  • ✅ Includes error handling
  • ✅ Supports custom metadata
  • ✅ Maintains the same data structure you're used to

API Reference

Request Format

The node sends POST requests to your configured endpoint with the following structure:

{
  workflowData: Array<{
    slug: string;           // Node name
    input: {
      nodeName: string;
      timestamp: string;
      previousSteps?: object;
      [key: string]: any;   // Additional fields
    };
    output: object;         // Node output data
    error?: string;         // Error message if node failed
  }>;
  timestamp: string;        // Execution timestamp
  executionId: string;      // n8n execution ID
  workflowId: string;       // Workflow identifier
  [key: string]: any;       // Additional fields from configuration
}

Authentication

The node uses Bearer token authentication:

Authorization: Bearer <your-api-token>

Development

Building from Source

git clone <your-repo-url>
cd n8n-nodes-handit
npm install
npm run build

Testing

npm run lint        # Check code style
npm run format      # Format code

Project Structure

n8n-nodes-handit/
├── nodes/
│   └── HanditTracing/
│       ├── HanditTracing.node.ts      # Main node implementation
│       ├── HanditTracing.node.json    # Node metadata
│       └── handit.svg                 # Node icon
├── credentials/
│   └── HanditApi.credentials.ts       # API credentials
├── package.json                       # Package configuration
└── README.md                          # This file

Troubleshooting

Common Issues

  1. Node not appearing in n8n

    • Ensure you've restarted n8n after installation
    • Check that the package is properly linked/installed
  2. Authentication errors

    • Verify your API token is correct
    • Check that the base URL is accessible
  3. Data collection issues

    • Ensure the node names match exactly (case-sensitive)
    • Check that previous nodes have executed successfully

Debug Mode

Enable debug logging by setting the environment variable:

N8N_LOG_LEVEL=debug

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests if applicable
  5. Submit a pull request

License

MIT License - see LICENSE file for details.

Support

For issues and questions: