# nodes

node_type: n8n-nodes-nextmotion.nextMotionTrigger
package_name: n8n-nodes-nextmotion
display_name: NextMotion Trigger
description: Triggers workflow when NextMotion events occur (patient created, appointment updated, etc.)
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: team-nextmotion
author_github_url: https://github.com/Nextmotion-dev-team/
npm_package_name: n8n-nodes-nextmotion
npm_version: 1.2.5
community_fetched_at: 2026-07-14T14:40:34.114Z
ai_summary_generated_at: 2026-05-02 08:57:17
npm_readme:
  # n8n-nodes-nextmotion

  This is an n8n community node for [NextMotion](https://nextmotion.net/) - a practice management system for medical clinics.

  [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform.

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

  ## Operations

  **Patient**
  - Get a patient
  - Get many patients in a clinic
  - Create a patient
  - Update a patient
  - Delete a patient
  - Get patient statistics

  **Calendar Appointment**
  - Get an appointment
  - Get many appointments in a clinic
  - Update an appointment
  - Delete an appointment
  - Get treatments for an appointment
  - Reschedule an appointment

  **Invoice**
  - Get an invoice
  - Get many invoices in a clinic
  - Update an invoice
  - Delete an invoice
  - Pay an invoice
  - Validate an invoice

  **Quote**
  - Get a quote
  - Get many quotes in a clinic
  - Update a quote
  - Delete a quote
  - Accept a quote
  - Validate a quote

  **Consultation**
  - Get a consultation
  - Get many consultations
  - Create an invoice from a consultation
  - Create a quote from a consultation

  **Treatment**
  - Get a treatment
  - Get many treatments
  - Update a treatment
  - Upload consent form

  **Prescription**
  - Get a prescription
  - Get many prescriptions
  - Create a prescription
  - Update a prescription
  - Sign a prescription

  **Visit**
  - Get a visit
  - Get many visits
  - Create a visit
  - Update a visit

  **And 20+ more resources** including Doctors, Clinics, Treatment Types, Visit Types, Leads, Payments, Communication Records, Media, Webhooks, and more.

  ## Trigger

  **NextMotion Trigger** - Real-time webhook triggers for:
  - Patient created, updated, deleted
  - Appointment created, updated, deleted, started, ended
  - Invoice created, validated, paid
  - Quote created, validated, accepted
  - Payment created
  - Lead created
  - Visit created
  - And more...

  ## Credentials

  1. Log in to your NextMotion account
  2. Go to **Settings → API Keys**
  3. Generate a new API key and copy it immediately
  4. In n8n, create a **NextMotion API** credential and paste the key

  > API keys don't expire. Store securely and regenerate if compromised.

  ## Compatibility

  Compatible with n8n@1.60.0 or later

  ## Resources

  - [n8n Community Nodes](https://docs.n8n.io/integrations/community-nodes/)
  - [NextMotion API Docs](https://api.nextmotion.net/open_api/docs/redoc)

  ## License

  [MIT](LICENSE.md)

ai_documentation_summary:
  {"purpose":"The NextMotion Trigger node enables real-time workflow automation by detecting specific events within the NextMotion practice management system, such as patient creation, appointment updates, and invoice payments.","capabilities":["Trigger on patient lifecycle events (created, updated, deleted)","Trigger on appointment lifecycle events (created, updated, deleted, started, ended)","Trigger on invoice events (created, validated, paid)","Trigger on quote events (created, validated, accepted)","Trigger on payment creation","Trigger on lead creation","Trigger on visit creation","Real-time webhook execution"],"authentication":"API key required","commonUseCases":["Automate patient onboarding workflows when a new patient is created","Send notifications or update CRM records when an appointment status changes","Trigger financial reporting or accounting entries when an invoice is paid","Initiate follow-up tasks when a new lead is generated"],"limitations":[],"relatedNodes":[]}


node_type: n8n-nodes-proposaly.proposaly
package_name: n8n-nodes-proposaly
display_name: Proposaly
description: Consume Proposaly API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: minhla
author_github_url: https://github.com/ADCORE-INC/
npm_package_name: n8n-nodes-proposaly
npm_version: 0.1.6
community_fetched_at: 2026-07-14T14:40:34.115Z
ai_summary_generated_at: 2026-05-02 08:57:17
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "lead",
      "options": [
        {
          "name": "Document",
          "value": "document"
        },
        {
          "name": "Lead",
          "value": "lead"
        },
        {
          "name": "Recipient",
          "value": "recipient"
        },
        {
          "name": "Workspace",
          "value": "workspace"
        }
      ],
      "required": true,
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createLead",
      "options": [
        {
          "name": "Archive Lead",
          "value": "archiveLead",
          "action": "Archive a lead in a workspace",
          "description": "Archive a lead in a workspace"
        },
        {
          "name": "Create Lead",
          "value": "createLead",
          "action": "Create a new lead in a workspace",
          "description": "Create a new lead in a workspace"
        },
        {
          "name": "Delete Lead",
          "value": "deleteLead",
          "action": "Delete a lead in a workspace",
          "description": "Delete a lead in a workspace"
        },
        {
          "name": "Find Lead By ID",
          "value": "findLeadById",
          "action": "Find a lead in a workspace by ID",
          "description": "Find a lead in a workspace by ID"
        },
        {
          "name": "Reactivate Lead",
          "value": "reactivateLead",
          "action": "Reactivate an archived lead in a workspace",
          "description": "Reactivate an archived lead in a workspace"
        },
        {
          "name": "Update Lead",
          "value": "updateLead",
          "action": "Update a lead in a workspace",
          "description": "Update a lead in a workspace"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "lead"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "addRecipient",
      "options": [
        {
          "name": "Add Recipient",
          "value": "addRecipient",
          "action": "Add a recipient to a document",
          "description": "Add a recipient to a document"
        },
        {
          "name": "Delete Recipient",
          "value": "deleteRecipient",
          "action": "Delete a recipient from a document",
          "description": "Delete a recipient from a document"
        },
        {
          "name": "Find Recipient",
          "value": "findRecipient",
          "action": "Find a recipient by ID",
          "description": "Find a recipient by ID"
        },
        {
          "name": "Get Recipient Notification Settings",
          "value": "getRecipientNotificationSettings",
          "action": "Retrieve notification preferences of a recipient",
          "description": "Retrieve notification preferences of a recipient"
        },
        {
          "name": "Update Recipient",
          "value": "updateRecipient",
          "action": "Update a recipient in a document",
          "description": "Update a recipient in a document"
        },
        {
          "name": "Update Recipient Notification Settings",
          "value": "updateRecipientNotificationSettings",
          "action": "Update notification preferences of a recipient",
          "description": "Update notification preferences of a recipient"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "recipient"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createDocument",
      "options": [
        {
          "name": "Create Document",
          "value": "createDocument",
          "action": "Create a new document in a workspace using the master template",
          "description": "Create a new document in a workspace using the master template"
        },
        {
          "name": "Create Document From Lead",
          "value": "createDocumentFromLead",
          "action": "Create a new document in a workspace from a lead",
          "description": "Create a new document in a workspace from a lead"
        },
        {
          "name": "Create Document From Template",
          "value": "createDocumentFromTemplate",
          "action": "Create a new document in a workspace from a template",
          "description": "Create a new document in a workspace from a template"
        },
        {
          "name": "Create Document View Only Link",
          "value": "createDocumentViewOnlyLink",
          "action": "Create a view only link for a document",
          "description": "Create a view only link for a document"
        },
        {
          "name": "Delete Document",
          "value": "deleteDocument",
          "action": "Delete a document in a workspace",
          "description": "Delete a document in a workspace"
        },
        {
          "name": "Duplicate Document",
          "value": "duplicateDocument",
          "action": "Creates a duplicate of an existing document within the same workspace",
          "description": "Creates a duplicate of an existing document within the same workspace"
        },
        {
          "name": "Find Document By ID",
          "value": "findDocumentById",
          "action": "Find a document in a workspace by ID",
          "description": "Find a document in a workspace by ID"
        },
        {
          "name": "Move Document Stage",
          "value": "moveDocumentStage",
          "action": "Move a document to a different stage",
          "description": "Move a document to a different stage"
        },
        {
          "name": "Share Document",
          "value": "shareDocument",
          "action": "Sends a share notification to recipients",
          "description": "Sends a share notification to recipients"
        },
        {
          "name": "Transfer Document Ownership",
          "value": "transferDocumentOwnership",
          "action": "Transfer ownership of a document to a new owner",
          "description": "Transfer ownership of a document to a new owner"
        },
        {
          "name": "Update Document",
          "value": "updateDocument",
          "action": "Update a document in a workspace",
          "description": "Update a document in a workspace"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "document"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "addWorkspace",
      "options": [
        {
          "name": "Create Workspace",
          "value": "addWorkspace",
          "action": "Create a new workspace",
          "description": "Create a new workspace"
        },
        {
          "name": "Find Workspace By ID",
          "value": "findWorkspaceById",
          "action": "Find a workspace by ID",
          "description": "Find a workspace by ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "workspace"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Archive Lead",
      "value": "archiveLead",
      "action": "Archive a lead in a workspace",
      "description": "Archive a lead in a workspace",
      "resource": "lead"
    },
    {
      "name": "Create Lead",
      "value": "createLead",
      "action": "Create a new lead in a workspace",
      "description": "Create a new lead in a workspace",
      "resource": "lead"
    },
    {
      "name": "Delete Lead",
      "value": "deleteLead",
      "action": "Delete a lead in a workspace",
      "description": "Delete a lead in a workspace",
      "resource": "lead"
    },
    {
      "name": "Find Lead By ID",
      "value": "findLeadById",
      "action": "Find a lead in a workspace by ID",
      "description": "Find a lead in a workspace by ID",
      "resource": "lead"
    },
    {
      "name": "Reactivate Lead",
      "value": "reactivateLead",
      "action": "Reactivate an archived lead in a workspace",
      "description": "Reactivate an archived lead in a workspace",
      "resource": "lead"
    },
    {
      "name": "Update Lead",
      "value": "updateLead",
      "action": "Update a lead in a workspace",
      "description": "Update a lead in a workspace",
      "resource": "lead"
    },
    {
      "name": "Add Recipient",
      "value": "addRecipient",
      "action": "Add a recipient to a document",
      "description": "Add a recipient to a document",
      "resource": "recipient"
    },
    {
      "name": "Delete Recipient",
      "value": "deleteRecipient",
      "action": "Delete a recipient from a document",
      "description": "Delete a recipient from a document",
      "resource": "recipient"
    },
    {
      "name": "Find Recipient",
      "value": "findRecipient",
      "action": "Find a recipient by ID",
      "description": "Find a recipient by ID",
      "resource": "recipient"
    },
    {
      "name": "Get Recipient Notification Settings",
      "value": "getRecipientNotificationSettings",
      "action": "Retrieve notification preferences of a recipient",
      "description": "Retrieve notification preferences of a recipient",
      "resource": "recipient"
    },
    {
      "name": "Update Recipient",
      "value": "updateRecipient",
      "action": "Update a recipient in a document",
      "description": "Update a recipient in a document",
      "resource": "recipient"
    },
    {
      "name": "Update Recipient Notification Settings",
      "value": "updateRecipientNotificationSettings",
      "action": "Update notification preferences of a recipient",
      "description": "Update notification preferences of a recipient",
      "resource": "recipient"
    },
    {
      "name": "Create Document",
      "value": "createDocument",
      "action": "Create a new document in a workspace using the master template",
      "description": "Create a new document in a workspace using the master template",
      "resource": "document"
    },
    {
      "name": "Create Document From Lead",
      "value": "createDocumentFromLead",
      "action": "Create a new document in a workspace from a lead",
      "description": "Create a new document in a workspace from a lead",
      "resource": "document"
    },
    {
      "name": "Create Document From Template",
      "value": "createDocumentFromTemplate",
      "action": "Create a new document in a workspace from a template",
      "description": "Create a new document in a workspace from a template",
      "resource": "document"
    },
    {
      "name": "Create Document View Only Link",
      "value": "createDocumentViewOnlyLink",
      "action": "Create a view only link for a document",
      "description": "Create a view only link for a document",
      "resource": "document"
    },
    {
      "name": "Delete Document",
      "value": "deleteDocument",
      "action": "Delete a document in a workspace",
      "description": "Delete a document in a workspace",
      "resource": "document"
    },
    {
      "name": "Duplicate Document",
      "value": "duplicateDocument",
      "action": "Creates a duplicate of an existing document within the same workspace",
      "description": "Creates a duplicate of an existing document within the same workspace",
      "resource": "document"
    },
    {
      "name": "Find Document By ID",
      "value": "findDocumentById",
      "action": "Find a document in a workspace by ID",
      "description": "Find a document in a workspace by ID",
      "resource": "document"
    },
    {
      "name": "Move Document Stage",
      "value": "moveDocumentStage",
      "action": "Move a document to a different stage",
      "description": "Move a document to a different stage",
      "resource": "document"
    },
    {
      "name": "Share Document",
      "value": "shareDocument",
      "action": "Sends a share notification to recipients",
      "description": "Sends a share notification to recipients",
      "resource": "document"
    },
    {
      "name": "Transfer Document Ownership",
      "value": "transferDocumentOwnership",
      "action": "Transfer ownership of a document to a new owner",
      "description": "Transfer ownership of a document to a new owner",
      "resource": "document"
    },
    {
      "name": "Update Document",
      "value": "updateDocument",
      "action": "Update a document in a workspace",
      "description": "Update a document in a workspace",
      "resource": "document"
    },
    {
      "name": "Create Workspace",
      "value": "addWorkspace",
      "action": "Create a new workspace",
      "description": "Create a new workspace",
      "resource": "workspace"
    },
    {
      "name": "Find Workspace By ID",
      "value": "findWorkspaceById",
      "action": "Find a workspace by ID",
      "description": "Find a workspace by ID",
      "resource": "workspace"
    }
  ]

npm_readme:
  # n8n-nodes-proposaly

  This is an n8n community node. It lets you use [Proposaly](https://proposaly.io) in your n8n workflows.

  Proposaly unifies presentations, proposals, agreements, and payments into one seamless, client-ready experience - helping you close faster and smarter.

  [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform.

  [Installation](#installation)  
  [Operations](#operations)  
  [Credentials](#credentials)  
  [Compatibility](#compatibility)  
  [Usage](#usage)  
  [Resources](#resources)  
  [Version history](#version-history)  

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

  ## Operations

  This node supports the following resources and operations:

  ### Lead

  | Operation | Description |
  |-----------|-------------|
  | Create | Create a new lead |
  | Archive | Archive an existing lead |
  | Delete | Permanently delete a lead |
  | Find By ID | Retrieve a lead by its ID |
  | Reactivate | Reactivate an archived lead |
  | Update | Update lead properties |

  ### Document

  | Operation | Description |
  |-----------|-------------|
  | Create | Create a new document |
  | Delete | Permanently delete a document |
  | Duplicate | Create a copy of an existing document |
  | Find By ID | Retrieve a document by its ID |
  | Move Stage | Move a document to a different stage |
  | Create View Only Link | Generate a shareable view-only link |
  | Share | Share a document with recipients |
  | Transfer Ownership | Transfer document ownership to another user |
  | Update | Update document properties |

  ### Recipient

  | Operation | Description |
  |-----------|-------------|
  | Add | Add a recipient to a document |
  | Delete | Remove a recipient from a document |
  | Find | Find recipients on a document |
  | Update | Update recipient details |
  | Get Notification Settings | Retrieve notification preferences for a recipient |
  | Update Notification Settings | Modify notification preferences for a recipient |

  ### Workspace

  | Operation | Description |
  |-----------|-------------|
  | Add | Add a new workspace |
  | Find By ID | Retrieve a workspace by its ID |

  ### Trigger Node

  The package also includes a **Proposaly Trigger** node that listens for webhook events from Proposaly, allowing you to start workflows when events occur in your Proposaly account.

  ## Credentials

  To authenticate with Proposaly, you need an API key from your Proposaly workspace.

  ### How to obtain your API Key

  1. Log in to your Proposaly account
  2. Open the **Menu** in your company's workspace
  3. Navigate to **Company** → **Settings**
  4. Open the **Integrations** tab
  5. Click **"Generate an API Key"** (or if you already have a key, click the 3 dots and select **"Edit"**)
  6. Copy the API Key

  ### Setting up credentials in n8n

  1. In n8n, go to **Credentials**
  2. Click **Add Credential**
  3. Search for **Proposaly API**
  4. Paste your API Key
  5. The default API URL is `https://api.proposaly.io/v2/public-api` (only change if instructed by Proposaly support)
  6. Click **Save**

  ## Compatibility

  This node has been tested with n8n version **1.x** and later.

  **Minimum n8n version:** 1.0.0

  ## Usage

  ### Basic Example: Create a Lead

  1. Add a **Proposaly** node to your workflow
  2. Select **Lead** as the resource
  3. Select **Create** as the operation
  4. Fill in the required fields:
     - **Email**: The lead's email address
     - **First Name**: The lead's first name
     - **Last Name**: The lead's last name
  5. Execute the node

  ### Using with AI Agents

  This node is compatible with n8n's AI Agent functionality. You can use it as a tool within AI workflows to automate proposal and document management based on natural language instructions.

  Example using `$fromAI()`:

  ```javascript
  // In a Code node before the Proposaly node
  return {
    email: $fromAI("email", "The client's email address"),
    firstName: $fromAI("firstName", "The client's first name"),
    lastName: $fromAI("lastName", "The client's last name")
  };
  ```

  ### Tips

  - **Webhook Trigger**: Use the Proposaly Trigger node to automatically start workflows when documents are viewed, signed, or when other events occur
  - **Error Handling**: Enable "Continue On Fail" if you want your workflow to continue even if a Proposaly operation fails
  - **Batch Operations**: When processing multiple items, the node automatically handles each item in the input

  ## Resources

  - [Proposaly Website](https://proposaly.io)
  - [Proposaly API Documentation](https://api.proposaly.io/redoc)
  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [GitHub Repository](https://github.com/ADCORE-INC/n8n.proposaly.io)

  ## Version history

  See [CHANGELOG.md](CHANGELOG.md) for a detailed version history.

  ### 0.1.0

  Initial release with support for:

  - **Lead** management (Create, Archive, Delete, Find, Reactivate, Update)
  - **Document** operations (Create, Delete, Duplicate, Find, Move Stage, Share, Share Link, Transfer, Update)
  - **Recipient** handling (Add, Delete, Find, Update, Notification Settings)
  - **Workspace** operations (Add, Find)
  - **Webhook Trigger** for real-time event handling

ai_documentation_summary:
  {"purpose":"This n8n community node enables integration with the Proposaly platform to manage leads, documents, recipients, and workspaces, as well as trigger workflows based on Proposaly events.","capabilities":["Create, archive, delete, reactivate, update, and find leads","Create, delete, duplicate, move stage, share, transfer ownership, and update documents","Add, delete, find, update recipients and manage notification settings","Add and find workspaces","Listen for webhook events from Proposaly via a Trigger node","Generate view-only links for documents","Compatible with n8n AI Agent functionality for natural language-driven automation"],"authentication":"API key required","commonUseCases":["Automating client onboarding by creating leads and documents from incoming inquiries","Triggering follow-up workflows when a proposal is viewed or signed","Managing document sharing and recipient notifications automatically","Synchronizing workspace data between Proposaly and other systems"],"limitations":["Requires an active Proposaly account and valid API key","Default API URL is fixed unless explicitly changed by support"],"relatedNodes":["n8n-nodes-n8n-nodes-core.webhook","n8n-nodes-n8n-nodes-core.aiAgent"]}


node_type: n8n-nodes-nevermiss.neverMiss
package_name: n8n-nodes-nevermiss
display_name: NeverMiss
description: Interact with the NeverMiss AI receptionist API to access calls, leads, bookings, and stats
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: nevermiss
author_github_url: https://github.com/rayhanmahmood-nevermiss/
npm_package_name: n8n-nodes-nevermiss
npm_version: 0.1.1
community_fetched_at: 2026-07-14T14:40:34.116Z
ai_summary_generated_at: 2026-05-02 08:57:17
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "call",
      "options": [
        {
          "name": "Booking",
          "value": "booking"
        },
        {
          "name": "Call",
          "value": "call"
        },
        {
          "name": "Lead",
          "value": "lead"
        },
        {
          "name": "Stat",
          "value": "stats"
        },
        {
          "name": "Webhook",
          "value": "webhook"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a call",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/calls/{{$parameter[\"callId\"]}}",
              "method": "GET"
            }
          },
          "description": "Get a call by ID including the full transcript"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many calls",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/calls",
              "method": "GET"
            }
          },
          "description": "Retrieve a list of calls"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "call"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a lead",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/leads/{{$parameter[\"leadId\"]}}",
              "method": "GET"
            }
          },
          "description": "Get a lead by ID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many leads",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/leads",
              "method": "GET"
            }
          },
          "description": "Retrieve a list of leads"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "lead"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a booking",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/bookings/{{$parameter[\"bookingId\"]}}",
              "method": "GET"
            }
          },
          "description": "Get a booking by ID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many bookings",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/bookings",
              "method": "GET"
            }
          },
          "description": "Retrieve a list of bookings"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "booking"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get stats",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/stats",
              "method": "GET"
            }
          },
          "description": "Get aggregate call statistics"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "stats"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Register a webhook",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/webhooks",
              "method": "POST"
            }
          },
          "description": "Register a webhook for real-time notifications"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a webhook",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/webhooks/{{$parameter[\"webhookId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "Remove a registered webhook"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "webhook"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get",
      "value": "get",
      "action": "Get a call",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/calls/{{$parameter[\"callId\"]}}",
          "method": "GET"
        }
      },
      "description": "Get a call by ID including the full transcript",
      "resource": "call"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many calls",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/calls",
          "method": "GET"
        }
      },
      "description": "Retrieve a list of calls",
      "resource": "call"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a lead",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/leads/{{$parameter[\"leadId\"]}}",
          "method": "GET"
        }
      },
      "description": "Get a lead by ID",
      "resource": "lead"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many leads",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/leads",
          "method": "GET"
        }
      },
      "description": "Retrieve a list of leads",
      "resource": "lead"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a booking",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/bookings/{{$parameter[\"bookingId\"]}}",
          "method": "GET"
        }
      },
      "description": "Get a booking by ID",
      "resource": "booking"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many bookings",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/bookings",
          "method": "GET"
        }
      },
      "description": "Retrieve a list of bookings",
      "resource": "booking"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get stats",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/stats",
          "method": "GET"
        }
      },
      "description": "Get aggregate call statistics",
      "resource": "stats"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Register a webhook",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/webhooks",
          "method": "POST"
        }
      },
      "description": "Register a webhook for real-time notifications",
      "resource": "webhook"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a webhook",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/webhooks/{{$parameter[\"webhookId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "Remove a registered webhook",
      "resource": "webhook"
    }
  ]

npm_readme:
  # n8n-nodes-nevermiss

  This is an [n8n](https://n8n.io/) community node for the [NeverMiss](https://nevermisshq.com) AI receptionist API. It lets you access calls, leads, bookings, and statistics from your NeverMiss account directly in your n8n workflows.

  NeverMiss is an AI-powered receptionist and automation platform built for home service businesses (HVAC, plumbing, roofing, electrical). It answers every call 24/7, qualifies leads, books jobs, and integrates with your CRM.

  [n8n community nodes docs](https://docs.n8n.io/integrations/community-nodes/installation/)

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

  ```
  npm install n8n-nodes-nevermiss
  ```

  ## Credentials

  To use this node, you need a NeverMiss API key.

  1. Get your API key from your NeverMiss dashboard or contact [rayhanmahmood@nevermisshq.com](mailto:rayhanmahmood@nevermisshq.com)
  2. In n8n, go to **Credentials** > **Add Credential** > search for **NeverMiss API**
  3. Enter your API key and click **Save**

  The credential will be tested automatically against the NeverMiss API.

  ## Nodes

  ### NeverMiss

  The main action node with the following resources and operations:

  | Resource | Operation | Description |
  |----------|-----------|-------------|
  | **Call** | Get | Get a call by ID (includes full transcript) |
  | **Call** | Get Many | Retrieve a list of calls |
  | **Lead** | Get | Get a lead by ID |
  | **Lead** | Get Many | Retrieve a list of captured leads |
  | **Booking** | Get | Get a booking by ID |
  | **Booking** | Get Many | Retrieve a list of booked appointments |
  | **Stats** | Get | Get aggregate call statistics |
  | **Webhook** | Create | Register a webhook for real-time notifications |
  | **Webhook** | Delete | Remove a registered webhook |

  ### NeverMiss Trigger

  A polling trigger node that watches for new incoming calls. Configure the polling interval in your workflow settings.

  ## Resources

  - [NeverMiss Website](https://nevermisshq.com)
  - [NeverMiss API Documentation](https://nevermisshq.com/api/)
  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)

  ## License

  [MIT](LICENSE)

ai_documentation_summary:
  {"purpose":"Interact with the NeverMiss AI receptionist API to access calls, leads, bookings, and statistics directly within n8n workflows.","capabilities":["Retrieve individual call details including full transcripts","List and retrieve multiple calls","Get specific lead information by ID","Retrieve lists of captured leads","Access booking details by ID","List booked appointments","Fetch aggregate call statistics","Create webhooks for real-time notifications","Delete registered webhooks","Poll for new incoming calls"],"authentication":"API key required","commonUseCases":["Integrating AI receptionist data into CRM workflows","Automating follow-ups based on call transcripts","Tracking lead generation metrics for home service businesses","Synchronizing bookings from AI calls to scheduling tools"],"limitations":[],"relatedNodes":[]}


node_type: n8n-nodes-nevermiss.neverMissTrigger
package_name: n8n-nodes-nevermiss
display_name: NeverMiss Trigger
description: Triggers when new calls are received by the NeverMiss AI receptionist
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: nevermiss
author_github_url: https://github.com/rayhanmahmood-nevermiss/
npm_package_name: n8n-nodes-nevermiss
npm_version: 0.1.1
community_fetched_at: 2026-07-14T14:40:34.119Z
ai_summary_generated_at: 2026-05-02 08:57:17
npm_readme:
  # n8n-nodes-nevermiss

  This is an [n8n](https://n8n.io/) community node for the [NeverMiss](https://nevermisshq.com) AI receptionist API. It lets you access calls, leads, bookings, and statistics from your NeverMiss account directly in your n8n workflows.

  NeverMiss is an AI-powered receptionist and automation platform built for home service businesses (HVAC, plumbing, roofing, electrical). It answers every call 24/7, qualifies leads, books jobs, and integrates with your CRM.

  [n8n community nodes docs](https://docs.n8n.io/integrations/community-nodes/installation/)

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

  ```
  npm install n8n-nodes-nevermiss
  ```

  ## Credentials

  To use this node, you need a NeverMiss API key.

  1. Get your API key from your NeverMiss dashboard or contact [rayhanmahmood@nevermisshq.com](mailto:rayhanmahmood@nevermisshq.com)
  2. In n8n, go to **Credentials** > **Add Credential** > search for **NeverMiss API**
  3. Enter your API key and click **Save**

  The credential will be tested automatically against the NeverMiss API.

  ## Nodes

  ### NeverMiss

  The main action node with the following resources and operations:

  | Resource | Operation | Description |
  |----------|-----------|-------------|
  | **Call** | Get | Get a call by ID (includes full transcript) |
  | **Call** | Get Many | Retrieve a list of calls |
  | **Lead** | Get | Get a lead by ID |
  | **Lead** | Get Many | Retrieve a list of captured leads |
  | **Booking** | Get | Get a booking by ID |
  | **Booking** | Get Many | Retrieve a list of booked appointments |
  | **Stats** | Get | Get aggregate call statistics |
  | **Webhook** | Create | Register a webhook for real-time notifications |
  | **Webhook** | Delete | Remove a registered webhook |

  ### NeverMiss Trigger

  A polling trigger node that watches for new incoming calls. Configure the polling interval in your workflow settings.

  ## Resources

  - [NeverMiss Website](https://nevermisshq.com)
  - [NeverMiss API Documentation](https://nevermisshq.com/api/)
  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)

  ## License

  [MIT](LICENSE)

ai_documentation_summary:
  {"purpose":"The NeverMiss Trigger node monitors the NeverMiss AI receptionist API for new incoming calls and initiates n8n workflows when they are detected. It serves as a polling trigger to automate responses to calls handled by the NeverMiss AI system.","capabilities":["Poll for new incoming calls","Retrieve full call transcripts","Access captured leads","Retrieve booked appointments","Fetch aggregate call statistics","Register and remove webhooks for real-time notifications"],"authentication":"API key required","commonUseCases":["Automate follow-up emails or SMS after a call is answered","Create tasks in a CRM when a lead is captured","Schedule calendar events for booked appointments","Generate daily reports based on call statistics"],"limitations":["Requires a polling interval configuration; does not support real-time event-driven triggering via webhooks within the trigger node itself (webhooks must be created separately via the main node)","Limited to home service businesses (HVAC, plumbing, roofing, electrical) using the NeverMiss platform"],"relatedNodes":["n8n-nodes-nevermiss.NeverMiss"]}


node_type: @bp-n8n/n8n-nodes-botpenguin.botPenguin
package_name: @bp-n8n/n8n-nodes-botpenguin
display_name: BotPenguin
description: Create contacts in BotPenguin
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: botpenguin2012
author_github_url: https://github.com/bot-penguin/n8n-nodes-botpenguin.git
npm_package_name: @bp-n8n/n8n-nodes-botpenguin
npm_version: 1.0.5
community_fetched_at: 2026-07-14T14:40:34.120Z
ai_summary_generated_at: 2026-05-02 08:57:17
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "createContact",
      "options": [
        {
          "name": "Add Contact",
          "value": "createContact",
          "action": "Add contact",
          "description": "Create a contact in BotPenguin"
        },
        {
          "name": "Update Contact Attributes",
          "value": "updateAttributes",
          "action": "Update contact attributes",
          "description": "Update a contact attribute in BotPenguin"
        },
        {
          "name": "Send Session Message",
          "value": "sendSessionMessage",
          "action": "Send session message",
          "description": "Send a session message"
        },
        {
          "name": "Send Template Message",
          "value": "sendTemplateMessage",
          "action": "Send template message",
          "description": "Send a WhatsApp template message"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Add Contact",
      "value": "createContact",
      "action": "Add contact",
      "description": "Create a contact in BotPenguin"
    },
    {
      "name": "Update Contact Attributes",
      "value": "updateAttributes",
      "action": "Update contact attributes",
      "description": "Update a contact attribute in BotPenguin"
    },
    {
      "name": "Send Session Message",
      "value": "sendSessionMessage",
      "action": "Send session message",
      "description": "Send a session message"
    },
    {
      "name": "Send Template Message",
      "value": "sendTemplateMessage",
      "action": "Send template message",
      "description": "Send a WhatsApp template message"
    }
  ]

npm_readme:
  # n8n-nodes-botpenguin

  This is an n8n community node for BotPenguin. It lets you manage BotPenguin contacts, send messages, and trigger workflows from BotPenguin events inside n8n.


  [Installation](#installation)  
  [Operations](#operations)  
  [Triggers](#triggers)  
  [Credentials](#credentials)  
  [Usage Notes](#usage-notes)  
  [Development](#development)  
  [Resources](#resources)

  ## Installation

  Follow the [n8n community nodes installation guide](https://docs.n8n.io/integrations/community-nodes/installation/).

  Package name:

  ```bash
  npm install n8n-nodes-botpenguin
  ```

  You can also install it from the n8n UI through `Settings -> Community Nodes`.

  ## Operations

  The `BotPenguin` node currently supports these actions:

  - `Add a Contact`
  - `Update Contact Attributes`
  - `Send Session Message`
  - `Send Template Message`

  ## Triggers

  The `BotPenguin Trigger` node currently supports:

  - `New Contact Created`
  - `Incoming Message`
  - `WhatsApp Order Created`

  The trigger subscribes to BotPenguin webhook events and emits normalized n8n output with:

  - `event`
  - `app`
  - `botId`
  - `platform`
  - event-specific payload data
  - `timestamp`


  ## Credentials

  The `BotPenguin API` credential requires:

  - `API Key`
  - `Bot ID`
  - `Platform`

  Supported platform options in the credential:

  - `WhatsApp`
  - `Instagram`
  - `Facebook`
  - `Telegram`
  - `Website`
  - `SMS`

  ## Usage Notes

  - `Send Template Message` is WhatsApp-only.
  - `Send Session Message` uses the `Platform` selected in the credentials.
  - For trigger nodes, your n8n instance must be reachable by BotPenguin so webhook registration can work correctly.
  - For phone-based searches, use the full number with country code where the field description asks for it.

  ## Development

  Available scripts:

  ```bash
  npm run dev
  npm run build
  npm run lint
  npm run lint:fix
  npm run release
  ```


  ## Resources

  - [BotPenguin](https://botpenguin.com)
  - [BotPenguin Help Center](https://help.botpenguin.com)
  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)

  ## License

  [MIT](./LICENSE.md)

ai_documentation_summary:
  {"purpose":"This n8n community node enables integration with BotPenguin to manage contacts, send messages, and trigger automated workflows based on BotPenguin events.","capabilities":["Add a Contact","Update Contact Attributes","Send Session Message","Send Template Message","Trigger on New Contact Created","Trigger on Incoming Message","Trigger on WhatsApp Order Created"],"authentication":"API key required","commonUseCases":["Automate contact management in BotPenguin","Send personalized messages via WhatsApp, Instagram, Facebook, Telegram, SMS, or Website","Trigger n8n workflows when new contacts are created or messages are received","Handle WhatsApp order events"],"limitations":["Send Template Message is WhatsApp-only","Webhook triggers require n8n instance to be publicly reachable for BotPenguin registration","Phone number searches require full numbers with country code"],"relatedNodes":[]}


node_type: @bp-n8n/n8n-nodes-botpenguin.botPenguinTrigger
package_name: @bp-n8n/n8n-nodes-botpenguin
display_name: BotPenguin Trigger
description: Starts the workflow when BotPenguin events occur
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: botpenguin2012
author_github_url: https://github.com/bot-penguin/n8n-nodes-botpenguin.git
npm_package_name: @bp-n8n/n8n-nodes-botpenguin
npm_version: 1.0.5
community_fetched_at: 2026-07-14T14:40:34.121Z
ai_summary_generated_at: 2026-05-02 08:57:17
npm_readme:
  # n8n-nodes-botpenguin

  This is an n8n community node for BotPenguin. It lets you manage BotPenguin contacts, send messages, and trigger workflows from BotPenguin events inside n8n.


  [Installation](#installation)  
  [Operations](#operations)  
  [Triggers](#triggers)  
  [Credentials](#credentials)  
  [Usage Notes](#usage-notes)  
  [Development](#development)  
  [Resources](#resources)

  ## Installation

  Follow the [n8n community nodes installation guide](https://docs.n8n.io/integrations/community-nodes/installation/).

  Package name:

  ```bash
  npm install n8n-nodes-botpenguin
  ```

  You can also install it from the n8n UI through `Settings -> Community Nodes`.

  ## Operations

  The `BotPenguin` node currently supports these actions:

  - `Add a Contact`
  - `Update Contact Attributes`
  - `Send Session Message`
  - `Send Template Message`

  ## Triggers

  The `BotPenguin Trigger` node currently supports:

  - `New Contact Created`
  - `Incoming Message`
  - `WhatsApp Order Created`

  The trigger subscribes to BotPenguin webhook events and emits normalized n8n output with:

  - `event`
  - `app`
  - `botId`
  - `platform`
  - event-specific payload data
  - `timestamp`


  ## Credentials

  The `BotPenguin API` credential requires:

  - `API Key`
  - `Bot ID`
  - `Platform`

  Supported platform options in the credential:

  - `WhatsApp`
  - `Instagram`
  - `Facebook`
  - `Telegram`
  - `Website`
  - `SMS`

  ## Usage Notes

  - `Send Template Message` is WhatsApp-only.
  - `Send Session Message` uses the `Platform` selected in the credentials.
  - For trigger nodes, your n8n instance must be reachable by BotPenguin so webhook registration can work correctly.
  - For phone-based searches, use the full number with country code where the field description asks for it.

  ## Development

  Available scripts:

  ```bash
  npm run dev
  npm run build
  npm run lint
  npm run lint:fix
  npm run release
  ```


  ## Resources

  - [BotPenguin](https://botpenguin.com)
  - [BotPenguin Help Center](https://help.botpenguin.com)
  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)

  ## License

  [MIT](./LICENSE.md)

ai_documentation_summary:
  {"purpose":"Triggers n8n workflows automatically when specific events occur within the BotPenguin platform, such as new contacts, incoming messages, or WhatsApp orders.","capabilities":["Start workflow on new contact creation","Start workflow on incoming messages","Start workflow on WhatsApp order creation","Emits normalized output including event type, app, botId, platform, payload, and timestamp"],"authentication":"API key required (BotPenguin API credential with API Key, Bot ID, and Platform)","commonUseCases":["Automate responses when a new contact joins BotPenguin","Process incoming messages from WhatsApp, Instagram, Facebook, Telegram, Website, or SMS","Handle WhatsApp order events automatically"],"limitations":["Requires n8n instance to be publicly reachable for webhook registration","Send Template Message is WhatsApp-only","Phone numbers must include country code for phone-based searches"],"relatedNodes":["BotPenguin (Operations node for managing contacts and sending messages)"]}


node_type: @demografix/n8n-nodes-agify.demografixAgify
package_name: @demografix/n8n-nodes-agify
display_name: Agify
description: Get age prediction for a given name using the Agify.io API (free tier: 2,500 requests/month)
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: demografix
author_github_url: https://github.com/DemografixGenderize/n8n-nodes-agify.git
npm_package_name: @demografix/n8n-nodes-agify
npm_version: 1.0.2
community_fetched_at: 2026-07-14T14:40:34.122Z
ai_summary_generated_at: 2026-05-02 08:57:17
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "getAge",
      "options": [
        {
          "name": "Get Age",
          "value": "getAge",
          "action": "Get age prediction for a name",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { ...($response.body), \"rateLimit\": { \"limit\": $response.headers[\"x-rate-limit-limit\"], \"remaining\": $response.headers[\"x-rate-limit-remaining\"], \"reset\": $response.headers[\"x-rate-limit-reset\"] } } }}"
                  }
                }
              ]
            },
            "request": {
              "qs": {
                "name": "={{$parameter.name}}",
                "country_id": "={{$parameter.country_id || undefined}}"
              },
              "url": "",
              "method": "GET"
            }
          },
          "description": "Get the predicted age for a given first name"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get Age",
      "value": "getAge",
      "action": "Get age prediction for a name",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { ...($response.body), \"rateLimit\": { \"limit\": $response.headers[\"x-rate-limit-limit\"], \"remaining\": $response.headers[\"x-rate-limit-remaining\"], \"reset\": $response.headers[\"x-rate-limit-reset\"] } } }}"
              }
            }
          ]
        },
        "request": {
          "qs": {
            "name": "={{$parameter.name}}",
            "country_id": "={{$parameter.country_id || undefined}}"
          },
          "url": "",
          "method": "GET"
        }
      },
      "description": "Get the predicted age for a given first name"
    }
  ]

npm_readme:
  # @demografix/n8n-nodes-agify

  This is an n8n community node. It lets you use Agify.io in your n8n workflows.

  Agify.io is an age prediction API that infers age based on names using statistical analysis.

  [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/sustainable-use-license/) workflow automation platform.

  [Installation](#installation)
  [Operations](#operations)
  [Credentials](#credentials)
  [Compatibility](#compatibility)
  [Usage](#usage)
  [Resources](#resources)

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

  ## Operations

  - **Get Age**: Predict the age for a given name based on statistical analysis

  ## Credentials

  An API key is required for all Agify.io requests.

  ### Free tier — 2,500 requests/month
  Sign up at [agify.io](https://agify.io) for a free account. Free accounts include 2,500 requests per month at no cost.

  ### Paid tiers
  For higher volumes, subscribe to a paid plan at [agify.io](https://agify.io) — tiers cover increased monthly request quotas.

  ### Setup
  1. Sign up at [agify.io](https://agify.io)
  2. Copy your API key from the dashboard
  3. In n8n, create new "Agify API" credentials
  4. Paste the API key
  5. Test the credentials to verify they work

  ## Compatibility

  This node is built using n8n's declarative style and requires n8n version 1.0 or later.

  ## Usage

  ### Basic Example
  1. Add the "Agify" node to your workflow
  2. Enter a name (e.g., "Peter", "Sarah", "Alex")
  3. Execute the node

  ### Response Data
  The node returns the following data:
  - `name`: The name that was queried
  - `age`: Predicted age (integer)
  - `count`: Number of data samples used for this prediction
  - `rateLimit.limit`: Total requests allowed in current period
  - `rateLimit.remaining`: Requests remaining in current period
  - `rateLimit.reset`: Seconds until rate limit resets

  ### Tips
  - A higher `count` indicates a more reliable prediction backed by more data
  - The API supports diacritics and non-Latin alphabets
  - Use the optional country code parameter to improve accuracy for region-specific naming conventions
  - Use the `rateLimit` data to monitor your API usage and avoid hitting limits

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [Agify.io official website](https://agify.io)
  - [Agify.io API documentation](https://agify.io/documentation)

ai_documentation_summary:
  {"purpose":"Predicts the age of a person based on their name using statistical analysis from the Agify.io API.","capabilities":["Predict age from a given name","Support for diacritics and non-Latin alphabets","Optional country code parameter for improved accuracy","Returns prediction confidence metrics (sample count)","Provides rate limit status in response"],"authentication":"API key required","commonUseCases":["Demographic analysis in marketing workflows","User profiling based on name data","Data enrichment for lead lists","Age verification pre-checks"],"limitations":["Free tier limited to 2,500 requests per month","Predictions are statistical estimates, not exact ages","Accuracy depends on the sample count returned","Requires n8n version 1.0 or later"],"relatedNodes":[]}


node_type: @demografix/n8n-nodes-nationalize.demografixNationalize
package_name: @demografix/n8n-nodes-nationalize
display_name: Nationalize
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: demografix
author_github_url: https://github.com/DemografixGenderize/n8n-nodes-nationalize.git
npm_package_name: @demografix/n8n-nodes-nationalize
npm_version: 1.0.1
community_fetched_at: 2026-07-14T14:40:34.123Z
ai_summary_generated_at: 2026-05-02 08:57:17
description:
  Get nationality prediction for a given name using the Nationalize.io API (free tier: 2,500 requests/month)

properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "getNationality",
      "options": [
        {
          "name": "Get Nationality",
          "value": "getNationality",
          "action": "Get nationality prediction for a name",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { ...($response.body), \"rateLimit\": { \"limit\": $response.headers[\"x-rate-limit-limit\"], \"remaining\": $response.headers[\"x-rate-limit-remaining\"], \"reset\": $response.headers[\"x-rate-limit-reset\"] } } }}"
                  }
                }
              ]
            },
            "request": {
              "qs": {
                "name": "={{$parameter.name}}"
              },
              "url": "",
              "method": "GET"
            }
          },
          "description": "Get the predicted countries of origin for a given name"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get Nationality",
      "value": "getNationality",
      "action": "Get nationality prediction for a name",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { ...($response.body), \"rateLimit\": { \"limit\": $response.headers[\"x-rate-limit-limit\"], \"remaining\": $response.headers[\"x-rate-limit-remaining\"], \"reset\": $response.headers[\"x-rate-limit-reset\"] } } }}"
              }
            }
          ]
        },
        "request": {
          "qs": {
            "name": "={{$parameter.name}}"
          },
          "url": "",
          "method": "GET"
        }
      },
      "description": "Get the predicted countries of origin for a given name"
    }
  ]

npm_readme:
  # @demografix/n8n-nodes-nationalize

  This is an n8n community node. It lets you use Nationalize.io in your n8n workflows.

  Nationalize.io is a nationality prediction API that estimates the most likely countries of origin for a given name based on statistical analysis.

  [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/sustainable-use-license/) workflow automation platform.

  [Installation](#installation)
  [Operations](#operations)
  [Credentials](#credentials)
  [Compatibility](#compatibility)
  [Usage](#usage)
  [Resources](#resources)

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

  ## Operations

  - **Get Nationality**: Predict the most likely countries of origin for a given name, ranked by probability

  ## Credentials

  An API key is required for all Nationalize.io requests.

  ### Free tier — 2,500 requests/month
  Sign up at [nationalize.io](https://nationalize.io) for a free account. Free accounts include 2,500 requests per month at no cost.

  ### Paid tiers
  For higher volumes, subscribe to a paid plan at [nationalize.io](https://nationalize.io) — tiers cover increased monthly request quotas.

  ### Setup
  1. Sign up at [nationalize.io](https://nationalize.io)
  2. Copy your API key from the dashboard
  3. In n8n, create new "Nationalize API" credentials
  4. Paste the API key
  5. Test the credentials to verify they work

  ## Compatibility

  This node is built using n8n's declarative style and requires n8n version 1.0 or later.

  ## Usage

  ### Basic Example
  1. Add the "Nationalize" node to your workflow
  2. Enter a name (e.g., "Johnson", "Bakshi", "Nguyen") — last name is preferred
  3. Execute the node

  ### Response Data
  The node returns the following data:
  - `name`: The name that was queried
  - `count`: Number of data samples used for this prediction
  - `country`: Array of up to 5 country predictions, each with:
    - `country_id`: ISO 3166-1 alpha-2 country code (e.g., "US", "GB", "DK")
    - `probability`: Confidence score (0–1, where 1 is 100% confident)
  - `rateLimit.limit`: Total requests allowed in current period
  - `rateLimit.remaining`: Requests remaining in current period
  - `rateLimit.reset`: Seconds until the rate limit window resets

  ### Tips
  - The API attempts to parse full names and extract the last name automatically
  - Diacritics are normalised before matching
  - Use the `rateLimit` data to monitor your API usage and avoid hitting limits
  - Country codes follow the ISO 3166-1 alpha-2 standard

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [Nationalize.io official website](https://nationalize.io)
  - [Nationalize.io API documentation](https://nationalize.io/documentation)

ai_documentation_summary:
  {"purpose":"Predicts the most likely countries of origin for a given name using statistical analysis via the Nationalize.io API.","capabilities":["Get Nationality","Returns up to 5 country predictions ranked by probability","Returns ISO 3166-1 alpha-2 country codes","Returns confidence scores (0–1)","Returns rate limit information (limit, remaining, reset)"],"authentication":"API key required","commonUseCases":["Demographic data enrichment","User profiling based on names","Data validation and cleaning"],"limitations":["Free tier limited to 2,500 requests per month","Predictions are statistical estimates, not definitive facts","Returns up to 5 country predictions, not a single definitive answer"],"relatedNodes":[]}


node_type: @rightech/n8n-nodes-ric.rightechIotCore
package_name: @rightech/n8n-nodes-ric
display_name: Rightech IoT Core
description: Interact with the Rightech IoT Core API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: prohazko
author_github_url: https://github.com/Rightech/n8n-nodes-ric.git
npm_package_name: @rightech/n8n-nodes-ric
npm_version: 0.0.11
community_fetched_at: 2026-07-14T14:40:34.124Z
ai_summary_generated_at: 2026-05-22 10:26:01
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "object",
      "options": [
        {
          "name": "Event",
          "value": "event",
          "description": "Event log stores all occurred events"
        },
        {
          "name": "Model",
          "value": "model",
          "description": "Models define your object configuration shapes"
        },
        {
          "name": "Object",
          "value": "object",
          "description": "Objects represent your IoT devices"
        },
        {
          "name": "Report Build",
          "value": "reportBuild",
          "description": "Build and load reports designed on the platform"
        },
        {
          "name": "Scenario",
          "value": "scenario",
          "description": "Automation scenarios enable stateful automations with visual tools"
        },
        {
          "name": "Table",
          "value": "table",
          "description": "Data tables define arbitrary data shapes and store data"
        },
        {
          "name": "Task",
          "value": "task",
          "description": "Tasks assignable to platform users"
        },
        {
          "name": "User",
          "value": "user",
          "description": "Users of the platform instance"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create object configuration",
          "description": "Creates and configures IoT device connection object"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get object configuration and state",
          "description": "Reads an entire object configuration and recorded state params"
        },
        {
          "name": "Get Events",
          "value": "getEvents",
          "action": "Get object event log",
          "description": "Get events related to the object"
        },
        {
          "name": "Get History",
          "value": "getHistory",
          "action": "Get object telemetry history",
          "description": "Get historic telemetry packets for a specific time range"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get multiple objects",
          "description": "Get configuration and state of multiple objects at once"
        },
        {
          "name": "Send Command",
          "value": "sendCommand",
          "action": "Send command to the object",
          "description": "Sends any assigned command of the object to the device"
        },
        {
          "name": "Send Telemetry",
          "value": "sendTelemetry",
          "action": "Send telemetry packet to the object",
          "description": "Sends a customizable telemetry packet to the object, simulating device data"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update object configuration",
          "description": "Updates object configuration parameters based on its model"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "object"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get model configuration",
          "description": "Reads an entire model configuration tree"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "model"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "start",
      "options": [
        {
          "name": "Start Scenario",
          "value": "start",
          "action": "Start scenario on an object",
          "description": "Starts a new scenario execution on the object"
        },
        {
          "name": "Stop Scenario",
          "value": "stop",
          "action": "Stop scenario on an object",
          "description": "Stops a running scenario execution on an object"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "scenario"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get data table declaration",
          "description": "Returns table declaration with column properties"
        },
        {
          "name": "Get Row",
          "value": "getRow",
          "action": "Get table row",
          "description": "Returns a specific table row"
        },
        {
          "name": "Get Rows",
          "value": "getManyRows",
          "action": "Get table rows",
          "description": "Returns table rows, optionally matching selected conditions"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "table"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get multiple events",
          "description": "Get filtered events from the global event stream"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "event"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a user",
          "description": "Loads platform user information"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get multiple users",
          "description": "Loads multiple platform users at once"
        },
        {
          "name": "Create a User",
          "value": "create",
          "action": "Create a user",
          "description": "Creates a new platform user"
        },
        {
          "name": "Update a User",
          "value": "update",
          "action": "Update a user",
          "description": "Updates an existing platform user"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a task",
          "description": "Loads task information"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get multiple tasks",
          "description": "Loads multiple tasks at once"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create a task",
          "description": "Creates a new task"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a task",
          "description": "Updates task parameters"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "task"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Cancel",
          "value": "cancel",
          "action": "Cancel a report build",
          "description": "Sometimes you may realize that your report build order was too large or simply a mistake"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create a new report build",
          "description": "You can order to build a previously designed report, which takes some time to prepare data for you"
        },
        {
          "name": "Export",
          "value": "_export",
          "action": "Export a report build",
          "description": "When report is ready you can export the built data in various formats, like tables or JSON"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a report build",
          "description": "Loads report build status"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get multiple report builds",
          "description": "Loads multiple builds at once"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "reportBuild"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create object configuration",
      "description": "Creates and configures IoT device connection object",
      "resource": "object"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get object configuration and state",
      "description": "Reads an entire object configuration and recorded state params",
      "resource": "object"
    },
    {
      "name": "Get Events",
      "value": "getEvents",
      "action": "Get object event log",
      "description": "Get events related to the object",
      "resource": "object"
    },
    {
      "name": "Get History",
      "value": "getHistory",
      "action": "Get object telemetry history",
      "description": "Get historic telemetry packets for a specific time range",
      "resource": "object"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get multiple objects",
      "description": "Get configuration and state of multiple objects at once",
      "resource": "object"
    },
    {
      "name": "Send Command",
      "value": "sendCommand",
      "action": "Send command to the object",
      "description": "Sends any assigned command of the object to the device",
      "resource": "object"
    },
    {
      "name": "Send Telemetry",
      "value": "sendTelemetry",
      "action": "Send telemetry packet to the object",
      "description": "Sends a customizable telemetry packet to the object, simulating device data",
      "resource": "object"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update object configuration",
      "description": "Updates object configuration parameters based on its model",
      "resource": "object"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get model configuration",
      "description": "Reads an entire model configuration tree",
      "resource": "model"
    },
    {
      "name": "Start Scenario",
      "value": "start",
      "action": "Start scenario on an object",
      "description": "Starts a new scenario execution on the object",
      "resource": "scenario"
    },
    {
      "name": "Stop Scenario",
      "value": "stop",
      "action": "Stop scenario on an object",
      "description": "Stops a running scenario execution on an object",
      "resource": "scenario"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get data table declaration",
      "description": "Returns table declaration with column properties",
      "resource": "table"
    },
    {
      "name": "Get Row",
      "value": "getRow",
      "action": "Get table row",
      "description": "Returns a specific table row",
      "resource": "table"
    },
    {
      "name": "Get Rows",
      "value": "getManyRows",
      "action": "Get table rows",
      "description": "Returns table rows, optionally matching selected conditions",
      "resource": "table"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get multiple events",
      "description": "Get filtered events from the global event stream",
      "resource": "event"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a user",
      "description": "Loads platform user information",
      "resource": "user"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get multiple users",
      "description": "Loads multiple platform users at once",
      "resource": "user"
    },
    {
      "name": "Create a User",
      "value": "create",
      "action": "Create a user",
      "description": "Creates a new platform user",
      "resource": "user"
    },
    {
      "name": "Update a User",
      "value": "update",
      "action": "Update a user",
      "description": "Updates an existing platform user",
      "resource": "user"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a task",
      "description": "Loads task information",
      "resource": "task"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get multiple tasks",
      "description": "Loads multiple tasks at once",
      "resource": "task"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a task",
      "description": "Creates a new task",
      "resource": "task"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a task",
      "description": "Updates task parameters",
      "resource": "task"
    },
    {
      "name": "Cancel",
      "value": "cancel",
      "action": "Cancel a report build",
      "description": "Sometimes you may realize that your report build order was too large or simply a mistake",
      "resource": "reportBuild"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a new report build",
      "description": "You can order to build a previously designed report, which takes some time to prepare data for you",
      "resource": "reportBuild"
    },
    {
      "name": "Export",
      "value": "_export",
      "action": "Export a report build",
      "description": "When report is ready you can export the built data in various formats, like tables or JSON",
      "resource": "reportBuild"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a report build",
      "description": "Loads report build status",
      "resource": "reportBuild"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get multiple report builds",
      "description": "Loads multiple builds at once",
      "resource": "reportBuild"
    }
  ]

npm_readme:
  # n8n Nodes - <img src="logo.svg" width="32" height="32" alt="Rightech IoT Core" align="center"> Rightech IoT Core

  This is an n8n community node that provides some basic integration with [<img src="logo.svg" width="16" height="16" alt="Rightech IoT Core" align="center"> Rightech IoT Core (aka RIC)](https://rightech.io).
  It lets you interact with your IoT devices and automations through the platform.

  The [<img src="logo.svg" width="16" height="16" alt="Rightech IoT Core" align="center"> RIC](https://rightech.io) platform is an intermediate link between devices (sensors, actuators, etc.) on the one hand, and applications on the other.
  Platform tools allow developers to create IoT solutions without extra code and developers reuse 90% of that solution to launch similar cases.
  RIC is independent of specific equipment and protocols. So, it is easy to combine different devices under one solution.

  [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/sustainable-use-license/) workflow automation platform.

  ## Contents

  - [Installation](#installation)
  - [Operations](#operations)
  - [Credentials](#credentials)
  - [Compatibility](#compatibility)
  - [Resources](#resources)

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

  ## Operations

  Supported operations organized by resource type:

  ### Objects

  Objects represent your IoT devices

  - **Get configuration data and state**: Reads an entire object configuration and recorded state params.
  - **Get multiple objects**: Get configuration and state of multiple objects at once.
  - **Create object configuration**: Creates and configures IoT device connection object.
  - **Updates object configuration**: Updates object configuration parameters based on its model.
  - **Get object event log**: Get events related to the object.
  - **Send command to the object**: Sends any assigned command of the object to the device.
  - **Get object telemetry history**: Get historic telemetry packets for a specific time range.
  - **Send telemetry packet to the object**: Sends a customizable telemetry packet to the object, simulating device data.

  ### Models

  Models define your object configuration shapes

  - **Get model configuration**: Reads an entire model configuration tree.

  ### Scenarios

  Automation scenarios enable stateful automations with visual tools

  - **Start scenario on an object**: Starts a new scenario execution on the object.
  - **Stop scenario on an object**: Stops a running scenario execution on an object.

  ### Tables

  Data tables define arbitrary data shapes and store data

  - **Get data table declaration**: Returns table declaration with column properties.
  - **Get table row**: Returns a specific table row.
  - **Get table rows**: Returns table rows matching selected conditions.

  ### Events

  Event log stores all occurred events

  - **Get multiple events**: Get filtered events from the global event log.

  ### Users

  Users of the platform instance

  - **Get a user**: Loads platform user information
  - **Get multiple users**: Loads multiple platform users at once
  - **Create a user**: Creates a new platform user
  - **Update a user**: Updates an existing platform user

  ### Tasks

  Maintenance tasks assignable to platform users. Tasks can have different kinds, statuses, and properties defined by kinds.
  Tasks expose temporary access to object commands for users in the related service app to enable maintenance scenarios.

  - **Get a task**: Loads task information
  - **Get multiple tasks**: Loads multiple tasks at once
  - **Create a task**: Creates a new task
  - **Update a task**: Updates task parameters

  ### Report builds

  Build and load reports designed on the platform.

  - **Get a report build**: Loads report build status
  - **Get multiple report builds**: Loads multiple builds at once
  - **Create a new report build**: You can order to build a previously designed report, which takes some time to prepare data for you
  - **Cancel a report build**: Sometimes you may realize that your report build order was too large or simply a mistake
  - **Export a report build**: When report is ready you can export the built data in various formats, like tables or JSON

  ## Credentials

  This node supports API Bearer auth credentials using [`rightechIotCoreApi`](credentials/RightechIotCoreApi.credentials.ts) credential.
  By default, credentials point to the public development and demo server at [`dev.rightech.io`](https://dev.rightech.io).
  You can change server to point at your own instance of the platform.

  An API token is required to use the platform's HTTP API.
  It is used as a standard [Bearer authentication](https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/Authentication#bearer) token in [Authorization header](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Authorization): `Authorization: Bearer <ACCESS_TOKEN>`.

  To create an API token, open the platform web UI and navigate to "Project settings" > "API tokens".
  Select an appropriate expiration time - otherwise the new token will be short-lived.
  Select the "Scopes" of the API you need for you automation.

  > [!TIP]
  > A "Scope" is a set of URI available in the API. Each resource and operation in this node requires a certain "Scope" to work.

  Click "Issue", and the newly created token will be copied to your clipboard, and also displayed in the window.
  Make sure to save it where it's needed since you won't be able to get unencrypted token later.

  > [!IMPORTANT]
  > The token only works for requests that were marked when it was created.
  > If you use other methods, you will get an error `HTTP 403 Forbidden`.
  > For security reasons it is not recommended to include "All" methods - instead keep selection as narrow as possible.
  > By selecting only certain methods you minimize attack surface if accidentally leak the token.

  ## Compatibility

  This node is developed on and tested to work with the following configuration:

  - **n8n**: Version 2.15.0 and higher
  - **Node.js**: 24.25.0 or higher
  - **npm**: 11.12.1 or higher

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [<img src="logo.svg" width="16" height="16" alt="Rightech IoT Core" align="center"> RIC resources](https://rightech.io)
    - [Platform introduction](/docs/intro.md)
    - [Glossary](/docs/terms.md)
    - [Forums](https://forum.rightech.io/)
    - [Solutions](https://store.rightech.io/solutions)
    - [Tech Support](mailto:development@rightech.io)
    - [Cases and examples](https://github.com/Rightech/ric-public)
    - [Trial version](/docs/trial.md)

ai_documentation_summary:
  {"purpose":"This n8n community node enables interaction with the Rightech IoT Core (RIC) API to manage IoT devices, configurations, commands, and scenarios.","capabilities":["Get single object configuration and state","Get multiple objects configuration and state","Update object configuration parameters","Send commands to IoT devices","Get model configuration tree","Start scenario execution on an object","Stop running scenario execution on an object","Get table declaration with column properties","Get specific table row by ID","Get table rows matching conditions"],"authentication":"API Bearer token (Access Token required)","commonUseCases":["Automating IoT device control via n8n workflows","Monitoring sensor data and device states","Executing pre-defined automation scenarios","Managing IoT device configurations programmatically"],"limitations":["Supports only a bare minimum of operations at the time of documentation","Credentials default to the public development server (dev.rightech.io) unless manually configured"],"relatedNodes":["HTTP Request","Set","Code"]}


node_type: n8n-nodes-getdemo.getdemo
package_name: n8n-nodes-getdemo
display_name: Getdemo
description: Interact with Getdemo API to list and manage demos
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: marcos.demetrio2
author_github_url: https://github.com/Get-Demo/
npm_package_name: n8n-nodes-getdemo
npm_version: 0.1.11
community_fetched_at: 2026-07-14T14:40:34.125Z
ai_summary_generated_at: 2026-05-02 08:57:17
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "demo",
      "options": [
        {
          "name": "Demo",
          "value": "demo"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List",
          "value": "list",
          "action": "List all demos",
          "description": "List all demos"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "demo"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "List",
      "value": "list",
      "action": "List all demos",
      "description": "List all demos",
      "resource": "demo"
    }
  ]

npm_readme:
  # n8n-nodes-getdemo

  This is an n8n community node for Getdemo. It allows you to list your demos and receive webhook events for view activities.

  [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/sustainable-use-license/) workflow automation platform.

  ## Installation

  ### Install via npm

  ```bash
  npm install n8n-nodes-getdemo
  ```

  ### Configure in n8n

  1. Set the environment variable `N8N_CUSTOM_EXTENSIONS` to point to the installed package:
     ```bash
     export N8N_CUSTOM_EXTENSIONS=/path/to/node_modules/n8n-nodes-getdemo
     ```

  2. Or if installed globally:
     ```bash
     export N8N_CUSTOM_EXTENSIONS=$(npm root -g)/n8n-nodes-getdemo
     ```

  3. Restart n8n

  For more details, see the [n8n community nodes installation guide](https://docs.n8n.io/integrations/community-nodes/installation/).

  ## Nodes

  ### Getdemo

  The main node for interacting with the Getdemo API.

  **Operations:**
  - **List Demos**: Lists all demos for the authenticated user

  ### Getdemo Trigger

  A webhook trigger node that starts workflows when Getdemo view events occur.

  **Events:**
  - **View Started**: Triggered when a demo view starts
  - **View Finished**: Triggered when a demo view is completed or user disconnects
  - **Step Changed**: Triggered when viewer moves to a different step

  ## Credentials

  ### Getdemo API Key

  To use the Getdemo nodes, you need to generate an API Key in your Getdemo account:

  1. Log in to Getdemo: https://app.getdemo.com.br
  2. Navigate to **Integrations** → **API** (in the "Native Integrations" section)
  3. Click **"Generate token"** or **"Integrate API"**
  4. Copy the generated API Key (UUID format)
  5. Use this API Key in the Getdemo API credential in n8n

  **Important**: The API Key is **private/personal** - each user must generate their own. The API Key gives access only to the data of the user/company that generated it.

  ## Compatibility

  - Minimum n8n version: 1.0.0
  - Tested with n8n version: 2.3.4+

  ## Usage

  ### Example 1: List Demos

  1. Add the **Getdemo** node to your workflow
  2. Configure the **Getdemo API Key** credential with your API Key
  3. Select **Resource**: Demo
  4. Select **Operation**: List
  5. Execute the workflow to get all your demos

  ### Example 2: Monitor View Events

  1. Add the **Getdemo Trigger** node to your workflow (as the first node/trigger)
  2. Configure the **Webhook Path** (default: `getdemo-view`)
  3. Copy the webhook URL generated by n8n
  4. In Getdemo, go to **Integrations** → **Webhooks**
  5. Add a new webhook pointing to the n8n webhook URL
  6. Select which events you want to receive: **STARTED_VIEWING**, **FINISHED_VIEWING**, or **CHANGED_STEP_VIEWING**
  7. Activate the workflow in n8n
  8. The workflow will be triggered automatically when the selected view events occur

  ### Example Workflow: Send Notification When Demo is Viewed

  ```
  [Getdemo Trigger: View Finished] → [IF: ctaClicked = true] → [Slack: Send Message]
  ```

  ### Example Workflow: Sync Demos to Google Sheets

  ```
  [Schedule: Daily 9am] → [Getdemo: List Demos] → [Loop Over Items] → [Google Sheets: Append Row]
  ```

  ## Data Structure

  ### List Demos Response

  Each demo object contains:
  - `id` (UUID): Demo ID
  - `name` (string): Demo name
  - `token` (UUID): Demo token
  - `status` (string): Demo status
  - `views` (integer): Number of views
  - `steps` (integer): Number of steps
  - `createdAt` (datetime): Creation date
  - `updatedAt` (datetime): Last update date

  ### View Event Webhook Payload

  The webhook payload contains (varies by event type):
  - `id` (UUID): View ID
  - `recordingId` (UUID): Demo ID that was viewed
  - `email` (string): Viewer email
  - `fullName` (string): Viewer full name
  - `isDone` (boolean): Whether view was completed
  - `ctaClicked` (boolean): Whether CTA was clicked
  - `totalFrames` (integer): Total frames in demo
  - `lastFrame` (integer): Last frame viewed
  - `campaignName` (string, optional): Campaign name

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [Getdemo Documentation](https://app.getdemo.com.br/docs)

  ## Version history

  ### 0.1.0

  - Initial release
  - Getdemo node with List Demos operation
  - Getdemo Trigger node for view events (started, finished, step changed)
  - Getdemo API Key credential support

ai_documentation_summary:
  {"purpose":"Interact with the Getdemo API to list user recordings and manage demo view events via webhooks.","capabilities":["List all demos (recordings) for the authenticated user","Trigger workflows on View Started events","Trigger workflows on View Finished events","Trigger workflows on Step Changed events","Retrieve viewer details including email, name, and CTA click status"],"authentication":"API key required (Getdemo API Key credential)","commonUseCases":["Sync demo recordings to external databases or spreadsheets","Send notifications when a demo view is completed","Track viewer engagement metrics (frames viewed, CTA clicks)","Monitor demo activity in real-time via webhooks"],"limitations":["API Key is private/personal and scoped only to the user/company that generated it","Requires manual setup of webhook URLs in the Getdemo dashboard to receive events","Minimum n8n version required is 1.0.0"],"relatedNodes":["Google Sheets","Slack","Schedule Trigger","IF"]}


node_type: n8n-nodes-getdemo.getdemoTrigger
package_name: n8n-nodes-getdemo
display_name: Getdemo Trigger
description: Starts the workflow when a Getdemo view event occurs (view started, step changed, or disconnected)
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: marcos.demetrio2
author_github_url: https://github.com/Get-Demo/
npm_package_name: n8n-nodes-getdemo
npm_version: 0.1.11
community_fetched_at: 2026-07-14T14:40:34.126Z
ai_summary_generated_at: 2026-05-02 08:57:17
npm_readme:
  # n8n-nodes-getdemo

  This is an n8n community node for Getdemo. It allows you to list your demos and receive webhook events for view activities.

  [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/sustainable-use-license/) workflow automation platform.

  ## Installation

  ### Install via npm

  ```bash
  npm install n8n-nodes-getdemo
  ```

  ### Configure in n8n

  1. Set the environment variable `N8N_CUSTOM_EXTENSIONS` to point to the installed package:
     ```bash
     export N8N_CUSTOM_EXTENSIONS=/path/to/node_modules/n8n-nodes-getdemo
     ```

  2. Or if installed globally:
     ```bash
     export N8N_CUSTOM_EXTENSIONS=$(npm root -g)/n8n-nodes-getdemo
     ```

  3. Restart n8n

  For more details, see the [n8n community nodes installation guide](https://docs.n8n.io/integrations/community-nodes/installation/).

  ## Nodes

  ### Getdemo

  The main node for interacting with the Getdemo API.

  **Operations:**
  - **List Demos**: Lists all demos for the authenticated user

  ### Getdemo Trigger

  A webhook trigger node that starts workflows when Getdemo view events occur.

  **Events:**
  - **View Started**: Triggered when a demo view starts
  - **View Finished**: Triggered when a demo view is completed or user disconnects
  - **Step Changed**: Triggered when viewer moves to a different step

  ## Credentials

  ### Getdemo API Key

  To use the Getdemo nodes, you need to generate an API Key in your Getdemo account:

  1. Log in to Getdemo: https://app.getdemo.com.br
  2. Navigate to **Integrations** → **API** (in the "Native Integrations" section)
  3. Click **"Generate token"** or **"Integrate API"**
  4. Copy the generated API Key (UUID format)
  5. Use this API Key in the Getdemo API credential in n8n

  **Important**: The API Key is **private/personal** - each user must generate their own. The API Key gives access only to the data of the user/company that generated it.

  ## Compatibility

  - Minimum n8n version: 1.0.0
  - Tested with n8n version: 2.3.4+

  ## Usage

  ### Example 1: List Demos

  1. Add the **Getdemo** node to your workflow
  2. Configure the **Getdemo API Key** credential with your API Key
  3. Select **Resource**: Demo
  4. Select **Operation**: List
  5. Execute the workflow to get all your demos

  ### Example 2: Monitor View Events

  1. Add the **Getdemo Trigger** node to your workflow (as the first node/trigger)
  2. Configure the **Webhook Path** (default: `getdemo-view`)
  3. Copy the webhook URL generated by n8n
  4. In Getdemo, go to **Integrations** → **Webhooks**
  5. Add a new webhook pointing to the n8n webhook URL
  6. Select which events you want to receive: **STARTED_VIEWING**, **FINISHED_VIEWING**, or **CHANGED_STEP_VIEWING**
  7. Activate the workflow in n8n
  8. The workflow will be triggered automatically when the selected view events occur

  ### Example Workflow: Send Notification When Demo is Viewed

  ```
  [Getdemo Trigger: View Finished] → [IF: ctaClicked = true] → [Slack: Send Message]
  ```

  ### Example Workflow: Sync Demos to Google Sheets

  ```
  [Schedule: Daily 9am] → [Getdemo: List Demos] → [Loop Over Items] → [Google Sheets: Append Row]
  ```

  ## Data Structure

  ### List Demos Response

  Each demo object contains:
  - `id` (UUID): Demo ID
  - `name` (string): Demo name
  - `token` (UUID): Demo token
  - `status` (string): Demo status
  - `views` (integer): Number of views
  - `steps` (integer): Number of steps
  - `createdAt` (datetime): Creation date
  - `updatedAt` (datetime): Last update date

  ### View Event Webhook Payload

  The webhook payload contains (varies by event type):
  - `id` (UUID): View ID
  - `recordingId` (UUID): Demo ID that was viewed
  - `email` (string): Viewer email
  - `fullName` (string): Viewer full name
  - `isDone` (boolean): Whether view was completed
  - `ctaClicked` (boolean): Whether CTA was clicked
  - `totalFrames` (integer): Total frames in demo
  - `lastFrame` (integer): Last frame viewed
  - `campaignName` (string, optional): Campaign name

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [Getdemo Documentation](https://app.getdemo.com.br/docs)

  ## Version history

  ### 0.1.0

  - Initial release
  - Getdemo node with List Demos operation
  - Getdemo Trigger node for view events (started, finished, step changed)
  - Getdemo API Key credential support

ai_documentation_summary:
  {"purpose":"The Getdemo Trigger node initiates n8n workflows when specific user interaction events occur within Getdemo recordings, such as a view starting, finishing, or a step change.","capabilities":["Trigger on View Started events","Trigger on View Finished events","Trigger on Step Changed events","Receive webhook payloads containing viewer data (email, name, CTA clicks, frame progress)"],"authentication":"None (Webhook-based)","commonUseCases":["Send notifications when a demo view is completed","Track viewer engagement metrics like CTA clicks","Log viewer details (email, name) to a database or spreadsheet","Trigger follow-up actions based on specific steps viewed"],"limitations":["Requires external configuration in Getdemo to register the webhook URL","Authentication relies on the API Key configured in the main Getdemo node, not directly on the Trigger node","Only supports three specific event types: STARTED_VIEWING, FINISHED_VIEWING, and CHANGED_STEP_VIEWING"],"relatedNodes":["Getdemo","Webhook","Slack","Google Sheets"]}


node_type: @sai360/n8n-nodes-grc.sai360Grc
package_name: @sai360/n8n-nodes-grc
display_name: SAI360 GRC
description: Interact with the SAI360 GRC API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: antonlissone
author_github_url: https://github.com/antonlissone/n8n-nodes-grc.git
npm_package_name: @sai360/n8n-nodes-grc
npm_version: 1.0.7
community_fetched_at: 2026-07-14T14:40:34.127Z
ai_summary_generated_at: 2026-05-02 08:57:17
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "datastore",
      "options": [
        {
          "name": "Datastore",
          "value": "datastore"
        },
        {
          "name": "GraphQL",
          "value": "graphql"
        },
        {
          "name": "Session",
          "value": "session"
        },
        {
          "name": "Table Record",
          "value": "tableRecords"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "queryJson",
      "options": [
        {
          "name": "Get Records (JSON)",
          "value": "queryJson",
          "action": "Get table records as JSON",
          "description": "Retrieve table records in JSON format"
        },
        {
          "name": "Get Records (XML/ZIP)",
          "value": "queryXml",
          "action": "Get table records as XML",
          "description": "Retrieve table records in XML or ZIP format"
        },
        {
          "name": "Map Fields for JSON",
          "value": "mapJson",
          "action": "Map fields for JSON",
          "description": "Map input fields to SAI360 table attributes for JSON output"
        },
        {
          "name": "Query or Delete Records",
          "value": "queryOrDelete",
          "action": "Query or delete records",
          "description": "Query records via POST and then GET XML or DELETE them"
        },
        {
          "name": "Save to Records From JSON",
          "value": "saveJson",
          "action": "Save table records from JSON",
          "description": "Create or update table records using JSON format"
        },
        {
          "name": "Save to Records From XML",
          "value": "saveXml",
          "action": "Save table records from XML",
          "description": "Create or update table records using XML format"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "tableRecords"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "directExecute",
      "options": [
        {
          "name": "Prime for Execution (Paginated)",
          "value": "primeForPagination",
          "action": "Prime for execution",
          "description": "Prime datastore for execution (paginated)"
        },
        {
          "name": "Direct Execute",
          "value": "directExecute",
          "action": "Direct execute",
          "description": "Directly execute datastore query and retrieve results"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "datastore"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getLog",
      "options": [
        {
          "name": "Logout",
          "value": "logout",
          "action": "Logout"
        },
        {
          "name": "Retrieve Log",
          "value": "getLog",
          "action": "Retrieve log"
        },
        {
          "name": "Get Version Info",
          "value": "getVersionInfo",
          "action": "Get version info"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "session"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "executeQuery",
      "options": [
        {
          "name": "Execute Query",
          "value": "executeQuery",
          "action": "Execute a graph ql query",
          "description": "Execute a GraphQL query against the SAI360 API"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "graphql"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get Records (JSON)",
      "value": "queryJson",
      "action": "Get table records as JSON",
      "description": "Retrieve table records in JSON format",
      "resource": "tableRecords"
    },
    {
      "name": "Get Records (XML/ZIP)",
      "value": "queryXml",
      "action": "Get table records as XML",
      "description": "Retrieve table records in XML or ZIP format",
      "resource": "tableRecords"
    },
    {
      "name": "Map Fields for JSON",
      "value": "mapJson",
      "action": "Map fields for JSON",
      "description": "Map input fields to SAI360 table attributes for JSON output",
      "resource": "tableRecords"
    },
    {
      "name": "Query or Delete Records",
      "value": "queryOrDelete",
      "action": "Query or delete records",
      "description": "Query records via POST and then GET XML or DELETE them",
      "resource": "tableRecords"
    },
    {
      "name": "Save to Records From JSON",
      "value": "saveJson",
      "action": "Save table records from JSON",
      "description": "Create or update table records using JSON format",
      "resource": "tableRecords"
    },
    {
      "name": "Save to Records From XML",
      "value": "saveXml",
      "action": "Save table records from XML",
      "description": "Create or update table records using XML format",
      "resource": "tableRecords"
    },
    {
      "name": "Prime for Execution (Paginated)",
      "value": "primeForPagination",
      "action": "Prime for execution",
      "description": "Prime datastore for execution (paginated)",
      "resource": "datastore"
    },
    {
      "name": "Direct Execute",
      "value": "directExecute",
      "action": "Direct execute",
      "description": "Directly execute datastore query and retrieve results",
      "resource": "datastore"
    },
    {
      "name": "Logout",
      "value": "logout",
      "action": "Logout",
      "resource": "session"
    },
    {
      "name": "Retrieve Log",
      "value": "getLog",
      "action": "Retrieve log",
      "resource": "session"
    },
    {
      "name": "Get Version Info",
      "value": "getVersionInfo",
      "action": "Get version info",
      "resource": "session"
    },
    {
      "name": "Execute Query",
      "value": "executeQuery",
      "action": "Execute a graph ql query",
      "description": "Execute a GraphQL query against the SAI360 API",
      "resource": "graphql"
    }
  ]

npm_readme:
  # @sai360/n8n-nodes-grc

  This is an n8n community node. It lets you use **SAI360 Elevate GRC** in your n8n workflows.

  SAI360 Elevate GRC is an end-to-end Governance, Risk & Compliance suite covering Risk Management, Policy Management, Business Continuity Management, Vendor/Third-Party Risk Management, InfoSec/Cybersecurity Management and other GRC domains. This node lets you read, write, query, and orchestrate records and datastores in your SAI360 instance directly from n8n workflows.

  [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/sustainable-use-license/) workflow automation platform.

  - [Installation](#installation)
  - [Operations](#operations)
  - [Credentials](#credentials)
  - [Compatibility](#compatibility)
  - [Usage](#usage)
  - [Resources](#resources)
  - [Version history](#version-history)

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation. The package name is `@sai360/n8n-nodes-grc`.

  ## Operations

  The **SAI360 GRC** node exposes the following resources and operations:

  - **Table records**
    - *Query (JSON)* — retrieve records from a class/table as JSON.
    - *Query (XML)* — retrieve records as XML or ZIP, with filter expressions, reference modes, metadata and workflow info.
    - *Save (JSON)* — create/update records by passing a JSON array, with optional batch size.
    - *Save (XML)* — create/update records by passing raw XML.
    - *Query or Delete* — execute a server-side query and either retrieve the result set or delete the matched records.
  - **Datastores**
    - *Direct execute* — run a configured datastore and return the resulting rows.
    - *Prime for pagination* — initialise a paginated datastore execution and return the grid identifier for follow-up requests.
  - **GraphQL**
    - *Execute query* — POST a GraphQL document to `/api/graphql` and return the `data` portion of the response.
  - **Session**
    - *Get version info* — retrieve the SAI360 platform version.
    - *Get log* — retrieve the SAI360 server-side log (useful for debugging failed writes).
    - *Logout* — terminate the current SAI360 session.

  > Available datastores, classes and GraphQL schemas are **customer-specific**. The dynamic dropdowns in the node (Datastore Name, Table Name, Class Name) load directly from your connected SAI360 instance — there are no defaults shipped with this package.

  ## Credentials

  Two credential types are provided:

  - **SAI360 GRC API (Basic Auth)** — username + password against an SAI360 instance. The credential class handles the proprietary `bwise-session` login flow internally: it POSTs to `/api/login`, caches the session token on the credential record, and re-authenticates automatically on session expiry. You only supply the base URL, username and password.
  - **SAI360 GRC API (OAuth2)** — standard OAuth2 client credentials flow. Recommended for stateless integrations and machine-to-machine scenarios where you don't want to manage human user sessions.

  For both credential types you must supply the **base URL** of your SAI360 instance (including the application context if your tenant uses one, e.g. `https://customer.sai360.net/bwise`).

  ## Compatibility

  - **Minimum tested n8n version**: latest GA release (currently `n8n@2.18.4`, requires Node.js `>=22.16`).
  - **SAI360 Elevate**: tested against current GA. The platform's REST surface is broadly stable across recent releases; if your instance pre-dates the introduction of `/api/graphql`, the GraphQL operation will not function but other operations will.
  - **n8n Cloud**: this package follows n8n's community node verification requirements (npm provenance, `@n8n/node-cli` lint, `strict: true`). Submit at https://docs.n8n.io/integrations/creating-nodes/deploy/submit-community-nodes/.

  No known version incompatibilities at the time of writing.

  ## Usage

  ### Example: Query a customer-defined datastore

  This walks through fetching live data from a datastore that exists in your SAI360 tenant.

  1. **Add credentials.** In n8n, go to *Credentials → New → SAI360 GRC API (Basic Auth)* (or OAuth2). Set your base URL and either user/password or OAuth2 client details. Click *Save*; n8n will validate by hitting `/versioninfo`.
  2. **Add the SAI360 GRC node** to a workflow.
  3. **Pick the operation.** Set *Resource* = `Datastore`, *Operation* = `Direct Execute`.
  4. **Pick a datastore.** The *Datastore Name or ID* dropdown loads live from your instance — open the menu and pick one of the datastores configured in your SAI360 tenant. (Datastore IDs are bespoke per customer; ask your SAI360 administrator if you don't see what you expect.)
  5. **Run the node.** The output is one n8n item per row returned by the datastore. Wire it into downstream nodes like *Set*, *IF*, *Code*, or any third-party connector to push the data wherever you need.

  ### Example: Create records in a class via JSON

  1. Add the **SAI360 GRC** node, set *Resource* = `Table Records`, *Operation* = `Save (JSON)`.
  2. Pick the target class from the *Table Name or ID* dropdown (loads live from the instance).
  3. Paste a JSON array of records into the *Records* field, e.g.
     ```json
     [
       { "label": "Risk created from n8n", "description": "Imported via webhook" }
     ]
     ```
  4. Optionally set *Batch Size* to split large imports. Run the node — failures are surfaced as `NodeApiError` in n8n's executions panel with the SAI360 server log appended for debugging.

  ### Tips

  - For long-running queries, prefer the *Datastore → Prime for Pagination* operation followed by manual paged calls over *Direct Execute*, which fetches up to 10,000 rows in one go.
  - The node automatically retries once on session expiry (HTTP 401) by re-authenticating; you don't need to handle this in your workflow.
  - Use the *Session → Get Log* operation right after a failed *Save* to retrieve the server-side error trace.

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  - **SAI360 API documentation** — bundled with every SAI360 instance at `https://<your-sai360-instance>/console/docs`. The docs are private and instance-specific; use your tenant's URL.

  ## Version history

  - **1.0.6** — Refactored basic-auth flow to n8n's `preAuthentication` + `authenticate` credential pattern (`bwise-session` header), enabling cross-workflow session caching and built-in 401 re-auth. Centralised HTTP error handling into the transport layer with structured `NodeApiError` output. Removed dependency `overrides` from `package.json`. Note: HTTP 403 responses are no longer treated as session expiry — they now correctly surface as authorisation errors.
  - **1.0.5 and earlier** — Initial published versions. Compatible with SAI360 Elevate releases at or above the version that introduced `/api/login`, `/api/instances`, `/api/modelinstance`, `/api/griddata` and `/api/graphql` endpoints.

ai_documentation_summary:
  {"purpose":"Interact with the SAI360 Elevate GRC API to read, write, query, and orchestrate records and datastores within Governance, Risk & Compliance workflows.","capabilities":["Query table records as JSON","Query table records as XML or ZIP with filters","Save/update records via JSON array","Save/update records via raw XML","Execute server-side queries to retrieve or delete records","Execute configured datastores directly","Initialize paginated datastore executions","Execute GraphQL queries","Retrieve platform version info","Retrieve server-side logs for debugging"],"authentication":"Basic Auth (username/password with session token caching) or OAuth2 (client credentials)","commonUseCases":["Automating risk management data entry and retrieval","Synchronizing vendor risk assessments with external systems","Orchestrating policy management workflows","Querying business continuity plans","Integrating InfoSec/Cybersecurity data with other platforms"],"limitations":["Available datastores, classes, and GraphQL schemas are customer-specific and not included by default","GraphQL operations may not function on SAI360 instances pre-dating the /api/graphql endpoint","Direct Execute operation fetches up to 10,000 rows in a single call, which may require pagination for larger datasets"],"relatedNodes":[]}


node_type: @phil-fetchski/n8n-nodes-zoho-cliq.zohoCliq
package_name: @phil-fetchski/n8n-nodes-zoho-cliq
display_name: Zoho Cliq
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: philschools
author_github_url: https://github.com/phil-fetchski/n8n-nodes-zoho-cliq.git
npm_package_name: @phil-fetchski/n8n-nodes-zoho-cliq
npm_version: 1.0.2
community_fetched_at: 2026-07-14T14:40:34.128Z
ai_summary_generated_at: 2026-05-02 08:57:17
description:
  Fully manage your Zoho Cliq workspace: messages, channels, teams, users, databases, events, reminders, bots, files, and more

npm_readme:
  <p align="center">
    <img src="https://raw.githubusercontent.com/phil-fetchski/n8n-nodes-zoho-cliq/main/Assets/Repo_Banner_n8n-nodes-zoho-cliq.png" alt="Banner for README - n8n-nodes-zoho-cliq repo" width="100%">
  </p>

  # n8n-nodes-zoho-cliq

  A production ready [n8n](https://n8n.io/) community node for the [Zoho Cliq](https://www.zoho.com/cliq/) REST API v2.

  This node provides complete coverage of the Zoho Cliq API from a single, consistent n8n node. Every resource and every operation in the Zoho Cliq REST API v2 is implemented, tested, and documented. Beyond raw API coverage, the node adds meaningful enhancements that make working with Zoho Cliq in n8n significantly more reliable, more automatable, and more useful for both deterministic workflows and AI-powered agents.

  ## Disclaimer

  This project is **not affiliated with, endorsed by, or associated with Zoho or Zoho Cliq** in any capacity. It is an independent, community-built n8n node created by an individual developer. I cannot provide support for Zoho's services, APIs, account issues, or platform behavior. For Zoho-specific questions, please refer to [Zoho Cliq's official documentation](https://www.zoho.com/cliq/help/restapi/v2/) and [Zoho's support channels](https://help.zoho.com/).

  ## Table of Contents

  - [Disclaimer](#disclaimer)
  - [Installation](#installation)
  - [Credentials](#credentials)
  - [API Coverage](#api-coverage)
  - [Custom Enhancements](#custom-enhancements)
  - [AI Agent Tool Support](#ai-agent-tool-support)
  - [Development](#development)
  - [References](#references)
  - [Credits](#credits)
  - [Coding Agent Credits](#coding-agent-credits)
  - [License](#license)

  ## Installation

  Install this package as a standard n8n community node.

  ### n8n Community Nodes UI (Recommended)

  1. Open your n8n instance.
  2. Navigate to **Settings** > **Community Nodes**.
  3. Select **Install**.
  4. Enter the package name below.
  5. Approve the installation prompt and restart n8n if required.

  ### Package Name - Must Include the scope!

  ```text
  @phil-fetchski/n8n-nodes-zoho-cliq
  ```

  ## Credentials

  This node uses OAuth2 via the **Zoho Cliq OAuth2 API** credential type.

  Start with the setup guide included in this repository for the exact credential configuration flow used by this node, then use the official Zoho references for underlying OAuth protocol details.

  - [Credentials Setup Guide](https://github.com/phil-fetchski/n8n-nodes-zoho-cliq/blob/main/documentation/CREDENTIALS.md)
  - [Zoho OAuth Protocol](https://www.zoho.com/accounts/protocol/oauth.html)
  - [Zoho Cliq REST Authentication](https://www.zoho.com/cliq/help/restapi/v2/#authentication)

  ## API Coverage

  This node implements 100% of the Zoho Cliq REST API v2 surface. Every resource group, every endpoint, and every operation is covered. In addition to the full API surface, the node includes custom helper resources that exist only in this package to solve real workflow problems that the Zoho Cliq API does not address on its own.

  Over 160 operations are organized across 25 resources.

  ### Core Messaging and Collaboration

  | Resource | Description | Documentation |
  | --- | --- | --- |
  | Message | Post, edit, delete, retrieve, get, and schedule messages across channels, chats, bots, and users | [Operations](https://github.com/phil-fetchski/n8n-nodes-zoho-cliq/blob/main/documentation/Message.md) |
  | Thread | Create, reply to, and manage threaded conversations within channels | [Operations](https://github.com/phil-fetchski/n8n-nodes-zoho-cliq/blob/main/documentation/Thread.md) |
  | Reaction | Add, remove, and retrieve emoji reactions on messages | [Operations](https://github.com/phil-fetchski/n8n-nodes-zoho-cliq/blob/main/documentation/Reaction.md) |
  | File | Upload, retrieve, and share files into conversations | [Operations](https://github.com/phil-fetchski/n8n-nodes-zoho-cliq/blob/main/documentation/Files.md) |
  | Channel | Create, update, delete, and manage channel memberships, permissions, and settings | [Operations](https://github.com/phil-fetchski/n8n-nodes-zoho-cliq/blob/main/documentation/Channel.md) |
  | Chat | List, mute, unmute, pin, unpin, and leave direct message and group chat conversations | [Operations](https://github.com/phil-fetchski/n8n-nodes-zoho-cliq/blob/main/documentation/Chat.md) |
  | Bot | Retrieve bot subscribers and trigger bot-initiated calls | [Operations](https://github.com/phil-fetchski/n8n-nodes-zoho-cliq/blob/main/documentation/Bot.md) |

  ### Organization and Administration

  | Resource | Description | Documentation |
  | --- | --- | --- |
  | User | Look up, list, and manage user profiles and organization members | [Operations](https://github.com/phil-fetchski/n8n-nodes-zoho-cliq/blob/main/documentation/User.md) |
  | Team | Create, update, delete, and manage team memberships | [Operations](https://github.com/phil-fetchski/n8n-nodes-zoho-cliq/blob/main/documentation/Team.md) |
  | Department | Create, update, delete, and manage department memberships | [Operations](https://github.com/phil-fetchski/n8n-nodes-zoho-cliq/blob/main/documentation/Department.md) |
  | Role | Create, update, delete roles and manage role permissions and user assignments | [Operations](https://github.com/phil-fetchski/n8n-nodes-zoho-cliq/blob/main/documentation/Role.md) |
  | Designation | Create, list, delete designations and manage designation members | [Operations](https://github.com/phil-fetchski/n8n-nodes-zoho-cliq/blob/main/documentation/Designation.md) |
  | User Field | Retrieve and manage custom user profile fields | [Operations](https://github.com/phil-fetchski/n8n-nodes-zoho-cliq/blob/main/documentation/UserField.md) |
  | User Status | Get, set, and clear user presence and status information | [Operations](https://github.com/phil-fetchski/n8n-nodes-zoho-cliq/blob/main/documentation/UserStatus.md) |
  | Custom Domain | Add, verify, get, and delete custom domains for the organization | [Operations](https://github.com/phil-fetchski/n8n-nodes-zoho-cliq/blob/main/documentation/CustomDomain.md) |
  | Custom Email | Verify and update organization email configuration | [Operations](https://github.com/phil-fetchski/n8n-nodes-zoho-cliq/blob/main/documentation/CustomEmail.md) |
  | Database | Create, list, and delete Cliq Database storage entries | [Operations](https://github.com/phil-fetchski/n8n-nodes-zoho-cliq/blob/main/documentation/Database.md) |
  | Widget Map Ticker | Add, update, and delete widget map ticker entries | [Operations](https://github.com/phil-fetchski/n8n-nodes-zoho-cliq/blob/main/documentation/WidgetMapTicker.md) |
  | Bulk Action | Export channel and conversation data for compliance and backup | [Operations](https://github.com/phil-fetchski/n8n-nodes-zoho-cliq/blob/main/documentation/BulkAction.md) |

  ### Workflow and Scheduling

  | Resource | Description | Documentation |
  | --- | --- | --- |
  | Event | List events, get calendars, and upload calendar attachments | [Operations](https://github.com/phil-fetchski/n8n-nodes-zoho-cliq/blob/main/documentation/Events.md) |
  | Reminder | Create and manage reminders | [Operations](https://github.com/phil-fetchski/n8n-nodes-zoho-cliq/blob/main/documentation/Reminders.md) |
  | Remote Work | Manage remote work status entries (clock in, clock out, check status) | [Operations](https://github.com/phil-fetchski/n8n-nodes-zoho-cliq/blob/main/documentation/RemoteWork.md) |
  | Calls and Meetings | List call recordings and retrieve recording details | [Operations](https://github.com/phil-fetchski/n8n-nodes-zoho-cliq/blob/main/documentation/CallsMeeting.md) |

  ### Helper Resources

  These resources are custom additions that do not map to Zoho Cliq API endpoints. They run locally within the node to solve common workflow problems.

  | Resource | Description | Documentation |
  | --- | --- | --- |
  | Message Component Builder | Build and validate rich Cliq message payloads, card payloads, buttons, slides, tables, charts, graphs, and ACK messages without making API calls | [Operations](https://github.com/phil-fetchski/n8n-nodes-zoho-cliq/blob/main/documentation/MessageComponentBuilder.md) |
  | OAuth Helper | Inspect granted scopes, discover scope packs, and validate scope coverage against the connected credential | [Operations](https://github.com/phil-fetchski/n8n-nodes-zoho-cliq/blob/main/documentation/OAuthHelper.md) |

  ## Custom Enhancements

  This node is not a thin API wrapper. It includes several purpose-built enhancements that address real limitations in the Zoho Cliq API and improve the experience of building production workflows.

  ### Preflight Validation and Structured Error Handling

  The Zoho Cliq API often returns sparse, inconsistent, or unhelpful error responses. This node addresses that with a global preflight validation layer and structured error normalization.

  Before any request is sent to the Zoho Cliq API, inputs are validated locally. IDs, email addresses, timestamps, enum values, and required fields are checked against expected formats. When validation fails, the node produces a structured error response with:

  - A machine-readable error code (e.g., `CHANNEL_NOT_FOUND`, `USER_NOT_FOUND`, `THREAD_NOT_FOUND`, `USER_IDS_NOT_TEAM_MEMBERS`, `DEPARTMENT_NOT_FOUND`)
  - A human-readable error message describing what went wrong
  - A hint with actionable guidance for resolving the issue
  - The resource and operation context so the error is traceable

  These structured error responses are available when the node is configured with **Continue On Fail** enabled or when **AI Error Mode** is active. This design allows both deterministic workflows (using If/Switch nodes to branch on error codes) and AI agents (which can read the error output and decide how to recover) to handle failures gracefully instead of halting execution.

  ### Enhanced Output for Sparse API Responses

  Several Zoho Cliq API endpoints return only an empty string on success, which makes downstream workflow chaining difficult. For these operations, the node provides an optional **Enable Enhanced Output** toggle. When enabled, the node constructs a richer output object that includes the mutated item data, the resource and operation names, and a `success: true` field, giving downstream nodes something meaningful to work with.

  ### Rich Message Payload Builders

  The Message Component Builder resource provides local, no-API-call operations for constructing valid Zoho Cliq message payloads with full access to the Cliq message format. This includes:

  - **Card Payload Builder** for structured card messages with themes and formatting
  - **Agent Card Payload Builder** optimized for AI agent output
  - **Button Builder** for interactive button arrays
  - **Slide Component Builders** for Tables, Charts, Graphs, Images, Labels, and Lists
  - **General Component Builder** for assembling multiple slide components into a complete payload

  These builders output valid JSON objects that can be passed directly into message-sending operations, eliminating the need to manually construct complex Cliq message structures.

  ### ACK Message Builder for Bot Conversations

  When using Zoho Cliq bots backed by n8n AI Agent workflows (triggered via webhook), there is an inherent delay while the AI agent processes the user's message. During this delay, the user sees nothing in the Cliq chat, which creates a poor experience.

  The **Build and Fire ACK Message** operation solves this by sending an immediate acknowledgment message to the bot conversation with a configurable loading state. This message appears instantly in the Cliq chat while the AI agent processes the request. Later in the workflow, the acknowledgment message can be edited or replaced with the actual AI response.

  The operation includes:

  - Configurable acknowledgment text (single message, random from array, or preset random messages)
  - Message styling options (standard, bold, heading)
  - Card theme support (basic, poll, prompt, modern-inline)
  - Animated spinner thumbnails from the [svg-spinners](https://github.com/n3r4zzurr0/svg-spinners) collection served via [Iconify](https://icon-sets.iconify.design/svg-spinners/) with 40+ spinner animations to choose from

  ### OAuth Helper Operations

  Zoho OAuth scope configuration is notoriously difficult to get right, especially when an integration spans messaging, admin, calendar, storage, and remote work operations. The built-in OAuth Helper resource provides operations to:

  - Inspect the scopes currently granted on the connected OAuth token
  - Discover available scope packs and what they include
  - Validate that the connected credential has the scopes required for specific operations

  These operations run directly against the credential without calling any Cliq API endpoints, making them a safe diagnostic tool that can be used in any workflow.

  ## AI Agent Tool Support

  Every operation in this node (over 160) is designed to work as an AI tool in n8n agent workflows via `usableAsTool: true`. Beyond the standard n8n AI tool compatibility, this package includes a complete library of **AI Agent Tool Field Guides** with per-operation setup instructions for configuring each operation as a tool.

  Each guide includes:

  - A suggested **Tool Description** ready to paste into the n8n tool configuration
  - **Plain-text field descriptions** for every input parameter, written for AI comprehension
  - Suggested **`$fromAI()` expressions** with parameter names, descriptions, types, and default values
  - Required vs. optional field guidance so the agent knows what it must provide vs. what it can omit

  These guides were developed and tested iteratively against a Claude-powered AI agent in n8n to verify that the suggested descriptions and expressions produce reliable, correct tool calls across all operations.

  | Resource | AI Tool Field Guide |
  | --- | --- |
  | Bot | [Guide](https://github.com/phil-fetchski/n8n-nodes-zoho-cliq/blob/main/AiAgentToolDescriptions/Resources/Bot/README.md) |
  | Bulk Action | [Guide](https://github.com/phil-fetchski/n8n-nodes-zoho-cliq/blob/main/AiAgentToolDescriptions/Resources/BulkAction/README.md) |
  | Calls and Meetings | [Guide](https://github.com/phil-fetchski/n8n-nodes-zoho-cliq/blob/main/AiAgentToolDescriptions/Resources/CallsMeeting/README.md) |
  | Channel | [Guide](https://github.com/phil-fetchski/n8n-nodes-zoho-cliq/blob/main/AiAgentToolDescriptions/Resources/Channel/README.md) |
  | Chat | [Guide](https://github.com/phil-fetchski/n8n-nodes-zoho-cliq/blob/main/AiAgentToolDescriptions/Resources/Chat/README.md) |
  | Custom Domain | [Guide](https://github.com/phil-fetchski/n8n-nodes-zoho-cliq/blob/main/AiAgentToolDescriptions/Resources/CustomDomain/README.md) |
  | Custom Email | [Guide](https://github.com/phil-fetchski/n8n-nodes-zoho-cliq/blob/main/AiAgentToolDescriptions/Resources/CustomEmail/README.md) |
  | Database | [Guide](https://github.com/phil-fetchski/n8n-nodes-zoho-cliq/blob/main/AiAgentToolDescriptions/Resources/Database/README.md) |
  | Department | [Guide](https://github.com/phil-fetchski/n8n-nodes-zoho-cliq/blob/main/AiAgentToolDescriptions/Resources/Department/README.md) |
  | Designation | [Guide](https://github.com/phil-fetchski/n8n-nodes-zoho-cliq/blob/main/AiAgentToolDescriptions/Resources/Designation/README.md) |
  | Events | [Guide](https://github.com/phil-fetchski/n8n-nodes-zoho-cliq/blob/main/AiAgentToolDescriptions/Resources/Events/README.md) |
  | Files | [Guide](https://github.com/phil-fetchski/n8n-nodes-zoho-cliq/blob/main/AiAgentToolDescriptions/Resources/Files/README.md) |
  | Message | [Guide](https://github.com/phil-fetchski/n8n-nodes-zoho-cliq/blob/main/AiAgentToolDescriptions/Resources/Message/README.md) |
  | Message Component Builder | [Guide](https://github.com/phil-fetchski/n8n-nodes-zoho-cliq/blob/main/AiAgentToolDescriptions/Resources/MessageComponentBuilder/README.md) |
  | OAuth Helper | [Guide](https://github.com/phil-fetchski/n8n-nodes-zoho-cliq/blob/main/AiAgentToolDescriptions/Resources/OAuthHelper/README.md) |
  | Reaction | [Guide](https://github.com/phil-fetchski/n8n-nodes-zoho-cliq/blob/main/AiAgentToolDescriptions/Resources/Reaction/README.md) |
  | Reminders | [Guide](https://github.com/phil-fetchski/n8n-nodes-zoho-cliq/blob/main/AiAgentToolDescriptions/Resources/Reminders/README.md) |
  | Remote Work | [Guide](https://github.com/phil-fetchski/n8n-nodes-zoho-cliq/blob/main/AiAgentToolDescriptions/Resources/RemoteWork/README.md) |
  | Role | [Guide](https://github.com/phil-fetchski/n8n-nodes-zoho-cliq/blob/main/AiAgentToolDescriptions/Resources/Role/README.md) |
  | Team | [Guide](https://github.com/phil-fetchski/n8n-nodes-zoho-cliq/blob/main/AiAgentToolDescriptions/Resources/Team/README.md) |
  | Thread | [Guide](https://github.com/phil-fetchski/n8n-nodes-zoho-cliq/blob/main/AiAgentToolDescriptions/Resources/Thread/README.md) |
  | User | [Guide](https://github.com/phil-fetchski/n8n-nodes-zoho-cliq/blob/main/AiAgentToolDescriptions/Resources/User/README.md) |
  | User Field | [Guide](https://github.com/phil-fetchski/n8n-nodes-zoho-cliq/blob/main/AiAgentToolDescriptions/Resources/UserField/README.md) |
  | User Status | [Guide](https://github.com/phil-fetchski/n8n-nodes-zoho-cliq/blob/main/AiAgentToolDescriptions/Resources/UserStatus/README.md) |
  | Widget Map Ticker | [Guide](https://github.com/phil-fetchski/n8n-nodes-zoho-cliq/blob/main/AiAgentToolDescriptions/Resources/WidgetMapTicker/README.md) |

  The master index for all AI tool guides is available at [AiAgentToolDescriptions/README.md](https://github.com/phil-fetchski/n8n-nodes-zoho-cliq/blob/main/AiAgentToolDescriptions/README.md).

  ## Development

  For local development:

  ```bash
  pnpm install
  pnpm build
  pnpm test:unit
  pnpm lint
  ```

  Run a single test:

  ```bash
  npx jest __tests__/path/to/file.test.ts
  ```

  See [CLAUDE.md](https://github.com/phil-fetchski/n8n-nodes-zoho-cliq/blob/main/CLAUDE.md) and [AGENTS.md](https://github.com/phil-fetchski/n8n-nodes-zoho-cliq/blob/main/AGENTS.md) for architecture details and guidance for AI-assisted development.

  ## References

  - [Zoho Cliq REST API v2](https://www.zoho.com/cliq/help/restapi/v2/)
  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Zoho OAuth Protocol](https://www.zoho.com/accounts/protocol/oauth.html)

  ## Credits

  The ACK Message Builder operation uses animated spinner thumbnails powered by the following open-source projects:

  - **Iconify** -- [icon-sets.iconify.design/svg-spinners](https://icon-sets.iconify.design/svg-spinners/)
  - **svg-spinners** by n3r4zzurr0 -- [github.com/n3r4zzurr0/svg-spinners](https://github.com/n3r4zzurr0/svg-spinners) (MIT License)

  Both projects are excellent. If you find the spinner animations useful, consider starring the [svg-spinners repository](https://github.com/n3r4zzurr0/svg-spinners) on GitHub.

  ## Coding Agent Credits

  Like most developers over the last several years, I of course use AI agents to assist in writing my code. While coding agents certainly have their upsides, the hype surrounding how easy-breezy it is to vibe code -- "where you fully give in to the vibes, embrace exponentials, and forget that the code even exists" (Andrej Karpathy) -- is really not the case. Any true developer knows that embracing exponentials and forgetting the code exists will only lead you to a vibe-coded hot pile of garbage. This package took countless hours of working with, guiding, re-guiding, and correcting the coding agents that I worked with, and countless more hours of testing, debugging, and decoding Zoho Cliq's hot garbage API.

  All that being said, I would like to give credit where credit is due. This package was co-developed mostly with ChatGPT Codex 5.3 and ChatGPT 5.4, with a bit of help here and there from Claude Opus 4.6 (always my favorite). This package was painstakingly developed with love and collaboration, but NOT "vibes." I will say that I am grateful to all three of the coding agents that helped shape this code into what it is. So, a big thank you to my three co-developers: ChatGPT Codex 5.3, ChatGPT 5.4, and Claude Opus 4.6.

  You will notice that I have included strict coding agent guidelines for this repo in `CLAUDE.md` and `AGENTS.md`, and I strongly suggest that you utilize those documents -- at least as a baseline -- if you would like to fork or branch this repo and do some coding (or vibing) of your own.

  ## License

  MIT

  ---
  <p align="center">
    <img src="https://raw.githubusercontent.com/phil-fetchski/n8n-nodes-zoho-cliq/main/Assets/Repo_Footer_n8n-nodes-zoho-cliq.png" alt="Footer for README - n8n-nodes-zoho-cliq repo" width="100%">
  </p>

ai_documentation_summary:
  {"purpose":"Provides complete management of Zoho Cliq workspaces including messages, channels, teams, users, databases, events, reminders, bots, and files via the Zoho Cliq REST API v2.","capabilities":["Post, edit, delete, retrieve, and schedule messages","Manage threaded conversations","Add and remove emoji reactions","Upload and share files","Create and manage channels and memberships","List and manage direct and group chats","Retrieve bot subscribers and trigger bot calls","Manage users and teams","Handle databases and events","Set reminders"],"authentication":"OAuth2","commonUseCases":["Automated team announcements and notifications","File sharing and document management workflows","Bot integration and trigger-based actions","Channel organization and permission management","User onboarding and team setup automation"],"limitations":["Not affiliated with or endorsed by Zoho; independent community development","No official support for Zoho services or API issues from the node author"],"relatedNodes":[]}


node_type: n8n-nodes-bulkpublish.bulkPublish
package_name: n8n-nodes-bulkpublish
display_name: BulkPublish
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: azeemkafridi
author_github_url: https://github.com/azeemkafridi/
npm_package_name: n8n-nodes-bulkpublish
npm_version: 1.1.2
community_fetched_at: 2026-07-14T14:40:34.129Z
ai_summary_generated_at: 2026-05-02 08:57:17
description:
  Publish to 11 social media platforms — Facebook, Instagram, X, TikTok, YouTube, Threads, Bluesky, Pinterest, LinkedIn, Mastodon, Google Business Profile

properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "post",
      "options": [
        {
          "name": "Post",
          "value": "post"
        },
        {
          "name": "Channel",
          "value": "channel"
        },
        {
          "name": "Media",
          "value": "media"
        },
        {
          "name": "Label",
          "value": "label"
        },
        {
          "name": "Analytics",
          "value": "analytics"
        },
        {
          "name": "Schedule",
          "value": "schedule"
        },
        {
          "name": "Quota",
          "value": "quota"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a post"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a post"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List posts"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a post"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a post"
        },
        {
          "name": "Publish",
          "value": "publish",
          "action": "Publish a draft immediately"
        },
        {
          "name": "Retry",
          "value": "retry",
          "action": "Retry failed platforms"
        },
        {
          "name": "Metrics",
          "value": "metrics",
          "action": "Get post metrics"
        },
        {
          "name": "Story Publish",
          "value": "storyPublish",
          "action": "Publish a story"
        },
        {
          "name": "Bulk Operations",
          "value": "bulk",
          "action": "Bulk delete or retry posts"
        },
        {
          "name": "Queue Slot",
          "value": "queueSlot",
          "action": "Get next queue slot for a channel"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "post"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List",
          "value": "list",
          "action": "List channels"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a channel"
        },
        {
          "name": "Health Check",
          "value": "health",
          "action": "Check channel health"
        },
        {
          "name": "Get Options",
          "value": "options",
          "action": "Get platform options (boards, playlists, orgs)"
        },
        {
          "name": "Mentions Search",
          "value": "mentions",
          "action": "Search mentions for a channel"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "channel"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "upload",
      "options": [
        {
          "name": "Upload",
          "value": "upload",
          "action": "Upload a media file"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List media files"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a media file"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a media file"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "media"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a label"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List labels"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a label"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a label"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "label"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "summary",
      "options": [
        {
          "name": "Summary",
          "value": "summary",
          "action": "Get analytics summary"
        },
        {
          "name": "Engagement",
          "value": "engagement",
          "action": "Get engagement data"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "analytics"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a recurring schedule"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List recurring schedules"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a schedule"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a schedule"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "schedule"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "usage",
      "options": [
        {
          "name": "Get Usage",
          "value": "usage",
          "action": "Get quota usage"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "quota"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create a post",
      "resource": "post"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a post",
      "resource": "post"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List posts",
      "resource": "post"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a post",
      "resource": "post"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a post",
      "resource": "post"
    },
    {
      "name": "Publish",
      "value": "publish",
      "action": "Publish a draft immediately",
      "resource": "post"
    },
    {
      "name": "Retry",
      "value": "retry",
      "action": "Retry failed platforms",
      "resource": "post"
    },
    {
      "name": "Metrics",
      "value": "metrics",
      "action": "Get post metrics",
      "resource": "post"
    },
    {
      "name": "Story Publish",
      "value": "storyPublish",
      "action": "Publish a story",
      "resource": "post"
    },
    {
      "name": "Bulk Operations",
      "value": "bulk",
      "action": "Bulk delete or retry posts",
      "resource": "post"
    },
    {
      "name": "Queue Slot",
      "value": "queueSlot",
      "action": "Get next queue slot for a channel",
      "resource": "post"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List channels",
      "resource": "channel"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a channel",
      "resource": "channel"
    },
    {
      "name": "Health Check",
      "value": "health",
      "action": "Check channel health",
      "resource": "channel"
    },
    {
      "name": "Get Options",
      "value": "options",
      "action": "Get platform options (boards, playlists, orgs)",
      "resource": "channel"
    },
    {
      "name": "Mentions Search",
      "value": "mentions",
      "action": "Search mentions for a channel",
      "resource": "channel"
    },
    {
      "name": "Upload",
      "value": "upload",
      "action": "Upload a media file",
      "resource": "media"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List media files",
      "resource": "media"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a media file",
      "resource": "media"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a media file",
      "resource": "media"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a label",
      "resource": "label"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List labels",
      "resource": "label"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a label",
      "resource": "label"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a label",
      "resource": "label"
    },
    {
      "name": "Summary",
      "value": "summary",
      "action": "Get analytics summary",
      "resource": "analytics"
    },
    {
      "name": "Engagement",
      "value": "engagement",
      "action": "Get engagement data",
      "resource": "analytics"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a recurring schedule",
      "resource": "schedule"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List recurring schedules",
      "resource": "schedule"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a schedule",
      "resource": "schedule"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a schedule",
      "resource": "schedule"
    },
    {
      "name": "Get Usage",
      "value": "usage",
      "action": "Get quota usage",
      "resource": "quota"
    }
  ]

npm_readme:
  # n8n-nodes-bulkpublish

  n8n community node for [BulkPublish](https://bulkpublish.com) — publish to 11 social media platforms from your n8n workflows.

  ## Supported Platforms

  Facebook, Instagram, X (Twitter), TikTok, YouTube, Threads, Bluesky, Pinterest, Google Business Profile, LinkedIn, Mastodon

  ## Installation

  In your n8n instance:

  1. Go to **Settings > Community Nodes**
  2. Enter `n8n-nodes-bulkpublish`
  3. Click Install

  Or via CLI:

  ```bash
  npm install n8n-nodes-bulkpublish
  ```

  ## Credentials

  1. Sign up at [app.bulkpublish.com](https://app.bulkpublish.com/register)
  2. Go to **Settings > Developer** and create an API key
  3. In n8n, add a **BulkPublish API** credential with your key

  ## Operations

  ### Post
  - **Create** — Create a draft or scheduled post to one or more channels (supports all post types: reels, stories, carousels, threads via `postTypeOverrides`)
  - **Get** — Get a post with platform statuses
  - **List** — List posts with filters (status, search, date)
  - **Update** — Update a draft or scheduled post
  - **Delete** — Delete a post
  - **Publish** — Publish a draft immediately
  - **Retry** — Retry failed platforms
  - **Metrics** — Get engagement metrics (impressions, likes, comments, shares)
  - **Story Publish** — Publish as a story to Facebook or Instagram
  - **Bulk Operations** — Bulk delete or retry multiple posts
  - **Queue Slot** — Get the next optimal time slot for a channel

  ### Channel
  - **List** — List all connected social media channels
  - **Get** — Get a channel by ID
  - **Health Check** — Check channel token health
  - **Get Options** — Get platform-specific options (Pinterest boards, YouTube playlists)
  - **Mentions Search** — Search users for @mention (X, Bluesky)

  ### Media
  - **Upload** — Upload an image or video file
  - **Get** — Get a media file by ID
  - **List** — List uploaded media files
  - **Delete** — Delete a media file

  ### Label
  - **Create** — Create a label
  - **List** — List all labels
  - **Update** — Update a label name or color
  - **Delete** — Delete a label

  ### Analytics
  - **Summary** — Get analytics summary for a date range
  - **Engagement** — Get engagement data grouped by time period

  ### Schedule
  - **List** — List recurring schedules
  - **Create** — Create a recurring schedule with cron expression
  - **Update** — Update a schedule
  - **Delete** — Delete a schedule

  ### Quota
  - **Usage** — Get current plan limits and usage

  ## Example Workflows

  ### Auto-post RSS feed items
  1. **RSS Feed Trigger** → reads new items
  2. **BulkPublish** → creates a scheduled post for each item

  ### Post on GitHub release
  1. **GitHub Trigger** → new release event
  2. **BulkPublish** → creates and publishes announcement to all channels

  ## Links

  - [API Docs](https://app.bulkpublish.com/docs)
  - [SDK & Examples](https://github.com/azeemkafridi/bulkpublish-api)
  - [npm](https://www.npmjs.com/package/bulkpublish)
  - [PyPI](https://pypi.org/project/bulkpublish/)

  ## License

  MIT

ai_documentation_summary:
  {"purpose":"A community node for n8n that enables publishing content to 11 social media platforms (including Facebook, Instagram, X, TikTok, LinkedIn, etc.) directly from workflows.","capabilities":["Create, update, delete, and publish posts across multiple platforms","Schedule posts with support for drafts and specific post types (reels, stories, carousels)","Upload and manage media files (images and videos)","Retrieve engagement metrics and analytics summaries","Manage connected channels and verify token health","Create and manage recurring schedules using cron expressions","Perform bulk operations like deleting or retrying multiple posts","Search for users for @mentions on X and Bluesky","Get optimal posting time slots for specific channels"],"authentication":"API key required","commonUseCases":["Automatically posting RSS feed items to social media","Publishing announcements to all channels upon GitHub releases","Scheduling recurring content across multiple platforms","Centralized media management for social campaigns"],"limitations":["Requires manual setup of API credentials via the BulkPublish dashboard","Limited to the 11 supported platforms listed in the node description"],"relatedNodes":[]}


node_type: n8n-nodes-posta.posta
package_name: n8n-nodes-posta
display_name: Posta
description: Manage social media posts, media, accounts, analytics, and webhooks via the Posta API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: stgime
author_github_url: https://github.com/STGime/
npm_package_name: n8n-nodes-posta
npm_version: 0.2.12
community_fetched_at: 2026-07-14T14:40:34.130Z
ai_summary_generated_at: 2026-05-02 08:57:17
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "post",
      "options": [
        {
          "name": "Post",
          "value": "post"
        },
        {
          "name": "Media",
          "value": "media"
        },
        {
          "name": "Social Account",
          "value": "socialAccount"
        },
        {
          "name": "Analytics",
          "value": "analytics"
        },
        {
          "name": "Platform",
          "value": "platform"
        },
        {
          "name": "User",
          "value": "user"
        },
        {
          "name": "Webhook",
          "value": "webhook"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a post",
          "description": "Create a new post"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a post",
          "description": "Update an existing post"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a post",
          "description": "Delete a post"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a post",
          "description": "Get a post by ID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many posts",
          "description": "Get many posts"
        },
        {
          "name": "Schedule",
          "value": "schedule",
          "action": "Schedule a post",
          "description": "Schedule a post for future publishing"
        },
        {
          "name": "Publish Now",
          "value": "publish",
          "action": "Publish a post",
          "description": "Publish a post immediately"
        },
        {
          "name": "Cancel",
          "value": "cancel",
          "action": "Cancel a scheduled post",
          "description": "Cancel a scheduled post"
        },
        {
          "name": "Get Calendar",
          "value": "getCalendar",
          "action": "Get post calendar",
          "description": "Get calendar view of posts"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "post"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "upload",
      "options": [
        {
          "name": "Upload",
          "value": "upload",
          "action": "Upload media",
          "description": "Upload a media file (3-step signed URL flow)"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get media",
          "description": "Get a media item by ID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many media items",
          "description": "Get many media items"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete media",
          "description": "Delete a media item"
        },
        {
          "name": "Generate Carousel PDF",
          "value": "generateCarouselPdf",
          "action": "Generate carousel PDF",
          "description": "Generate a PDF carousel from multiple images"
        },
        {
          "name": "Generate Text Carousel PDF",
          "value": "generateTextCarouselPdf",
          "action": "Generate text carousel PDF",
          "description": "Generate a PDF carousel with text composited over background images"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "media"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many social accounts",
          "description": "List all connected social accounts"
        },
        {
          "name": "Get Pinterest Boards",
          "value": "getPinterestBoards",
          "action": "Get Pinterest boards",
          "description": "Get Pinterest boards for an account"
        },
        {
          "name": "Get TikTok Creator Info",
          "value": "getTikTokCreatorInfo",
          "action": "Get TikTok creator info",
          "description": "Get TikTok creator info for an account"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "socialAccount"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "overview",
      "options": [
        {
          "name": "Get Overview",
          "value": "overview",
          "action": "Get analytics overview",
          "description": "Get analytics overview"
        },
        {
          "name": "Get Posts",
          "value": "posts",
          "action": "Get post analytics",
          "description": "Get analytics for all posts"
        },
        {
          "name": "Get Post Detail",
          "value": "postDetail",
          "action": "Get post detail analytics",
          "description": "Get detailed analytics for a post"
        },
        {
          "name": "Get Trends",
          "value": "trends",
          "action": "Get analytics trends",
          "description": "Get trend data for charts"
        },
        {
          "name": "Get Best Times",
          "value": "bestTimes",
          "action": "Get best posting times",
          "description": "Get best posting times heatmap"
        },
        {
          "name": "Get Content Types",
          "value": "contentTypes",
          "action": "Get content type analytics",
          "description": "Get content type performance"
        },
        {
          "name": "Get Hashtags",
          "value": "hashtags",
          "action": "Get hashtag analytics",
          "description": "Get hashtag performance"
        },
        {
          "name": "Compare Posts",
          "value": "compare",
          "action": "Compare post analytics",
          "description": "Compare 2-4 posts side by side"
        },
        {
          "name": "Get Benchmarks",
          "value": "benchmarks",
          "action": "Get benchmarks",
          "description": "Get engagement benchmarks"
        },
        {
          "name": "Get Capabilities",
          "value": "capabilities",
          "action": "Get analytics capabilities",
          "description": "Get analytics capabilities for plan"
        },
        {
          "name": "Refresh Post",
          "value": "refreshPost",
          "action": "Refresh post analytics",
          "description": "Refresh analytics for a single post"
        },
        {
          "name": "Refresh All",
          "value": "refreshAll",
          "action": "Refresh all analytics",
          "description": "Refresh all analytics"
        },
        {
          "name": "Export CSV",
          "value": "exportCsv",
          "action": "Export analytics CSV",
          "description": "Export analytics as CSV"
        },
        {
          "name": "Export PDF",
          "value": "exportPdf",
          "action": "Export analytics PDF",
          "description": "Export analytics as PDF"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "analytics"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many platforms",
          "description": "List all supported platforms"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a platform",
          "description": "Get a specific platform"
        },
        {
          "name": "Get Specifications",
          "value": "getSpecifications",
          "action": "Get platform specifications",
          "description": "Get full platform specifications"
        },
        {
          "name": "Get Aspect Ratios",
          "value": "getAspectRatios",
          "action": "Get aspect ratios",
          "description": "Get aspect ratio reference"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "platform"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getPlan",
      "options": [
        {
          "name": "Get Plan",
          "value": "getPlan",
          "action": "Get user plan",
          "description": "Get current plan info and usage"
        },
        {
          "name": "Get Profile",
          "value": "getProfile",
          "action": "Get user profile",
          "description": "Get user profile"
        },
        {
          "name": "Update Profile",
          "value": "updateProfile",
          "action": "Update user profile",
          "description": "Update user profile"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a webhook endpoint",
          "description": "Create a webhook endpoint"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many webhook endpoints",
          "description": "List all webhook endpoints"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a webhook endpoint",
          "description": "Get a webhook endpoint"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a webhook endpoint",
          "description": "Update a webhook endpoint"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a webhook endpoint",
          "description": "Delete a webhook endpoint"
        },
        {
          "name": "Test",
          "value": "test",
          "action": "Test a webhook endpoint",
          "description": "Send a test event to a webhook"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "webhook"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create a post",
      "description": "Create a new post",
      "resource": "post"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a post",
      "description": "Update an existing post",
      "resource": "post"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a post",
      "description": "Delete a post",
      "resource": "post"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a post",
      "description": "Get a post by ID",
      "resource": "post"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many posts",
      "description": "Get many posts",
      "resource": "post"
    },
    {
      "name": "Schedule",
      "value": "schedule",
      "action": "Schedule a post",
      "description": "Schedule a post for future publishing",
      "resource": "post"
    },
    {
      "name": "Publish Now",
      "value": "publish",
      "action": "Publish a post",
      "description": "Publish a post immediately",
      "resource": "post"
    },
    {
      "name": "Cancel",
      "value": "cancel",
      "action": "Cancel a scheduled post",
      "description": "Cancel a scheduled post",
      "resource": "post"
    },
    {
      "name": "Get Calendar",
      "value": "getCalendar",
      "action": "Get post calendar",
      "description": "Get calendar view of posts",
      "resource": "post"
    },
    {
      "name": "Upload",
      "value": "upload",
      "action": "Upload media",
      "description": "Upload a media file (3-step signed URL flow)",
      "resource": "media"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get media",
      "description": "Get a media item by ID",
      "resource": "media"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many media items",
      "description": "Get many media items",
      "resource": "media"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete media",
      "description": "Delete a media item",
      "resource": "media"
    },
    {
      "name": "Generate Carousel PDF",
      "value": "generateCarouselPdf",
      "action": "Generate carousel PDF",
      "description": "Generate a PDF carousel from multiple images",
      "resource": "media"
    },
    {
      "name": "Generate Text Carousel PDF",
      "value": "generateTextCarouselPdf",
      "action": "Generate text carousel PDF",
      "description": "Generate a PDF carousel with text composited over background images",
      "resource": "media"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many social accounts",
      "description": "List all connected social accounts",
      "resource": "socialAccount"
    },
    {
      "name": "Get Pinterest Boards",
      "value": "getPinterestBoards",
      "action": "Get Pinterest boards",
      "description": "Get Pinterest boards for an account",
      "resource": "socialAccount"
    },
    {
      "name": "Get TikTok Creator Info",
      "value": "getTikTokCreatorInfo",
      "action": "Get TikTok creator info",
      "description": "Get TikTok creator info for an account",
      "resource": "socialAccount"
    },
    {
      "name": "Get Overview",
      "value": "overview",
      "action": "Get analytics overview",
      "description": "Get analytics overview",
      "resource": "analytics"
    },
    {
      "name": "Get Posts",
      "value": "posts",
      "action": "Get post analytics",
      "description": "Get analytics for all posts",
      "resource": "analytics"
    },
    {
      "name": "Get Post Detail",
      "value": "postDetail",
      "action": "Get post detail analytics",
      "description": "Get detailed analytics for a post",
      "resource": "analytics"
    },
    {
      "name": "Get Trends",
      "value": "trends",
      "action": "Get analytics trends",
      "description": "Get trend data for charts",
      "resource": "analytics"
    },
    {
      "name": "Get Best Times",
      "value": "bestTimes",
      "action": "Get best posting times",
      "description": "Get best posting times heatmap",
      "resource": "analytics"
    },
    {
      "name": "Get Content Types",
      "value": "contentTypes",
      "action": "Get content type analytics",
      "description": "Get content type performance",
      "resource": "analytics"
    },
    {
      "name": "Get Hashtags",
      "value": "hashtags",
      "action": "Get hashtag analytics",
      "description": "Get hashtag performance",
      "resource": "analytics"
    },
    {
      "name": "Compare Posts",
      "value": "compare",
      "action": "Compare post analytics",
      "description": "Compare 2-4 posts side by side",
      "resource": "analytics"
    },
    {
      "name": "Get Benchmarks",
      "value": "benchmarks",
      "action": "Get benchmarks",
      "description": "Get engagement benchmarks",
      "resource": "analytics"
    },
    {
      "name": "Get Capabilities",
      "value": "capabilities",
      "action": "Get analytics capabilities",
      "description": "Get analytics capabilities for plan",
      "resource": "analytics"
    },
    {
      "name": "Refresh Post",
      "value": "refreshPost",
      "action": "Refresh post analytics",
      "description": "Refresh analytics for a single post",
      "resource": "analytics"
    },
    {
      "name": "Refresh All",
      "value": "refreshAll",
      "action": "Refresh all analytics",
      "description": "Refresh all analytics",
      "resource": "analytics"
    },
    {
      "name": "Export CSV",
      "value": "exportCsv",
      "action": "Export analytics CSV",
      "description": "Export analytics as CSV",
      "resource": "analytics"
    },
    {
      "name": "Export PDF",
      "value": "exportPdf",
      "action": "Export analytics PDF",
      "description": "Export analytics as PDF",
      "resource": "analytics"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many platforms",
      "description": "List all supported platforms",
      "resource": "platform"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a platform",
      "description": "Get a specific platform",
      "resource": "platform"
    },
    {
      "name": "Get Specifications",
      "value": "getSpecifications",
      "action": "Get platform specifications",
      "description": "Get full platform specifications",
      "resource": "platform"
    },
    {
      "name": "Get Aspect Ratios",
      "value": "getAspectRatios",
      "action": "Get aspect ratios",
      "description": "Get aspect ratio reference",
      "resource": "platform"
    },
    {
      "name": "Get Plan",
      "value": "getPlan",
      "action": "Get user plan",
      "description": "Get current plan info and usage",
      "resource": "user"
    },
    {
      "name": "Get Profile",
      "value": "getProfile",
      "action": "Get user profile",
      "description": "Get user profile",
      "resource": "user"
    },
    {
      "name": "Update Profile",
      "value": "updateProfile",
      "action": "Update user profile",
      "description": "Update user profile",
      "resource": "user"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a webhook endpoint",
      "description": "Create a webhook endpoint",
      "resource": "webhook"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many webhook endpoints",
      "description": "List all webhook endpoints",
      "resource": "webhook"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a webhook endpoint",
      "description": "Get a webhook endpoint",
      "resource": "webhook"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a webhook endpoint",
      "description": "Update a webhook endpoint",
      "resource": "webhook"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a webhook endpoint",
      "description": "Delete a webhook endpoint",
      "resource": "webhook"
    },
    {
      "name": "Test",
      "value": "test",
      "action": "Test a webhook endpoint",
      "description": "Send a test event to a webhook",
      "resource": "webhook"
    }
  ]

npm_readme:
  # n8n-nodes-posta

  This is an [n8n](https://n8n.io/) community node for the [Posta](https://getposta.app) social media management API.

  Manage posts, media, social accounts, analytics, and webhooks across Instagram, TikTok, Facebook, X/Twitter, LinkedIn, YouTube, Pinterest, Threads, and Bluesky — all from your n8n workflows.

  ## Installation

  In your n8n instance, go to **Settings → Community Nodes** and install:

  ```
  n8n-nodes-posta
  ```

  ## Setting Up Credentials

  1. Log in to [Posta](https://getposta.app) → go to **Settings → API Tokens** → click **Generate Token** → copy the token (starts with `posta_...`)
  2. In your n8n editor, open any **Posta** node and click the **Credential** dropdown → **Create New Credential**
  3. Paste your token into the **API Token** field
  4. Leave **Base URL** as `https://api.getposta.app/v1`
  5. Click **Test** to verify the connection

  Full API reference: https://api.getposta.app/docs

  ## Resources & Operations

  | Resource | Operations |
  |----------|-----------|
  | **Post** | Create, Update, Delete, Get, Get Many, Schedule, Publish Now, Cancel, Get Calendar |
  | **Media** | Upload (3-step signed URL), Get, Get Many, Delete, Generate Carousel PDF, Generate Text Carousel PDF |
  | **Social Account** | Get Many, Get Pinterest Boards, Get TikTok Creator Info |
  | **Analytics** | Overview, Posts, Post Detail, Trends, Best Times, Content Types, Hashtags, Compare Posts, Benchmarks, Capabilities, Refresh Post, Refresh All, Export CSV, Export PDF |
  | **Platform** | Get Many, Get, Get Specifications, Get Aspect Ratios (public, no auth) |
  | **User** | Get Plan, Get Profile, Update Profile |
  | **Webhook** | Create, Get Many, Get, Update, Delete, Test |

  ### Platform-Specific Configurations

  When creating or updating posts, configure per-platform settings:

  - **TikTok**: Privacy level (required), comments, duet, stitch, branded content
  - **Pinterest**: Board (dynamic dropdown), link, alt text
  - **YouTube**: Title, description, tags, privacy, shorts, made for kids
  - **Instagram/Facebook**: Placement (feed/reels/story)
  - **X/Twitter**: Reply settings, quote tweet, alt text
  - **LinkedIn**: Visibility, post type, document title
  - **Bluesky**: Alt text, embed URL, languages, content labels
  - **Threads**: Location (timeline/reels)

  ### Media Upload

  The upload operation uses a 3-step signed URL flow:
  1. Request upload URL from Posta
  2. PUT binary data directly to cloud storage
  3. Confirm upload to trigger processing

  Connect any n8n node that produces binary data (HTTP Request, Read File, etc.) upstream.

  ## Ready-to-import workflow templates

  Don't want to build from scratch? Import a complete, documented workflow from the **[Posta workflow gallery](https://getposta.app/workflows)** (source on **[GitHub](https://github.com/STGime/posta-n8n-workflows)**) — download the JSON, or in n8n use **⋯ menu → Import from URL** with the links below:

  | Workflow | What it does | Import URL | Demo |
  |----------|--------------|------------|------|
  | [Share new blog posts to social media](https://getposta.app/workflows/blog-to-social-media) | RSS → scheduled post with image, across your accounts | `https://getposta.app/assets/workflows/blog-to-social-media.json` | [▶ Watch](https://youtu.be/Ra9x57asFnk) |
  | [Turn a blog post into a LinkedIn carousel](https://getposta.app/workflows/blog-to-linkedin-carousel) | Article → AI 5-slide carousel PDF (DeepSeek + fal.ai) | `https://getposta.app/assets/workflows/blog-to-linkedin-carousel.json` | [▶ Watch](https://youtu.be/CC-_i6LanLg) |
  | [Run a 5-day product launch campaign](https://getposta.app/workflows/product-launch-campaign) | Product → per-platform captions, scheduled over 5 days | `https://getposta.app/assets/workflows/product-launch-campaign.json` | [▶ Watch](https://youtu.be/ORQZK_oApIQ) |
  | [Promote your latest YouTube video](https://getposta.app/workflows/youtube-to-social-media) | YouTube feed → AI promo drafts on every platform | `https://getposta.app/assets/workflows/youtube-to-social-media.json` | [▶ Watch](https://youtu.be/tTWaYb71YyA) |

  Each template includes step-by-step docs and the credentials you'll need. The hand-built examples below explain the individual building blocks.

  ## Example Workflows

  ### 1. Check Connected Social Accounts

  See which social accounts (Instagram, TikTok, etc.) are connected to your Posta account.

  ```
  Manual Trigger → Posta (Social Account: Get Many)
  ```

  **Setup:**
  1. Add a **Manual Trigger** node
  2. Add a **Posta** node, set Resource = **Social Account**, Operation = **Get Many**
  3. Execute — the output shows each connected account with its `id`, `platform`, and `username`

  Use the account `id` values from this output whenever a post requires **Social Account IDs**.

  ---

  ### 2. Create and Publish a Post Directly

  Create a text post and publish it immediately to one or more channels.

  ```
  Manual Trigger → Posta (Post: Create) → Posta (Post: Publish Now)
  ```

  **Setup:**
  1. Add a **Manual Trigger** node
  2. Add a **Posta** node:
     - Resource = **Post**, Operation = **Create**
     - **Social Account IDs** = the account ID(s) from workflow 1 (comma-separated for multiple)
     - **Caption** = your post text
     - Under **Additional Fields**, set **Is Draft** = `false`
  3. Add another **Posta** node:
     - Resource = **Post**, Operation = **Publish Now**
     - **Post ID** = `{{ $json.id }}` (from the previous node's output)
  4. Execute to publish immediately

  ---

  ### 3. Create a Post with an Image

  Upload media first, then attach it to a post.

  ```
  HTTP Request (download image) → Posta (Media: Upload) → Posta (Post: Create) → Posta (Post: Publish Now)
  ```

  **Setup:**
  1. **HTTP Request** node: set the URL to your image, response format = **File**
  2. **Posta** node: Resource = **Media**, Operation = **Upload** — this handles the 3-step signed URL upload automatically
  3. **Posta** node: Resource = **Post**, Operation = **Create**
     - **Social Account IDs** = your account ID(s)
     - **Caption** = your post text
     - Under **Additional Fields**, set **Media IDs** = `{{ $json.id }}` (the uploaded media ID)
  4. **Posta** node: Resource = **Post**, Operation = **Publish Now**, **Post ID** = `{{ $json.id }}`

  ---

  ### 4. Schedule a Post for Later

  Create a draft post and schedule it for a future date/time.

  ```
  Manual Trigger → Posta (Post: Create) → Posta (Post: Schedule)
  ```

  **Setup:**
  1. Add a **Manual Trigger** node
  2. **Posta** node: Resource = **Post**, Operation = **Create**
     - **Social Account IDs** = your account ID(s)
     - **Caption** = your post text
  3. **Posta** node: Resource = **Post**, Operation = **Schedule**
     - **Post ID** = `{{ $json.id }}`
     - **Scheduled At** = your desired publish time (ISO 8601, e.g. `2026-03-20T14:00:00Z`)

  ---

  ### 5. Daily Auto-Post with AI-Generated Content

  Automatically generate and schedule a daily post using OpenAI.

  ```
  Schedule Trigger → OpenAI (generate caption) → HTTP Request (generate image) → Posta (Media: Upload) → Posta (Post: Create) → Posta (Post: Schedule)
  ```

  ---

  ### 6. Cross-Post to Multiple Platforms with Platform-Specific Settings

  Post the same content across platforms with tailored settings per channel.

  ```
  Manual Trigger → Posta (Post: Create with Platform Configurations)
  ```

  **Setup:**
  1. In the **Posta** Create Post node, provide multiple **Social Account IDs** (comma-separated)
  2. Expand **Platform Configurations** to set per-platform options:
     - **Instagram**: Placement = `reels`
     - **TikTok**: Privacy Level = `Public`, Allow Comments = `true`
     - **YouTube**: Title, Description, Privacy = `public`
     - **LinkedIn**: Visibility = `Public`

  ---

  ### 7. Weekly Analytics Report

  Pull analytics and export to CSV on a schedule.

  ```
  Schedule Trigger → Posta (Analytics: Overview) → Posta (Analytics: Export CSV) → Gmail (Send Attachment)
  ```

  ---

  ### 8. Monitor Post Failures via Webhooks

  Set up a webhook to get notified when posts fail.

  ```
  Posta (Webhook: Create) → [one-time setup]

  n8n Webhook Trigger → IF (status = "failed") → Slack (Send Message)
  ```

  ---

  ### 9. Generate a LinkedIn Carousel from an Article

  Turn an article into a text-over-background LinkedIn carousel PDF.

  ```
  HTTP/RSS (article) → LLM (write N slides) → fal.ai (N backgrounds) → Posta (Media: Upload, per background)
    → Posta (Media: Generate Text Carousel PDF) → Posta (Post: Create on LinkedIn)
  ```

  **Setup:**
  1. Generate slide copy with an LLM and a background image per slide; upload each background via **Media → Upload** to get media IDs.
  2. **Posta** node: Resource = **Media**, Operation = **Generate Text Carousel PDF**
     - **Slides** = a JSON array (2–20), e.g. `{{ $json.slides }}` where each item is `{ "media_id": "<bg id>", "title": "...", "body": "..." }`
     - **Logo Media ID** = optional; the media ID of an uploaded logo image shown in the bottom-right of every slide
     - **Title** = optional document title
  3. **Posta** node: Resource = **Post**, Operation = **Create**
     - **Social Account IDs** = your LinkedIn account ID
     - Under **Additional Fields**, set **Media IDs** = `{{ $json.media_id }}` (the generated PDF)

  ## License

  MIT

ai_documentation_summary:
  {"purpose":"This n8n community node integrates with the Posta API to manage social media posts, media assets, accounts, analytics, and webhooks across multiple platforms including Instagram, TikTok, Facebook, X, LinkedIn, YouTube, Pinterest, Threads, and Bluesky.","capabilities":["Create, update, delete, and retrieve posts","Schedule posts for future publication or publish immediately","Upload media using a 3-step signed URL flow","Generate carousel PDFs from media","Retrieve analytics including trends, best times, and benchmarks","Export analytics data as CSV or PDF","Manage social media account connections","Configure platform-specific settings (e.g., TikTok privacy, YouTube tags, LinkedIn visibility)","Manage webhooks","Retrieve user profile and plan information"],"authentication":"API Token required","commonUseCases":["Automated cross-platform social media posting","Scheduling daily or weekly content campaigns","Generating analytics reports for performance tracking","Uploading and managing media assets programmatically","Publishing content with platform-specific optimizations"],"limitations":["Requires a valid Posta API token generated from the Posta dashboard","Media uploads require a 3-step signed URL process rather than direct file passing","Platform-specific configurations are limited to the options exposed in the node's Additional Fields"],"relatedNodes":["n8n-nodes-openai","n8n-nodes-httprequest","n8n-nodes-schedule"]}


node_type: n8n-nodes-babelbeez.babelbeezTrigger
package_name: n8n-nodes-babelbeez
display_name: Babelbeez Trigger
description: Starts a workflow when a Babelbeez voice agent call is completed
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: olivercheung
author_github_url: https://github.com/fastfret888/
npm_package_name: n8n-nodes-babelbeez
npm_version: 0.1.0
community_fetched_at: 2026-07-14T14:40:34.131Z
ai_summary_generated_at: 2026-05-02 08:57:17
npm_readme:
  # n8n-nodes-babelbeez

  n8n community nodes for Babelbeez voice agent automation.

  Babelbeez helps teams create and embed OpenAI-powered real-time voice agents on their websites. This package provides a native n8n trigger for connecting Babelbeez completed-call events to n8n workflows.

  > This repository is public. Do not commit `.env` files, real API keys, webhook signing secrets, n8n credential exports, customer data, or locally generated workflow credentials.

  ## Development

  This project uses nvm for repo-local Node.js isolation.

  ```bash
  nvm install
  nvm use
  npm install
  ```

  The package is scaffolded with the official `@n8n/node` tooling.

  Common commands:

  ```bash
  npm run lint
  npm run build
  npm run dev
  ```

  ## Node

  - **Babelbeez Trigger**: receive signed `call_completed` webhook events from Babelbeez.

  ## Credentials

  Create a **Babelbeez API** credential in n8n with:

  - **API Key**: your Babelbeez API/embed key from the Babelbeez dashboard.

  The credential test calls `GET /api/v1/integrations/n8n/me` and sends the key in the `X-API-Key` header.

  ## Babelbeez Trigger Node

  Use **Babelbeez Trigger** to start an n8n workflow when a selected Babelbeez voice agent finishes a call.

  Setup:

  1. Add the **Babelbeez Trigger** node to a workflow.
  2. Select your **Babelbeez API** credential.
  3. Choose a **Voice Agent Name or ID**.
  4. To test the trigger, click **Execute Step** in n8n, then complete a test call in the Babelbeez preview for the selected voice agent.
  5. Use the received completed-call payload to configure downstream workflow nodes.
  6. Activate the workflow when you are ready to receive production completed-call events.

  During **Execute Step**, n8n creates a temporary test webhook URL. The trigger registers that URL with Babelbeez through `POST /api/v1/integrations/n8n/subscribe`, so the next completed call for the selected voice agent can appear directly in the n8n editor.

  On workflow activation, the trigger registers the production n8n webhook URL with Babelbeez. On workflow deactivation, it unsubscribes through `POST /api/v1/integrations/n8n/unsubscribe`.

  The node emits one item for each verified `call_completed` payload.

  ## Webhook Signature Verification

  Babelbeez signs trigger deliveries with HMAC-SHA256. The trigger node verifies every incoming webhook before emitting workflow data.

  Required headers:

  - `X-Babelbeez-Event: call_completed`
  - `X-Babelbeez-Timestamp`
  - `X-Babelbeez-Signature: v1=<hex-hmac>`

  Signature payload:

  ```text
  {timestamp}.{rawBody}
  ```

  Invalid signatures are rejected and no workflow item is emitted. The per-subscription signing secret is created by Babelbeez during trigger activation and stored in n8n workflow static data.

  ## Security Notes

  The trigger node will enforce strict HMAC verification before emitting workflow items. Test fixtures must use fake deterministic secrets only. Never commit real subscription secrets, API keys, `.env` files, n8n credential exports, or customer payloads.

  ## Publishing

  This package is intended to be published to npm as `n8n-nodes-babelbeez` from GitHub Actions with npm provenance. Before the first release, configure npm Trusted Publishing for:

  - Repository owner: `fastfret888`
  - Repository name: `n8n-nodes-babelbeez`
  - Workflow filename: `publish.yml`

ai_documentation_summary:
  {"purpose":"Starts an n8n workflow when a Babelbeez voice agent call is completed by receiving and verifying signed webhook events.","capabilities":["Receives signed call_completed webhook events from Babelbeez","Verifies HMAC-SHA256 webhook signatures using stored secrets","Registers test and production webhook URLs with Babelbeez","Automatically unsubscribes from webhooks when workflow is deactivated","Emits one item per verified completed call payload"],"authentication":"API key required","commonUseCases":["Trigger post-call actions like CRM updates or ticket creation","Analyze call transcripts or metadata for insights","Send follow-up emails or notifications after voice interactions"],"limitations":["Requires manual subscription management via API endpoints for test and production environments","Dependent on Babelbeez providing signed webhook events with specific headers"],"relatedNodes":[]}


node_type: n8n-nodes-leadgrid.leadGrid
package_name: n8n-nodes-leadgrid
display_name: LeadGrid
description: Create and manage dossiers (candidates and sales leads) in LeadGrid
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: triadagency
author_github_url: https://github.com/triadgit/
npm_package_name: n8n-nodes-leadgrid
npm_version: 0.1.7
community_fetched_at: 2026-07-14T14:40:34.132Z
ai_summary_generated_at: 2026-05-02 08:57:17
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "dossier",
      "options": [
        {
          "name": "Dossier",
          "value": "dossier"
        },
        {
          "name": "Note",
          "value": "note"
        },
        {
          "name": "Flow",
          "value": "flow"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Archive",
          "value": "archive",
          "action": "Archive a dossier",
          "description": "Soft-delete: sets status to archived"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create a dossier",
          "description": "Create a sales lead or recruitment candidate. Optionally attach a PDF CV in the same call."
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a dossier"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many dossiers"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a dossier"
        },
        {
          "name": "Upload CV",
          "value": "uploadCv",
          "action": "Upload a CV to a dossier",
          "description": "Attach a PDF CV to an existing dossier"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "dossier"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "add",
      "options": [
        {
          "name": "Add",
          "value": "add",
          "action": "Add a note to a dossier"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many notes for a dossier"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "note"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many flows"
        },
        {
          "name": "Get Stages",
          "value": "getStages",
          "action": "Get the stages of a flow"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "flow"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Archive",
      "value": "archive",
      "action": "Archive a dossier",
      "description": "Soft-delete: sets status to archived",
      "resource": "dossier"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a dossier",
      "description": "Create a sales lead or recruitment candidate. Optionally attach a PDF CV in the same call.",
      "resource": "dossier"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a dossier",
      "resource": "dossier"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many dossiers",
      "resource": "dossier"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a dossier",
      "resource": "dossier"
    },
    {
      "name": "Upload CV",
      "value": "uploadCv",
      "action": "Upload a CV to a dossier",
      "description": "Attach a PDF CV to an existing dossier",
      "resource": "dossier"
    },
    {
      "name": "Add",
      "value": "add",
      "action": "Add a note to a dossier",
      "resource": "note"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many notes for a dossier",
      "resource": "note"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many flows",
      "resource": "flow"
    },
    {
      "name": "Get Stages",
      "value": "getStages",
      "action": "Get the stages of a flow",
      "resource": "flow"
    }
  ]

npm_readme:
  # n8n-nodes-leadgrid

  An n8n community node for [LeadGrid.io](https://leadgrid.io) — one API for two pipelines (sales leads and recruitment candidates in the same grid).

  ## Installation

  ### n8n Cloud

  1. Settings → Community Nodes → Install
  2. Enter `n8n-nodes-leadgrid`
  3. Confirm and reload

  ### Self-hosted

  ```bash
  npm install n8n-nodes-leadgrid
  ```

  Or, in your n8n instance: Settings → Community Nodes → Install → `n8n-nodes-leadgrid`.

  ## Credentials

  Create a LeadGrid API key under **Settings → API** in your LeadGrid workspace (Growth plan required), then in n8n:

  1. Credentials → New → LeadGrid API
  2. Paste your `lg_live_…` key
  3. Leave Base URL as `https://leadgrid.io` unless you're on self-hosted or staging

  The credential is tested against `GET /api/v1/flows` when saved. A 200 means you're good; 401 means the key is wrong; 403 means your workspace isn't on the Growth plan.

  ## Resources and operations

  ### Dossier (sales lead or recruitment candidate)

  | Operation | HTTP | Notes |
  |---|---|---|
  | Create | `POST /dossiers` | Optionally attaches a PDF CV in the same call; if the upload fails, the dossier is rolled back. |
  | Get | `GET /dossiers/{id}` | |
  | Get Many | `GET /dossiers` | Filter by type / status / stage_id, with pagination. |
  | Update | `PATCH /dossiers/{id}` | Move stages, change status, update contact fields. |
  | Archive | `DELETE /dossiers/{id}` | Soft-delete (sets status to archived). |
  | Upload CV | `POST /dossiers/{id}/cv` | Attach a PDF to an existing dossier. |

  ### Note

  | Operation | HTTP |
  |---|---|
  | Add | `POST /dossiers/{id}/notes` |
  | Get Many | `GET /dossiers/{id}/notes` |

  ### Flow

  | Operation | HTTP |
  |---|---|
  | Get Many | `GET /flows` |
  | Get Stages | `GET /flows/{id}/stages` |

  ## Common patterns

  **Intake form → candidate with CV**

  Webhook → LeadGrid (Create dossier, type=candidate, Attach CV=true). One atomic call, dossier + CV together.

  **CV parsing pipeline → move stage**

  When your parser finishes, LeadGrid (Update dossier) with `current_stage_id` set. This fires a `dossier.stage_changed` webhook event back to any other subscriber.

  **Sync to your warehouse**

  Schedule Trigger → LeadGrid (Get Many dossiers, type=sales, status=won) → Postgres / BigQuery insert.

  ## License

  MIT — see [LICENSE](./LICENSE).

ai_documentation_summary:
  {"purpose":"This n8n community node enables the creation and management of dossiers (sales leads and recruitment candidates) within the LeadGrid.io platform, unifying two pipelines into a single grid system.","capabilities":["Create new dossiers (sales leads or candidates)","Attach PDF CVs during dossier creation","Retrieve single dossier by ID","Retrieve multiple dossiers with filtering by type, status, and stage","Update dossier details and move items between stages","Archive dossiers (soft-delete)","Upload PDF CVs to existing dossiers","Add and retrieve notes for specific dossiers","Retrieve available flows and their stages"],"authentication":"API key required","commonUseCases":["Intake forms to automatically create candidate dossiers with attached CVs","Syncing won sales leads to external data warehouses like Postgres or BigQuery","Automating stage progression based on external parsing pipelines","Managing recruitment candidates and sales leads in a unified system"],"limitations":["Requires a LeadGrid Growth plan to obtain an API key","Base URL must be set to the live domain unless using self-hosted or staging environments","CV upload failures during creation result in a full dossier rollback"],"relatedNodes":[]}


node_type: n8n-nodes-notificacoes-inteligentes.NI
package_name: n8n-nodes-notificacoes-inteligentes
display_name: NI
description: Your Ni Integration
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: notificacoes-inteligentes
author_github_url: https://github.com/GPMP/n8n-node-notificacoes-inteligentes.git
npm_package_name: n8n-nodes-notificacoes-inteligentes
npm_version: 0.4.9
community_fetched_at: 2026-07-14T14:40:34.133Z
ai_summary_generated_at: 2026-05-02 08:57:17
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "integration",
      "options": [
        {
          "name": "Integration",
          "value": "integration"
        },
        {
          "name": "Lead",
          "value": "leads"
        }
      ],
      "displayName": "Resource",
      "placeholder": "Choose",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create_lead",
      "options": [
        {
          "name": "Create Lead",
          "value": "create_lead",
          "action": "Create lead",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "url": "/leads",
              "method": "POST"
            }
          },
          "description": "Create a new lead"
        },
        {
          "name": "Update",
          "value": "update_lead",
          "action": "Update lead",
          "routing": {
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "url": "=/leads/{{$parameter.id}}",
              "method": "PUT"
            }
          },
          "description": "Update an existing lead"
        },
        {
          "name": "Create or Update",
          "value": "create_update_lead",
          "action": "Create or update lead",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "output": {
              "postReceive": [
                null
              ]
            }
          },
          "description": "Create a new lead or update existing one based on phone number"
        },
        {
          "name": "Get All Leads",
          "value": "get_all_leads",
          "action": "Get all leads",
          "routing": {
            "send": {
              "paginate": true
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/leads",
              "method": "GET"
            },
            "operations": {
              "pagination": {
                "type": "generic",
                "properties": {
                  "request": {
                    "qs": {
                      "page": "={{Number($response.body?.meta?.current_page || 0) + 1 }}",
                      "include": "={{ $request.qs.include }}",
                      "filter[name]": "={{ $request.qs[\"filter[name]\"] }}",
                      "filter[tags]": "={{ $request.qs[\"filter[tags]\"] }}",
                      "filter[email]": "={{ $request.qs[\"filter[email]\"] }}",
                      "filter[phone]": "={{ $request.qs[\"filter[phone]\"] }}"
                    }
                  },
                  "continue": "={{!!$response.body?.links?.next}}"
                }
              }
            }
          },
          "description": "List all existing leads in the system"
        },
        {
          "name": "Get Lead by ID",
          "value": "get_lead",
          "action": "Get lead",
          "routing": {
            "request": {
              "url": "=/leads/{{$parameter.id}}",
              "method": "GET"
            }
          },
          "description": "Fetch a specific lead using its unique identifier (ID)"
        },
        {
          "name": "Delete Lead",
          "value": "delete_lead",
          "action": "Delete lead",
          "routing": {
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "url": "=/leads/{{$parameter.id}}",
              "method": "DELETE"
            }
          },
          "description": "Permanently delete a lead from the system"
        },
        {
          "name": "Add Tags to Lead",
          "value": "add_tags",
          "action": "Add tags",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "url": "=/leads/{{$parameter.id}}/tags",
              "method": "POST"
            }
          },
          "description": "Add the respective tags to a Lead"
        },
        {
          "name": "Update Tags From Lead",
          "value": "update_tags",
          "action": "Update tags",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "url": "=/leads/{{$parameter.id}}/tags",
              "method": "PUT"
            }
          },
          "description": "Update the respective tags from a Lead"
        },
        {
          "name": "Remove Tags From Lead",
          "value": "remove_tags",
          "action": "Remove tags",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "url": "=/leads/{{$parameter.id}}/tags",
              "method": "DELETE"
            }
          },
          "description": "Remove the respective tags from a Lead"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "leads"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create_integration",
      "options": [
        {
          "name": "Create Integration",
          "value": "create_integration",
          "action": "Create integration",
          "routing": {
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "url": "/integrations",
              "method": "POST"
            }
          },
          "description": "Creates a new integration"
        },
        {
          "name": "Get All Integrations",
          "value": "get_all_integrations",
          "action": "Get all integrations",
          "routing": {
            "send": {
              "paginate": true
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/integrations",
              "method": "GET"
            },
            "operations": {
              "pagination": {
                "type": "generic",
                "properties": {
                  "request": {
                    "qs": {
                      "page": "={{Number($response.body?.meta?.current_page || 0) + 1 }}"
                    }
                  },
                  "continue": "={{!!$response.body?.links?.next}}"
                }
              }
            }
          },
          "description": "Retrieves all integrations"
        },
        {
          "name": "Get Integration",
          "value": "get_integration",
          "action": "Get integration",
          "routing": {
            "request": {
              "url": "=/integrations/{{$parameter.id}}",
              "method": "GET"
            }
          },
          "description": "Retrieves an integration by its ID"
        },
        {
          "name": "Edit Integration Name",
          "value": "edit_integration",
          "action": "Edit integration",
          "routing": {
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "url": "=/integrations/{{$parameter.id}}",
              "method": "PUT"
            }
          },
          "description": "Edits the name of an existing integration"
        },
        {
          "name": "Delete Integration",
          "value": "delete_integration",
          "action": "Delete integration",
          "routing": {
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "url": "=/integrations/{{$parameter.id}}",
              "method": "DELETE"
            }
          },
          "description": "Deletes an existing integration"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "integration"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create Lead",
      "value": "create_lead",
      "action": "Create lead",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "url": "/leads",
          "method": "POST"
        }
      },
      "description": "Create a new lead",
      "resource": "leads"
    },
    {
      "name": "Update",
      "value": "update_lead",
      "action": "Update lead",
      "routing": {
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "url": "=/leads/{{$parameter.id}}",
          "method": "PUT"
        }
      },
      "description": "Update an existing lead",
      "resource": "leads"
    },
    {
      "name": "Create or Update",
      "value": "create_update_lead",
      "action": "Create or update lead",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "output": {
          "postReceive": [
            null
          ]
        }
      },
      "description": "Create a new lead or update existing one based on phone number",
      "resource": "leads"
    },
    {
      "name": "Get All Leads",
      "value": "get_all_leads",
      "action": "Get all leads",
      "routing": {
        "send": {
          "paginate": true
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/leads",
          "method": "GET"
        },
        "operations": {
          "pagination": {
            "type": "generic",
            "properties": {
              "request": {
                "qs": {
                  "page": "={{Number($response.body?.meta?.current_page || 0) + 1 }}",
                  "include": "={{ $request.qs.include }}",
                  "filter[name]": "={{ $request.qs[\"filter[name]\"] }}",
                  "filter[tags]": "={{ $request.qs[\"filter[tags]\"] }}",
                  "filter[email]": "={{ $request.qs[\"filter[email]\"] }}",
                  "filter[phone]": "={{ $request.qs[\"filter[phone]\"] }}"
                }
              },
              "continue": "={{!!$response.body?.links?.next}}"
            }
          }
        }
      },
      "description": "List all existing leads in the system",
      "resource": "leads"
    },
    {
      "name": "Get Lead by ID",
      "value": "get_lead",
      "action": "Get lead",
      "routing": {
        "request": {
          "url": "=/leads/{{$parameter.id}}",
          "method": "GET"
        }
      },
      "description": "Fetch a specific lead using its unique identifier (ID)",
      "resource": "leads"
    },
    {
      "name": "Delete Lead",
      "value": "delete_lead",
      "action": "Delete lead",
      "routing": {
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "url": "=/leads/{{$parameter.id}}",
          "method": "DELETE"
        }
      },
      "description": "Permanently delete a lead from the system",
      "resource": "leads"
    },
    {
      "name": "Add Tags to Lead",
      "value": "add_tags",
      "action": "Add tags",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "url": "=/leads/{{$parameter.id}}/tags",
          "method": "POST"
        }
      },
      "description": "Add the respective tags to a Lead",
      "resource": "leads"
    },
    {
      "name": "Update Tags From Lead",
      "value": "update_tags",
      "action": "Update tags",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "url": "=/leads/{{$parameter.id}}/tags",
          "method": "PUT"
        }
      },
      "description": "Update the respective tags from a Lead",
      "resource": "leads"
    },
    {
      "name": "Remove Tags From Lead",
      "value": "remove_tags",
      "action": "Remove tags",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "url": "=/leads/{{$parameter.id}}/tags",
          "method": "DELETE"
        }
      },
      "description": "Remove the respective tags from a Lead",
      "resource": "leads"
    },
    {
      "name": "Create Integration",
      "value": "create_integration",
      "action": "Create integration",
      "routing": {
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "url": "/integrations",
          "method": "POST"
        }
      },
      "description": "Creates a new integration",
      "resource": "integration"
    },
    {
      "name": "Get All Integrations",
      "value": "get_all_integrations",
      "action": "Get all integrations",
      "routing": {
        "send": {
          "paginate": true
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/integrations",
          "method": "GET"
        },
        "operations": {
          "pagination": {
            "type": "generic",
            "properties": {
              "request": {
                "qs": {
                  "page": "={{Number($response.body?.meta?.current_page || 0) + 1 }}"
                }
              },
              "continue": "={{!!$response.body?.links?.next}}"
            }
          }
        }
      },
      "description": "Retrieves all integrations",
      "resource": "integration"
    },
    {
      "name": "Get Integration",
      "value": "get_integration",
      "action": "Get integration",
      "routing": {
        "request": {
          "url": "=/integrations/{{$parameter.id}}",
          "method": "GET"
        }
      },
      "description": "Retrieves an integration by its ID",
      "resource": "integration"
    },
    {
      "name": "Edit Integration Name",
      "value": "edit_integration",
      "action": "Edit integration",
      "routing": {
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "url": "=/integrations/{{$parameter.id}}",
          "method": "PUT"
        }
      },
      "description": "Edits the name of an existing integration",
      "resource": "integration"
    },
    {
      "name": "Delete Integration",
      "value": "delete_integration",
      "action": "Delete integration",
      "routing": {
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "url": "=/integrations/{{$parameter.id}}",
          "method": "DELETE"
        }
      },
      "description": "Deletes an existing integration",
      "resource": "integration"
    }
  ]

npm_readme:
  # Notificações Inteligentes

  ## What is Notificações Inteligentes?

  [Notificações Inteligentes](https://notificacoesinteligentes.com/) is a company founded in 2015, focused on transforming the relationship between businesses and customers through message automation, especially via WhatsApp and other intelligent tools.

  With almost 10 years in the market, it is part of Grupo GPM Participações e Tecnologias Ltda, offering robust automated communication solutions for thousands of clients across Brazil.

  ## Mission, Vision, and Values

  The mission of Notificações Inteligentes is to empower companies with accessible and intelligent technology, helping them sell more, provide better service, and grow efficiently. The company believes in practical innovation that generates real value from the first customer contact.

  The values are centered on:
  *   **Effective and intuitive solutions**
  *   **Focus on sustainable growth of client businesses**
  *   **Excellence in service and continuous innovation**

  ---

  ## How the Platform Works and Its Usefulness

  Notificações Inteligentes uses automation technology to transform data into strategic alerts, anticipate risks, automate processes, and ensure no sale is lost due to lack of communication.

  The main products and features include:

  *   [**GPT Chatbot**](https://notificacoesinteligentes.com/funcionalidades/chatbot-gpt): Intelligent chatbots using AI for automated interactions.
  *   [**Automated Workflows**](https://notificacoesinteligentes.com/funcionalidades/workflow): Automate flows and send messages at the right time to engage leads.
  *   [**Intelligent Recovery Tools**](https://notificacoesinteligentes.com/funcionalidades/recuperadores-inteligentes): Recover lost sales with automatic reminders.
  *   [**Ad Platforms**](https://notificacoesinteligentes.com/funcionalidades/plataformas-de-anuncio): Optimize conversion sending and maximize ad performance.
  *   [**Service Center**](https://notificacoesinteligentes.com/funcionalidades/central-de-atendimento): Centralize customer service, automate responses, and track metrics.
  *   [**Chatbot**](https://notificacoesinteligentes.com/funcionalidades/chatbot): Provide 24/7 service with chatbots, capture leads, and scale your support.
  *   [**Intelligent Lead Management**](https://notificacoesinteligentes.com/funcionalidades/gestao-de-leads): Store, manage, and track leads in the cloud conveniently.
  *   [**Intelligent Redirectors**](https://notificacoesinteligentes.com/funcionalidades/redirecionadores-inteligentes): Redirect leads to multiple active WhatsApp numbers and track the origin.
  *   [**Intelligent Notifications**](https://notificacoesinteligentes.com/funcionalidades/notificacoes-inteligentes): Send automatic notifications and boost engagement.
  *   [**Campaigns**](https://notificacoesinteligentes.com/funcionalidades/campanhas): Schedule campaigns, segment contacts, and increase your conversions.
  *   [**Pipeline Management**](https://notificacoesinteligentes.com/funcionalidades/pipelines): Manage your sales funnel and track negotiations in real-time.
  *   [**Link Creation (URL Builder)**](https://notificacoesinteligentes.com/funcionalidades/url-builder): Create trackable URLs and enhance your marketing strategies.

  The platform processes thousands of messages daily and is already a national reference in the automated communication segment, with over 15,000 companies served, using the solution to streamline processes, improve customer service, and increase operational efficiency.

  ---

  ## Why is Notificações Inteligentes Useful?

  *   **Automates and scales** customer relationships, preventing lost sales due to lack of communication.
  *   **Increases efficiency and agility** for sales, support, and marketing teams.
  *   Facilitates **personalization and monitoring of interactions**, enabling faster and safer decisions.
  *   Offers a **variety of integrations** with major market platforms, facilitating implementation in any business.
  *   Operates **end-to-end**: from first contact to post-sale, including campaigns, notifications, automated service, and more.
  *   Is **nationally recognized**, with a high volume of clients and success cases.

  ---

  ## Summary in One Sentence

  Notificações Inteligentes is a leading platform in message automation and relationship management via WhatsApp, helping businesses of all sizes sell more, serve better, and grow with practical and intelligent technology.

  ---
  # NI NODE AUTHENTICATION GUIDE

  Welcome to the **Notificações Inteligentes Custom Node**!
  This guide will help you **generate and configure your API Key (Bearer Token)** to authenticate and securely use all functionalities of your Custom Node.

  ## Accessing the Notificações Inteligentes Panel

  1.  Open your browser and go to the [Notificações Inteligentes](https://notificacoesinteligentes.com) website.
  2.  Click **Entrar (Login)** and log in with your account.

  > Ensure you use the correct account that has access to the **Organizations** you want to manage via API.

  ---

  ## Generating the API Key (Bearer Token)

  1.  After logging in, click **Organizações (Organizations)** in the top menu.
  2.  Select the desired organization.
  3.  Access **Configurações (Settings)**.
  4.  Look for the **Chave de API (API Key)** section.
  5.  Click **Gerar nova chave (Generate new key)**.

  <img src="readme.img/generate_key.png" width="800" alt="Application Screenshot - Generate Key">

  6.  A dialog box will be displayed:

  <img src="readme.img/token.png" width="800" alt="Application Screenshot - Token">

     *   **Check the box** confirming you have saved the key in a secure location.
     *   Click **Concluir (Finish)**.

  > The generated key will be used as the **Bearer Token** for Custom Node authentication.
  > **Attention:** Keep this key secure! Do not share it publicly.

  ---

  ## Configuring the Custom Node

  1.  In your integration environment (n8n), open the **Custom Node**.
  2.  Locate the **Create new Credential / Bearer Token** field.

  <img src="readme.img/credential_field.png" width="800" alt="Application Screenshot - Credential Field">

  3.  Paste the key generated on the Notificações Inteligentes website.
  4.  Save the settings.

  <img src="readme.img/success_example.png" width="800" alt="Application Screenshot - Success">

  5.  If there is any problem with the API key, an error message will appear.

  <img src="readme.img/error_example.png" width="800" alt="Application Screenshot - Error">

  > Your Custom Node is now ready to communicate securely with the API.

  6.  If you have more than one organization, you can add more keys and organize the credentials according to each organization. To make identification easier, simply rename each credential.

  <img src="readme.img/credential_rename.png" width="800" alt="Application Screenshot - Rename Credential">

  ---

  ## Testing the Connection

  1.  Create a test action in the Custom Node, such as **Get All Integrations**.
  2.  Execute the action.
  3.  If everything is correct, you will see the data returned from the API.

  <img src="readme.img/testing_token.png" width="800" alt="Application Screenshot - Testing Token">

  > If any authentication error occurs, check if:
  > *   The **Bearer Token** was copied correctly.
  > *   The key has not expired.
  > *   Your account has permission to access the chosen organization.

  ---

  ## ✅ Ready!

  You can now use your **Custom Node** to create, edit and delete securely using your **API Key (Bearer Token)**.

  ---

  ## **Node Idea: How it Works and What to Expect**

  *   The **NI (Notificações Inteligentes) Custom Node** is a tool that allows you to integrate and automate some functionalities of your NI account directly into your workflows.
  *   The **central idea** is that you can manipulate data from your NI platform (such as Integrations, Leads, Lists, Events, and Variables) using standardized operations (CRUD: Create, Read, Update, Delete). The key to this manipulation are **Unique Identifiers (IDs)**.

  ### Main Concepts:

  *   **Operation Base:** Almost all operations in the Node revolve around an **ID**.
      *   To manage an **Integration**, you need its `ID`.
      *   To edit a **Lead**, you need the `Lead ID`.
      *   To add leads to a **List**, you need the `List ID` and the `Lead IDs`.
      *   And so on for Variables and Groups.

  *   **Typical Workflow:**
      *   **Search/Search All:** You will often start by using an operation like "Get All Integrations" or "Get All Leads" to get a list of items and their respective **IDs**.
      *   **Use the ID:** Then, you will use this **ID** in a subsequent operation in the same flow (like "Edit Lead", "Rename an Integration", or "Add Leads to List") to perform the desired action on the specific item.

  *   **Error Handling and Confirmations:**

      *   **Success Confirmation:** All creation, editing, and deletion operations are validated by the platform. When successful, they return an explicit confirmation message, ensuring the user that the action was completed as expected.

      <img src="readme.img/success_message.png" width="800" alt="Application Screenshot - Success Message">
      <img src="readme.img/update_message.png" width="800" alt="Application Screenshot - Update Message">
      <img src="readme.img/create_message.png" width="800" alt="Application Screenshot - Create Message">

      *   **Error Handling:** In case of failure, the node provides detailed and structured error responses, including:
          *   **Error Description:** A readable message explaining the nature of the problem.
          *   **HTTP Error Code:** The standard status code, allowing efficient technical debugging and the construction of robust conditional logic within the n8n flow.
      *   When related to an API-specific rule, in most cases it returns the detailed reason for the error, making it even clearer.

      <img src="readme.img/detailed_message_error.png" width="800" alt="Application Screenshot - Detailed Error">

      *   All errors return the error code. In the example below, it returned 404 (Not Found) because it didn't find any ID related to what we tried to delete in the account.

      <img src="readme.img/error_message.png" width="800" alt="Application Screenshot - Error Message">

  *   **Additional Data:**
      *   Besides IDs, the Node allows working with a range of complementary (optional) data to enrich your automations, such as **Tags**, **Custom Variables**, **Filters**, and **Relationships**.
      *   In search fields, for example, where plausible, there is an option to receive additional data in the request.
      *   **Filters** allow filtering of data to be received. You can filter by one or more filters at the same time.

      <img src="readme.img/filters_example.png" width="800" alt="Application Screenshot - Filters Example">

      *   **Include Relationships** allows adding more data to be received by the API. More than one option can also be used for the search.

      <img src="readme.img/include_example.png" width="800" alt="Application Screenshot - Include Example">

  In summary, the Node transforms the NI API into visual and intuitive blocks in n8n, where the main currency of operation are **IDs**, allowing you to build complex and personalized automations to manage your communication and contact base efficiently.

  ---

  # NI NODE FUNCTIONS GUIDE

  ## Usage Guide - Integration (n8n)

  ## Overview
  The Integration resource allows you to create, search, update, and list integrations connected to your account directly from n8n.

  ## Available Operations

  ### Create New Integration
  Creates a new integration connecting your platform to the system.

  **Required Fields:**
  - Name: Give a friendly name to identify the integration (e.g., "My Shopify Store")
  - Platform: Specify the platform (e.g., shopify-next, hotmart-v2, wooocommerce, etc). See the list of supported platforms in the field description.

  **Important Note:** Only integrations created with the api-next platform can add or remove leads from your lead list via the API.

  **How to use:** Select the "Create New Integration" operation, fill in the name and platform, and execute. The integration will be created and listed in your panel.

  ### Get All Integrations
  Lists all integrations already registered in your account.

  **No fields need to be filled in.**

  **Returns a list with all registered names and platforms.**

  **How to use:** Select "Get All Integrations" and execute. You will see the complete list of integrations.

  ### Get Integration
  Allows querying the detailed data of a specific integration.

  **Required Fields:**
  - ID: The unique identifier of the integration you want to query (you can copy this ID when listing all integrations).

  **Additional Parameters (optional):**
  - You can choose to include extra fields in the response, such as "Available Events", "Setup Fields", or "Checklist"
  - Just mark the ones you want detailed

  **How to use:** Select "Get an Integration", enter the ID, select (if desired) any additional parameters, and execute.

  ### Edit Integration Name
  Updates the name of an existing integration.

  **Required Fields:**
  - ID: The identifier of the integration you want to rename
  - New Name: The new name to display in the panel

  **How to use:** Select "Edit Integration Name", enter the ID and the new name, and execute.

  ### Delete Integration
  Permanently removes an Integration from the system.

  **Required Field:**
  - Integration ID: Identifier of the integration to be removed

  **How to use:** Select "Delete Integration", enter the Integration ID, and execute. A confirmation message will be displayed if the operation is successful.

  ## Special Fields
  - Name: Integration name (up to 100 characters)
  - Platform: Integration platform (consult the list in the field description)
  - ID: Unique integration identifier, usually provided when creating or listing integrations
  - Additional Parameters: Check to include extra information in the integration search

  ## Tips
  - Use "Get All Integrations" to find the ID of the integration you want to edit or query
  - Always check the required fields (marked with *) before executing
  - For platforms, consult the examples in the field description to avoid typing errors

  [Additional information about Integrations in NI](https://ajuda.notificacoesinteligentes.com/pt-br/article/como-conectar-mrlog2/)

  ---

  ## Usage Guide - Leads (n8n)


  ## Overview
  The **Leads** feature allows you to manage contacts directly through n8n, with support for custom variables, tags, and advanced filters.

  ## Available Operations

  ### 🆕 **Create Lead**
  Creates a new contact in the system.

  **Required Fields:**
  - `Name` - Lead's full name
  - `Phone` - Phone number with area code and region code
  - `Email` - Email address

  **Optional Fields:**
  - `Notes` - Additional observations
  - `Custom Variables` - Extra personalized data (CPF, birth date, etc)
  - `Tags` - Keywords for categorization
  - `Tracking Data` - Trackable information from website actions

  **Important:** Custom variables must use the correct data type (e.g., CPF field must contain only numbers).

  ###  **Update Lead**
  Modifies data of an existing lead.

  **Required Fields:**
  - `Lead ID` - Unique lead identifier
  - `Name` - Updated name
  - `Email` - Updated email

  ### **Create or Update Lead**
  Smart operation that automatically checks if lead exists by phone number.

  ** Important:** The `Phone` field must include country code with `+` (e.g., +5511999999999).

  ### **Tag Management**

  **Add Tags to a Lead**
  - `Lead ID` + `Tags` - Adds new tags to existing lead

  **Update Lead Tags**
  - `Lead ID` + `Tags` - **Completely replaces** previous tags

  **Delete Tags from a Lead**
  - `Lead ID` + `Tags` - Removes specific tags from lead

  ### **Search and Query**

  **Search All Leads**
  - Lists all registered contacts
  - **Optional filters:** name, phone, email, tags
  - `Include Relationships` - Includes related lists, tags and sources

  **Search Lead by ID**
  - Returns complete data of a specific lead
  - **Required field:** `Lead ID`
  - **Optional:** Include relationships

  ### **Delete Lead**
  Permanently removes a lead from the system.

  **Required Field:**
  - `Lead ID` - Identifier of lead to be removed

  ---

  ## Useful Links
   [Complete Documentation](https://ajuda.notificacoesinteligentes.com/pt-br/article/gerenciamento-de-leads-1x8lj7m/)



  ---

  #### If you haven't found what you're looking for, take a look at our [Help Center](https://ajuda.notificacoesinteligentes.com/pt-br/).

ai_documentation_summary:
  {"purpose":"Enables integration with Notificações Inteligentes, a Brazilian platform for automating customer communication and sales workflows primarily via WhatsApp.","capabilities":["Send automated notifications via WhatsApp","Manage sales pipelines and leads","Execute automated marketing campaigns","Integrate AI-powered chatbots","Create trackable URLs","Automate customer service responses","Redirect leads to multiple WhatsApp numbers","Schedule and segment contact lists"],"authentication":"Bearer Token (API Key)","commonUseCases":["Automating sales follow-ups and recovery","Customer service automation via WhatsApp","Marketing campaign execution and segmentation","Lead management and tracking"],"limitations":[],"relatedNodes":[]}


node_type: n8n-nodes-activitysmith.activitySmith
package_name: n8n-nodes-activitysmith
display_name: ActivitySmith
description: Send push notifications and manage Live Activities
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: bardonadam
author_github_url: https://github.com/ActivitySmithHQ/
npm_package_name: n8n-nodes-activitysmith
npm_version: 1.0.5
community_fetched_at: 2026-07-14T14:40:34.135Z
ai_summary_generated_at: 2026-05-02 08:57:17
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "sendPushNotification",
      "options": [
        {
          "name": "End Live Activity",
          "value": "endLiveActivity",
          "action": "End a live activity",
          "description": "End an existing Live Activity"
        },
        {
          "name": "End Live Activity Stream",
          "value": "endLiveActivityStream",
          "action": "End a live activity stream",
          "description": "End a managed Live Activity stream"
        },
        {
          "name": "Send Push Notification",
          "value": "sendPushNotification",
          "action": "Send a push notification",
          "description": "Send a push notification to paired devices"
        },
        {
          "name": "Start Live Activity",
          "value": "startLiveActivity",
          "action": "Start a live activity",
          "description": "Start a Live Activity and return an activity ID"
        },
        {
          "name": "Stream Live Activity",
          "value": "streamLiveActivity",
          "action": "Stream a live activity",
          "description": "Start or update a managed Live Activity stream"
        },
        {
          "name": "Update Live Activity",
          "value": "updateLiveActivity",
          "action": "Update a live activity",
          "description": "Update an existing Live Activity"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "End Live Activity",
      "value": "endLiveActivity",
      "action": "End a live activity",
      "description": "End an existing Live Activity"
    },
    {
      "name": "End Live Activity Stream",
      "value": "endLiveActivityStream",
      "action": "End a live activity stream",
      "description": "End a managed Live Activity stream"
    },
    {
      "name": "Send Push Notification",
      "value": "sendPushNotification",
      "action": "Send a push notification",
      "description": "Send a push notification to paired devices"
    },
    {
      "name": "Start Live Activity",
      "value": "startLiveActivity",
      "action": "Start a live activity",
      "description": "Start a Live Activity and return an activity ID"
    },
    {
      "name": "Stream Live Activity",
      "value": "streamLiveActivity",
      "action": "Stream a live activity",
      "description": "Start or update a managed Live Activity stream"
    },
    {
      "name": "Update Live Activity",
      "value": "updateLiveActivity",
      "action": "Update a live activity",
      "description": "Update an existing Live Activity"
    }
  ]

npm_readme:
  # ActivitySmith for n8n

  **Track your n8n automations and worfklows on your lock screen. See the progress with Live Activities or get Push Notifications when something important happens.**

  This is the **official ActivitySmith integration** for n8n. Add it to an automation and your paired iOS devices will keep you and your team in the loop.

  ---

  ## What you can do

  - **Get push notification from any path through an automation:** success, failure, or a midpoint when you want a glance at a run without opening n8n.
  - **Rich media delivery when the automation’s outcome needs context:** media preview, tap-through URL and actions to call a webhook.
  - **Track long-running automations on the Lock Screen:** stepped sequences, percentage progress and more.

  ---

  ## Push notifications

  ![n8n workflow progress live activity](https://cdn.activitysmith.com/features/n8n-push-notification.png)

  ---

  ## Live Activities

  ![n8n workflow completion push notification](https://cdn.activitysmith.com/features/n8n-workflow-live-activity.png)

  ---

  ## Credentials

  1. Create an API key at [activitysmith.com/app/keys](https://activitysmith.com/app/keys).
  2. In n8n, add **ActivitySmith API** credentials and paste the key.

  When you test the credential, n8n sends a single test push notification so you know the key works.

ai_documentation_summary:
  {"purpose":"Sends push notifications and manages Live Activities for n8n automations on iOS devices to track workflow progress and outcomes.","capabilities":["Send push notifications on automation success, failure, or mid-point","Deliver rich media with previews and tap-through URLs","Trigger webhook actions via notification","Display stepped sequences and percentage progress on Lock Screen","Manage Live Activities for long-running automations"],"authentication":"API key required","commonUseCases":["Receive instant alerts when critical workflows complete or fail","Monitor long-running automation progress on iOS lock screen","Get contextual workflow updates with media previews"],"limitations":[],"relatedNodes":[]}


node_type: n8n-nodes-pachca.pachcaTrigger
package_name: n8n-nodes-pachca
display_name: Pachca Trigger
description: Starts workflow when Pachca events occur
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: pachca
author_github_url: https://github.com/pachca/openapi.git
npm_package_name: n8n-nodes-pachca
npm_version: 2.0.9
community_fetched_at: 2026-07-14T14:40:34.136Z
ai_summary_generated_at: 2026-05-02 08:57:17
npm_readme:
  # n8n-nodes-pachca

  Community node for [n8n](https://n8n.io/) to interact with the [Pachca API](https://dev.pachca.com/).

  Auto-generated from the [OpenAPI spec](https://github.com/pachca/openapi) — always in sync with the latest API.

  ## Installation

  In your n8n instance:

  1. Go to **Settings > Community Nodes**
  2. Enter `n8n-nodes-pachca`
  3. Click **Install**

  Or install via CLI:

  ```bash
  npm install n8n-nodes-pachca
  ```

  Or install from archive (Docker, custom n8n images):

  ```bash
  # Download from GitHub Releases
  # Find the latest n8n-nodes-pachca.tgz at:
  # https://github.com/pachca/openapi/releases?q=n8n
  wget https://github.com/pachca/openapi/releases/download/n8n-v2.0.14/n8n-nodes-pachca.tgz

  # Via npm (recommended)
  cd ~/.n8n/nodes && npm install ./n8n-nodes-pachca.tgz

  # Or extract directly (no npm needed)
  tar -xzf n8n-nodes-pachca.tgz -C ~/.n8n/nodes/

  # Restart n8n
  ```

  ## Nodes

  ### Pachca

  Main node for interacting with the Pachca API. Supports 18 resources and 65+ operations:

  | Resource | Operations |
  |----------|-----------|
  | Bot | Update, Get Many Events, Remove Events |
  | Chat | Create, Get, Get Many, Update, Archive, Unarchive |
  | Chat Export | Create, Get |
  | Chat Member | Get Many, Create, Delete, Update, Leave, Add/Remove Group Tags |
  | Custom Property | Get |
  | File | Create (S3 two-stage upload) |
  | Form | Create (visual builder, templates, or JSON) |
  | Group Tag | Create, Get, Get Many, Update, Delete, Get Many Users |
  | Link Preview | Create |
  | Message | Create, Get, Get Many, Update, Delete, Pin, Unpin |
  | Profile | Get Info, Get, Update/Delete Avatar, Get/Update/Delete Status |
  | Reaction | Create, Delete, Get Many |
  | Read Member | Get Many |
  | Search | Chats, Messages, Users |
  | Security | Get Many |
  | Task | Create, Get, Get Many, Update, Delete |
  | Thread | Create, Get |
  | User | Create, Get, Get Many, Update, Delete, Update/Delete Avatar, Get/Update/Delete Status |

  ### Pachca Trigger

  Webhook-based trigger that listens for 16 Pachca event types:

  | Category | Events |
  |----------|--------|
  | Messages | new, updated, deleted |
  | Reactions | new, deleted |
  | Interactive | button pressed, form submitted, link shared |
  | Chat members | added, removed |
  | Users | invited, confirmed, activated, suspended, updated, deleted |
  | Wildcard | all events |

  Automatic mode registers the webhook URL when the workflow is activated and clears it on deactivation. A bot token self-registers via `PUT /bot/webhook` (no Bot ID needed); a personal token uses `PUT /bots/:id` and needs the `bots:write` scope, editor access to the bot, and the Bot ID.

  ## Credentials

  Create a **Pachca API** credential with:

  | Field | Required | Description |
  |-------|----------|-------------|
  | **Base URL** | no | Default: `https://api.pachca.com/api/shared/v1`. Change only for on-premise. |
  | **Access Token** | yes | Bot or personal API token |
  | **Bot ID** | no | For automatic webhook registration in Trigger with a **personal token**. Not needed for bot tokens — they self-register. |
  | **Signing Secret** | no | For HMAC-SHA256 verification of incoming webhooks (`pachca-signature` header) |
  | **Webhook Allowed IPs** | no | Comma-separated IPs allowed to send webhooks. Pachca sends from `37.200.70.177`. Empty = allow all. |

  **Where to get tokens:**

  - **Bot token** — Bot settings > API tab
  - **Personal token** — Settings > Automations > API

  Credentials are tested by calling `GET /oauth/token/info`.

  ## Key Features

  ### Pagination

  All list operations (Get Many) support automatic cursor-based pagination:

  - **Return All** = true — fetches all pages automatically
  - **Return All** = false — returns up to **Limit** results (default: 50)

  ### Simplify

  Toggle **Simplify** (on by default) to return only key fields from API responses. Turn off for full response.

  - **Message** — id, entity_id, chat_id, content, user_id, created_at
  - **Chat** — id, name, channel, public, members_count, created_at
  - **User** — id, first_name, last_name, nickname, email, role, suspended
  - **Task** — id, content, kind, status, priority, due_at, created_at

  ### Searchable Dropdowns

  Chat ID and User ID fields support search by name — type to find instead of entering numeric IDs.

  ### Message Buttons

  Create messages with interactive buttons via JSON:

  ```json
  [[{"text": "Approve", "data": "approve"}, {"text": "Reject", "data": "reject"}]]
  ```

  Button types: **URL** (opens link) and **Data** (sends `button_pressed` webhook event).

  ### Forms

  Create modal forms with three builder modes:

  - **Visual Builder** — add blocks (text input, select, radio, checkboxes, date/time, file upload)
  - **Templates** — predefined forms (Feedback, Time Off, Survey, Bug Report)
  - **JSON** — paste blocks from the visual playground

  Forms require a `trigger_id` from a `button_pressed` webhook event (valid for 3 seconds).

  ### Avatar Upload

  Upload avatar images for profiles and users via `multipart/form-data`. Uses binary data from a previous node (HTTP Request, Read Binary File). The **Input Binary Field** parameter (default: `data`) specifies which binary property contains the image.

  ### File Upload

  Two-stage S3 upload with automatic retry. Sources: **URL** or **Binary Data** from previous workflow nodes.

  ### AI Tool Use

  Both nodes have `usableAsTool: true` — they can be used as tools for AI Agent nodes in n8n.

  ### Error Handling

  - **5xx/429 retry** — exponential backoff with jitter, respects `Retry-After` header (up to 5 attempts)
  - **continueOnFail** — supported on all operations

  ## v1 Compatibility

  Version 2 is fully backward compatible with v1. Existing v1 workflows continue to work without modification.

  The node uses the **VersionedNodeType** pattern with `defaultVersion: 2`:

  - Existing nodes keep `typeVersion: 1` with v1 UI and parameter names
  - New nodes get `typeVersion: 2` with cleaner naming and new resources
  - A shared router translates v1 names to v2 at runtime

  **Renamed resources:** `reactions` → `reaction`, `status` → `profile`, `customFields` → `customProperty`

  **Renamed operations:** `send` → `create`, `getById` → `get`, `addReaction` → `create`, etc.

  **New v2 resources:** Chat Member, Custom Property, Read Member, Link Preview, Search, Chat Export, Security

  To upgrade a v1 node: delete it, add a new Pachca node (defaults to v2), reconfigure with v2 names. API calls are identical.

  ## Usage Examples

  ### Send a message

  Set **Resource** = Message, **Operation** = Create:

  - **Entity ID** — chat ID (use searchable dropdown or enter number)
  - **Content** — message text (supports Markdown)

  ### Send a message with buttons

  Set **Resource** = Message, **Operation** = Create, then in **Additional Fields** add **Buttons**:

  ```json
  [[{"text": "Approve", "data": "approve"}, {"text": "Reject", "data": "reject"}]]
  ```

  When a user clicks a Data button, the Pachca Trigger node receives a `button_pressed` event with the button's `data` value.

  ### Upload a file and attach to message

  1. **Pachca** (File > Create) — upload file from URL or binary data, get `key` in response
  2. **Pachca** (Message > Create) — send message with the file key in the `files` field

  ### Search and process results

  Set **Resource** = Search, **Operation** = Get Many Messages:

  - **Query** — search text
  - **Return All** = false, **Limit** = 10

  ### Open a modal form

  1. **Pachca Trigger** — event `Button Pressed` (provides `trigger_id`)
  2. **Pachca** (Form > Create) — set **Title**, **Trigger ID**, choose builder mode
  3. **Pachca Trigger** — event `Form Submitted` (in a separate workflow)

  ### Bot echo workflow

  1. **Pachca Trigger** — event `New Message`
  2. **IF** — filter: `message.user_id` ≠ bot ID
  3. **Pachca** (Message > Create) — echo the message back

  ## Troubleshooting

  ### 401 Unauthorized

  Token is invalid or expired. Check **Access Token** in Credentials. For bot tokens: Bot settings > API tab. For personal tokens: Settings > Automations > API.

  ### 403 Forbidden

  Token lacks required scopes for this operation. Check available scopes in your token settings. Admin operations (managing users, tags, security log) require admin-level scopes.

  ### 429 Too Many Requests

  Rate limit exceeded (~4 req/sec for messages, ~50 req/sec for other operations). The node retries automatically with exponential backoff. For bulk operations, add a **Wait** node between steps.

  ### Webhook not received (Trigger)

  1. **Bot not in chat** — bot only receives events from chats it's a member of
  2. **Workflow not activated** — click **Activate** in the top right
  3. **Bot ID missing** — set Bot ID in Credentials for auto-registration, or configure webhook URL manually in bot settings
  4. **n8n not reachable** — Pachca can't send webhooks to `localhost`. Use a tunnel (ngrok, Cloudflare Tunnel) or deploy to a server with a public IP

  ### Form not opening

  `trigger_id` from a `button_pressed` event expires in **3 seconds**. Place the Form > Create node immediately after the Trigger, with no Wait nodes or long operations in between.

  ### Node not showing in n8n

  1. Restart n8n after installing the package
  2. Check n8n logs for loading errors
  3. Verify the package is in the correct directory (`~/.n8n/nodes/` or `~/.n8n/custom/node_modules/`)

  ## Support

  - **GitHub Issues** — [github.com/pachca/openapi/issues](https://github.com/pachca/openapi/issues)
  - **Pachca API docs** — [dev.pachca.com](https://dev.pachca.com)
  - **n8n Community** — [community.n8n.io](https://community.n8n.io)

  ## Development

  This node is auto-generated from the OpenAPI specification:

  ```bash
  # Generate node files from OpenAPI
  bun run integrations/n8n/scripts/generate-n8n.ts

  # Run tests
  cd integrations/n8n && npx vitest run

  # Type check
  cd integrations/n8n && npx tsc --noEmit

  # Build for distribution
  cd integrations/n8n && npx n8n-node build

  # Full CI check (from repo root)
  npx turbo check
  ```

  See [docs/DEVELOPMENT.md](docs/DEVELOPMENT.md) for architecture, local testing, and adding new endpoints.

  See [docs/CONTRIBUTORS.md](docs/CONTRIBUTORS.md) for project structure and contribution guidelines.

  ## License

  MIT

ai_documentation_summary:
  {"purpose":"The Pachca Trigger node acts as a webhook-based entry point for n8n workflows, automatically listening for specific Pachca platform events (like new messages, member changes, or button presses) to initiate automation without manual polling.","capabilities":["Listen for 16 specific Pachca event types (messages, reactions, interactive events, member changes, user lifecycle)","Automatically register and deregister webhooks via the Pachca Bot API","Support wildcard event listening for all events","Filter events by specific categories (Messages, Reactions, Interactive, Chat members, Users)","Use as a tool for AI Agent nodes","Handle HMAC-SHA256 signature verification for incoming webhooks","Restrict webhook sources to specific IP addresses"],"authentication":"API key required (Bot token or Personal API token)","commonUseCases":["Trigger workflows when a user submits a form or presses a button in a chat","Automate responses when new messages or reactions are detected","Initiate onboarding or notification flows when users are invited or activated","Monitor chat member additions or removals for access control","Build real-time dashboards that react to Pachca platform activity"],"limitations":["Webhooks are only active when the workflow is activated; deactivation removes the webhook","Requires a valid Bot ID for automatic webhook registration (auto-detected from bot tokens, must be set explicitly for admin tokens)","Form triggers require a valid trigger_id from a button_pressed event which expires after 3 seconds"],"relatedNodes":["Pachca","n8n-nodes-pachca"]}


node_type: n8n-nodes-pachca.pachca
package_name: n8n-nodes-pachca
display_name: Pachca
description: Interact with Pachca API
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: pachca
author_github_url: https://github.com/pachca/openapi.git
npm_package_name: n8n-nodes-pachca
npm_version: 2.0.9
community_fetched_at: 2026-07-14T14:40:34.137Z
ai_summary_generated_at: 2026-05-02 08:57:17
npm_readme:
  # n8n-nodes-pachca

  Community node for [n8n](https://n8n.io/) to interact with the [Pachca API](https://dev.pachca.com/).

  Auto-generated from the [OpenAPI spec](https://github.com/pachca/openapi) — always in sync with the latest API.

  ## Installation

  In your n8n instance:

  1. Go to **Settings > Community Nodes**
  2. Enter `n8n-nodes-pachca`
  3. Click **Install**

  Or install via CLI:

  ```bash
  npm install n8n-nodes-pachca
  ```

  Or install from archive (Docker, custom n8n images):

  ```bash
  # Download from GitHub Releases
  # Find the latest n8n-nodes-pachca.tgz at:
  # https://github.com/pachca/openapi/releases?q=n8n
  wget https://github.com/pachca/openapi/releases/download/n8n-v2.0.14/n8n-nodes-pachca.tgz

  # Via npm (recommended)
  cd ~/.n8n/nodes && npm install ./n8n-nodes-pachca.tgz

  # Or extract directly (no npm needed)
  tar -xzf n8n-nodes-pachca.tgz -C ~/.n8n/nodes/

  # Restart n8n
  ```

  ## Nodes

  ### Pachca

  Main node for interacting with the Pachca API. Supports 18 resources and 65+ operations:

  | Resource | Operations |
  |----------|-----------|
  | Bot | Update, Get Many Events, Remove Events |
  | Chat | Create, Get, Get Many, Update, Archive, Unarchive |
  | Chat Export | Create, Get |
  | Chat Member | Get Many, Create, Delete, Update, Leave, Add/Remove Group Tags |
  | Custom Property | Get |
  | File | Create (S3 two-stage upload) |
  | Form | Create (visual builder, templates, or JSON) |
  | Group Tag | Create, Get, Get Many, Update, Delete, Get Many Users |
  | Link Preview | Create |
  | Message | Create, Get, Get Many, Update, Delete, Pin, Unpin |
  | Profile | Get Info, Get, Update/Delete Avatar, Get/Update/Delete Status |
  | Reaction | Create, Delete, Get Many |
  | Read Member | Get Many |
  | Search | Chats, Messages, Users |
  | Security | Get Many |
  | Task | Create, Get, Get Many, Update, Delete |
  | Thread | Create, Get |
  | User | Create, Get, Get Many, Update, Delete, Update/Delete Avatar, Get/Update/Delete Status |

  ### Pachca Trigger

  Webhook-based trigger that listens for 16 Pachca event types:

  | Category | Events |
  |----------|--------|
  | Messages | new, updated, deleted |
  | Reactions | new, deleted |
  | Interactive | button pressed, form submitted, link shared |
  | Chat members | added, removed |
  | Users | invited, confirmed, activated, suspended, updated, deleted |
  | Wildcard | all events |

  Automatic mode registers the webhook URL when the workflow is activated and clears it on deactivation. A bot token self-registers via `PUT /bot/webhook` (no Bot ID needed); a personal token uses `PUT /bots/:id` and needs the `bots:write` scope, editor access to the bot, and the Bot ID.

  ## Credentials

  Create a **Pachca API** credential with:

  | Field | Required | Description |
  |-------|----------|-------------|
  | **Base URL** | no | Default: `https://api.pachca.com/api/shared/v1`. Change only for on-premise. |
  | **Access Token** | yes | Bot or personal API token |
  | **Bot ID** | no | For automatic webhook registration in Trigger with a **personal token**. Not needed for bot tokens — they self-register. |
  | **Signing Secret** | no | For HMAC-SHA256 verification of incoming webhooks (`pachca-signature` header) |
  | **Webhook Allowed IPs** | no | Comma-separated IPs allowed to send webhooks. Pachca sends from `37.200.70.177`. Empty = allow all. |

  **Where to get tokens:**

  - **Bot token** — Bot settings > API tab
  - **Personal token** — Settings > Automations > API

  Credentials are tested by calling `GET /oauth/token/info`.

  ## Key Features

  ### Pagination

  All list operations (Get Many) support automatic cursor-based pagination:

  - **Return All** = true — fetches all pages automatically
  - **Return All** = false — returns up to **Limit** results (default: 50)

  ### Simplify

  Toggle **Simplify** (on by default) to return only key fields from API responses. Turn off for full response.

  - **Message** — id, entity_id, chat_id, content, user_id, created_at
  - **Chat** — id, name, channel, public, members_count, created_at
  - **User** — id, first_name, last_name, nickname, email, role, suspended
  - **Task** — id, content, kind, status, priority, due_at, created_at

  ### Searchable Dropdowns

  Chat ID and User ID fields support search by name — type to find instead of entering numeric IDs.

  ### Message Buttons

  Create messages with interactive buttons via JSON:

  ```json
  [[{"text": "Approve", "data": "approve"}, {"text": "Reject", "data": "reject"}]]
  ```

  Button types: **URL** (opens link) and **Data** (sends `button_pressed` webhook event).

  ### Forms

  Create modal forms with three builder modes:

  - **Visual Builder** — add blocks (text input, select, radio, checkboxes, date/time, file upload)
  - **Templates** — predefined forms (Feedback, Time Off, Survey, Bug Report)
  - **JSON** — paste blocks from the visual playground

  Forms require a `trigger_id` from a `button_pressed` webhook event (valid for 3 seconds).

  ### Avatar Upload

  Upload avatar images for profiles and users via `multipart/form-data`. Uses binary data from a previous node (HTTP Request, Read Binary File). The **Input Binary Field** parameter (default: `data`) specifies which binary property contains the image.

  ### File Upload

  Two-stage S3 upload with automatic retry. Sources: **URL** or **Binary Data** from previous workflow nodes.

  ### AI Tool Use

  Both nodes have `usableAsTool: true` — they can be used as tools for AI Agent nodes in n8n.

  ### Error Handling

  - **5xx/429 retry** — exponential backoff with jitter, respects `Retry-After` header (up to 5 attempts)
  - **continueOnFail** — supported on all operations

  ## v1 Compatibility

  Version 2 is fully backward compatible with v1. Existing v1 workflows continue to work without modification.

  The node uses the **VersionedNodeType** pattern with `defaultVersion: 2`:

  - Existing nodes keep `typeVersion: 1` with v1 UI and parameter names
  - New nodes get `typeVersion: 2` with cleaner naming and new resources
  - A shared router translates v1 names to v2 at runtime

  **Renamed resources:** `reactions` → `reaction`, `status` → `profile`, `customFields` → `customProperty`

  **Renamed operations:** `send` → `create`, `getById` → `get`, `addReaction` → `create`, etc.

  **New v2 resources:** Chat Member, Custom Property, Read Member, Link Preview, Search, Chat Export, Security

  To upgrade a v1 node: delete it, add a new Pachca node (defaults to v2), reconfigure with v2 names. API calls are identical.

  ## Usage Examples

  ### Send a message

  Set **Resource** = Message, **Operation** = Create:

  - **Entity ID** — chat ID (use searchable dropdown or enter number)
  - **Content** — message text (supports Markdown)

  ### Send a message with buttons

  Set **Resource** = Message, **Operation** = Create, then in **Additional Fields** add **Buttons**:

  ```json
  [[{"text": "Approve", "data": "approve"}, {"text": "Reject", "data": "reject"}]]
  ```

  When a user clicks a Data button, the Pachca Trigger node receives a `button_pressed` event with the button's `data` value.

  ### Upload a file and attach to message

  1. **Pachca** (File > Create) — upload file from URL or binary data, get `key` in response
  2. **Pachca** (Message > Create) — send message with the file key in the `files` field

  ### Search and process results

  Set **Resource** = Search, **Operation** = Get Many Messages:

  - **Query** — search text
  - **Return All** = false, **Limit** = 10

  ### Open a modal form

  1. **Pachca Trigger** — event `Button Pressed` (provides `trigger_id`)
  2. **Pachca** (Form > Create) — set **Title**, **Trigger ID**, choose builder mode
  3. **Pachca Trigger** — event `Form Submitted` (in a separate workflow)

  ### Bot echo workflow

  1. **Pachca Trigger** — event `New Message`
  2. **IF** — filter: `message.user_id` ≠ bot ID
  3. **Pachca** (Message > Create) — echo the message back

  ## Troubleshooting

  ### 401 Unauthorized

  Token is invalid or expired. Check **Access Token** in Credentials. For bot tokens: Bot settings > API tab. For personal tokens: Settings > Automations > API.

  ### 403 Forbidden

  Token lacks required scopes for this operation. Check available scopes in your token settings. Admin operations (managing users, tags, security log) require admin-level scopes.

  ### 429 Too Many Requests

  Rate limit exceeded (~4 req/sec for messages, ~50 req/sec for other operations). The node retries automatically with exponential backoff. For bulk operations, add a **Wait** node between steps.

  ### Webhook not received (Trigger)

  1. **Bot not in chat** — bot only receives events from chats it's a member of
  2. **Workflow not activated** — click **Activate** in the top right
  3. **Bot ID missing** — set Bot ID in Credentials for auto-registration, or configure webhook URL manually in bot settings
  4. **n8n not reachable** — Pachca can't send webhooks to `localhost`. Use a tunnel (ngrok, Cloudflare Tunnel) or deploy to a server with a public IP

  ### Form not opening

  `trigger_id` from a `button_pressed` event expires in **3 seconds**. Place the Form > Create node immediately after the Trigger, with no Wait nodes or long operations in between.

  ### Node not showing in n8n

  1. Restart n8n after installing the package
  2. Check n8n logs for loading errors
  3. Verify the package is in the correct directory (`~/.n8n/nodes/` or `~/.n8n/custom/node_modules/`)

  ## Support

  - **GitHub Issues** — [github.com/pachca/openapi/issues](https://github.com/pachca/openapi/issues)
  - **Pachca API docs** — [dev.pachca.com](https://dev.pachca.com)
  - **n8n Community** — [community.n8n.io](https://community.n8n.io)

  ## Development

  This node is auto-generated from the OpenAPI specification:

  ```bash
  # Generate node files from OpenAPI
  bun run integrations/n8n/scripts/generate-n8n.ts

  # Run tests
  cd integrations/n8n && npx vitest run

  # Type check
  cd integrations/n8n && npx tsc --noEmit

  # Build for distribution
  cd integrations/n8n && npx n8n-node build

  # Full CI check (from repo root)
  npx turbo check
  ```

  See [docs/DEVELOPMENT.md](docs/DEVELOPMENT.md) for architecture, local testing, and adding new endpoints.

  See [docs/CONTRIBUTORS.md](docs/CONTRIBUTORS.md) for project structure and contribution guidelines.

  ## License

  MIT

ai_documentation_summary:
  {"purpose":"Interact with the Pachca API to manage chat applications, users, messages, forms, and bots, including support for webhook triggers and file uploads.","capabilities":["Manage bots and event registration","Create, update, archive, and search chats","Handle chat exports and member management","Create and manage interactive forms with visual builder","Upload files via two-stage S3 process","Create messages with interactive buttons","Manage user profiles, avatars, and statuses","Handle reactions and link previews","Search chats, messages, and users","Process webhook events for messages, reactions, and interactions"],"authentication":"API token (Access Token)","commonUseCases":["Automate customer support chat workflows","Manage community engagement and user moderation","Collect feedback via interactive forms","Monitor and analyze chat activity via webhooks","Automate user onboarding and status updates"],"limitations":["Webhook registration requires a valid Bot ID for automatic setup in Trigger nodes","Form triggers require a valid trigger_id from a button_pressed event (valid for 3 seconds)","Avatar uploads require binary data from a previous node"],"relatedNodes":["n8n-nodes-n8n-nodes-base.httpRequest","n8n-nodes-n8n-nodes-base.readBinaryFile","n8n-nodes-n8n-nodes-base.aiAgent"]}


node_type: @varify-io/n8n-nodes-varify.varify
package_name: @varify-io/n8n-nodes-varify
display_name: Varify
description: Interact with the Varify.io A/B testing platform
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: dev-varify
author_github_url: https://github.com/varify-io/n8n-nodes.git
npm_package_name: @varify-io/n8n-nodes-varify
npm_version: 1.2.1
community_fetched_at: 2026-07-14T14:40:34.138Z
ai_summary_generated_at: 2026-05-02 08:57:17
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "experiment",
      "options": [
        {
          "name": "Experiment",
          "value": "experiment",
          "description": "Manage A/B testing experiments"
        },
        {
          "name": "Schema",
          "value": "schema",
          "description": "Retrieve targeting schemas"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get all experiments",
          "routing": {
            "request": {
              "url": "/papi/experiments",
              "method": "GET"
            }
          },
          "description": "Retrieve all experiments with optional filtering and pagination"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get an experiment",
          "routing": {
            "request": {
              "url": "=/papi/experiments/{{$parameter.experimentId}}",
              "method": "GET"
            }
          },
          "description": "Retrieve a single experiment by ID"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create an experiment",
          "routing": {
            "request": {
              "url": "/papi/experiments",
              "method": "POST"
            }
          },
          "description": "Create a new experiment with variations and targeting rules"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update an experiment",
          "routing": {
            "request": {
              "url": "=/papi/experiments/{{$parameter.experimentId}}",
              "method": "PATCH"
            }
          },
          "description": "Update an existing experiment"
        },
        {
          "name": "Update Status",
          "value": "updateStatus",
          "action": "Update experiment status",
          "routing": {
            "request": {
              "url": "=/papi/experiments/{{$parameter.experimentId}}/status",
              "method": "POST"
            }
          },
          "description": "Update the status of an experiment (draft, active, paused, completed)"
        },
        {
          "name": "Duplicate",
          "value": "duplicate",
          "action": "Duplicate an experiment",
          "routing": {
            "request": {
              "url": "=/papi/experiments/{{$parameter.experimentId}}/duplicate",
              "method": "POST"
            }
          },
          "description": "Create a copy of an existing experiment"
        },
        {
          "name": "Update Traffic Allocation",
          "value": "updateTrafficAllocation",
          "action": "Update traffic allocation",
          "routing": {
            "request": {
              "url": "=/papi/experiments/{{$parameter.experimentId}}/traffic-allocation",
              "method": "POST"
            }
          },
          "description": "Update traffic allocation percentages for experiment variations"
        },
        {
          "name": "Toggle Tracking",
          "value": "toggleTracking",
          "action": "Toggle experiment tracking",
          "routing": {
            "request": {
              "url": "=/papi/experiments/{{$parameter.experimentId}}/toggle-tracking",
              "method": "POST"
            }
          },
          "description": "Enable or disable tracking for an experiment"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "experiment"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAllClients",
      "options": [
        {
          "name": "Get All",
          "value": "getAllClients",
          "action": "Get all clients",
          "routing": {
            "request": {
              "url": "/papi/clients",
              "method": "GET"
            }
          },
          "description": "Retrieve all clients"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "client"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getReport",
      "options": [
        {
          "name": "Get Report",
          "value": "getReport",
          "action": "Get experiment report",
          "routing": {
            "request": {
              "qs": {
                "end_date": "{{$parameter.end_date}}",
                "start_date": "{{$parameter.start_date}}",
                "report_type": "{{$parameter.report_type}}"
              },
              "url": "=/papi/experiments/{{$parameter.experimentId}}/report",
              "method": "GET"
            }
          },
          "description": "Retrieve experiment performance report"
        },
        {
          "name": "Get Daily Report",
          "value": "getDailyReport",
          "action": "Get daily report",
          "routing": {
            "request": {
              "url": "=/papi/experiments/{{$parameter.experimentId}}/daily-report",
              "method": "GET"
            }
          },
          "description": "Retrieve daily breakdown of experiment performance"
        },
        {
          "name": "Get Raw Revenue Report",
          "value": "getRawRevenueReport",
          "action": "Get raw revenue report",
          "routing": {
            "request": {
              "url": "=/papi/experiments/{{$parameter.experimentId}}/raw-revenue-report",
              "method": "GET"
            }
          },
          "description": "Retrieve raw revenue data for experiment"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "report"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAudienceTargetingSchema",
      "options": [
        {
          "name": "Get Audience Targeting Schema",
          "value": "getAudienceTargetingSchema",
          "action": "Get audience targeting schema",
          "routing": {
            "request": {
              "url": "/papi/schema/audience-targeting",
              "method": "GET"
            }
          },
          "description": "Retrieve the schema for audience targeting rules"
        },
        {
          "name": "Get Page Targeting Schema",
          "value": "getPageTargetingSchema",
          "action": "Get page targeting schema",
          "routing": {
            "request": {
              "url": "/papi/schema/page-targeting",
              "method": "GET"
            }
          },
          "description": "Retrieve the schema for page targeting rules"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "schema"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get all experiments",
      "routing": {
        "request": {
          "url": "/papi/experiments",
          "method": "GET"
        }
      },
      "description": "Retrieve all experiments with optional filtering and pagination",
      "resource": "experiment"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get an experiment",
      "routing": {
        "request": {
          "url": "=/papi/experiments/{{$parameter.experimentId}}",
          "method": "GET"
        }
      },
      "description": "Retrieve a single experiment by ID",
      "resource": "experiment"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create an experiment",
      "routing": {
        "request": {
          "url": "/papi/experiments",
          "method": "POST"
        }
      },
      "description": "Create a new experiment with variations and targeting rules",
      "resource": "experiment"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update an experiment",
      "routing": {
        "request": {
          "url": "=/papi/experiments/{{$parameter.experimentId}}",
          "method": "PATCH"
        }
      },
      "description": "Update an existing experiment",
      "resource": "experiment"
    },
    {
      "name": "Update Status",
      "value": "updateStatus",
      "action": "Update experiment status",
      "routing": {
        "request": {
          "url": "=/papi/experiments/{{$parameter.experimentId}}/status",
          "method": "POST"
        }
      },
      "description": "Update the status of an experiment (draft, active, paused, completed)",
      "resource": "experiment"
    },
    {
      "name": "Duplicate",
      "value": "duplicate",
      "action": "Duplicate an experiment",
      "routing": {
        "request": {
          "url": "=/papi/experiments/{{$parameter.experimentId}}/duplicate",
          "method": "POST"
        }
      },
      "description": "Create a copy of an existing experiment",
      "resource": "experiment"
    },
    {
      "name": "Update Traffic Allocation",
      "value": "updateTrafficAllocation",
      "action": "Update traffic allocation",
      "routing": {
        "request": {
          "url": "=/papi/experiments/{{$parameter.experimentId}}/traffic-allocation",
          "method": "POST"
        }
      },
      "description": "Update traffic allocation percentages for experiment variations",
      "resource": "experiment"
    },
    {
      "name": "Toggle Tracking",
      "value": "toggleTracking",
      "action": "Toggle experiment tracking",
      "routing": {
        "request": {
          "url": "=/papi/experiments/{{$parameter.experimentId}}/toggle-tracking",
          "method": "POST"
        }
      },
      "description": "Enable or disable tracking for an experiment",
      "resource": "experiment"
    },
    {
      "name": "Get All",
      "value": "getAllClients",
      "action": "Get all clients",
      "routing": {
        "request": {
          "url": "/papi/clients",
          "method": "GET"
        }
      },
      "description": "Retrieve all clients",
      "resource": "client"
    },
    {
      "name": "Get Report",
      "value": "getReport",
      "action": "Get experiment report",
      "routing": {
        "request": {
          "qs": {
            "end_date": "{{$parameter.end_date}}",
            "start_date": "{{$parameter.start_date}}",
            "report_type": "{{$parameter.report_type}}"
          },
          "url": "=/papi/experiments/{{$parameter.experimentId}}/report",
          "method": "GET"
        }
      },
      "description": "Retrieve experiment performance report",
      "resource": "report"
    },
    {
      "name": "Get Daily Report",
      "value": "getDailyReport",
      "action": "Get daily report",
      "routing": {
        "request": {
          "url": "=/papi/experiments/{{$parameter.experimentId}}/daily-report",
          "method": "GET"
        }
      },
      "description": "Retrieve daily breakdown of experiment performance",
      "resource": "report"
    },
    {
      "name": "Get Raw Revenue Report",
      "value": "getRawRevenueReport",
      "action": "Get raw revenue report",
      "routing": {
        "request": {
          "url": "=/papi/experiments/{{$parameter.experimentId}}/raw-revenue-report",
          "method": "GET"
        }
      },
      "description": "Retrieve raw revenue data for experiment",
      "resource": "report"
    },
    {
      "name": "Get Audience Targeting Schema",
      "value": "getAudienceTargetingSchema",
      "action": "Get audience targeting schema",
      "routing": {
        "request": {
          "url": "/papi/schema/audience-targeting",
          "method": "GET"
        }
      },
      "description": "Retrieve the schema for audience targeting rules",
      "resource": "schema"
    },
    {
      "name": "Get Page Targeting Schema",
      "value": "getPageTargetingSchema",
      "action": "Get page targeting schema",
      "routing": {
        "request": {
          "url": "/papi/schema/page-targeting",
          "method": "GET"
        }
      },
      "description": "Retrieve the schema for page targeting rules",
      "resource": "schema"
    }
  ]

npm_readme:
  # n8n-nodes-varify

  This is an n8n community node. It lets you use [Varify.io](https://varify.io/) in your n8n workflows.

  Varify.io is an A/B testing platform. This node allows you to manage experiments, control traffic allocation, and retrieve targeting schemas through the Varify API.

  [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/sustainable-use-license/) workflow automation platform.

  [Installation](#installation)
  [Operations](#operations)
  [Credentials](#credentials)
  [Compatibility](#compatibility)
  [Resources](#resources)

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

  ## Operations

  ### Experiment

  - **Get Many** - Retrieve all experiments with filtering, sorting, and pagination
  - **Get** - Retrieve a single experiment by ID
  - **Create** - Create a new experiment with variations and targeting rules
  - **Update** - Update an existing experiment
  - **Update Status** - Change experiment status (active, paused, archived, etc.)
  - **Duplicate** - Create a copy of an existing experiment
  - **Update Traffic Allocation** - Update traffic allocation percentages for variations
  - **Toggle Tracking** - Enable or disable tracking for an experiment

  ### Schema

  - **Get Audience Targeting Schema** - Retrieve the schema for audience targeting rules
  - **Get Page Targeting Schema** - Retrieve the schema for page targeting rules

  ## Credentials

  This node authenticates via **OAuth2** using client credentials.

  1. Log in to your [Varify.io](https://app.varify.io/) account.
  2. Obtain your OAuth2 **Client ID** and **Client Secret** from your account settings.
  3. In n8n, create a new **varify.io OAuth2 API** credential and enter your Client ID and Client Secret.

  Refer to the [Varify.io API documentation](https://varify.io/userdocumentation/experiment-api/) for more information.

  ## Compatibility

  Tested with n8n v1.60.0 and later.

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [Varify.io API documentation](https://varify.io/userdocumentation/experiment-api/)
  - [Varify.io OpenAPI docs](https://developers.varify.io/)

ai_documentation_summary:
  {"purpose":"This n8n community node enables integration with Varify.io, an A/B testing platform, allowing users to manage experiments, control traffic allocation, and retrieve targeting schemas within workflows.","capabilities":["Retrieve all experiments with filtering, sorting, and pagination","Retrieve a single experiment by ID","Create a new experiment with variations and targeting rules","Update an existing experiment","Change experiment status (active, paused, archived)","Create a copy of an existing experiment","Update traffic allocation percentages for variations","Enable or disable tracking for an experiment","Retrieve audience targeting schema","Retrieve page targeting schema"],"authentication":"OAuth2 (client credentials)","commonUseCases":["Automate A/B test creation and management","Dynamically adjust traffic allocation based on workflow triggers","Integrate audience targeting rules into marketing automation flows"],"limitations":["Requires n8n v1.60.0 or later","Dependent on external Varify.io API availability and rate limits"],"relatedNodes":[]}


node_type: n8n-nodes-tia.tia
package_name: n8n-nodes-tia
display_name: TIA
description: Interact with the TIA API for timesheets, users, and invoice lines
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: nielstroobantsda
author_github_url: https://github.com/Dots-And-Arrows/n8n-custom-node-tia.git
npm_package_name: n8n-nodes-tia
npm_version: 0.4.4
community_fetched_at: 2026-07-14T14:40:34.139Z
ai_summary_generated_at: 2026-05-02 08:57:17
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "timesheet",
      "options": [
        {
          "name": "Invoice Line",
          "value": "invoiceLine",
          "description": "Search and manage invoice lines"
        },
        {
          "name": "Timesheet",
          "value": "timesheet",
          "description": "Operations on timesheets (Uren)"
        },
        {
          "name": "User",
          "value": "user",
          "description": "Get user details"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many timesheets",
          "description": "Get many timesheets for a specific month and year"
        },
        {
          "name": "Get By Period",
          "value": "getByPeriod",
          "action": "Get timesheets by period",
          "description": "Get timesheets between two dates"
        },
        {
          "name": "Get By User",
          "value": "getByUser",
          "action": "Get timesheets by user",
          "description": "Get timesheets for a specific user, month, and year"
        },
        {
          "name": "Get Completion Status",
          "value": "getCompletionStatus",
          "action": "Get timesheet completion status",
          "description": "Get timesheet completion status for all employees in a company"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "timesheet"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many users",
          "description": "Get many users within bewire"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Search",
          "value": "search",
          "action": "Search invoice lines",
          "description": "Search for invoice lines"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "invoiceLine"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many timesheets",
      "description": "Get many timesheets for a specific month and year",
      "resource": "timesheet"
    },
    {
      "name": "Get By Period",
      "value": "getByPeriod",
      "action": "Get timesheets by period",
      "description": "Get timesheets between two dates",
      "resource": "timesheet"
    },
    {
      "name": "Get By User",
      "value": "getByUser",
      "action": "Get timesheets by user",
      "description": "Get timesheets for a specific user, month, and year",
      "resource": "timesheet"
    },
    {
      "name": "Get Completion Status",
      "value": "getCompletionStatus",
      "action": "Get timesheet completion status",
      "description": "Get timesheet completion status for all employees in a company",
      "resource": "timesheet"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many users",
      "description": "Get many users within bewire",
      "resource": "user"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search invoice lines",
      "description": "Search for invoice lines",
      "resource": "invoiceLine"
    }
  ]

npm_readme:
  # n8n-nodes-tia

  This is an n8n community node. It lets you use the **TIA (Time & Invoice Administration)** API in your n8n workflows.

  TIA is a time registration and invoice management platform by Cronos. This node allows you to retrieve timesheet data, manage invoice lines, and access user information from the TIA API.

  [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/sustainable-use-license/) workflow automation platform.

  [Installation](#installation) |
  [Operations](#operations) |
  [Credentials](#credentials) |
  [Compatibility](#compatibility) |
  [Usage](#usage) |
  [Resources](#resources) |
  [Version history](#version-history)

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

  ### Local Development

  ```bash
  # Install dependencies
  npm install

  # Build before you run
  npm run build

  # Start n8n with the custom node loaded (recommended)

  npm run dev

  # Alternative: use globally installed n8n

  npm run dev:local
  ```

  ## Operations

  ### Timesheet

  | Operation                 | Description                                                    |
  | ------------------------- | -------------------------------------------------------------- |
  | **Get Many**              | Retrieve all timesheets for a specific month and year          |
  | **Get By Period**         | Retrieve timesheets between a start and end date               |
  | **Get By User**           | Retrieve timesheets for a specific user by month and year      |
  | **Get Completion Status** | Get timesheet completion status for all employees in a company |

  All timesheet operations support:

  - **Return All**: Fetch all results with automatic pagination
  - **Limit**: Restrict the number of returned results (default: 10)

  ### User

  | Operation    | Description                            |
  | ------------ | -------------------------------------- |
  | **Get Many** | Retrieve all users from the TIA system |

  ### Invoice Line

  | Operation  | Description                                                           |
  | ---------- | --------------------------------------------------------------------- |
  | **Search** | Search and filter invoice lines with optional date and status filters |

  **Available Filters:**

  - **Created After**: Return invoice lines created on or after a specific date
  - **Status ID**: Filter by invoice line status
    - `Any`: No status filter (returns all)
    - `Invoiced (6)`: Only invoiced lines
    - `Proforma / Draft (1)`: Only draft/proforma lines

  **Pagination Options:**

  - **Return All**: Fetch all matching results with automatic pagination
  - **Limit**: Restrict the number of returned results (default: 50, applied client-side)

  > **Note:** The TIA API returns invoice lines in different formats depending on query parameters. The node automatically detects and handles these formats.

  ## Credentials

  To use this node you need the following credentials from your TIA administrator:

  | Field        | Description                                      |
  | ------------ | ------------------------------------------------ |
  | **Base URL** | The TIA API endpoint                             |
  | **API Key**  | Your TIA API key (used in the `X-apikey` header) |
  | **Username** | Your TIA username                                |
  | **Password** | Your TIA password                                |

  The node uses token-based authentication:

  1. Credentials are exchanged for a temporary access token via `/v1/Token`
  2. The token is cached and reused until it expires (with a 5-minute safety buffer)
  3. Expired tokens are automatically refreshed

  > **Tip:** If your API key or password contains special characters (like quotes), use "Expression" mode in n8n instead of "Fixed" mode.

  ## Compatibility

  - Tested with n8n version **2.6.4** and **2.8.3**
  - Requires Node.js **v18** or higher

  ## Usage

  1. Add the **TIA** node to your workflow
  2. Configure your TIA API credentials
  3. Select a resource (**Timesheet**, **User**, or **Invoice Line**)
  4. Choose an operation
  5. Fill in the required parameters (dates, filters, etc.)
  6. Execute the workflow

  > **Tip:** For the "Get By User" operation, use the **User > Get Many** operation first to find available usernames.

  ### Date Format (Get By Period)

  The TIA API expects dates in the format `yyyy-MM-dd HH:mm:ss:ffZ`. The node handles this conversion automatically - just select your dates using the n8n date picker.

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [TIA API documentation (Swagger)](https://api.staging.tia.cronos.be/scalar/v1)
  - [GitHub repository](https://github.com/Dots-And-Arrows/n8n-custom-node-tia)

  ## Version history

  ### 0.4.4 (Apr 30, 2026)

  - Removed dead `requestDefaults` block from node description (n8n verification requirement)
  - Removed unused `loadOptions.getUsers` method (dead code since user dropdown removal)
  - Moved `getCredentials()` call to `execute()` and pass credentials as parameter to API helpers (n8n linter compliance)

  ### 0.4.0

  - **Timesheet Completion Status** operation for checking which employees have completed their timesheets
  - Changed username field from dynamic dropdown to plain text input for AI Agent compatibility
  - Updated README and DEVELOPER.md to reflect dropdown removal

  ### 0.3.0

  - **Invoice Line resource** with Search operation
    - Filter by creation date (Created After)
    - Filter by status (Invoiced, Proforma/Draft, or Any)
    - Client-side limit support
    - Automatic detection and handling of different API response formats
  - Changed default limit from 50 to 10 across all resources
  - Added 404 and 429 error handling
  - Added DEVELOPER.md with comprehensive developer guide

  ### 0.2.0

  - **User resource** with Get Many operation
  - Dynamic username dropdown for Get By User (loads usernames from API)
  - Added Dots & Arrows logo

  ### 0.1.0

  - Initial release
  - **Timesheet resource** with Get Many, Get By Period, and Get By User operations
  - Token-based authentication with automatic caching and refresh
  - Pagination support for large datasets
  - Date format conversion for Get By Period

ai_documentation_summary:
  {"purpose":"Interact with the TIA (Time & Invoice Administration) API to retrieve timesheet data, manage invoice lines, and access user information within n8n workflows.","capabilities":["Retrieve all timesheets for a specific month and year","Retrieve timesheets between a start and end date","Retrieve timesheets for a specific user by month and year","Get timesheet completion status for all employees","Retrieve all users from the TIA system","Search and filter invoice lines by creation date and status","Automatic pagination handling with 'Return All' option","Client-side result limiting","Automatic token refresh for authentication"],"authentication":"API key and Basic Auth (Username/Password) with token-based exchange","commonUseCases":["Automating timesheet data collection and reporting","Tracking employee timesheet completion status","Generating reports based on invoice line statuses","Synchronizing user data from TIA into other systems"],"limitations":["Requires Node.js v18 or higher","Username field changed to plain text input in version 0.4.0 (no dynamic dropdown for AI Agent compatibility)","Date format conversion is automatic but requires specific input format from API (yyyy-MM-dd HH:mm:ss:ffZ)"],"relatedNodes":[]}


node_type: @backgrounderase/n8n-nodes-backgrounderase.backgroundErase
package_name: @backgrounderase/n8n-nodes-backgrounderase
display_name: BackgroundErase
description: Remove image backgrounds with BackgroundErase
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: jack_spruyt
author_github_url: https://github.com/BackgroundErase/no-code-integrations.git
npm_package_name: @backgrounderase/n8n-nodes-backgrounderase
npm_version: 0.1.9
community_fetched_at: 2026-07-14T14:40:34.140Z
ai_summary_generated_at: 2026-05-02 08:57:17
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "removeBackgroundFromFile",
      "options": [
        {
          "name": "Make an API Call",
          "value": "makeApiCall",
          "action": "Make an API call",
          "description": "Perform an arbitrary authorized BackgroundErase API call"
        },
        {
          "name": "Remove Background From File",
          "value": "removeBackgroundFromFile",
          "action": "Remove background from file",
          "description": "Upload an image file to BackgroundErase and return the processed image"
        },
        {
          "name": "Remove Background From Image URL",
          "value": "removeBackgroundFromImageUrl",
          "action": "Remove background from image URL",
          "description": "Download an image from a public or signed URL and return the processed image"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Make an API Call",
      "value": "makeApiCall",
      "action": "Make an API call",
      "description": "Perform an arbitrary authorized BackgroundErase API call"
    },
    {
      "name": "Remove Background From File",
      "value": "removeBackgroundFromFile",
      "action": "Remove background from file",
      "description": "Upload an image file to BackgroundErase and return the processed image"
    },
    {
      "name": "Remove Background From Image URL",
      "value": "removeBackgroundFromImageUrl",
      "action": "Remove background from image URL",
      "description": "Download an image from a public or signed URL and return the processed image"
    }
  ]

npm_readme:
  # @backgrounderase/n8n-nodes-backgrounderase

  n8n community node for the BackgroundErase background removal API.

  The node uses `https://api.backgrounderase.com`, authenticates with the `x-api-key` header, and sends the dedicated image operations to `POST /v2` as `multipart/form-data`.

  ## Operations

  ### Remove Background From File

  Use this when a previous n8n node provides binary image data, such as Google Drive, Dropbox, an email attachment, a webhook upload, or an HTTP Request download.

  Inputs:

  - `Input Binary Property`
  - `File Name`
  - `Output Binary Property`
  - `Output Type`
  - `Output Format`
  - `Size`
  - `Crop to Subject`
  - `Remove Green Spill`
  - `Background Color`

  Outputs:

  - JSON metadata: `name`, `mime_type`, `billing_model`, `usage_unit`, `billable_units`
  - Binary image data on the configured output binary property

  ### Remove Background From Image URL

  Use this when the workflow already has a public or signed image URL, such as an Airtable attachment URL, Shopify product image URL, Webflow CMS image URL, Google Sheets row value, or webhook payload.

  The URL must be reachable by BackgroundErase's backend. Private Google Drive links, expired signed URLs, login-protected URLs, or internal network URLs may fail. Use Remove Background From File for those cases.

  Inputs:

  - `Image URL`
  - `Output Base Name`
  - `Output Binary Property`
  - `Output Type`
  - `Output Format`
  - `Size`
  - `Crop to Subject`
  - `Remove Green Spill`
  - `Background Color`

  Outputs:

  - JSON metadata: `name`, `mime_type`, `billing_model`, `usage_unit`, `billable_units`, `source_url`
  - Binary image data on the configured output binary property

  ### Make an API Call

  Advanced operation for calling authorized BackgroundErase API endpoints directly. Use `/v2/account` for a quick smoke test.

  ## Local Development

  ```bash
  cd packages/n8n
  nvm use
  npm install
  npm run build
  npm run lint
  npm run dev
  ```

  `npm run dev` starts a local n8n instance with this node loaded. Open `http://localhost:5678`, add the BackgroundErase node to a workflow, create a BackgroundErase API credential, and test each operation.

  Published package name:

  ```text
  @backgrounderase/n8n-nodes-backgrounderase
  ```

  ## Billing Language

  BackgroundErase uses metered monthly billing. Each successfully processed image is counted as one billable image. The node output includes `billing_model`, `usage_unit`, and `billable_units` so teams can understand how workflow executions map to BackgroundErase usage.

ai_documentation_summary:
  {"purpose":"Removes backgrounds from images using the BackgroundErase API, supporting both file uploads and image URLs with various customization options.","capabilities":["Remove background from binary file data","Remove background from public or signed image URLs","Crop image to subject","Remove green spill color","Set custom background color","Resize output images","Convert output image format","Direct API endpoint calls for advanced operations","Returns JSON metadata including billing information"],"authentication":"API key required (x-api-key header)","commonUseCases":["Product image processing for e-commerce","Automated document scanning preparation","Profile photo background removal","Image cleanup for social media content","Batch processing of uploaded attachments"],"limitations":["Image URLs must be publicly reachable by the BackgroundErase backend","Private Google Drive links, expired signed URLs, login-protected URLs, and internal network URLs will fail","Requires a paid BackgroundErase account for API access"],"relatedNodes":["Google Drive","Dropbox","Email Attachment","Webhook","HTTP Request"]}


node_type: @orq-ai/n8n-nodes-orq.orqKnowledgeBaseSearch
package_name: @orq-ai/n8n-nodes-orq
display_name: Orq Knowledge Base Search
description: Search content in an Orq.ai knowledge base
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: sohrabhosseini
author_github_url: https://github.com/orq-ai/orqkit.git
npm_package_name: @orq-ai/n8n-nodes-orq
npm_version: 1.3.2
community_fetched_at: 2026-07-14T14:40:34.142Z
ai_summary_generated_at: 2026-05-02 08:57:17
npm_readme:
  # @orq-ai/n8n-nodes-orq

  Community nodes for integrating [Orq AI](https://orq.ai) with n8n workflows. These nodes provide seamless access to Orq AI's deployment and knowledge base capabilities within your automation workflows.

  ## Features

  - **Agent Execution**: Run Orq AI Agents for complex, multi-step workflows
  - **Deployment Invocation**: Execute Orq AI deployments with messages, context, and inputs
  - **Knowledge Base Search**: Search and retrieve content from Orq knowledge bases
  - **Dynamic Configuration**: Automatically load available agents, deployments, and knowledge bases
  - **Multi-modal Support**: Send text and image content to vision-capable models
  - **Metadata Filtering**: Advanced filtering options for knowledge base searches
  - **Error Handling**: Built-in error handling with continue-on-fail support

  ## Installation

  ### Community Node Installation

  Follow the [n8n community nodes installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) to install this package.

  ### Manual Installation

  ```bash
  bun add @orq-ai/n8n-nodes-orq
  ```

  ### Docker Installation

  If using n8n with Docker, set the environment variable:

  ```bash
  N8N_COMMUNITY_NODE_PACKAGES=@orq-ai/n8n-nodes-orq
  ```

  ### Local Development Installation

  For local development and testing with n8n:

  1. Clone and navigate to the package:

  ```bash
  git clone https://github.com/orq-ai/orqkit.git
  cd orqkit/packages/n8n-nodes-orq
  ```

  2. Install dependencies:

  ```bash
  bun install
  ```

  3. Build the nodes:

  ```bash
  bunx nx build n8n-nodes-orq
  ```

  4. Start n8n with custom nodes:

  ```bash
  N8N_CUSTOM_EXTENSIONS="$(pwd)" n8n start
  ```

  The nodes will appear as "OrqAgent", "OrqDeployment" and "OrqKnowledgeBaseSearch" in the n8n node panel.

  ## Authentication

  1. Sign up or log in at [Orq AI](https://orq.ai)
  2. Navigate to your account settings to generate an API key
  3. In n8n, create new credentials:
     - Go to **Credentials** → **New**
     - Select **Orq API**
     - Enter your API key
     - Save the credentials

  ## Available Nodes

  ### Orq Agent

  Run Orq AI Agents for complex, long-running tasks with multi-step reasoning and tool use.

  #### How It Works

  1. **Run**: Send a message to an agent
  2. **Execute**: The server runs the agent turn (including any tools it has configured) and returns when done
  3. **Retrieve Results**: Extract the final agent response

  #### Configuration

  - **Agent**: Select from your available agents or specify via expression
  - **Message**: Send your instruction or data to the agent
  - **Timeout (Seconds)**: How long to wait for the agent to finish (default 600)

  **Additional Fields** (optional)
  - **Previous Response ID**: Continue from a prior response by passing its `responseId`
  - **Conversation ID**: Thread multiple calls into a long-lived conversation (pre-create via the Orq API; mutually exclusive with Previous Response ID)
  - **Memory Entity ID**: Attach a persistent memory entity so the agent can recall facts across calls
  - **Store Response**: Whether Orq persists this response server-side (default on)
  - **Variables**: Templated prompt variables; each row has Name, Value, and a Secret toggle for log redaction
  - **Metadata**: Key-value tags (max 16 pairs)

  #### Response Statuses

  The node branches on the agent's final status:

  - `completed` — success, response text extracted
  - `incomplete` — partial response returned with an `incomplete` flag
  - `failed` — throws with the server error message

  #### Output

  The node returns:

  - **responseId**: Unique identifier for this response (use as Previous Response ID in a downstream node)
  - **agentKey**: The agent that was invoked
  - **status**: Final status (`completed` or `incomplete`)
  - **success**: Boolean indicating if the response completed successfully
  - **response**: The agent's response text
  - **raw**: Full response body for anything else you need
  - **usage**: Token counts, when present
  - **refusals**: Array of refusal strings, when present
  - **incomplete**: `true` when status is `incomplete`
  - **incompleteReason**: Reason for the incomplete status, when present

  #### Example Use Cases

  - Data analysis and insights generation
  - Complex document processing
  - Multi-step reasoning tasks
  - Tool use and function calling

  #### Example Workflow

  ```yaml
  1. Set Node (Create data)
     - csvData: "Month,Sales\nJan,10000..."
  2. Orq Agent
     - Agent: "data-analyst"
     - Message: "Analyze this sales data and provide insights"
  3. Email Send
     - Body: "{{ $node["Orq Agent"].json.response }}"
  ```

  #### When to Use Orq Agent vs Orq Deployment

  These n8n nodes connect to different resource types in your Orq workspace:

  **Use Orq Agent when you need:**
  - **Tools & Actions**: Agent can call HTTP APIs, run Python code, or use built-in utilities
  - **Autonomous Iteration**: Agent works through multi-step problems independently to reach the final output

  **Use Orq Deployment when you need:**
  - **Direct LLM Calls**: Single prompt-to-response execution
  - **No Tool Complexity**: Just generate text without external actions
  - **Template Variables**: Parameterized prompts with inputs

  **Key Difference**: In Orq, Agents have access to tools and can autonomously iterate to solve problems, while Deployments are single LLM calls without tools or autonomous iteration.

  ### Orq Deployment

  Invoke Orq AI deployments to process messages with AI models.

  #### Configuration

  - **Deployment Key**: Select from your available deployments or specify via expression
  - **Messages**: Add conversation messages with roles (User, System, Assistant)
  - **Context**: Set key-value pairs for deployment routing
  - **Inputs**: Provide values for prompt template variables

  #### Message Types

  - **Text Messages**: Standard text content for all roles
  - **Image Messages**: For User role only, supporting:
    - Image URLs
    - Base64 encoded images
    - Optional text descriptions with images

  #### Example Use Cases

  - Generate content based on templates
  - Process customer inquiries
  - Analyze images with vision models
  - Chain multiple AI operations

  ### Orq Knowledge Base Search

  Search and retrieve relevant content from your Orq knowledge bases.

  #### Configuration

  - **Knowledge Base**: Select from your available knowledge bases
  - **Query**: Search query to find relevant content
  - **Metadata Filters**: Optional filtering with AND/OR conditions or custom JSON

  #### Filter Types

  - **None**: No filtering, return all matching results
  - **AND**: All filter conditions must match
  - **OR**: Any filter condition must match
  - **Custom JSON**: Advanced recursive filter structures

  #### Example Use Cases

  - Semantic search across documents
  - Context retrieval for RAG applications
  - Content discovery and recommendations
  - Metadata-based filtering

  ## Workflow Examples

  ### Agent-Based Data Analysis

  ```yaml
  1. Manual Trigger
  2. Set Node
     - csvData: "Month,Sales,Region\nJan,10000,North..."
  3. Orq Agent
     - Agent: "data-analyst"
     - Message: "Analyze this sales data by region and provide growth rates"
  4. Email Send
     - Subject: "Sales Analysis Report"
     - Body: "{{ $node["Orq Agent"].json.response }}"
  ```

  ### Basic Text Generation

  ```yaml
  1. Trigger (e.g., Webhook)
  2. Orq Deployment
     - Deployment: "content-generator"
     - Input: { topic: "{{$json.topic}}" }
     - Message: "Generate an article"
  3. Output (e.g., Google Sheets)
  ```

  ### Knowledge-Enhanced Response

  ```yaml
  1. Trigger (e.g., Form submission)
  2. Orq Knowledge Base Search
     - Query: "{{$json.question}}"
     - Knowledge Base: "product-docs"
  3. Orq Deployment
     - Context from search results
     - Generate informed response
  4. Send response (e.g., Email)
  ```

  ### Image Analysis Pipeline

  ```yaml
  1. Image input (e.g., S3 trigger)
  2. Orq Deployment
  - Vision model deployment
  - Image URL from trigger
  - Analyze and extract data
  3. Store results (e.g., Database)
  ```

  ## Development

  ```bash
  # Build the package
  bunx nx build n8n-nodes-orq

  # Run development mode
  bunx nx dev n8n-nodes-orq

  # Test locally with n8n
  bun run test:local
  ```

  ## Resources

  - [n8n Documentation](https://docs.n8n.io)
  - [n8n Community Nodes](https://docs.n8n.io/integrations/community-nodes/)
  - [Orq AI Documentation](https://docs.orq.ai)
  - [Orq AI Platform](https://orq.ai)

ai_documentation_summary:
  {"purpose":"Searches and retrieves content from an Orq.ai knowledge base within n8n workflows, supporting advanced filtering and metadata options.","capabilities":["Search knowledge base content","Apply metadata filtering","Retrieve documents and information","Integrate with Orq AI ecosystem"],"authentication":"API key required","commonUseCases":["Retrieving specific documents from a knowledge base","Answering questions based on stored knowledge","Filtering search results by metadata tags"],"limitations":["Requires active Orq.ai account and API key","Search results depend on existing knowledge base configuration"],"relatedNodes":["Orq Agent","Orq Deployment"]}


node_type: @orq-ai/n8n-nodes-orq.orqAgent
package_name: @orq-ai/n8n-nodes-orq
display_name: Orq Agent
description: Invoke an Orq AI Agent
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: sohrabhosseini
author_github_url: https://github.com/orq-ai/orqkit.git
npm_package_name: @orq-ai/n8n-nodes-orq
npm_version: 1.3.2
community_fetched_at: 2026-07-14T14:40:34.143Z
ai_summary_generated_at: 2026-05-02 08:57:17
npm_readme:
  # @orq-ai/n8n-nodes-orq

  Community nodes for integrating [Orq AI](https://orq.ai) with n8n workflows. These nodes provide seamless access to Orq AI's deployment and knowledge base capabilities within your automation workflows.

  ## Features

  - **Agent Execution**: Run Orq AI Agents for complex, multi-step workflows
  - **Deployment Invocation**: Execute Orq AI deployments with messages, context, and inputs
  - **Knowledge Base Search**: Search and retrieve content from Orq knowledge bases
  - **Dynamic Configuration**: Automatically load available agents, deployments, and knowledge bases
  - **Multi-modal Support**: Send text and image content to vision-capable models
  - **Metadata Filtering**: Advanced filtering options for knowledge base searches
  - **Error Handling**: Built-in error handling with continue-on-fail support

  ## Installation

  ### Community Node Installation

  Follow the [n8n community nodes installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) to install this package.

  ### Manual Installation

  ```bash
  bun add @orq-ai/n8n-nodes-orq
  ```

  ### Docker Installation

  If using n8n with Docker, set the environment variable:

  ```bash
  N8N_COMMUNITY_NODE_PACKAGES=@orq-ai/n8n-nodes-orq
  ```

  ### Local Development Installation

  For local development and testing with n8n:

  1. Clone and navigate to the package:

  ```bash
  git clone https://github.com/orq-ai/orqkit.git
  cd orqkit/packages/n8n-nodes-orq
  ```

  2. Install dependencies:

  ```bash
  bun install
  ```

  3. Build the nodes:

  ```bash
  bunx nx build n8n-nodes-orq
  ```

  4. Start n8n with custom nodes:

  ```bash
  N8N_CUSTOM_EXTENSIONS="$(pwd)" n8n start
  ```

  The nodes will appear as "OrqAgent", "OrqDeployment" and "OrqKnowledgeBaseSearch" in the n8n node panel.

  ## Authentication

  1. Sign up or log in at [Orq AI](https://orq.ai)
  2. Navigate to your account settings to generate an API key
  3. In n8n, create new credentials:
     - Go to **Credentials** → **New**
     - Select **Orq API**
     - Enter your API key
     - Save the credentials

  ## Available Nodes

  ### Orq Agent

  Run Orq AI Agents for complex, long-running tasks with multi-step reasoning and tool use.

  #### How It Works

  1. **Run**: Send a message to an agent
  2. **Execute**: The server runs the agent turn (including any tools it has configured) and returns when done
  3. **Retrieve Results**: Extract the final agent response

  #### Configuration

  - **Agent**: Select from your available agents or specify via expression
  - **Message**: Send your instruction or data to the agent
  - **Timeout (Seconds)**: How long to wait for the agent to finish (default 600)

  **Additional Fields** (optional)
  - **Previous Response ID**: Continue from a prior response by passing its `responseId`
  - **Conversation ID**: Thread multiple calls into a long-lived conversation (pre-create via the Orq API; mutually exclusive with Previous Response ID)
  - **Memory Entity ID**: Attach a persistent memory entity so the agent can recall facts across calls
  - **Store Response**: Whether Orq persists this response server-side (default on)
  - **Variables**: Templated prompt variables; each row has Name, Value, and a Secret toggle for log redaction
  - **Metadata**: Key-value tags (max 16 pairs)

  #### Response Statuses

  The node branches on the agent's final status:

  - `completed` — success, response text extracted
  - `incomplete` — partial response returned with an `incomplete` flag
  - `failed` — throws with the server error message

  #### Output

  The node returns:

  - **responseId**: Unique identifier for this response (use as Previous Response ID in a downstream node)
  - **agentKey**: The agent that was invoked
  - **status**: Final status (`completed` or `incomplete`)
  - **success**: Boolean indicating if the response completed successfully
  - **response**: The agent's response text
  - **raw**: Full response body for anything else you need
  - **usage**: Token counts, when present
  - **refusals**: Array of refusal strings, when present
  - **incomplete**: `true` when status is `incomplete`
  - **incompleteReason**: Reason for the incomplete status, when present

  #### Example Use Cases

  - Data analysis and insights generation
  - Complex document processing
  - Multi-step reasoning tasks
  - Tool use and function calling

  #### Example Workflow

  ```yaml
  1. Set Node (Create data)
     - csvData: "Month,Sales\nJan,10000..."
  2. Orq Agent
     - Agent: "data-analyst"
     - Message: "Analyze this sales data and provide insights"
  3. Email Send
     - Body: "{{ $node["Orq Agent"].json.response }}"
  ```

  #### When to Use Orq Agent vs Orq Deployment

  These n8n nodes connect to different resource types in your Orq workspace:

  **Use Orq Agent when you need:**
  - **Tools & Actions**: Agent can call HTTP APIs, run Python code, or use built-in utilities
  - **Autonomous Iteration**: Agent works through multi-step problems independently to reach the final output

  **Use Orq Deployment when you need:**
  - **Direct LLM Calls**: Single prompt-to-response execution
  - **No Tool Complexity**: Just generate text without external actions
  - **Template Variables**: Parameterized prompts with inputs

  **Key Difference**: In Orq, Agents have access to tools and can autonomously iterate to solve problems, while Deployments are single LLM calls without tools or autonomous iteration.

  ### Orq Deployment

  Invoke Orq AI deployments to process messages with AI models.

  #### Configuration

  - **Deployment Key**: Select from your available deployments or specify via expression
  - **Messages**: Add conversation messages with roles (User, System, Assistant)
  - **Context**: Set key-value pairs for deployment routing
  - **Inputs**: Provide values for prompt template variables

  #### Message Types

  - **Text Messages**: Standard text content for all roles
  - **Image Messages**: For User role only, supporting:
    - Image URLs
    - Base64 encoded images
    - Optional text descriptions with images

  #### Example Use Cases

  - Generate content based on templates
  - Process customer inquiries
  - Analyze images with vision models
  - Chain multiple AI operations

  ### Orq Knowledge Base Search

  Search and retrieve relevant content from your Orq knowledge bases.

  #### Configuration

  - **Knowledge Base**: Select from your available knowledge bases
  - **Query**: Search query to find relevant content
  - **Metadata Filters**: Optional filtering with AND/OR conditions or custom JSON

  #### Filter Types

  - **None**: No filtering, return all matching results
  - **AND**: All filter conditions must match
  - **OR**: Any filter condition must match
  - **Custom JSON**: Advanced recursive filter structures

  #### Example Use Cases

  - Semantic search across documents
  - Context retrieval for RAG applications
  - Content discovery and recommendations
  - Metadata-based filtering

  ## Workflow Examples

  ### Agent-Based Data Analysis

  ```yaml
  1. Manual Trigger
  2. Set Node
     - csvData: "Month,Sales,Region\nJan,10000,North..."
  3. Orq Agent
     - Agent: "data-analyst"
     - Message: "Analyze this sales data by region and provide growth rates"
  4. Email Send
     - Subject: "Sales Analysis Report"
     - Body: "{{ $node["Orq Agent"].json.response }}"
  ```

  ### Basic Text Generation

  ```yaml
  1. Trigger (e.g., Webhook)
  2. Orq Deployment
     - Deployment: "content-generator"
     - Input: { topic: "{{$json.topic}}" }
     - Message: "Generate an article"
  3. Output (e.g., Google Sheets)
  ```

  ### Knowledge-Enhanced Response

  ```yaml
  1. Trigger (e.g., Form submission)
  2. Orq Knowledge Base Search
     - Query: "{{$json.question}}"
     - Knowledge Base: "product-docs"
  3. Orq Deployment
     - Context from search results
     - Generate informed response
  4. Send response (e.g., Email)
  ```

  ### Image Analysis Pipeline

  ```yaml
  1. Image input (e.g., S3 trigger)
  2. Orq Deployment
  - Vision model deployment
  - Image URL from trigger
  - Analyze and extract data
  3. Store results (e.g., Database)
  ```

  ## Development

  ```bash
  # Build the package
  bunx nx build n8n-nodes-orq

  # Run development mode
  bunx nx dev n8n-nodes-orq

  # Test locally with n8n
  bun run test:local
  ```

  ## Resources

  - [n8n Documentation](https://docs.n8n.io)
  - [n8n Community Nodes](https://docs.n8n.io/integrations/community-nodes/)
  - [Orq AI Documentation](https://docs.orq.ai)
  - [Orq AI Platform](https://orq.ai)

ai_documentation_summary:
  {"purpose":"Executes Orq AI Agents for complex, multi-step workflows involving tool use, autonomous iteration, and long-running tasks within n8n automation.","capabilities":["Run Orq AI Agents with multi-step reasoning","Execute deployments with messages, context, and inputs","Search and retrieve content from Orq knowledge bases","Support multi-modal inputs (text and images)","Apply advanced metadata filtering for knowledge base searches","Handle errors with continue-on-fail support","Manage persistent conversations via Conversation ID","Attach memory entities for cross-call fact recall","Support templated prompt variables with secret redaction","Retrieve token usage and refusal details"],"authentication":"API key required","commonUseCases":["Data analysis and insights generation","Complex document processing","Multi-step reasoning tasks","Tool use and function calling","Autonomous problem solving"],"limitations":["Requires separate Orq AI account and API key","Conversation ID and Previous Response ID are mutually exclusive","Metadata filtering limited to 16 key-value pairs","Image messages only supported for User role in Deployments","Timeout defaults to 600 seconds for agent execution"],"relatedNodes":["Orq Deployment","Orq Knowledge Base Search"]}


node_type: n8n-nodes-veryfi.veryfi
package_name: n8n-nodes-veryfi
display_name: Veryfi
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: birulia
author_github_url: https://github.com/veryfi/
npm_package_name: n8n-nodes-veryfi
npm_version: 0.1.2
community_fetched_at: 2026-07-14T14:40:34.144Z
ai_summary_generated_at: 2026-05-22 10:26:01
description:
  Extract data from invoices, receipts, checks, bank statements, W-9/W-2, IDs, and any document via Veryfi

properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "document",
      "options": [
        {
          "name": "Document",
          "value": "document"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "extractInvoice",
      "options": [
        {
          "name": "Classify Document",
          "value": "classifyDocument",
          "action": "Classify a document",
          "description": "Classify a document into one of Veryfi's document types"
        },
        {
          "name": "Extract Data From Any Document",
          "value": "extractAnyDocument",
          "action": "Extract data from any document via blueprint",
          "description": "Extract structured data using any Veryfi blueprint available to your account"
        },
        {
          "name": "Extract Data From Bank Statement",
          "value": "extractBankStatement",
          "action": "Extract data from a bank statement",
          "description": "Extract account holder, balances, statement period, and transactions"
        },
        {
          "name": "Extract Data From Check",
          "value": "extractCheck",
          "action": "Extract data from a check",
          "description": "Extract payer, payee, MICR, amounts, and endorsement info from a US bank check"
        },
        {
          "name": "Extract Data From Driver License",
          "value": "extractDriverLicense",
          "action": "Extract data from a driver license",
          "description": "Extract personal data from a US driver license image"
        },
        {
          "name": "Extract Data From Invoice",
          "value": "extractInvoice",
          "action": "Extract data from an invoice",
          "description": "Extract structured data from an invoice"
        },
        {
          "name": "Extract Data From Passport",
          "value": "extractPassport",
          "action": "Extract data from a passport",
          "description": "Extract personal data from a passport image"
        },
        {
          "name": "Extract Data From Receipt",
          "value": "extractReceipt",
          "action": "Extract data from a receipt",
          "description": "Extract structured data from a receipt"
        },
        {
          "name": "Extract Data From W-2",
          "value": "extractW2",
          "action": "Extract data from a W-2 form",
          "description": "Extract wage and tax information from an IRS Form W-2"
        },
        {
          "name": "Extract Data From W-9",
          "value": "extractW9",
          "action": "Extract data from a W-9 form",
          "description": "Extract taxpayer information from an IRS Form W-9"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "document"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Classify Document",
      "value": "classifyDocument",
      "action": "Classify a document",
      "description": "Classify a document into one of Veryfi's document types",
      "resource": "document"
    },
    {
      "name": "Extract Data From Any Document",
      "value": "extractAnyDocument",
      "action": "Extract data from any document via blueprint",
      "description": "Extract structured data using any Veryfi blueprint available to your account",
      "resource": "document"
    },
    {
      "name": "Extract Data From Bank Statement",
      "value": "extractBankStatement",
      "action": "Extract data from a bank statement",
      "description": "Extract account holder, balances, statement period, and transactions",
      "resource": "document"
    },
    {
      "name": "Extract Data From Check",
      "value": "extractCheck",
      "action": "Extract data from a check",
      "description": "Extract payer, payee, MICR, amounts, and endorsement info from a US bank check",
      "resource": "document"
    },
    {
      "name": "Extract Data From Driver License",
      "value": "extractDriverLicense",
      "action": "Extract data from a driver license",
      "description": "Extract personal data from a US driver license image",
      "resource": "document"
    },
    {
      "name": "Extract Data From Invoice",
      "value": "extractInvoice",
      "action": "Extract data from an invoice",
      "description": "Extract structured data from an invoice",
      "resource": "document"
    },
    {
      "name": "Extract Data From Passport",
      "value": "extractPassport",
      "action": "Extract data from a passport",
      "description": "Extract personal data from a passport image",
      "resource": "document"
    },
    {
      "name": "Extract Data From Receipt",
      "value": "extractReceipt",
      "action": "Extract data from a receipt",
      "description": "Extract structured data from a receipt",
      "resource": "document"
    },
    {
      "name": "Extract Data From W-2",
      "value": "extractW2",
      "action": "Extract data from a W-2 form",
      "description": "Extract wage and tax information from an IRS Form W-2",
      "resource": "document"
    },
    {
      "name": "Extract Data From W-9",
      "value": "extractW9",
      "action": "Extract data from a W-9 form",
      "description": "Extract taxpayer information from an IRS Form W-9",
      "resource": "document"
    }
  ]

npm_readme:
  # n8n-nodes-veryfi

  This is an [n8n](https://n8n.io) community node for [Veryfi](https://www.veryfi.com), a document-AI platform that turns invoices, receipts, checks, bank statements, tax forms, and identity documents into structured, machine-readable data via OCR and machine learning.

  [n8n](https://n8n.io) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform.

  [Installation](#installation)
  [Operations](#operations)
  [Credentials](#credentials)
  [Sample workflow](#sample-workflow)
  [Compatibility](#compatibility)
  [Resources](#resources)

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

  ### From the n8n Cloud or self-hosted editor

  1. Go to **Settings** > **Community Nodes**.
  2. Select **Install**.
  3. Enter `n8n-nodes-veryfi` and select **Install**.

  ### Manual installation (self-hosted)

  ```bash
  cd ~/.n8n/custom
  npm install n8n-nodes-veryfi
  ```

  Then restart n8n.

  ## Operations

  The node exposes one resource:

  ### Resource: Document

  | Operation | Endpoint | Notes |
  | --- | --- | --- |
  | **Extract Data From Invoice** | `POST /api/v8/partner/documents/` | Returns vendor, totals, line items, dates, etc. |
  | **Extract Data From Receipt** | `POST /api/v8/partner/documents/` | Same endpoint as invoice; the model auto-detects. |
  | **Extract Data From Check** | `POST /api/v8/partner/checks/` | Payer, payee, MICR, amounts, endorsement info. |
  | **Extract Data From Bank Statement** | `POST /api/v8/partner/bank-statements/` | Account holder, balances, statement period, transactions. |
  | **Extract Data From W-9** | `POST /api/v8/partner/w9s/` | TIN/EIN/SSN, business classification, signature. |
  | **Extract Data From W-2** | `POST /api/v8/partner/w2s/` | Wage and tax information including state tax lines and Box 12 codes. |
  | **Extract Data From Driver License** | `POST /api/v8/partner/any-documents/` (`blueprint_name=us_driver_license`) | US driver license image. |
  | **Extract Data From Passport** | `POST /api/v8/partner/any-documents/` (`blueprint_name=passport`) | Passport image. |
  | **Extract Data From Any Document** | `POST /api/v8/partner/any-documents/` | Pick any blueprint available to your account from a dynamic dropdown. |
  | **Classify Document** | `POST /api/v8/partner/classify/` | Returns one of `receipt`, `invoice`, `purchase_order`, `w9`, `statement`, `check`, `packing_slip`, `contract`, `w8`, `remittance_advice`, `bank_statement`, `credit_note`, `w2`, `other` (or a custom list). |

  ### Input modes

  Every extraction operation accepts a document as either:

  - **Binary File** — wired in from any upstream node (Read/Write Files, Gmail, HTTP Request, Google Drive, Dropbox, Webhook…). The node reads the binary buffer and base64-encodes it before calling Veryfi.
  - **URL** — a public HTTP(S) URL. Veryfi fetches the document directly server-side.

  `Classify Document` is binary-only because the Veryfi `/classify/` endpoint does not accept `file_url`.

  ### Confidence details

  Six extraction operations (Invoice, Receipt, Check, Bank Statement, W-9, W-2) expose a **Confidence Details** toggle. When enabled, Veryfi returns each extracted field as `{ value, score, ocr_score }`.

  An additional **Flatten Confidence Scores** toggle (default on) reshapes the response so each field is emitted as three sibling keys for easier downstream mapping. For example:

  ```json
  {
  	"invoice_number": { "value": "INV-001", "score": 0.93, "ocr_score": 0.98 }
  }
  ```

  becomes

  ```json
  {
  	"invoice_number": "INV-001",
  	"invoice_number__score": 0.93,
  	"invoice_number__ocr_score": 0.98
  }
  ```

  Nested objects (e.g. `vendor`, `bill_to`, `ship_to`) are flattened one level using `__` as a separator (`vendor__name__score`). Confidence objects inside arrays (e.g. `line_items`) have their `value` hoisted in place.

  ### Additional options

  Each extraction operation has an **Additional Options** collection where you can opt into:

  - `auto_categorize` — let Veryfi auto-categorize the document.
  - `boost_mode` — return extracted data without document image storage.
  - `categories` — constrain the auto-categorizer to a custom list.
  - `external_id` — attach an external identifier to the document.
  - `tags` — attach tags to the document.

  Veryfi silently ignores fields that aren't supported on a given endpoint.

  ## Credentials

  You need a Veryfi account and an API key.

  1. Sign in to [Veryfi](https://app.veryfi.com).
  2. Go to **Settings → Keys** ([app.veryfi.com/api/settings/keys](https://app.veryfi.com/api/settings/keys/)).
  3. Copy your **CLIENT ID**, **USERNAME**, and **API KEY**.
  4. In n8n, add the Veryfi node to a workflow and select **Create New Credential**.
  5. Paste the three values. n8n will validate the credentials by hitting `https://api.veryfi.com/api/v8/partner/documents/schema/`.

  The API key is encrypted at rest by n8n and masked in execution logs. The username cannot contain spaces or colons (it forms part of the `Authorization` header).

  For endpoints not covered by a dedicated operation, use n8n's built-in **HTTP Request** node and select **Veryfi API** as the predefined credential type — your CLIENT-ID + auth headers will be injected automatically.

  ## Sample workflow

  Drop this JSON into the n8n editor (`File → Import from clipboard`) to get a working "process invoice" workflow that you can adapt:

  ```json
  {
  	"name": "Veryfi - Extract Invoice",
  	"nodes": [
  		{
  			"parameters": {},
  			"id": "manual-trigger",
  			"name": "When clicking 'Test workflow'",
  			"type": "n8n-nodes-base.manualTrigger",
  			"typeVersion": 1,
  			"position": [200, 300]
  		},
  		{
  			"parameters": {
  				"url": "https://cdn.veryfi.com/showcase/invoice-sample.pdf",
  				"options": {
  					"response": {
  						"response": {
  							"responseFormat": "file",
  							"outputPropertyName": "data"
  						}
  					}
  				}
  			},
  			"id": "http-request",
  			"name": "Download Invoice",
  			"type": "n8n-nodes-base.httpRequest",
  			"typeVersion": 4,
  			"position": [440, 300]
  		},
  		{
  			"parameters": {
  				"resource": "document",
  				"operation": "extractInvoice",
  				"fileSource": "binary",
  				"binaryPropertyName": "data",
  				"confidenceDetails": false
  			},
  			"id": "veryfi",
  			"name": "Veryfi",
  			"type": "n8n-nodes-veryfi.veryfi",
  			"typeVersion": 1,
  			"position": [680, 300],
  			"credentials": {
  				"veryfiApi": {
  					"name": "Veryfi account"
  				}
  			}
  		}
  	],
  	"connections": {
  		"When clicking 'Test workflow'": {
  			"main": [[{ "node": "Download Invoice", "type": "main", "index": 0 }]]
  		},
  		"Download Invoice": {
  			"main": [[{ "node": "Veryfi", "type": "main", "index": 0 }]]
  		}
  	}
  }
  ```

  ## Compatibility

  | Component | Required version |
  | --- | --- |
  | n8n | 1.0.0 or newer |
  | Node.js | 20.15 or newer |
  | Veryfi API | v8 (partner endpoints) |

  The node uses programmatic style with `usableAsTool: true`, so it can be wired up as a tool to n8n's AI Agent node.

  ## Resources

  - [n8n community-nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Veryfi product website](https://www.veryfi.com)
  - [Veryfi API documentation](https://docs.veryfi.com/)
  - [Veryfi Keys page](https://app.veryfi.com/api/settings/keys/)
  - [Report an issue](https://github.com/veryfi/n8n-nodes-veryfi/issues)

  ## License

  [MIT](LICENSE)

ai_documentation_summary:
  {"purpose":"Extracts structured data from invoices, receipts, checks, bank statements, tax forms, and identity documents using Veryfi's OCR and machine learning capabilities.","capabilities":["Extract data from invoices","Extract data from receipts","Extract data from checks","Extract data from bank statements","Extract data from W-9 forms","Extract data from W-2 forms","Extract data from driver licenses","Extract data from passports","Extract data from any document via dynamic blueprint selection","Classify document type"],"authentication":"API Key required (CLIENT ID, USERNAME, and API KEY)","commonUseCases":["Automated invoice processing and data extraction","Receipt management and expense tracking","Bank statement reconciliation","Tax form data extraction (W-9/W-2)","Identity verification using driver licenses and passports"],"limitations":["Classify Document operation only accepts binary files, not URLs","Username cannot contain spaces or colons","Veryfi silently ignores unsupported fields on specific endpoints","Confidence details require enabling a specific toggle"],"relatedNodes":["HTTP Request","Read/Write Files","Gmail","Google Drive","Dropbox"]}


node_type: n8n-nodes-quizell.quizellTrigger
package_name: n8n-nodes-quizell
display_name: Quizell Trigger
description: Starts the workflow when a new lead is captured via a Quizell quiz
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: quizell
author_github_url: https://github.com/Quizell-official/
npm_package_name: n8n-nodes-quizell
npm_version: 1.0.6
community_fetched_at: 2026-07-14T14:40:34.145Z
ai_summary_generated_at: 2026-05-22 10:26:01
npm_readme:
  # n8n-nodes-quizell

  This is an n8n community node for [Quizell](https://quizell.com).

  Quizell is a quiz and lead capture platform. This node lets you trigger
  n8n workflows when quizzes are completed or leads are captured.

  [n8n](https://n8n.io/) is a fair-code licensed workflow automation platform.

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/)
  in the n8n community nodes documentation.

  ## Operations

  - **Lead Captured** — triggers when a new lead is captured via a quiz

  ## Credentials

  You need a Quizell API key to use this node.

  1. Log in to your Quizell dashboard
  2. Go to **Integrations → API**
  3. Copy your API key
  4. In n8n, create a new **Quizell API** credential and paste the key

  ## Configuration

  | Field     | Description                                      |
  |-----------|--------------------------------------------------|
  | Event     | The Quizell event to listen for                  |
  | Quiz Key  | Specific quiz ID, or `all` for all quizzes       |

  ## Compatibility

  Tested with n8n version 1.0+

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Quizell documentation](https://quizell.com/docs)

  ## License

  MIT

ai_documentation_summary:
  {"purpose":"Triggers n8n workflows automatically when a new lead is captured via a completed Quizell quiz.","capabilities":["Trigger on lead capture events","Filter by specific quiz ID","Trigger on all quizzes using 'all' option"],"authentication":"API key required","commonUseCases":["Automate lead follow-up sequences","Capture quiz results for CRM integration","Send immediate email confirmations after quiz completion"],"limitations":["Requires Quizell API key access","Limited to Quizell platform events"],"relatedNodes":["n8n-nodes-quizell.quizellApi","n8n-nodes-core.manualTrigger"]}


node_type: n8n-nodes-rdraw.rDraw
package_name: n8n-nodes-rdraw
display_name: rDraw
description: Generate reports (PDF, XLSX, DOCX) from rDraw templates
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: rdraw.io
author_github_url: https://github.com/rdraw-io/n8n-node-rdraw.git
npm_package_name: n8n-nodes-rdraw
npm_version: 0.1.9
community_fetched_at: 2026-07-14T14:40:34.146Z
ai_summary_generated_at: 2026-05-22 10:26:01
npm_readme:
  # n8n-nodes-rdraw

  Community node for [n8n](https://n8n.io) that integrates with the [rDraw](https://rdraw.io) document generation API. Generate **PDF**, **XLSX** or **DOCX** reports from rDraw templates directly inside your workflows.

  [![npm version](https://img.shields.io/npm/v/n8n-nodes-rdraw.svg)](https://www.npmjs.com/package/n8n-nodes-rdraw)
  [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE.md)

  ---

  ## Installation

  ### Option 1 — From the n8n UI (recommended)

  1. Open your n8n instance.
  2. Go to **Settings → Community Nodes → Install**.
  3. Enter the package name:

     ```
     n8n-nodes-rdraw
     ```

  4. Accept the risk warning and click **Install**.

  The **rDraw** node will appear in the nodes panel.

  ### Option 2 — Self-hosted (Docker)

  Make sure community packages are enabled:

  ```bash
  docker run -it --rm \
    -p 5678:5678 \
    -v n8n_data:/home/node/.n8n \
    -e N8N_COMMUNITY_PACKAGES_ENABLED=true \
    docker.n8n.io/n8nio/n8n
  ```

  Then install via the UI as above.

  ---

  ## Credentials

  Create a new credential of type **rDraw API** and paste your API key. The key is sent automatically as the `X-API-Key` header on every request.

  You can request an API key at [rdraw.io](https://rdraw.io).

  ---

  ## Node: rDraw

  Generates a report by calling `POST https://api.rdraw.io/api/generate` and returns the resulting file as binary data, ready to be saved, emailed, or uploaded to cloud storage.

  ### Parameters

  | Field             | Description                                                                                                                       |
  | ----------------- | --------------------------------------------------------------------------------------------------------------------------------- |
  | **Report ID**     | UUID of the rDraw template (e.g. `edc6fe12-49f5-458b-aa23-d6954e005266`).                                                         |
  | **Format**        | Output format — `PDF`, `XLSX`, or `DOCX`.                                                                                         |
  | **Data Sources**  | JSON object whose keys are the dataSource names defined in the template, and values are arrays of records.                        |
  | **Binary Property** | Name of the binary property where the generated file will be placed (default: `data`).                                          |
  | **File Name**     | File name without extension (default: `report`). The extension is added automatically based on the chosen format.                 |

  ### Example — Data Sources

  ```json
  {
    "Alunos": [
      {
        "nome": "Ana Pereira",
        "numero": 1,
        "nota_trimestre1": 14,
        "nota_trimestre2": 15,
        "nota_trimestre3": 16,
        "media_final": 15
      }
    ]
  }
  ```

  ### Output

  Each input item produces an output item with:

  - `json`: `{ success, reportId, format, fileName }`
  - `binary.<binaryPropertyName>`: the generated file (PDF / XLSX / DOCX)

  You can chain the output directly into nodes like **Write Binary File**, **Google Drive**, **S3**, **Send Email**, etc.

  ---

  ## Example workflow

  1. **Trigger** (Webhook / Schedule / Manual)
  2. **Set / Code** — build the `dataSources` object.
  3. **rDraw** — Report ID + Format + Data Sources.
  4. **Google Drive** (or any binary-consuming node) — upload the file.

  ---

  ## API reference

  The node wraps a single endpoint:

  ```bash
  curl -X POST "https://api.rdraw.io/api/generate" \
    -H "X-API-Key: YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "reportId": "edc6fe12-49f5-458b-aa23-d6954e005266",
      "format": "pdf",
      "dataSources": {
        "Alunos": [ { "nome": "Ana", "numero": 1 } ]
      }
    }'
  ```

  The response is `{ "success": true, "data": "<base64>" }`. The node decodes `data` automatically into a binary file.

  Full docs: [rdraw.io/docs](https://rdraw.io/docs).

  ---

  ## Development

  ```bash
  git clone https://github.com/rdraw-io/n8n-node.git
  cd n8n-node
  npm install
  npm run dev      # starts n8n with hot reload
  ```

  Other scripts:

  ```bash
  npm run lint        # n8n community-node lint rules
  npm run build       # compile to dist/
  npm run release     # bump version, tag, publish to npm
  ```

  ---

  ## License

  [MIT](LICENSE.md) © RDraw

ai_documentation_summary:
  {"purpose":"Generates PDF, XLSX, or DOCX reports from rDraw templates by sending data to the rDraw API and returning the binary file.","capabilities":["Generate PDF reports","Generate XLSX reports","Generate DOCX reports","Accept JSON data sources mapped to template fields","Return binary file output for downstream nodes","Support custom file naming"],"authentication":"API key required (sent via X-API-Key header)","commonUseCases":["Automated report generation from database records","Exporting data to cloud storage (Google Drive, S3)","Sending generated reports via email","Creating downloadable files from scheduled workflows"],"limitations":["Requires external rDraw API key","Only supports the single generate endpoint","Data must be structured according to rDraw template definitions"],"relatedNodes":["Write Binary File","Google Drive","S3","Send Email","Code"]}


node_type: n8n-nodes-process-street.processStreetTrigger
package_name: n8n-nodes-process-street
display_name: Process Street Trigger
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: wwelti
author_github_url: https://github.com/wwelti/
npm_package_name: n8n-nodes-process-street
npm_version: 0.3.0
community_fetched_at: 2026-07-14T14:40:34.147Z
ai_summary_generated_at: 2026-05-22 10:26:01
description:
  Starts the workflow when a Process Street event occurs. ℹ️ For webhook triggers, activate the workflow to register the webhook — Process Street rejects n8n test-mode URLs.

npm_readme:
  # n8n-nodes-process-street

  This is an n8n community node for [Process Street](https://www.process.st/) — a workflow automation platform for recurring checklists and processes.

  [n8n](https://n8n.io/) is a fair-code licensed workflow automation platform.

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

  > On native Windows, see [Troubleshooting](#troubleshooting) if the Community Nodes dialog fails to install the package.

  ## Credentials

  You need a Process Street API Key to use this node:

  1. Log in to your Process Street account
  2. Go to **Settings > API Keys**
  3. Create a new API key
  4. Copy the key and use it when creating Process Street credentials in n8n

  ## Operations

  ![Process Street action node — actions list and Create Workflow Run parameters](assets/node-actions.png)

  ### Workflow Run

  | Operation | Description |
  |-----------|-------------|
  | Create | Create a new workflow run (optionally search for existing first) |
  | Delete | Delete a workflow run |
  | Find | Search for workflow runs by name, status, or workflow |
  | Get | Get a workflow run by ID |
  | Update | Update a workflow run's name, status, due date, or sharing |

  Form fields for the selected workflow load dynamically via a resource mapper, and MultiSelect options appear as native checkboxes.

  #### File and MultiFile fields

  For **File** and **MultiFile** form fields, enter a **file URL** — for example, a PDF URL produced by an upstream node (Docupilot, an HTTP Request download, etc.). The node downloads the file from that URL and uploads the bytes to Process Street, so the file becomes viewable on the workflow run. (Process Street's API requires files to go through a dedicated upload endpoint; sending a plain text URL as the field value is rejected.) The filename is taken from the URL or the download's `Content-Disposition` header. The URL must be reachable by your n8n server.

  ## Triggers

  ![Process Street trigger node — triggers list and On Task Checked parameters](assets/node-triggers.png)

  ### Process Street Trigger (Webhook)

  Real-time triggers powered by Process Street webhooks:

  - **Task Checked** — when a task is checked off
  - **Task Ready** — when a task is ready to be worked on
  - **Workflow Run Completed** — when a workflow run is completed
  - **Workflow Run Created** — when a new workflow run is created

  > **Note on testing triggers:** Process Street's webhook API rejects n8n's ephemeral `/webhook-test/...` URLs, so the "Listen for test event" button does not register a webhook. To receive events, **activate the workflow** in n8n — that exposes the production `/webhook/...` URL, which Process Street accepts.

  #### Complete form fields on every event

  Process Street's webhook payloads only include the form fields for the section that fired the event (for example, **Task Checked** sends just the checked task's fields under `data.formFields`). To save you a follow-up API call, the trigger automatically fetches the **entire** workflow run's form fields and adds two properties to each event:

  - **`allFormFields`** — every field on the run, in the Process Street API's raw shape (the value is nested under `data.value`, the type is under `fieldType`).
  - **`flatFields`** — the same fields simplified to `{ fieldType, label, value }` for easy access, so you can do `{{ $json.flatFields.find(f => f.label === 'Market rent:').value }}` without digging into nested objects.

  The original `data.formFields` is left untouched. If the lookup fails for any reason, the event is still delivered with an `allFormFieldsError` message instead of being dropped.

  ## Known Limitations

  - **Comment triggers** (New Comment, New Comment Attachment) are not supported because the Process Street v1.1 API does not expose comment endpoints or webhook triggers for comments.
  - The **Update Workflow Run** operation fetches the current state before updating because the Process Street API requires all fields on PUT requests.
  - **Due Date** on Create and Update must be at least 24 hours in the future. The Process Street API rejects near-future dates with a generic 400 error, so the node validates client-side and returns a clear message instead. If you're entering a local time, use a Luxon expression (example is provided in the Due Date field description) to produce a correctly-offset ISO 8601 string.

  ## Compatibility

  - Requires n8n version 1.0.0 or later
  - Uses n8n Nodes API version 1

  ## Troubleshooting

  Most users install this package through n8n's **Settings → Community Nodes** dialog on Linux, macOS, n8n Cloud, or Docker without issue. The two known gotchas are both native-Windows-specific:

  ### `spawn npm ENOENT` when installing from the Community Nodes dialog

  n8n on native Windows can fail to locate `npm` (it's `npm.cmd`, which Node's `spawn` won't auto-resolve without `shell: true`). This is an n8n-on-Windows limitation, not a problem with this package. Workaround — install manually into n8n's user nodes directory:

  ```bash
  cd %USERPROFILE%\.n8n\nodes
  npm install n8n-nodes-process-street --omit=peer --ignore-scripts
  ```

  Then restart n8n.

  ### `node-gyp` / Python errors about `isolated-vm` during install

  `isolated-vm` is a native module pulled in transitively via `n8n-workflow`. It ships prebuilt binaries for Node LTS versions (20, 22). If you're on a non-LTS Node (e.g. 25), the prebuild lookup misses and npm falls back to compiling from source, which requires Python and a C++ toolchain.

  The `--ignore-scripts` flag above avoids the compile entirely. n8n resolves `n8n-workflow` from its own install at runtime, so you don't need a working copy in the user nodes directory. Switching to Node 22 LTS also fixes it permanently.

  ## Resources

  - [Process Street API Documentation](https://www.process.st/help/docs/process-street-api)
  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)

  ## License

  [MIT](LICENSE)

ai_documentation_summary:
  {"purpose":"A n8n community node that triggers workflows when Process Street events occur or allows manual creation and management of workflow runs.","capabilities":["Trigger workflow on Task Checked event","Trigger workflow on Task Ready event","Trigger workflow on Workflow Run Completed event","Trigger workflow on Workflow Run Created event","Create new workflow runs","Search for existing workflow runs","Get workflow run by ID","Update workflow run name, status, due date, or sharing","Delete workflow runs","Register production webhooks for real-time event handling"],"authentication":"API Key required (Process Street API Key)","commonUseCases":["Automate workflow execution when a checklist task is completed","Notify systems when a recurring process task becomes ready","Trigger downstream automation when a workflow run finishes","Manage workflow runs programmatically within n8n"],"limitations":["Comment triggers (New Comment, New Comment Attachment) are not supported due to Process Street API limitations","Update Workflow Run operation requires fetching current state before updating due to API PUT request requirements","Due Date validation requires dates at least 24 hours in the future; client-side validation returns clear error messages","Webhook testing via n8n test-mode URLs is not supported; production workflow activation is required to register webhooks"],"relatedNodes":["n8n-nodes-process-street.processStreetActions","n8n-nodes-process-street.processStreetCredentials","n8n-nodes-process-street.processStreetWebhook"]}


node_type: n8n-nodes-process-street.processStreet
package_name: n8n-nodes-process-street
display_name: Process Street
description: Interact with the Process Street API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: wwelti
author_github_url: https://github.com/wwelti/
npm_package_name: n8n-nodes-process-street
npm_version: 0.3.0
community_fetched_at: 2026-07-14T14:40:34.148Z
ai_summary_generated_at: 2026-05-22 10:26:01
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "workflowRun",
      "options": [
        {
          "name": "Workflow Run",
          "value": "workflowRun"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a workflow run",
          "description": "Create a new workflow run"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a workflow run",
          "description": "Delete a workflow run"
        },
        {
          "name": "Find",
          "value": "find",
          "action": "Find workflow runs",
          "description": "Search for workflow runs"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a workflow run",
          "description": "Get a workflow run by ID"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a workflow run",
          "description": "Update a workflow run"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "workflowRun"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create a workflow run",
      "description": "Create a new workflow run",
      "resource": "workflowRun"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a workflow run",
      "description": "Delete a workflow run",
      "resource": "workflowRun"
    },
    {
      "name": "Find",
      "value": "find",
      "action": "Find workflow runs",
      "description": "Search for workflow runs",
      "resource": "workflowRun"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a workflow run",
      "description": "Get a workflow run by ID",
      "resource": "workflowRun"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a workflow run",
      "description": "Update a workflow run",
      "resource": "workflowRun"
    }
  ]

npm_readme:
  # n8n-nodes-process-street

  This is an n8n community node for [Process Street](https://www.process.st/) — a workflow automation platform for recurring checklists and processes.

  [n8n](https://n8n.io/) is a fair-code licensed workflow automation platform.

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

  > On native Windows, see [Troubleshooting](#troubleshooting) if the Community Nodes dialog fails to install the package.

  ## Credentials

  You need a Process Street API Key to use this node:

  1. Log in to your Process Street account
  2. Go to **Settings > API Keys**
  3. Create a new API key
  4. Copy the key and use it when creating Process Street credentials in n8n

  ## Operations

  ![Process Street action node — actions list and Create Workflow Run parameters](assets/node-actions.png)

  ### Workflow Run

  | Operation | Description |
  |-----------|-------------|
  | Create | Create a new workflow run (optionally search for existing first) |
  | Delete | Delete a workflow run |
  | Find | Search for workflow runs by name, status, or workflow |
  | Get | Get a workflow run by ID |
  | Update | Update a workflow run's name, status, due date, or sharing |

  Form fields for the selected workflow load dynamically via a resource mapper, and MultiSelect options appear as native checkboxes.

  #### File and MultiFile fields

  For **File** and **MultiFile** form fields, enter a **file URL** — for example, a PDF URL produced by an upstream node (Docupilot, an HTTP Request download, etc.). The node downloads the file from that URL and uploads the bytes to Process Street, so the file becomes viewable on the workflow run. (Process Street's API requires files to go through a dedicated upload endpoint; sending a plain text URL as the field value is rejected.) The filename is taken from the URL or the download's `Content-Disposition` header. The URL must be reachable by your n8n server.

  ## Triggers

  ![Process Street trigger node — triggers list and On Task Checked parameters](assets/node-triggers.png)

  ### Process Street Trigger (Webhook)

  Real-time triggers powered by Process Street webhooks:

  - **Task Checked** — when a task is checked off
  - **Task Ready** — when a task is ready to be worked on
  - **Workflow Run Completed** — when a workflow run is completed
  - **Workflow Run Created** — when a new workflow run is created

  > **Note on testing triggers:** Process Street's webhook API rejects n8n's ephemeral `/webhook-test/...` URLs, so the "Listen for test event" button does not register a webhook. To receive events, **activate the workflow** in n8n — that exposes the production `/webhook/...` URL, which Process Street accepts.

  #### Complete form fields on every event

  Process Street's webhook payloads only include the form fields for the section that fired the event (for example, **Task Checked** sends just the checked task's fields under `data.formFields`). To save you a follow-up API call, the trigger automatically fetches the **entire** workflow run's form fields and adds two properties to each event:

  - **`allFormFields`** — every field on the run, in the Process Street API's raw shape (the value is nested under `data.value`, the type is under `fieldType`).
  - **`flatFields`** — the same fields simplified to `{ fieldType, label, value }` for easy access, so you can do `{{ $json.flatFields.find(f => f.label === 'Market rent:').value }}` without digging into nested objects.

  The original `data.formFields` is left untouched. If the lookup fails for any reason, the event is still delivered with an `allFormFieldsError` message instead of being dropped.

  ## Known Limitations

  - **Comment triggers** (New Comment, New Comment Attachment) are not supported because the Process Street v1.1 API does not expose comment endpoints or webhook triggers for comments.
  - The **Update Workflow Run** operation fetches the current state before updating because the Process Street API requires all fields on PUT requests.
  - **Due Date** on Create and Update must be at least 24 hours in the future. The Process Street API rejects near-future dates with a generic 400 error, so the node validates client-side and returns a clear message instead. If you're entering a local time, use a Luxon expression (example is provided in the Due Date field description) to produce a correctly-offset ISO 8601 string.

  ## Compatibility

  - Requires n8n version 1.0.0 or later
  - Uses n8n Nodes API version 1

  ## Troubleshooting

  Most users install this package through n8n's **Settings → Community Nodes** dialog on Linux, macOS, n8n Cloud, or Docker without issue. The two known gotchas are both native-Windows-specific:

  ### `spawn npm ENOENT` when installing from the Community Nodes dialog

  n8n on native Windows can fail to locate `npm` (it's `npm.cmd`, which Node's `spawn` won't auto-resolve without `shell: true`). This is an n8n-on-Windows limitation, not a problem with this package. Workaround — install manually into n8n's user nodes directory:

  ```bash
  cd %USERPROFILE%\.n8n\nodes
  npm install n8n-nodes-process-street --omit=peer --ignore-scripts
  ```

  Then restart n8n.

  ### `node-gyp` / Python errors about `isolated-vm` during install

  `isolated-vm` is a native module pulled in transitively via `n8n-workflow`. It ships prebuilt binaries for Node LTS versions (20, 22). If you're on a non-LTS Node (e.g. 25), the prebuild lookup misses and npm falls back to compiling from source, which requires Python and a C++ toolchain.

  The `--ignore-scripts` flag above avoids the compile entirely. n8n resolves `n8n-workflow` from its own install at runtime, so you don't need a working copy in the user nodes directory. Switching to Node 22 LTS also fixes it permanently.

  ## Resources

  - [Process Street API Documentation](https://www.process.st/help/docs/process-street-api)
  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)

  ## License

  [MIT](LICENSE)

ai_documentation_summary:
  {"purpose":"A community n8n node that enables interaction with the Process Street API for managing workflow automation, checklists, and recurring processes.","capabilities":["Create new workflow runs","Delete workflow runs","Search for workflow runs by name, status, or workflow","Retrieve workflow run details by ID","Update workflow run name, status, due date, or sharing settings","Trigger on task checked","Trigger on task ready","Trigger on workflow run completed","Trigger on workflow run created"],"authentication":"API Key required (Process Street API Key)","commonUseCases":["Automating recurring checklists","Monitoring task completion status","Integrating Process Street workflows with other automation tools","Sending notifications when tasks are ready or completed"],"limitations":["Comment triggers (New Comment, New Comment Attachment) are not supported due to API limitations","Update Workflow Run operation requires fetching current state before updating due to API PUT request requirements","Due dates must be at least 24 hours in the future; the API rejects near-future dates","Webhook testing via ephemeral URLs is not supported; production URLs must be used"],"relatedNodes":["n8n-nodes-process-street.processStreet","n8n-nodes-webhook.webhook","n8n-nodes-http.request"]}


node_type: @doomscrollr/n8n-nodes-doomscrollr.doomscrollr
package_name: @doomscrollr/n8n-nodes-doomscrollr
display_name: DOOMSCROLLR
description: Automate DOOMSCROLLR owned-audience websites
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: doomscrollr
author_github_url: https://github.com/DOOMSCROLLR/n8n.git
npm_package_name: @doomscrollr/n8n-nodes-doomscrollr
npm_version: 0.1.6
community_fetched_at: 2026-07-14T14:40:34.149Z
ai_summary_generated_at: 2026-05-22 10:26:01
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "post",
      "options": [
        {
          "name": "Analytics",
          "value": "analytics"
        },
        {
          "name": "Capture Widget",
          "value": "capture"
        },
        {
          "name": "Embed Code",
          "value": "embed"
        },
        {
          "name": "Page",
          "value": "page"
        },
        {
          "name": "Pinterest",
          "value": "pinterest"
        },
        {
          "name": "Post",
          "value": "post"
        },
        {
          "name": "Product",
          "value": "product"
        },
        {
          "name": "Profile",
          "value": "profile"
        },
        {
          "name": "RSS",
          "value": "rss"
        },
        {
          "name": "Subscriber",
          "value": "subscriber"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "topLikedPosts",
      "options": [
        {
          "name": "Get Top Liked Posts",
          "value": "topLikedPosts"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "analytics"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getSettings",
      "options": [
        {
          "name": "Get Settings",
          "value": "getSettings"
        },
        {
          "name": "Update Settings",
          "value": "updateSettings"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "capture"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getCode",
      "options": [
        {
          "name": "Get Code",
          "value": "getCode"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "embed"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create"
        },
        {
          "name": "Create Contact Page",
          "value": "createContactPage"
        },
        {
          "name": "List",
          "value": "list"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "page"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "connectBoard",
      "options": [
        {
          "name": "Connect Board",
          "value": "connectBoard"
        },
        {
          "name": "Get Status",
          "value": "getStatus"
        },
        {
          "name": "Search Pins",
          "value": "searchPins"
        },
        {
          "name": "Search Pins and Create Posts",
          "value": "searchPinsAndCreatePosts"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "pinterest"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createImage",
      "options": [
        {
          "name": "Create Image Post",
          "value": "createImage"
        },
        {
          "name": "Create Link Post",
          "value": "createLink"
        },
        {
          "name": "List",
          "value": "list"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "post"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create"
        },
        {
          "name": "List",
          "value": "list"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "product"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "profile"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "connectFeed",
      "options": [
        {
          "name": "Connect Feed",
          "value": "connectFeed"
        },
        {
          "name": "Get Status",
          "value": "getStatus"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "rss"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "add",
      "options": [
        {
          "name": "Add",
          "value": "add"
        },
        {
          "name": "List",
          "value": "list"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "subscriber"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get Top Liked Posts",
      "value": "topLikedPosts",
      "resource": "analytics"
    },
    {
      "name": "Get Settings",
      "value": "getSettings",
      "resource": "capture"
    },
    {
      "name": "Update Settings",
      "value": "updateSettings",
      "resource": "capture"
    },
    {
      "name": "Get Code",
      "value": "getCode",
      "resource": "embed"
    },
    {
      "name": "Create",
      "value": "create",
      "resource": "page"
    },
    {
      "name": "Create Contact Page",
      "value": "createContactPage",
      "resource": "page"
    },
    {
      "name": "List",
      "value": "list",
      "resource": "page"
    },
    {
      "name": "Connect Board",
      "value": "connectBoard",
      "resource": "pinterest"
    },
    {
      "name": "Get Status",
      "value": "getStatus",
      "resource": "pinterest"
    },
    {
      "name": "Search Pins",
      "value": "searchPins",
      "resource": "pinterest"
    },
    {
      "name": "Search Pins and Create Posts",
      "value": "searchPinsAndCreatePosts",
      "resource": "pinterest"
    },
    {
      "name": "Create Image Post",
      "value": "createImage",
      "resource": "post"
    },
    {
      "name": "Create Link Post",
      "value": "createLink",
      "resource": "post"
    },
    {
      "name": "List",
      "value": "list",
      "resource": "post"
    },
    {
      "name": "Create",
      "value": "create",
      "resource": "product"
    },
    {
      "name": "List",
      "value": "list",
      "resource": "product"
    },
    {
      "name": "Get",
      "value": "get",
      "resource": "profile"
    },
    {
      "name": "Connect Feed",
      "value": "connectFeed",
      "resource": "rss"
    },
    {
      "name": "Get Status",
      "value": "getStatus",
      "resource": "rss"
    },
    {
      "name": "Add",
      "value": "add",
      "resource": "subscriber"
    },
    {
      "name": "List",
      "value": "list",
      "resource": "subscriber"
    }
  ]

npm_readme:
  # DOOMSCROLLR n8n Community Node

  **Automate DOOMSCROLLR — the audience layer for AI agents — from n8n.**

  Use this community node to publish posts, collect subscribers, create products and pages, connect RSS/Pinterest sources, retrieve embed code, and inspect audience engagement from n8n workflows.

  DOOMSCROLLR turns automations and AI agents into owned-audience websites: Linktree, Shopify, Substack, Gumroad, ShopMy/LTK, Eventbrite/Luma, product drops, affiliate feeds, newsletters, and membership-style flows — **but owned**.

  [Docs](https://doomscrollr.com/docs/n8n.md?utm_source=github&utm_medium=readme&utm_campaign=developer_funnel&utm_content=n8n_docs) · [Workflow templates](https://doomscrollr.com/n8n/workflows/?utm_source=github&utm_medium=readme&utm_campaign=developer_funnel&utm_content=n8n_templates) · [OpenAPI](https://doomscrollr.com/openapi.json?utm_source=github&utm_medium=readme&utm_campaign=developer_funnel&utm_content=n8n_openapi) · [Featured examples](https://doomscrollr.com/featured?utm_source=github&utm_medium=readme&utm_campaign=developer_funnel&utm_content=n8n_featured_examples)

  ```bash
  npm install @doomscrollr/n8n-nodes-doomscrollr
  ```

  ## High-value workflows

  - New RSS item → create DOOMSCROLLR post
  - New Typeform/Tally/Airtable lead → add subscriber
  - New Shopify order → add/update subscriber
  - New Airtable product row → create DOOMSCROLLR product
  - New DOOMSCROLLR post → notify Slack
  - DOOMSCROLLR audience export → sync Google Sheets

  ## Installation

  Install the community node package in n8n:

  ```bash
  npm install @doomscrollr/n8n-nodes-doomscrollr
  ```

  For self-hosted n8n, you can also install it from **Settings → Community nodes** using:

  ```text
  @doomscrollr/n8n-nodes-doomscrollr
  ```

  ## Credentials

  Create a **DOOMSCROLLR API** credential in n8n. If you need a key, create a free account at [doomscrollr.com](https://doomscrollr.com/register?free=1&utm_source=github&utm_medium=readme&utm_campaign=developer_funnel&utm_content=n8n_get_api_key).

  Fields:

  - **API Key** — create an API key in your DOOMSCROLLR dashboard.
  - **Base URL** — defaults to `https://doomscrollr.com`.

  The node authenticates with `Authorization: Bearer <api key>` and tests credentials against `/api/v1/profile`.

  ## Included operations

  The first package version exposes one regular n8n node, **DOOMSCROLLR**, with resource/operation groups:

  - **Profile** — get account/profile details.
  - **Posts** — list posts, create image posts, create link posts.
  - **Subscribers** — list subscribers, add subscribers.
  - **Products** — list products, create products.
  - **Pages** — list pages, create pages, create contact/link pages.
  - **Pinterest** — connect a board, check status, search pins, search pins and create posts.
  - **RSS** — connect a feed, check status.
  - **Capture Widget** — get or update capture settings.
  - **Embed Code** — retrieve subscriber-capture embed code.
  - **Analytics** — retrieve top liked posts.

  ## Example workflows

  ### Publish RSS items into DOOMSCROLLR

  1. Add an RSS trigger or schedule.
  2. Add **DOOMSCROLLR → RSS → Connect Feed** for a source you want to monitor.
  3. Use **DOOMSCROLLR → Post → Create Link Post** to publish selected items to your owned audience hub.

  ### Turn a lead form into subscribers

  1. Capture submissions with Webhook, Typeform, Tally, Airtable, or another n8n trigger.
  2. Map email/name fields into **DOOMSCROLLR → Subscriber → Add**.
  3. Optionally follow with **Embed Code → Get Code** to include capture forms on external sites.

  ### Create a product from automation

  1. Receive product data from a form, AI agent, or commerce workflow.
  2. Add **DOOMSCROLLR → Product → Create**.
  3. Provide title, description, price, type, and optional cover image URL.

  ## Development

  ```bash
  npm ci
  npm run build
  npm run lint
  npm pack --dry-run
  ```

  After the package is published to npm, run:

  ```bash
  npm run scan
  ```

  The package is built with the official `n8n-node` CLI and uses n8n credentials for all user-provided secrets. It does not read environment variables or the filesystem at runtime.

  ## Publishing

  Publishing should happen from GitHub Actions with npm provenance enabled. See `PUBLISHING.md`.

  ## License

  MIT

ai_documentation_summary:
  {"purpose":"Automates DOOMSCROLLR owned-audience websites by enabling n8n workflows to manage posts, subscribers, products, pages, and integrations with RSS, Pinterest, and external platforms.","capabilities":["Create and list posts (image and link types)","Manage subscribers (add and list)","Create and list products","Create and list pages (contact/link pages)","Connect and monitor RSS feeds","Connect Pinterest boards and search pins","Retrieve subscriber capture embed code","Retrieve account/profile details","Retrieve analytics (top liked posts)","Sync data to Google Sheets via audience export"],"authentication":"API Key required (Bearer token)","commonUseCases":["Publish RSS feed items to owned audience website","Convert form leads (Typeform, Tally, Airtable) into subscribers","Create products from automation or commerce workflows","Sync Shopify orders to subscriber lists","Generate embed codes for external capture forms"],"limitations":["Currently exposes only one regular n8n node (DOOMSCROLLR) in the first package version","Requires separate DOOMSCROLLR account and API key setup"],"relatedNodes":["RSS Trigger","Webhook","Typeform","Tally","Airtable"]}


node_type: n8n-nodes-openinbox.openInbox
package_name: n8n-nodes-openinbox
display_name: OpenInbox
description: Interact with the OpenInbox disposable email API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: devnplay
author_github_url: https://github.com/openinbox-io/
npm_package_name: n8n-nodes-openinbox
npm_version: 1.0.7
community_fetched_at: 2026-07-14T14:40:34.150Z
ai_summary_generated_at: 2026-05-22 10:26:01
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "inbox",
      "options": [
        {
          "name": "Inbox",
          "value": "inbox",
          "description": "Disposable email inbox"
        },
        {
          "name": "Email",
          "value": "email",
          "description": "A received email message"
        },
        {
          "name": "Webhook",
          "value": "webhook",
          "description": "Outbound webhook subscription"
        },
        {
          "name": "Account",
          "value": "account",
          "description": "API account information and usage"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create an inbox",
          "description": "Create a new disposable email inbox"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete an inbox",
          "description": "Permanently delete an inbox and all its emails"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get an inbox",
          "description": "Get a specific inbox by ID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many inboxes",
          "description": "List many inboxes for the API account"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "inbox"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete an email",
          "description": "Permanently delete an email message"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get an email",
          "description": "Get a single email by ID (auto-marks as read)"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many emails for an inbox",
          "description": "List emails received in a specific inbox"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "email"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a webhook",
          "description": "Register a new outbound webhook"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a webhook",
          "description": "Remove a registered webhook"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many webhooks",
          "description": "List many webhooks for the API account"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "webhook"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get account information",
          "description": "Get the API account info, tier and usage"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "account"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create an inbox",
      "description": "Create a new disposable email inbox",
      "resource": "inbox"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete an inbox",
      "description": "Permanently delete an inbox and all its emails",
      "resource": "inbox"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get an inbox",
      "description": "Get a specific inbox by ID",
      "resource": "inbox"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many inboxes",
      "description": "List many inboxes for the API account",
      "resource": "inbox"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete an email",
      "description": "Permanently delete an email message",
      "resource": "email"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get an email",
      "description": "Get a single email by ID (auto-marks as read)",
      "resource": "email"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many emails for an inbox",
      "description": "List emails received in a specific inbox",
      "resource": "email"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a webhook",
      "description": "Register a new outbound webhook",
      "resource": "webhook"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a webhook",
      "description": "Remove a registered webhook",
      "resource": "webhook"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many webhooks",
      "description": "List many webhooks for the API account",
      "resource": "webhook"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get account information",
      "description": "Get the API account info, tier and usage",
      "resource": "account"
    }
  ]

npm_readme:
  # n8n-nodes-openinbox

  [![n8n verified](https://img.shields.io/badge/n8n-verified%20node-blue.svg)](https://www.npmjs.com/package/n8n-nodes-openinbox)
  [![n8n community node](https://img.shields.io/badge/n8n-community%20node-orange.svg)](https://www.npmjs.com/package/n8n-nodes-openinbox)
  [![npm version](https://img.shields.io/npm/v/n8n-nodes-openinbox.svg)](https://www.npmjs.com/package/n8n-nodes-openinbox)
  [![npm downloads](https://img.shields.io/npm/dm/n8n-nodes-openinbox.svg)](https://www.npmjs.com/package/n8n-nodes-openinbox)
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](./LICENSE.md)

  This is an [n8n community node](https://docs.n8n.io/integrations/community-nodes/) for [OpenInbox](https://openinbox.io) — a disposable / temporary email API. Use it to programmatically create inboxes, read incoming emails, and trigger workflows the moment an email lands.

  > OpenInbox is **receive-only** disposable email infrastructure. You can create inboxes on demand, list received messages, and subscribe to webhook events such as `email.received`.

  ## Use Cases

  - **OTP & verification automation** — Create a disposable inbox, trigger a signup flow, and extract the 6-digit code automatically.
  - **Email integration testing** — Test your transactional email pipelines without polluting real inboxes.
  - **Signup flow QA** — Spin up a fresh inbox per test run and verify confirmation emails end-to-end.

  ## Example Workflow

  The repo ships with a complete demo workflow that:

  1. Listens for OpenInbox webhook deliveries (`email.received`, `inbox.created`, `inbox.expired`).
  2. Verifies the `X-Webhook-Signature` HMAC.
  3. Routes by event with a Switch node.
  4. On `email.received`, pulls the full email body and extracts a 6-digit OTP.

  ![OpenInbox n8n example workflow](https://raw.githubusercontent.com/openinbox-io/n8n-nodes-openinbox/main/docs/screenshots/n8n-workflow-example.png)

  Import [`examples/openinbox-full-demo.workflow.json`](./examples/openinbox-full-demo.workflow.json) into n8n to try it.

  ## Installation

  **n8n Cloud (verified node):** Search for `OpenInbox` directly in the node picker on the canvas — no settings required. Just drag it into your workflow.

  **Self-hosted / manual:**

  1. Go to **Settings → Community Nodes**.
  2. Click **Install**.
  3. Enter `n8n-nodes-openinbox` and confirm.
  4. Make sure **Verified Community Nodes** is enabled in your Admin Panel (you may need to restart your instance).

  After installation, two nodes become available:

  - **OpenInbox** — REST operations against the OpenInbox API.
  - **OpenInbox Trigger** — Fires when an OpenInbox webhook event is delivered.

  ## Credentials

  Create an **OpenInbox API** credential and set:

  - **API Key** — generate one from your OpenInbox dashboard at https://openinbox.io. API access is available on Pro, Business, and 7-Day Pass tiers. **Pro plan includes a 7-day free trial — [start free at openinbox.io](https://openinbox.io/pricing).**

  The key is sent as the `X-API-Key` request header.

  ## Operations

  ### Inbox

  | Operation | HTTP     | Endpoint                   | Description                                                                            |
  | --------- | -------- | -------------------------- | -------------------------------------------------------------------------------------- |
  | Create    | `POST`   | `/api/v1/inboxes`          | Create a new disposable inbox. Optional `prefix` to control the local-part.            |
  | Get       | `GET`    | `/api/v1/inboxes/:inboxId` | Fetch an inbox by ID, including `emailCount` and `isExpired`.                          |
  | Get Many  | `GET`    | `/api/v1/inboxes`          | List inboxes with `limit`/`offset` pagination. Toggle **Return All** to auto-paginate. |
  | Delete    | `DELETE` | `/api/v1/inboxes/:inboxId` | Permanently delete an inbox and all its emails.                                        |

  ### Email

  | Operation | HTTP     | Endpoint                          | Description                                            |
  | --------- | -------- | --------------------------------- | ------------------------------------------------------ |
  | Get Many  | `GET`    | `/api/v1/inboxes/:inboxId/emails` | List emails in an inbox. Optional `unreadOnly` filter. |
  | Get       | `GET`    | `/api/v1/emails/:emailId`         | Fetch a single email (auto-marks as read).             |
  | Delete    | `DELETE` | `/api/v1/emails/:emailId`         | Permanently delete an email.                           |

  ### Webhook

  | Operation | HTTP     | Endpoint                      | Description                                |
  | --------- | -------- | ----------------------------- | ------------------------------------------ |
  | Create    | `POST`   | `/api/v1/webhooks`            | Register a webhook for one or more events. |
  | Get Many  | `GET`    | `/api/v1/webhooks`            | List all webhooks on the account.          |
  | Delete    | `DELETE` | `/api/v1/webhooks/:webhookId` | Remove a webhook subscription.             |

  ### Account

  | Operation | HTTP  | Endpoint          | Description                              |
  | --------- | ----- | ----------------- | ---------------------------------------- |
  | Get       | `GET` | `/api/v1/account` | Get tier, rate limits and current usage. |

  ## Trigger Node

  The **OpenInbox Trigger** automatically registers a webhook with OpenInbox when the workflow activates and removes it when the workflow deactivates.

  ### Setup

  1. Add an **OpenInbox Trigger** node to your workflow.
  2. Select the **OpenInbox API** credential.
  3. Choose one or more events:
     - `email.received` — fires for every email delivered to any of your inboxes.
     - `inbox.created`
     - `inbox.expired`
  4. **Activate** the workflow. n8n will call `POST /api/v1/webhooks` with the workflow's public webhook URL. Deactivating calls `DELETE /api/v1/webhooks/:id`.

  ### Payload

  OpenInbox delivers JSON like this:

  ```json
  {
    "event": "email.received",
    "timestamp": "2026-04-26T12:00:00Z",
    "data": {
      "emailId": "uuid",
      "inboxId": "uuid",
      "from": "sender@example.com",
      "subject": "Hello!"
    }
  }
  ```

  The trigger forwards this body verbatim, plus a `__delivery` object containing the `X-Webhook-Signature`, `X-Webhook-Event`, and `X-Webhook-Delivery` headers so you can verify the HMAC-SHA256 signature against your webhook secret.

  ### Signature Format

  ```
  X-Webhook-Signature: t=<timestamp>,v1=<hex_sha256>
  ```

  To verify: `HMAC_SHA256(secret, "<timestamp>." + JSON.stringify(payload))`.

  ## Compatibility

  - n8n `>= 1.0`
  - Node.js `>= 18.10`

  ## Resources

  - [OpenInbox website](https://openinbox.io)
  - [API documentation](https://openinbox.io/api-docs)
  - [Issue tracker](https://github.com/openinbox-io/n8n-nodes-openinbox/issues)
  - [n8n community nodes docs](https://docs.n8n.io/integrations/community-nodes/)

  ## License

  MIT — see [LICENSE.md](./LICENSE.md).

ai_documentation_summary:
  {"purpose":"A community n8n node that interacts with the OpenInbox disposable email API to create inboxes, read emails, and trigger workflows on webhook events.","capabilities":["Create disposable email inboxes","List and retrieve emails from inboxes","Delete inboxes and emails","Register webhooks for email events (email.received, inbox.created, inbox.expired)","Automatically trigger workflows when emails are received","Extract data from email bodies (e.g., OTP codes)"],"authentication":"API Key (sent via X-API-Key header)","commonUseCases":["OTP and verification code automation","Email integration testing without real inboxes","Signup flow QA and verification","Triggering workflows on email receipt"],"limitations":["OpenInbox is receive-only (cannot send emails)","API access requires Pro, Business, or 7-Day Pass tiers","Requires manual installation for self-hosted instances","Webhook registration is automatic via Trigger node but requires workflow activation"],"relatedNodes":["HTTP Request","Switch","Code","Webhook"]}


node_type: n8n-nodes-openinbox.openInboxTrigger
package_name: n8n-nodes-openinbox
display_name: OpenInbox Trigger
description: Starts the workflow when an OpenInbox event fires (e.g. when a new email is received).
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: devnplay
author_github_url: https://github.com/openinbox-io/
npm_package_name: n8n-nodes-openinbox
npm_version: 1.0.7
community_fetched_at: 2026-07-14T14:40:34.151Z
ai_summary_generated_at: 2026-05-22 10:26:01
npm_readme:
  # n8n-nodes-openinbox

  [![n8n verified](https://img.shields.io/badge/n8n-verified%20node-blue.svg)](https://www.npmjs.com/package/n8n-nodes-openinbox)
  [![n8n community node](https://img.shields.io/badge/n8n-community%20node-orange.svg)](https://www.npmjs.com/package/n8n-nodes-openinbox)
  [![npm version](https://img.shields.io/npm/v/n8n-nodes-openinbox.svg)](https://www.npmjs.com/package/n8n-nodes-openinbox)
  [![npm downloads](https://img.shields.io/npm/dm/n8n-nodes-openinbox.svg)](https://www.npmjs.com/package/n8n-nodes-openinbox)
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](./LICENSE.md)

  This is an [n8n community node](https://docs.n8n.io/integrations/community-nodes/) for [OpenInbox](https://openinbox.io) — a disposable / temporary email API. Use it to programmatically create inboxes, read incoming emails, and trigger workflows the moment an email lands.

  > OpenInbox is **receive-only** disposable email infrastructure. You can create inboxes on demand, list received messages, and subscribe to webhook events such as `email.received`.

  ## Use Cases

  - **OTP & verification automation** — Create a disposable inbox, trigger a signup flow, and extract the 6-digit code automatically.
  - **Email integration testing** — Test your transactional email pipelines without polluting real inboxes.
  - **Signup flow QA** — Spin up a fresh inbox per test run and verify confirmation emails end-to-end.

  ## Example Workflow

  The repo ships with a complete demo workflow that:

  1. Listens for OpenInbox webhook deliveries (`email.received`, `inbox.created`, `inbox.expired`).
  2. Verifies the `X-Webhook-Signature` HMAC.
  3. Routes by event with a Switch node.
  4. On `email.received`, pulls the full email body and extracts a 6-digit OTP.

  ![OpenInbox n8n example workflow](https://raw.githubusercontent.com/openinbox-io/n8n-nodes-openinbox/main/docs/screenshots/n8n-workflow-example.png)

  Import [`examples/openinbox-full-demo.workflow.json`](./examples/openinbox-full-demo.workflow.json) into n8n to try it.

  ## Installation

  **n8n Cloud (verified node):** Search for `OpenInbox` directly in the node picker on the canvas — no settings required. Just drag it into your workflow.

  **Self-hosted / manual:**

  1. Go to **Settings → Community Nodes**.
  2. Click **Install**.
  3. Enter `n8n-nodes-openinbox` and confirm.
  4. Make sure **Verified Community Nodes** is enabled in your Admin Panel (you may need to restart your instance).

  After installation, two nodes become available:

  - **OpenInbox** — REST operations against the OpenInbox API.
  - **OpenInbox Trigger** — Fires when an OpenInbox webhook event is delivered.

  ## Credentials

  Create an **OpenInbox API** credential and set:

  - **API Key** — generate one from your OpenInbox dashboard at https://openinbox.io. API access is available on Pro, Business, and 7-Day Pass tiers. **Pro plan includes a 7-day free trial — [start free at openinbox.io](https://openinbox.io/pricing).**

  The key is sent as the `X-API-Key` request header.

  ## Operations

  ### Inbox

  | Operation | HTTP     | Endpoint                   | Description                                                                            |
  | --------- | -------- | -------------------------- | -------------------------------------------------------------------------------------- |
  | Create    | `POST`   | `/api/v1/inboxes`          | Create a new disposable inbox. Optional `prefix` to control the local-part.            |
  | Get       | `GET`    | `/api/v1/inboxes/:inboxId` | Fetch an inbox by ID, including `emailCount` and `isExpired`.                          |
  | Get Many  | `GET`    | `/api/v1/inboxes`          | List inboxes with `limit`/`offset` pagination. Toggle **Return All** to auto-paginate. |
  | Delete    | `DELETE` | `/api/v1/inboxes/:inboxId` | Permanently delete an inbox and all its emails.                                        |

  ### Email

  | Operation | HTTP     | Endpoint                          | Description                                            |
  | --------- | -------- | --------------------------------- | ------------------------------------------------------ |
  | Get Many  | `GET`    | `/api/v1/inboxes/:inboxId/emails` | List emails in an inbox. Optional `unreadOnly` filter. |
  | Get       | `GET`    | `/api/v1/emails/:emailId`         | Fetch a single email (auto-marks as read).             |
  | Delete    | `DELETE` | `/api/v1/emails/:emailId`         | Permanently delete an email.                           |

  ### Webhook

  | Operation | HTTP     | Endpoint                      | Description                                |
  | --------- | -------- | ----------------------------- | ------------------------------------------ |
  | Create    | `POST`   | `/api/v1/webhooks`            | Register a webhook for one or more events. |
  | Get Many  | `GET`    | `/api/v1/webhooks`            | List all webhooks on the account.          |
  | Delete    | `DELETE` | `/api/v1/webhooks/:webhookId` | Remove a webhook subscription.             |

  ### Account

  | Operation | HTTP  | Endpoint          | Description                              |
  | --------- | ----- | ----------------- | ---------------------------------------- |
  | Get       | `GET` | `/api/v1/account` | Get tier, rate limits and current usage. |

  ## Trigger Node

  The **OpenInbox Trigger** automatically registers a webhook with OpenInbox when the workflow activates and removes it when the workflow deactivates.

  ### Setup

  1. Add an **OpenInbox Trigger** node to your workflow.
  2. Select the **OpenInbox API** credential.
  3. Choose one or more events:
     - `email.received` — fires for every email delivered to any of your inboxes.
     - `inbox.created`
     - `inbox.expired`
  4. **Activate** the workflow. n8n will call `POST /api/v1/webhooks` with the workflow's public webhook URL. Deactivating calls `DELETE /api/v1/webhooks/:id`.

  ### Payload

  OpenInbox delivers JSON like this:

  ```json
  {
    "event": "email.received",
    "timestamp": "2026-04-26T12:00:00Z",
    "data": {
      "emailId": "uuid",
      "inboxId": "uuid",
      "from": "sender@example.com",
      "subject": "Hello!"
    }
  }
  ```

  The trigger forwards this body verbatim, plus a `__delivery` object containing the `X-Webhook-Signature`, `X-Webhook-Event`, and `X-Webhook-Delivery` headers so you can verify the HMAC-SHA256 signature against your webhook secret.

  ### Signature Format

  ```
  X-Webhook-Signature: t=<timestamp>,v1=<hex_sha256>
  ```

  To verify: `HMAC_SHA256(secret, "<timestamp>." + JSON.stringify(payload))`.

  ## Compatibility

  - n8n `>= 1.0`
  - Node.js `>= 18.10`

  ## Resources

  - [OpenInbox website](https://openinbox.io)
  - [API documentation](https://openinbox.io/api-docs)
  - [Issue tracker](https://github.com/openinbox-io/n8n-nodes-openinbox/issues)
  - [n8n community nodes docs](https://docs.n8n.io/integrations/community-nodes/)

  ## License

  MIT — see [LICENSE.md](./LICENSE.md).

ai_documentation_summary:
  {"purpose":"The OpenInbox Trigger node automatically registers a webhook with the OpenInbox API to listen for email events (e.g., new emails) and fires the workflow when those events occur.","capabilities":["Auto-registers webhooks on workflow activation","Auto-removes webhooks on workflow deactivation","Listens for email.received events","Listens for inbox.created events","Listens for inbox.expired events","Validates webhook HMAC signatures","Triggers workflow execution on event receipt"],"authentication":"API Key required (OpenInbox API Key sent via X-API-Key header)","commonUseCases":["OTP & verification automation","Email integration testing","Signup flow QA","Disposable email monitoring"],"limitations":["OpenInbox is receive-only (cannot send emails)","Requires Pro plan or 7-Day Pass for API access","Webhooks are tied to the workflow lifecycle (created on activation, deleted on deactivation)"],"relatedNodes":["OpenInbox (REST operations node)","Switch node","Code node","JSON node"]}


