# nodes

node_type: n8n-nodes-zadarma-app.zadarmaTrigger
package_name: n8n-nodes-zadarma-app
display_name: Zadarma Trigger
description: Receives Zadarma webhooks
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: zadarma
author_github_url: https://github.com/zadarma/n8n-nodes-zadarma.git
npm_package_name: n8n-nodes-zadarma-app
npm_version: 0.1.6
community_fetched_at: 2026-07-14T14:40:34.489Z
ai_summary_generated_at: 2026-06-26 10:29:17
npm_readme:
  # n8n-nodes-zadarma-app

  n8n node for integrating **Zadarma** with n8n workflows.

  This node allows you to connect n8n with Zadarma API to automate lead management, callbacks, and other CRM-related operations.

  ## Features

  - Create and update entities in Teamsale CRM
  - Trigger workflows based on Zadarma events (callbacks, leads, etc.)
  - Supports error handling and `continueOnFail`

  ## Installation

  ### Community nodes (recommended)

  In n8n:

  1. Go to Settings -> Community nodes -> Install.
  2. Find the app by npm Package Name "n8n-nodes-zadarma-app"

  After install:

  1. Credentials → Create New → Zadarma
  2. Enter API Key + Secret from https://my.zadarma.com/marketplace/
  3. Add Zadarma node to workflow


  Restart n8n if required.

  ### Manual installation

  ```bash
  npm install n8n-nodes-zadarma-app
  ```

  ---

  Or for local development (restart n8n after setting the variable):

  ```bash
  export N8N_CUSTOM_EXTENSIONS=/path/to/custom-nodes
  ```

  ## Usage example

  You can find more examples in our instruction page https://zadarma.com/en/support/instructions/n8n/

  ### Sending SMS from n8n

  Trigger - receiving a third-party Webhook, action - sending an SMS.
  In the **Workflows** section, click the **Create workflow** button then **Add first step** find and select the Webhook node.

  #### Trigger - Webhook

  Select the type of **Webhook URL**: Test URL or Production URL. In the **HTTP Method** field, choose the POST request type.

  #### Webhook settings

  Click **Listen for event** and copy the URL to which the Webhooks will be sent. After that, you need to receive a test Webhook so that the trigger can obtain a list of parameters for further use. For testing, we can send a POST request to our Webhook, for example using a bash script:

  ```bash
  curl -X POST https://n8n.yourdomain.com/webhook-test/a5bbc64f-2714-446a-bfff-01b0fedbxab0 \
  -H "Content-Type: application/json" \
  -d '{"text": "Wake up, Neo...", "phone": "+44201234567"}'
  ```

  - https://n8n.yourdomain.com/webhook-test/a5bbc64f-2714-446a-bfff-01b0fedbxab0 - The URL of your webhook in n8n.
  Next, add a second step to your Workflow. 
  In the search, find Zadarma and select the **Create SMS** action.

  #### Zadarma Create SMS

  On the left side of the window, the structure of the test Webhook notification received in the previous step will be displayed. Drag the required parameters into the corresponding fields for sending the SMS. In our example, two parameters were received, **Text** and **Phone**, which will be used as the SMS text and the recipient’s phone number respectively. You may have any other parameters.

  #### SMS Parameters

  Close the window. The setup is complete. Your Workflow is ready to run and publish. Now, when a Webhook is received at your URL, an SMS message will be sent.


  ## Credentials

  This node requires Zadarma API credentials.

  Create new credentials in n8n:

  - API Token (required) from https://my.zadarma.com/marketplace/

  The credentials are securely stored by n8n and used for all requests to the Zadarma API.

  ## Supported Resources & Operations

  | Resource | Operations          |
  |----------|---------------------|
  | Lead     | Get, Create, Update |
  | Callback | Create              |
  | Customer | Get, Create, Update |
  | Event    | Create, Update      |
  | SMS      | Create              |

  ## License

  [MIT](LICENSE.md)

  ## Changelog

  See [CHANGELOG.md](CHANGELOG.md) for release history.

ai_documentation_summary:
  {"purpose":"Connects n8n with Zadarma to automate CRM-related workflows, including lead/customer management, callbacks, SMS, and event handling. The Trigger node receives Zadarma webhooks and can start workflows based on Zadarma events.","capabilities":["Receives Zadarma webhooks as a trigger","Triggers workflows based on Zadarma events such as callbacks and leads","Creates, gets, and updates Lead entities in Teamsale CRM","Creates callbacks","Creates, gets, and updates Customer entities","Creates and updates Event entities","Creates SMS messages","Supports error handling and continueOnFail"],"authentication":"Zadarma API credentials required: API Key/API Token and Secret from the Zadarma marketplace","commonUseCases":["Start workflows when Zadarma sends a callback or lead event","Synchronize or manage CRM leads and customers in Teamsale","Send SMS notifications from n8n based on incoming webhook data"],"limitations":[],"relatedNodes":["Webhook node"]}


node_type: n8n-nodes-mentionfox.mentionFoxTrigger
package_name: n8n-nodes-mentionfox
display_name: MentionFox 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: osakasaul
author_github_url: https://github.com/OsakaSaul/
npm_package_name: n8n-nodes-mentionfox
npm_version: 0.1.3
community_fetched_at: 2026-07-14T14:40:34.490Z
ai_summary_generated_at: 2026-06-26 10:29:17
description:
  Polls MentionFox for new mentions, high-intent leads, GEO score drops, battlecards, or crisis signals.

npm_readme:
  # n8n-nodes-mentionfox

  [![npm version](https://img.shields.io/npm/v/n8n-nodes-mentionfox.svg)](https://www.npmjs.com/package/n8n-nodes-mentionfox)
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE.md)

  Community n8n node for [MentionFox](https://mentionfox.com) and FoxAPIs.

  This package gives n8n workflows direct access to MentionFox's research, vetting, dossier, mention-scanning, lead-enrichment, and GEO/AEO scoring tools through the MentionFox MCP (Model Context Protocol) server.

  ## Features

  - **8 resources** with **30+ operations** in a single MentionFox node
  - **5 polling triggers** for new mentions, high-intent leads, GEO score drops, new battlecards, and crisis signals
  - **8 ready-to-import workflow templates** in `/templates/`
  - **JSON-RPC 2.0 / MCP transport** to `https://mentionfox.com/mcp`
  - **Bearer-token credential** with built-in test endpoint (hits MCP `tools/list`)

  ## Installation

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

  ```
  n8n-nodes-mentionfox
  ```

  Or, for self-hosted n8n via npm:

  ```bash
  npm install n8n-nodes-mentionfox
  ```

  ## Authentication

  This node uses bearer-token authentication against the MentionFox MCP server.

  1. Visit https://mentionfox.com/connect
  2. Sign in with your MentionFox account
  3. Copy the bearer access token (24-hour expiry; refresh via the same page)
  4. In n8n, create a new **MentionFox API** credential and paste the token

  n8n will run a credential test against `tools/list` on the MCP server. A green check confirms the token is live.

  > **v0.1 note**: full OAuth-grant flow inside the credential editor is on the v1.1 roadmap. v0.1 uses paste-token for simplicity.

  ## Resources

  | Resource | Operations |
  |---|---|
  | Subject | vet_person, get_dossier, compare_subjects, evaluate_influencer |
  | Mention | scan, list_recent, score_intent, get_by_id |
  | Lead | find_contact, enrich_person, score_lead, push_to_dealflow |
  | GEOFixer | run_audit, get_score, list_gaps, autopilot_status, autopilot_toggle |
  | Outreach | build_sequence, send_sequence, get_sequence_status, list_replies |
  | Chat | start_session, send_message, get_history, export_transcript |
  | Den | list_dens, get_den_widget_data, create_den_task, list_den_tasks |
  | Client | list_clients, create_client, get_client_geo_score, list_client_battlecards |

  Operations whose dedicated MCP tool is pending in v0.1 surface as transparent stubs that return the dashboard URL plus your input arguments unchanged. Workflows wired against stubs light up automatically once MentionFox MCP v1.5 ships dedicated tools — no node version bump required.

  See `/docs/` for per-resource documentation.

  ## Triggers (5)

  | Trigger | What it does |
  |---|---|
  | On New Mention | Polls `scan_for_mentions`, dedupes by source URL |
  | On New High-Intent Lead | Polls scan + heuristic intent score (above threshold) |
  | On GEO Score Drop | Polls `get_geofixer_score`, fires on N-point drops |
  | On New Battlecard Generated | Polls battlecards (stub — heartbeat only in v0.1) |
  | On Crisis Signal Detected | Polls scan filtered to crisis keywords; recommended faster cadence |

  ## Worked examples

  ### Example 1: Vet inbound founder leads from HubSpot

  1. HubSpot Trigger fires on new contact
  2. MentionFox node: `Subject` → `vet_person` (founder), pass `{{$json.firstname}} {{$json.lastname}}`
  3. Slack node posts the verdict and public report URL to a channel

  Import `/templates/01-auto-vet-inbound-founder-leads.json` to see the full wiring.

  ### Example 2: Daily GEO health check

  1. Schedule trigger at 09:00 daily
  2. MentionFox node: `GEOFixer` → `run_audit` for your domain
  3. MentionFox node: `GEOFixer` → `list_gaps`, top 5
  4. Notion node logs score; Slack node summarises

  Import `/templates/02-daily-geo-health-check.json`.

  ### Example 3: Reddit signal to personalised outreach

  1. MentionFox Trigger (`On New High-Intent Lead`) on your topic + Reddit only
  2. MentionFox node: `Lead` → `find_contact`
  3. MentionFox node: `Outreach` → `build_sequence` (stub in v0.1, returns dashboard URL)
  4. Apollo / Instantly HTTP request to send the sequence

  Import `/templates/03-reddit-signal-personalized-outreach.json`.

  ## Workflow templates (8)

  Import any of these via n8n's **Workflows → Import from File**:

  1. `01-auto-vet-inbound-founder-leads.json` — HubSpot → MentionFox → Slack
  2. `02-daily-geo-health-check.json` — Cron → GEO audit → Notion + Slack
  3. `03-reddit-signal-personalized-outreach.json` — MentionFox Trigger → Find Contact → Build Sequence → Apollo
  4. `04-vet-candidate-before-interview.json` — Greenhouse webhook → Dossier → conditional Slack red/green
  5. `05-compare-conference-speakers.json` — Eventbrite webhook → Compare 3 → Notion log
  6. `06-crisis-detection-immediate-page.json` — Crisis Trigger → Slack page + Linear incident
  7. `07-foxchat-conversation-to-den-task.json` — FoxChat webhook → Create Den task
  8. `08-dossier-as-a-service-sales-calls.json` — Calendar 60min before → Dossier → Email rep

  ## Pricing transparency

  MentionFox tools cost credits per call. The MentionFox node passes through the same credit charges your account would incur on the dashboard:

  | Operation | Cost |
  |---|---|
  | vet_person (founder) | 200 credits |
  | vet_person (investor) | 30 credits |
  | get_dossier | 30 credits cold / FREE on cache hit |
  | compare_subjects | 5 credits per cached profile |
  | Mention scan | 3 credits per source |
  | enrich_person | 5 credits |
  | save_to_my_pipeline | FREE |
  | GEOFixer (all ops) | FREE for paid GEOFixer subscribers |

  Disambiguation always returns a candidate list at zero credits — you only pay when a real subject is locked in.

  ## Documentation

  - Per-resource pages live in `/docs/`
  - Use cases: `/docs/use-cases.md`
  - Reliability tests: `/docs/reliability-tests.md`
  - Performance: `/docs/performance.md`
  - Security audit: `/docs/security-audit.md`
  - Submitting to n8n's verified community list: `/docs/n8n-pr.md`

  ## License

  [MIT](LICENSE.md)

  ## Author

  Saul Fleischman / [MentionFox](https://mentionfox.com)

  ## Issues / contact

  Open an issue at https://github.com/OsakaSaul/n8n-nodes-mentionfox/issues, or email saul@mentionfox.com.

ai_documentation_summary:
  {"purpose":"Polls MentionFox for new mentions, high-intent leads, GEO score drops, battlecards, and crisis signals. It also exposes MentionFox/MCP tools for research, vetting, dossier lookup, lead enrichment, outreach, GEO/AEO scoring, and related workflow actions.","capabilities":["Polling triggers for new mentions, high-intent leads, GEO score drops, new battlecards, and crisis signals","Subject operations: vet_person, get_dossier, compare_subjects, evaluate_influencer","Mention operations: scan, list_recent, score_intent, get_by_id","Lead operations: find_contact, enrich_person, score_lead, push_to_dealflow","GEOFixer operations: run_audit, get_score, list_gaps, autopilot_status, autopilot_toggle","Outreach operations: build_sequence, send_sequence, get_sequence_status, list_replies","Chat operations: start_session, send_message, get_history, export_transcript","Den operations: list_dens, get_den_widget_data, create_den_task, list_den_tasks","Client operations: list_clients, create_client, get_client_geo_score, list_client_battlecards","MCP-based JSON-RPC 2.0 access to https://mentionfox.com/mcp"],"authentication":"Bearer token required. Create a MentionFox API credential in n8n and paste the access token from mentionfox.com/connect; token expires after 24 hours and can be refreshed there.","commonUseCases":["Vet inbound leads or people before outreach, interviews, or sales follow-up","Monitor topics for new mentions or crisis signals and alert Slack/incident tools","Run daily GEO/AEO audits and log score/gap changes","Find and enrich contacts, then generate outreach sequences","Compare subjects such as conference speakers, founders, or candidates"],"limitations":["Some operations in v0.1 are transparent stubs and return the dashboard URL plus input arguments unchanged until dedicated MCP tools ship","Full OAuth-grant flow in the credential editor is not yet available; paste-token auth is used in v0.1","Bearer tokens have a 24-hour expiry and must be refreshed"],"relatedNodes":["HubSpot Trigger","Slack","Notion","Cron","Greenhouse"]}


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

updated_at: 2026-07-14 14:40:34
author_name: osakasaul
author_github_url: https://github.com/OsakaSaul/
npm_package_name: n8n-nodes-mentionfox
npm_version: 0.1.3
community_fetched_at: 2026-07-14T14:40:34.491Z
ai_summary_generated_at: 2026-06-26 10:29:17
description:
  OSINT, dossiers, mention scanning, lead enrichment, GEOFixer scoring, and pipeline watch via MentionFox.

properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "subject",
      "options": [
        {
          "name": "GEOFixer",
          "value": "geoFixer",
          "description": "GEO/AEO scoring + audit + gaps"
        },
        {
          "name": "Lead",
          "value": "lead",
          "description": "Find / enrich / push to dealflow"
        },
        {
          "name": "Mention",
          "value": "mention",
          "description": "Scan platforms, list recent"
        },
        {
          "name": "Subject",
          "value": "subject",
          "description": "Vetting, dossiers, comparisons"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get_dossier",
      "options": [
        {
          "name": "Vet Person",
          "value": "vet_person",
          "action": "Vet a founder or investor",
          "description": "Generate a single-page founder or investor vetting report. Charges 30 (investor) or 200 (founder) credits when a report returns; ambiguous names return a candidate list for free."
        },
        {
          "name": "Compare Subjects",
          "value": "compare_subjects",
          "action": "Compare 2 to 5 subjects",
          "description": "Side-by-side comparison of 2-5 people across 23 dimensions. 5 credits per cached profile, free if fewer than 2 cached."
        },
        {
          "name": "Get Dossier",
          "value": "get_dossier",
          "action": "Get full dossier on a subject",
          "description": "Full multi-section dossier — 60+ sections of intel. 30 credits cold, FREE on cache hit."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "subject"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "scan",
      "options": [
        {
          "name": "Scan for Mentions",
          "value": "scan",
          "action": "Scan platforms for mentions",
          "description": "Real-time scan across 50+ social platforms in the last 24 hours. 3 credits per source scanned."
        },
        {
          "name": "List Recent",
          "value": "list_recent",
          "action": "List recent mentions",
          "description": "List recent research / mention activity for your account. FREE."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "mention"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "find_contact",
      "options": [
        {
          "name": "Find Contact",
          "value": "find_contact",
          "action": "Find verified contact info",
          "description": "Find verified contact info — email, phone, LinkedIn — for a known person. 5 credits."
        },
        {
          "name": "Enrich Person",
          "value": "enrich_person",
          "action": "Enrich a person",
          "description": "Alias of find_contact. 5 credits."
        },
        {
          "name": "Push to Dealflow",
          "value": "push_to_dealflow",
          "action": "Push lead to dealflow",
          "description": "Save the lead to your MentionFox Dealflow pipeline. FREE."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "lead"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get_score",
      "options": [
        {
          "name": "Get Score",
          "value": "get_score",
          "action": "Get GEO score",
          "description": "Get current GEO/AEO visibility score with per-LLM and per-persona breakdown. FREE."
        },
        {
          "name": "List Gaps",
          "value": "list_gaps",
          "action": "List GEO improvement gaps",
          "description": "Get the top N concrete actions to improve GEO/AEO visibility. FREE."
        },
        {
          "name": "Run Audit",
          "value": "run_audit",
          "action": "Run GEO audit",
          "description": "Trigger a fresh GEO/AEO scan across ChatGPT, Gemini, Claude, Perplexity. FREE for paid GEOFixer subscribers."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "geoFixer"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "build_sequence",
      "options": [
        {
          "name": "Build Sequence",
          "value": "build_sequence",
          "action": "Build outreach sequence",
          "description": "STUB v0.1: pending MCP outreach tools. Returns dashboard URL for now."
        },
        {
          "name": "Send Sequence",
          "value": "send_sequence",
          "action": "Send outreach sequence",
          "description": "STUB v0.1: pending MCP outreach tools"
        },
        {
          "name": "Get Sequence Status",
          "value": "get_sequence_status",
          "action": "Get sequence status",
          "description": "STUB v0.1: pending MCP outreach tools"
        },
        {
          "name": "List Replies",
          "value": "list_replies",
          "action": "List sequence replies",
          "description": "STUB v0.1: pending MCP outreach tools"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "outreach"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "start_session",
      "options": [
        {
          "name": "Start Session",
          "value": "start_session",
          "action": "Start a chat session",
          "description": "STUB v0.1: pending FoxChat MCP tools. Returns FoxChat dashboard URL."
        },
        {
          "name": "Send Message",
          "value": "send_message",
          "action": "Send chat message",
          "description": "STUB v0.1: pending FoxChat MCP tools"
        },
        {
          "name": "Get History",
          "value": "get_history",
          "action": "Get chat history",
          "description": "STUB v0.1: pending FoxChat MCP tools"
        },
        {
          "name": "Export Transcript",
          "value": "export_transcript",
          "action": "Export transcript",
          "description": "STUB v0.1: pending FoxChat MCP tools"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "chat"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list_dens",
      "options": [
        {
          "name": "List Dens",
          "value": "list_dens",
          "action": "List active dens",
          "description": "STUB v0.1: pending Den MCP tools. Returns Den catalog dashboard URL."
        },
        {
          "name": "Get Widget Data",
          "value": "get_den_widget_data",
          "action": "Get den widget data",
          "description": "STUB v0.1: pending Den MCP tools"
        },
        {
          "name": "Create Task",
          "value": "create_den_task",
          "action": "Create a den task",
          "description": "STUB v0.1: pending Den MCP tools"
        },
        {
          "name": "List Tasks",
          "value": "list_den_tasks",
          "action": "List den tasks",
          "description": "STUB v0.1: pending Den MCP tools"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "den"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list_clients",
      "options": [
        {
          "name": "List Clients",
          "value": "list_clients",
          "action": "List your agency clients",
          "description": "STUB v0.1: pending MCP tool"
        },
        {
          "name": "Create Client",
          "value": "create_client",
          "action": "Create a new client",
          "description": "STUB v0.1: pending MCP tool"
        },
        {
          "name": "Get GEO Score for Client",
          "value": "get_client_geo_score",
          "action": "Get client geo score",
          "description": "Wraps get_geofixer_score against the client brand domain. FREE."
        },
        {
          "name": "List Battlecards",
          "value": "list_client_battlecards",
          "action": "List client battlecards",
          "description": "STUB v0.1: pending MCP tool"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "client"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Vet Person",
      "value": "vet_person",
      "action": "Vet a founder or investor",
      "description": "Generate a single-page founder or investor vetting report. Charges 30 (investor) or 200 (founder) credits when a report returns; ambiguous names return a candidate list for free.",
      "resource": "subject"
    },
    {
      "name": "Compare Subjects",
      "value": "compare_subjects",
      "action": "Compare 2 to 5 subjects",
      "description": "Side-by-side comparison of 2-5 people across 23 dimensions. 5 credits per cached profile, free if fewer than 2 cached.",
      "resource": "subject"
    },
    {
      "name": "Get Dossier",
      "value": "get_dossier",
      "action": "Get full dossier on a subject",
      "description": "Full multi-section dossier — 60+ sections of intel. 30 credits cold, FREE on cache hit.",
      "resource": "subject"
    },
    {
      "name": "Scan for Mentions",
      "value": "scan",
      "action": "Scan platforms for mentions",
      "description": "Real-time scan across 50+ social platforms in the last 24 hours. 3 credits per source scanned.",
      "resource": "mention"
    },
    {
      "name": "List Recent",
      "value": "list_recent",
      "action": "List recent mentions",
      "description": "List recent research / mention activity for your account. FREE.",
      "resource": "mention"
    },
    {
      "name": "Find Contact",
      "value": "find_contact",
      "action": "Find verified contact info",
      "description": "Find verified contact info — email, phone, LinkedIn — for a known person. 5 credits.",
      "resource": "lead"
    },
    {
      "name": "Enrich Person",
      "value": "enrich_person",
      "action": "Enrich a person",
      "description": "Alias of find_contact. 5 credits.",
      "resource": "lead"
    },
    {
      "name": "Push to Dealflow",
      "value": "push_to_dealflow",
      "action": "Push lead to dealflow",
      "description": "Save the lead to your MentionFox Dealflow pipeline. FREE.",
      "resource": "lead"
    },
    {
      "name": "Get Score",
      "value": "get_score",
      "action": "Get GEO score",
      "description": "Get current GEO/AEO visibility score with per-LLM and per-persona breakdown. FREE.",
      "resource": "geoFixer"
    },
    {
      "name": "List Gaps",
      "value": "list_gaps",
      "action": "List GEO improvement gaps",
      "description": "Get the top N concrete actions to improve GEO/AEO visibility. FREE.",
      "resource": "geoFixer"
    },
    {
      "name": "Run Audit",
      "value": "run_audit",
      "action": "Run GEO audit",
      "description": "Trigger a fresh GEO/AEO scan across ChatGPT, Gemini, Claude, Perplexity. FREE for paid GEOFixer subscribers.",
      "resource": "geoFixer"
    },
    {
      "name": "Build Sequence",
      "value": "build_sequence",
      "action": "Build outreach sequence",
      "description": "STUB v0.1: pending MCP outreach tools. Returns dashboard URL for now.",
      "resource": "outreach"
    },
    {
      "name": "Send Sequence",
      "value": "send_sequence",
      "action": "Send outreach sequence",
      "description": "STUB v0.1: pending MCP outreach tools",
      "resource": "outreach"
    },
    {
      "name": "Get Sequence Status",
      "value": "get_sequence_status",
      "action": "Get sequence status",
      "description": "STUB v0.1: pending MCP outreach tools",
      "resource": "outreach"
    },
    {
      "name": "List Replies",
      "value": "list_replies",
      "action": "List sequence replies",
      "description": "STUB v0.1: pending MCP outreach tools",
      "resource": "outreach"
    },
    {
      "name": "Start Session",
      "value": "start_session",
      "action": "Start a chat session",
      "description": "STUB v0.1: pending FoxChat MCP tools. Returns FoxChat dashboard URL.",
      "resource": "chat"
    },
    {
      "name": "Send Message",
      "value": "send_message",
      "action": "Send chat message",
      "description": "STUB v0.1: pending FoxChat MCP tools",
      "resource": "chat"
    },
    {
      "name": "Get History",
      "value": "get_history",
      "action": "Get chat history",
      "description": "STUB v0.1: pending FoxChat MCP tools",
      "resource": "chat"
    },
    {
      "name": "Export Transcript",
      "value": "export_transcript",
      "action": "Export transcript",
      "description": "STUB v0.1: pending FoxChat MCP tools",
      "resource": "chat"
    },
    {
      "name": "List Dens",
      "value": "list_dens",
      "action": "List active dens",
      "description": "STUB v0.1: pending Den MCP tools. Returns Den catalog dashboard URL.",
      "resource": "den"
    },
    {
      "name": "Get Widget Data",
      "value": "get_den_widget_data",
      "action": "Get den widget data",
      "description": "STUB v0.1: pending Den MCP tools",
      "resource": "den"
    },
    {
      "name": "Create Task",
      "value": "create_den_task",
      "action": "Create a den task",
      "description": "STUB v0.1: pending Den MCP tools",
      "resource": "den"
    },
    {
      "name": "List Tasks",
      "value": "list_den_tasks",
      "action": "List den tasks",
      "description": "STUB v0.1: pending Den MCP tools",
      "resource": "den"
    },
    {
      "name": "List Clients",
      "value": "list_clients",
      "action": "List your agency clients",
      "description": "STUB v0.1: pending MCP tool",
      "resource": "client"
    },
    {
      "name": "Create Client",
      "value": "create_client",
      "action": "Create a new client",
      "description": "STUB v0.1: pending MCP tool",
      "resource": "client"
    },
    {
      "name": "Get GEO Score for Client",
      "value": "get_client_geo_score",
      "action": "Get client geo score",
      "description": "Wraps get_geofixer_score against the client brand domain. FREE.",
      "resource": "client"
    },
    {
      "name": "List Battlecards",
      "value": "list_client_battlecards",
      "action": "List client battlecards",
      "description": "STUB v0.1: pending MCP tool",
      "resource": "client"
    }
  ]

npm_readme:
  # n8n-nodes-mentionfox

  [![npm version](https://img.shields.io/npm/v/n8n-nodes-mentionfox.svg)](https://www.npmjs.com/package/n8n-nodes-mentionfox)
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE.md)

  Community n8n node for [MentionFox](https://mentionfox.com) and FoxAPIs.

  This package gives n8n workflows direct access to MentionFox's research, vetting, dossier, mention-scanning, lead-enrichment, and GEO/AEO scoring tools through the MentionFox MCP (Model Context Protocol) server.

  ## Features

  - **8 resources** with **30+ operations** in a single MentionFox node
  - **5 polling triggers** for new mentions, high-intent leads, GEO score drops, new battlecards, and crisis signals
  - **8 ready-to-import workflow templates** in `/templates/`
  - **JSON-RPC 2.0 / MCP transport** to `https://mentionfox.com/mcp`
  - **Bearer-token credential** with built-in test endpoint (hits MCP `tools/list`)

  ## Installation

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

  ```
  n8n-nodes-mentionfox
  ```

  Or, for self-hosted n8n via npm:

  ```bash
  npm install n8n-nodes-mentionfox
  ```

  ## Authentication

  This node uses bearer-token authentication against the MentionFox MCP server.

  1. Visit https://mentionfox.com/connect
  2. Sign in with your MentionFox account
  3. Copy the bearer access token (24-hour expiry; refresh via the same page)
  4. In n8n, create a new **MentionFox API** credential and paste the token

  n8n will run a credential test against `tools/list` on the MCP server. A green check confirms the token is live.

  > **v0.1 note**: full OAuth-grant flow inside the credential editor is on the v1.1 roadmap. v0.1 uses paste-token for simplicity.

  ## Resources

  | Resource | Operations |
  |---|---|
  | Subject | vet_person, get_dossier, compare_subjects, evaluate_influencer |
  | Mention | scan, list_recent, score_intent, get_by_id |
  | Lead | find_contact, enrich_person, score_lead, push_to_dealflow |
  | GEOFixer | run_audit, get_score, list_gaps, autopilot_status, autopilot_toggle |
  | Outreach | build_sequence, send_sequence, get_sequence_status, list_replies |
  | Chat | start_session, send_message, get_history, export_transcript |
  | Den | list_dens, get_den_widget_data, create_den_task, list_den_tasks |
  | Client | list_clients, create_client, get_client_geo_score, list_client_battlecards |

  Operations whose dedicated MCP tool is pending in v0.1 surface as transparent stubs that return the dashboard URL plus your input arguments unchanged. Workflows wired against stubs light up automatically once MentionFox MCP v1.5 ships dedicated tools — no node version bump required.

  See `/docs/` for per-resource documentation.

  ## Triggers (5)

  | Trigger | What it does |
  |---|---|
  | On New Mention | Polls `scan_for_mentions`, dedupes by source URL |
  | On New High-Intent Lead | Polls scan + heuristic intent score (above threshold) |
  | On GEO Score Drop | Polls `get_geofixer_score`, fires on N-point drops |
  | On New Battlecard Generated | Polls battlecards (stub — heartbeat only in v0.1) |
  | On Crisis Signal Detected | Polls scan filtered to crisis keywords; recommended faster cadence |

  ## Worked examples

  ### Example 1: Vet inbound founder leads from HubSpot

  1. HubSpot Trigger fires on new contact
  2. MentionFox node: `Subject` → `vet_person` (founder), pass `{{$json.firstname}} {{$json.lastname}}`
  3. Slack node posts the verdict and public report URL to a channel

  Import `/templates/01-auto-vet-inbound-founder-leads.json` to see the full wiring.

  ### Example 2: Daily GEO health check

  1. Schedule trigger at 09:00 daily
  2. MentionFox node: `GEOFixer` → `run_audit` for your domain
  3. MentionFox node: `GEOFixer` → `list_gaps`, top 5
  4. Notion node logs score; Slack node summarises

  Import `/templates/02-daily-geo-health-check.json`.

  ### Example 3: Reddit signal to personalised outreach

  1. MentionFox Trigger (`On New High-Intent Lead`) on your topic + Reddit only
  2. MentionFox node: `Lead` → `find_contact`
  3. MentionFox node: `Outreach` → `build_sequence` (stub in v0.1, returns dashboard URL)
  4. Apollo / Instantly HTTP request to send the sequence

  Import `/templates/03-reddit-signal-personalized-outreach.json`.

  ## Workflow templates (8)

  Import any of these via n8n's **Workflows → Import from File**:

  1. `01-auto-vet-inbound-founder-leads.json` — HubSpot → MentionFox → Slack
  2. `02-daily-geo-health-check.json` — Cron → GEO audit → Notion + Slack
  3. `03-reddit-signal-personalized-outreach.json` — MentionFox Trigger → Find Contact → Build Sequence → Apollo
  4. `04-vet-candidate-before-interview.json` — Greenhouse webhook → Dossier → conditional Slack red/green
  5. `05-compare-conference-speakers.json` — Eventbrite webhook → Compare 3 → Notion log
  6. `06-crisis-detection-immediate-page.json` — Crisis Trigger → Slack page + Linear incident
  7. `07-foxchat-conversation-to-den-task.json` — FoxChat webhook → Create Den task
  8. `08-dossier-as-a-service-sales-calls.json` — Calendar 60min before → Dossier → Email rep

  ## Pricing transparency

  MentionFox tools cost credits per call. The MentionFox node passes through the same credit charges your account would incur on the dashboard:

  | Operation | Cost |
  |---|---|
  | vet_person (founder) | 200 credits |
  | vet_person (investor) | 30 credits |
  | get_dossier | 30 credits cold / FREE on cache hit |
  | compare_subjects | 5 credits per cached profile |
  | Mention scan | 3 credits per source |
  | enrich_person | 5 credits |
  | save_to_my_pipeline | FREE |
  | GEOFixer (all ops) | FREE for paid GEOFixer subscribers |

  Disambiguation always returns a candidate list at zero credits — you only pay when a real subject is locked in.

  ## Documentation

  - Per-resource pages live in `/docs/`
  - Use cases: `/docs/use-cases.md`
  - Reliability tests: `/docs/reliability-tests.md`
  - Performance: `/docs/performance.md`
  - Security audit: `/docs/security-audit.md`
  - Submitting to n8n's verified community list: `/docs/n8n-pr.md`

  ## License

  [MIT](LICENSE.md)

  ## Author

  Saul Fleischman / [MentionFox](https://mentionfox.com)

  ## Issues / contact

  Open an issue at https://github.com/OsakaSaul/n8n-nodes-mentionfox/issues, or email saul@mentionfox.com.

ai_documentation_summary:
  {"purpose":"MentionFox connects n8n workflows to MentionFox and FoxAPIs for OSINT research, dossier generation, mention scanning, lead enrichment, GEO/AEO scoring, outreach, and pipeline monitoring. It exposes these capabilities through the MentionFox MCP server.","capabilities":["Vet and compare subjects, including person vetting, dossier retrieval, subject comparison, and influencer evaluation","Scan and list mentions, score intent, and fetch mention records by ID","Find and enrich contacts, score leads, and push qualified leads to a dealflow/pipeline","Run GEOFixer audits, retrieve GEO scores, list gaps, and manage autopilot status","Build outreach sequences, send sequences, check sequence status, and list replies","Start chat sessions, send messages, get chat history, and export transcripts","Manage Den resources such as listing dens, retrieving widget data, creating tasks, and listing tasks","Manage client records including listing/creating clients, fetching client GEO scores, and listing battlecards","Provide polling triggers for new mentions, high-intent leads, GEO score drops, new battlecards, and crisis signals","Use JSON-RPC 2.0 / MCP transport against the MentionFox MCP endpoint"],"authentication":"Bearer-token authentication; users paste a MentionFox access token into the n8n MentionFox API credential after generating it from mentionfox.com/connect. Tokens have a 24-hour expiry and the credential test calls MCP tools/list.","commonUseCases":["Vet inbound leads or candidates before sales or interview follow-up","Run daily GEO health checks and track score changes","Detect new mentions or crisis signals and trigger alerts","Turn high-intent social/reddit signals into personalized outreach","Generate and compare dossiers for founders, speakers, investors, or other subjects"],"limitations":["Some operations are transparent stubs in v0.1 and return only the dashboard URL plus input arguments until dedicated MCP tools ship","Full OAuth grant flow inside the credential editor is not available in v0.1; paste-token authentication is used instead","MentionFox access tokens expire after 24 hours and must be refreshed"],"relatedNodes":["HubSpot","Slack","Notion","Cron","Greenhouse"]}


node_type: n8n-nodes-launix.launixNode
package_name: n8n-nodes-launix
display_name: Launix API
description: Access your Launix software, retrieve data, insert items
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: carli
author_github_url: https://github.com/launix-de/
npm_package_name: n8n-nodes-launix
npm_version: 1.4.15
community_fetched_at: 2026-07-14T14:40:34.492Z
ai_summary_generated_at: 2026-06-26 10:29:17
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "view",
      "options": [
        {
          "name": "Batch Action",
          "value": "batchAction",
          "action": "Run a batch action",
          "description": "Run a batch action (POST items)"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Insert an item",
          "description": "Insert an item"
        },
        {
          "name": "Custom Action",
          "value": "custom",
          "action": "Custom action",
          "description": "Custom action call like Invoice-Send"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete an item permanently",
          "description": "Delete an item permanently"
        },
        {
          "name": "Edit",
          "value": "edit",
          "action": "Update an item",
          "description": "Update an item"
        },
        {
          "name": "List",
          "value": "list",
          "action": "Retrieve a list of items",
          "description": "Retrieve a list of items"
        },
        {
          "name": "Retrieve File",
          "value": "retrieveFile",
          "action": "Retrieve a file",
          "description": "Download a file by ID"
        },
        {
          "name": "Upload File",
          "value": "uploadFile",
          "action": "Upload a file",
          "description": "Upload a file from binary"
        },
        {
          "name": "View",
          "value": "view",
          "action": "Retrieve an item",
          "description": "Retrieve an item"
        }
      ],
      "required": true,
      "description": "What do you want to perform on the data",
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Batch Action",
      "value": "batchAction",
      "action": "Run a batch action",
      "description": "Run a batch action (POST items)"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Insert an item",
      "description": "Insert an item"
    },
    {
      "name": "Custom Action",
      "value": "custom",
      "action": "Custom action",
      "description": "Custom action call like Invoice-Send"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete an item permanently",
      "description": "Delete an item permanently"
    },
    {
      "name": "Edit",
      "value": "edit",
      "action": "Update an item",
      "description": "Update an item"
    },
    {
      "name": "List",
      "value": "list",
      "action": "Retrieve a list of items",
      "description": "Retrieve a list of items"
    },
    {
      "name": "Retrieve File",
      "value": "retrieveFile",
      "action": "Retrieve a file",
      "description": "Download a file by ID"
    },
    {
      "name": "Upload File",
      "value": "uploadFile",
      "action": "Upload a file",
      "description": "Upload a file from binary"
    },
    {
      "name": "View",
      "value": "view",
      "action": "Retrieve an item",
      "description": "Retrieve an item"
    }
  ]

npm_readme:
  # n8n-nodes-launix

  ![Launix Logo](https://launix.de/launix/wp-content/uploads/2025/08/logo_space-1536x377.png)

  This is an n8n community node. It lets you integrate all Launix products in your n8n workflows.

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

  [Installation](#installation)  
  [Operations](#operations)  
  [Credentials](#credentials)  <!-- delete if no auth needed -->  
  [Compatibility](#compatibility)  
  [Usage](#usage)  <!-- delete if not using this section -->  
  [Resources](#resources)  
  [Version history](#version-history)  <!-- delete if not using this section -->  

  ## Why Choose Launix — and Why Automate with n8n?

  ### 🚀 A Truly Tailored ERP/CRM Ecosystem
  Launix isn’t just another off-the-shelf ERP or CRM. Powered by its proprietary **Feature Oriented Programming (FOP)** tech, Launix builds systems that evolve *with your business*, not against it. Every module—from CRM to accounting to HR—is highly configurable, letting you craft exactly what your workflows need without unnecessary features. With *hundreds of reusable, modular components*, you’ll enjoy powerful functionality without the bloat.  
  ➡ [Learn more on launix.de](https://launix.de/launix/)

  ### 📦 Everything in One Place
  CRM, ERP, HR, project and document management, portals, campaign workflows, and AI/KI integrations—Launix unifies them into a seamless suite. This reduces your total cost of ownership, centralizes data, and eliminates the headaches of mismatched tools.  
  ➡ [Discover the full suite](https://launix.de/launix/)

  ### 🔒 Secure, Efficient, and Scalable
  Security is built-in: hashed/salted passwords, SQL injection and XSS protection, plus compliance with GoBD and GDPR. The modular architecture ensures your system grows alongside your business without costly migrations.  
  ➡ [Read about Launix’s architecture](https://launix.de/launix/launix-home/)

  ### 💬 Real Efficiency Gains
  > “Thanks to Launix, we now have a proper offer and order structure. With the individual customization… we save a lot of time.”

  > “With the software from Launix, things are better now.”

  From replacing spreadsheet chaos to unifying contact, ticket, and call systems—Launix consistently boosts efficiency.

  ---

  ## The Magic of Pairing Launix with n8n Automation

  n8n automation supercharges Launix:

  - **Connect modules across the board** — trigger Launix actions automatically (create customers, send documents, update opportunities).
  - **Leverage Launix’s database schemes and views** — pull live, structured data directly from Launix, process or enrich it with n8n, and feed results back automatically. This enables real-time dashboards, intelligent notifications, and complex cross-system workflows.
  - **Save time with zero-code workflows** — chain actions like “new lead → CRM tag → automated email → project creation” without coding.
  - **Combine custom actions** — integrate Launix’s unique capabilities (e.g., `Invoice-Send`) into multi-step workflows involving email, chat apps, or external APIs.
  - **Scale complexity gradually** — start with simple automations, then expand to orchestrate advanced, multi-branch business processes.

  **💡 Why it’s cool:**  
  Launix gives you a flexible, database-driven backbone with rich API access. n8n acts as the automation glue, turning Launix’s structured data and actions into smart, responsive workflows. Together, they deliver unmatched efficiency, accuracy, and scalability.


  ## 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 operations:

  - **Batch Action** – Run a batch action (POST items)
  - **Create** – Insert a new record  
  - **Custom Action** – Run a custom action (e.g., `Invoice-Send`)  
  - **Delete** – Permanently delete a record  
  - **Edit** – Update an existing record  
  - **List** – Retrieve a list of records  
  - **View** – Retrieve a single record  

  ## Credentials

  To use this node, you need **Launix API credentials**.

  1. Log into your Launix product (e.g., ERP system).
  2. Create an API user or use your admin account. Obtain an API key in the user settings.  
  3. Copy the base URL from your launix product (e.g. https://demo2.launix.de/)
  3. Enter these details into n8n credentials of type **Launix Credentials API**. 

  ## Compatibility

  - **Minimum n8n version:** 1.106.3
  - Tested with: 1.106.3
  - No known incompatibility issues.

  ## Usage

  Once your credentials are set up, you can use the Launix node in your workflows to perform CRUD operations and special actions with your Launix products.  
  Tip: For complex workflows, you can chain multiple Launix nodes (e.g., Launix: fetch data → filter for empty values → AI workflow → Launix: edit).

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)  
  - [Launix website](https://launix.de)

  ## Version history

  - **1.0.0** – Initial release: all CRUD operations supported

ai_documentation_summary:
  {"purpose":"Integrates Launix products with n8n workflows to access data, manage records, and trigger custom actions in Launix systems. It supports CRUD-style automation across Launix ERP/CRM and related modules.","capabilities":["Batch Action: run a batch action on POST items","Create: insert a new record","Custom Action: execute custom Launix actions such as Invoice-Send","Delete: permanently delete a record","Edit: update an existing record","List: retrieve a list of records","View: retrieve a single record"],"authentication":"Launix API credentials required; authenticate with an API key and the Launix base URL using the 'Launix Credentials API' credential type","commonUseCases":["Syncing or retrieving CRM/ERP records from Launix into n8n workflows","Creating, updating, or deleting Launix records automatically","Triggering Launix custom actions such as sending invoices or other business-process operations"],"limitations":["No specific limitations or missing features are mentioned in the README","Minimum supported n8n version is 1.106.3"],"relatedNodes":[]}


node_type: n8n-nodes-launix.launixTrigger
package_name: n8n-nodes-launix
display_name: Launix Trigger
description: Starts the workflow when data is created/edited in Launix
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: carli
author_github_url: https://github.com/launix-de/
npm_package_name: n8n-nodes-launix
npm_version: 1.4.15
community_fetched_at: 2026-07-14T14:40:34.493Z
ai_summary_generated_at: 2026-06-26 10:29:17
npm_readme:
  # n8n-nodes-launix

  ![Launix Logo](https://launix.de/launix/wp-content/uploads/2025/08/logo_space-1536x377.png)

  This is an n8n community node. It lets you integrate all Launix products in your n8n workflows.

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

  [Installation](#installation)  
  [Operations](#operations)  
  [Credentials](#credentials)  <!-- delete if no auth needed -->  
  [Compatibility](#compatibility)  
  [Usage](#usage)  <!-- delete if not using this section -->  
  [Resources](#resources)  
  [Version history](#version-history)  <!-- delete if not using this section -->  

  ## Why Choose Launix — and Why Automate with n8n?

  ### 🚀 A Truly Tailored ERP/CRM Ecosystem
  Launix isn’t just another off-the-shelf ERP or CRM. Powered by its proprietary **Feature Oriented Programming (FOP)** tech, Launix builds systems that evolve *with your business*, not against it. Every module—from CRM to accounting to HR—is highly configurable, letting you craft exactly what your workflows need without unnecessary features. With *hundreds of reusable, modular components*, you’ll enjoy powerful functionality without the bloat.  
  ➡ [Learn more on launix.de](https://launix.de/launix/)

  ### 📦 Everything in One Place
  CRM, ERP, HR, project and document management, portals, campaign workflows, and AI/KI integrations—Launix unifies them into a seamless suite. This reduces your total cost of ownership, centralizes data, and eliminates the headaches of mismatched tools.  
  ➡ [Discover the full suite](https://launix.de/launix/)

  ### 🔒 Secure, Efficient, and Scalable
  Security is built-in: hashed/salted passwords, SQL injection and XSS protection, plus compliance with GoBD and GDPR. The modular architecture ensures your system grows alongside your business without costly migrations.  
  ➡ [Read about Launix’s architecture](https://launix.de/launix/launix-home/)

  ### 💬 Real Efficiency Gains
  > “Thanks to Launix, we now have a proper offer and order structure. With the individual customization… we save a lot of time.”

  > “With the software from Launix, things are better now.”

  From replacing spreadsheet chaos to unifying contact, ticket, and call systems—Launix consistently boosts efficiency.

  ---

  ## The Magic of Pairing Launix with n8n Automation

  n8n automation supercharges Launix:

  - **Connect modules across the board** — trigger Launix actions automatically (create customers, send documents, update opportunities).
  - **Leverage Launix’s database schemes and views** — pull live, structured data directly from Launix, process or enrich it with n8n, and feed results back automatically. This enables real-time dashboards, intelligent notifications, and complex cross-system workflows.
  - **Save time with zero-code workflows** — chain actions like “new lead → CRM tag → automated email → project creation” without coding.
  - **Combine custom actions** — integrate Launix’s unique capabilities (e.g., `Invoice-Send`) into multi-step workflows involving email, chat apps, or external APIs.
  - **Scale complexity gradually** — start with simple automations, then expand to orchestrate advanced, multi-branch business processes.

  **💡 Why it’s cool:**  
  Launix gives you a flexible, database-driven backbone with rich API access. n8n acts as the automation glue, turning Launix’s structured data and actions into smart, responsive workflows. Together, they deliver unmatched efficiency, accuracy, and scalability.


  ## 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 operations:

  - **Batch Action** – Run a batch action (POST items)
  - **Create** – Insert a new record  
  - **Custom Action** – Run a custom action (e.g., `Invoice-Send`)  
  - **Delete** – Permanently delete a record  
  - **Edit** – Update an existing record  
  - **List** – Retrieve a list of records  
  - **View** – Retrieve a single record  

  ## Credentials

  To use this node, you need **Launix API credentials**.

  1. Log into your Launix product (e.g., ERP system).
  2. Create an API user or use your admin account. Obtain an API key in the user settings.  
  3. Copy the base URL from your launix product (e.g. https://demo2.launix.de/)
  3. Enter these details into n8n credentials of type **Launix Credentials API**. 

  ## Compatibility

  - **Minimum n8n version:** 1.106.3
  - Tested with: 1.106.3
  - No known incompatibility issues.

  ## Usage

  Once your credentials are set up, you can use the Launix node in your workflows to perform CRUD operations and special actions with your Launix products.  
  Tip: For complex workflows, you can chain multiple Launix nodes (e.g., Launix: fetch data → filter for empty values → AI workflow → Launix: edit).

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)  
  - [Launix website](https://launix.de)

  ## Version history

  - **1.0.0** – Initial release: all CRUD operations supported

ai_documentation_summary:
  {"purpose":"Triggers or runs workflows against Launix products, allowing n8n to interact with Launix data and actions. It supports CRUD-style operations plus custom business actions for Launix ERP/CRM workflows.","capabilities":["Batch Action (POST items)","Create a new record","Custom Action execution (e.g., Invoice-Send)","Delete a record permanently","Edit/update an existing record","List records","View a single record","Work with Launix database schemes and views","Chain Launix operations in multi-step workflows"],"authentication":"Launix API credentials required: create an API user or use an admin account, obtain an API key, and provide the Launix base URL in n8n credentials of type \"Launix Credentials API\".","commonUseCases":["Triggering automated workflows from Launix data changes","Creating, updating, listing, or deleting Launix records from n8n","Running Launix-specific custom actions such as invoice sending","Pulling structured data from Launix for dashboards, notifications, or enrichment","Building end-to-end business workflows such as lead handling, document generation, or project creation"],"limitations":["Minimum n8n version is 1.106.3","No known incompatibility issues are mentioned, but no other limits are documented"],"relatedNodes":["Launix Credentials API","n8n generic HTTP/API-related nodes","Database/List/View-style n8n nodes for record handling"]}


node_type: n8n-nodes-acquibee.acquibee
package_name: n8n-nodes-acquibee
display_name: Acquibee
description: Interact with Acquibee Client API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: acquibee
author_github_url: https://github.com/acquibee/
npm_package_name: n8n-nodes-acquibee
npm_version: 0.1.6
community_fetched_at: 2026-07-14T14:40:34.494Z
ai_summary_generated_at: 2026-06-26 10:29:17
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "client",
      "options": [
        {
          "name": "Client",
          "value": "client"
        }
      ],
      "required": true,
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a client",
          "description": "Create a client"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many clients",
          "description": "Get many clients"
        },
        {
          "name": "Get",
          "value": "getClientById",
          "action": "Get a client by ID",
          "description": "Get a client by ID"
        },
        {
          "name": "Update",
          "value": "updateClientById",
          "action": "Update a client by ID",
          "description": "Update a client by ID"
        },
        {
          "name": "Delete",
          "value": "deleteClientById",
          "action": "Delete a client by ID",
          "description": "Delete a client by ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "client"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create a client",
      "description": "Create a client",
      "resource": "client"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many clients",
      "description": "Get many clients",
      "resource": "client"
    },
    {
      "name": "Get",
      "value": "getClientById",
      "action": "Get a client by ID",
      "description": "Get a client by ID",
      "resource": "client"
    },
    {
      "name": "Update",
      "value": "updateClientById",
      "action": "Update a client by ID",
      "description": "Update a client by ID",
      "resource": "client"
    },
    {
      "name": "Delete",
      "value": "deleteClientById",
      "action": "Delete a client by ID",
      "description": "Delete a client by ID",
      "resource": "client"
    }
  ]

npm_readme:
  # n8n-nodes-acquibee

  This is an n8n community node. It lets you use [Acquibee](https://acquibee.de) in your n8n workflows.

  Acquibee is a CRM and sales automation platform that helps teams manage clients, leads, campaigns, and project groups.

  [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)
  [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.

  ```
  npm install n8n-nodes-acquibee
  ```

  ---

  ## Operations

  ### Client

  | Operation | Description |
  |-----------|-------------|
  | **Create** | Create a new client record |
  | **Get Many** | Retrieve a paginated list of clients (filter by IDs, date modified, selected fields) |
  | **Get a Client** | Retrieve a single client by ID |
  | **Update a Client** | Update an existing client by ID |
  | **Delete a Client** | Delete a client by ID |

  **Supported fields for Create / Update:**

  - Personal: Name, Surname, Title, Gender, Birthday, Language
  - Company: Company, Division, Category, Position, Business Branch, Employees
  - Address: Street, City, Postcode, District, Region, Country
  - Contact: Email, Phone (Landline / Mobile / Switchboard / Telemarketing), Fax, Skype, Website, Newsletter
  - Sales: Acquisition ID, Qualification Status, Probability, Estimated Sell, Is Favorite, Business Behavior
  - Relations: Campaigns, Leads, Project Groups, Custom Fields
  - Assignment: User (team member)

  ---

  ## Credentials

  To connect your Acquibee account:

  1. Log in to [Acquibee](https://app.acquibee.de)
  2. Navigate to your profile settings and generate an API token
  3. In n8n, create a new **Acquibee API** credential
  4. Enter your **API Token**
  5. Optionally override the **Base URL** (default: `https://app.acquibee.de/api/v4`)

  For full API reference see the [Acquibee API documentation](https://app.acquibee.de/api_documentation/index.html).

  ---

  ## Compatibility

  - Tested against **n8n v1.x**
  - Requires `n8n-workflow` peer dependency (installed automatically with n8n)
  - Node API version: `1`

  ---

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [Acquibee API documentation](https://app.acquibee.de/api_documentation/index.html)
  - [Source code](https://github.com/acquibee/n8n-nodes-acquibee)

  ---

  ## Version history

  ### 0.1.0

  Initial release. Supports full CRUD operations on the **Client** resource.

ai_documentation_summary:
  {"purpose":"This node connects n8n to the Acquibee CRM and sales automation API. It is used to manage client records in Acquibee from within workflows.","capabilities":["Create client records","Retrieve many clients with pagination and filters","Retrieve a single client by ID","Update a client by ID","Delete a client by ID","Set client personal, company, address, contact, sales, relations, and assignment fields"],"authentication":"API token required via Acquibee API credential; optional base URL override is supported","commonUseCases":["Automating client record creation from incoming leads or form submissions","Syncing or updating client data between Acquibee and other systems","Listing and filtering clients for reporting or downstream workflow actions","Removing obsolete client records from Acquibee"],"limitations":["Only the Client resource is supported in the initial release","No operations for campaigns, leads, project groups, or other Acquibee resources are mentioned"],"relatedNodes":[]}


node_type: n8n-nodes-droptocdn.dropToCdn
package_name: n8n-nodes-droptocdn
display_name: Drop to CDN
description: Upload files to Drop to CDN and get instant public CDN URLs
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: jpfong
author_github_url: https://github.com/Nexus-JPF/
npm_package_name: n8n-nodes-droptocdn
npm_version: 0.1.4
community_fetched_at: 2026-07-14T14:40:34.495Z
ai_summary_generated_at: 2026-06-26 10:29:17
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "file",
      "options": [
        {
          "name": "File",
          "value": "file"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "upload",
      "options": [
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a file",
          "description": "Permanently delete a file by ID"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get file information",
          "description": "Get CDN URL and metadata for a file by ID"
        },
        {
          "name": "Upload",
          "value": "upload",
          "action": "Upload a file",
          "description": "Upload a file and get a public CDN URL"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "file"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a file",
      "description": "Permanently delete a file by ID",
      "resource": "file"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get file information",
      "description": "Get CDN URL and metadata for a file by ID",
      "resource": "file"
    },
    {
      "name": "Upload",
      "value": "upload",
      "action": "Upload a file",
      "description": "Upload a file and get a public CDN URL",
      "resource": "file"
    }
  ]

npm_readme:
  # n8n-nodes-droptocdn

  [n8n](https://n8n.io) community node for [Drop to CDN](https://droptocdn.com) — upload files and get instant public CDN URLs.

  ## Install

  **Self-hosted n8n:** Settings → Community nodes → Install → `n8n-nodes-droptocdn`

  **n8n Cloud:** install verified community nodes from the workflow node picker (after n8n verification).

  ## Credentials

  1. Create an API key at [Drop to CDN → Settings → API keys](https://droptocdn.com/dashboard/settings) (`dtc_...`).
  2. In n8n: **Credentials** → **Drop to CDN API** → paste your key.

  ## Operations

  | Operation | Description |
  |-----------|-------------|
  | **Upload** | Upload a binary file; returns CDN URL and metadata |
  | **Get** | Get file metadata by ID |
  | **Delete** | Delete a file by ID |

  Auth: `Authorization: Bearer dtc_...` (validated via `GET /v1/profile`).

  ## HTTP Request fallback

  You can also call the API with n8n’s generic **HTTP Request** node:

  - Base URL: `https://api.droptocdn.com/v1`
  - Auth header: `Authorization: Bearer dtc_...`
  - Upload: `POST /files` (multipart, field `file`)
  - Get: `GET /files/:id`
  - Delete: `DELETE /files/:id`

  More examples: [droptocdn.com](https://droptocdn.com) documentation.

  ## Development

  ```bash
  npm install
  npm run build
  npm run lint
  ```

  ## Source

  Developed by [Drop to CDN](https://droptocdn.com). This public repo is synced from the private monorepo for npm provenance publishing.

  ## License

  MIT

ai_documentation_summary:
  {"purpose":"Uploads files to Drop to CDN and returns instant public CDN URLs and file metadata. It also supports retrieving and deleting uploaded files by ID.","capabilities":["Upload a binary file and return CDN URL plus metadata","Get file metadata by file ID","Delete a file by file ID","Use an API key credential for authenticated requests","Fallback to generic HTTP Request node calls against the Drop to CDN API"],"authentication":"API key required; use a Drop to CDN API key (`dtc_...`) as a Bearer token in the `Authorization` header.","commonUseCases":["Upload assets from n8n workflows and store/share them via public CDN URLs","Look up metadata for previously uploaded files","Remove files from Drop to CDN by ID"],"limitations":["Upload operation requires a binary file input","Authentication is validated via `GET /v1/profile`","Only three operations are listed in the node: Upload, Get, and Delete"],"relatedNodes":["HTTP Request"]}


node_type: n8n-nodes-whatsapp-crm-marketing.waCrm
package_name: n8n-nodes-whatsapp-crm-marketing
display_name: WhatsApp via QR (OnlineLiveSupport)
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: onlinelivesupport
author_github_url: https://github.com/OnlineLiveSupportV2/n8nWACRM.git
npm_package_name: n8n-nodes-whatsapp-crm-marketing
npm_version: 1.4.8
community_fetched_at: 2026-07-14T14:40:34.496Z
ai_summary_generated_at: 2026-06-26 10:29:17
description:
  Send WhatsApp messages using a QR-connected WhatsApp account via OnlineLiveSupport CRM. Unlike the official WhatsApp Business API, this node works with any regular WhatsApp number — no Meta Business Account, no template approval, and no phone number verification required. Simply scan a QR code in your OnlineLiveSupport dashboard to connect your WhatsApp number and start sending messages instantly.

npm_readme:
  # WhatsApp CRM, Marketing, API Gateway & Cart Recovery by OnlineLiveSupport for n8n

  <p align="center">
    <img src="https://www.onlinelivesupport.com/assets/images/logo.png" alt="OnlineLiveSupport WhatsApp CRM Logo" width="200" />
  </p>

  A premium, robust **n8n Community Node** that integrates the **WhatsApp CRM, Marketing, API Gateway, and Cart Recovery** platform by **[OnlineLiveSupport.com](https://onlinelivesupport.com)** directly into your n8n automation workflows.

  With this node, you can send WhatsApp messages via your QR-connected WhatsApp number, automate customer notifications, recover abandoned Shopify carts, run targeted marketing campaigns, and dispatch rich media messages — all programmatically from inside n8n.

  ---

  ## 🚀 Key Features

  - **Send Text Messages**: Send plain text WhatsApp messages to any recipient instantly.
  - **Send Images**: Share images with optional captions via direct URL.
  - **Send Videos**: Send video files with optional captions via direct URL.
  - **Send Audio**: Deliver audio messages (AAC format) to recipients.
  - **Send Documents**: Share PDFs and other documents with optional captions.
  - **Share Locations**: Send GPS coordinates with a custom title.
  - **QR Code Connection**: Uses your personal WhatsApp account — no Meta Business approval required.
  - **Production Ready**: Connects directly to the global cloud platform at `https://crm.onlinelivesupport.com`.

  ---

  ## 📦 Installation

  To install this node inside your self-hosted or cloud n8n instance:

  1. Log into your **n8n Dashboard**.
  2. Navigate to **Settings → Community Nodes**.
  3. Click **Install a Node** (or **Install community node**).
  4. Enter the package name:
     ```
     n8n-nodes-whatsapp-crm-marketing
     ```
  5. Agree to the terms and click **Install**.

  ---

  ## 🔑 Configuration & Connection Guide

  Connecting your **OnlineLiveSupport CRM** account to n8n is extremely simple. Follow this step-by-step onboarding guide:

  ### Step 1 — Connect your WhatsApp via QR Code

  1. Log in to your OnlineLiveSupport CRM account: **[Sign In / Sign Up](https://crm.onlinelivesupport.com/user/login)**
  2. From your CRM Dashboard, go to **Add WhatsApp by QR → Add Device**
  3. Scan the generated QR code from your **WhatsApp mobile app** to link your phone

  ### Step 2 — Retrieve your API Token

  1. After connecting your WhatsApp, go to the **[REST API tab](https://crm.onlinelivesupport.com/user?page=wa-qr-rest-api)**
  2. Copy your **API Token** from that page

  ### Step 3 — Create Credentials in n8n

  In n8n, create a new **WhatsApp CRM API** credential with:

  | Field | Value |
  |---|---|
  | **API Key** | Paste your API Token copied from the REST API tab |
  | **CRM Base URL** | `https://crm.onlinelivesupport.com` *(pre-filled by default)* |

  ### Step 4 — Find your WhatsApp "From" Number

  - Go to your **[Devices Panel](https://crm.onlinelivesupport.com/user?page=wa-qr-connect)** to see your active connected WhatsApp numbers
  - Use the number (with country code, e.g. `+1234567890`) as the **From Number** field in the node

  ---

  ## 🛠️ Actions & Parameters

  ### Send Message

  Sends a WhatsApp message from your connected QR WhatsApp number.

  | Parameter | Required | Description |
  |---|---|---|
  | **From Number** | ✅ | Your connected WhatsApp number with country code (e.g. `+1234567890`) |
  | **Send To** | ✅ | Recipient's phone number with country code (e.g. `+9876543210`) |
  | **Message Type** | ✅ | Type of message: Text, Image, Video, Audio, Document, or Location |

  **Message Type — Content Fields:**

  | Type | Fields |
  |---|---|
  | **Text** | Message Text |
  | **Image** | Image URL, Caption *(optional)* |
  | **Video** | Video URL, Caption *(optional)* |
  | **Audio** | Audio URL *(AAC format)* |
  | **Document** | Document URL, Caption *(optional)* |
  | **Location** | Latitude, Longitude, Title *(optional)* |

  ---

  ## 📖 Usage Examples

  ### Send a Text Message

  ```
  From Number: +1234567890
  Send To:     +9876543210
  Type:        Text
  Text:        Hello! Your order has been shipped 🚚
  ```

  ### Send an Order Image

  ```
  From Number: +1234567890
  Send To:     +9876543210
  Type:        Image
  Image URL:   https://yourstore.com/order-receipt.jpg
  Caption:     Here is your order receipt. Thank you! 🎉
  ```

  ### Share a Store Location

  ```
  From Number: +1234567890
  Send To:     +9876543210
  Type:        Location
  Latitude:    37.7749
  Longitude:   -122.4194
  Title:       Our Store — San Francisco
  ```

  ---

  ## 🔗 Resources

  - 🌐 **Platform**: [crm.onlinelivesupport.com](https://crm.onlinelivesupport.com)
  - 📋 **REST API Settings**: [wa-qr-rest-api](https://crm.onlinelivesupport.com/user?page=wa-qr-rest-api)
  - 📱 **Devices Panel**: [wa-qr-connect](https://crm.onlinelivesupport.com/user?page=wa-qr-connect)
  - 📦 **npm Package**: [n8n-nodes-whatsapp-crm-marketing](https://www.npmjs.com/package/n8n-nodes-whatsapp-crm-marketing)

  ---

  ## 🆘 Support & Contact

  Need help getting set up or have questions? Our team is here to help!

  - 📬 **Contact Us**: [onlinelivesupport.com/contact](https://www.onlinelivesupport.com/contact/)
  - 🌐 **Website**: [onlinelivesupport.com](https://onlinelivesupport.com)
  - 💬 **CRM Support**: Available directly inside your CRM dashboard

  ---

  ## 📄 License

  This integration is licensed under the [MIT License](LICENSE). Distributed by **[OnlineLiveSupport.com](https://onlinelivesupport.com)**.

ai_documentation_summary:
  {"purpose":"Sends WhatsApp messages through an OnlineLiveSupport CRM account connected by QR code. It supports regular WhatsApp numbers without requiring the official WhatsApp Business API, Meta Business approval, or template approvals.","capabilities":["Send text WhatsApp messages","Send image messages with optional captions via URL","Send video messages with optional captions via URL","Send audio messages in AAC format via URL","Send documents with optional captions via URL","Share location messages with latitude, longitude, and optional title","Use a QR-connected WhatsApp account as the sending source","Work with the OnlineLiveSupport CRM API gateway for automation workflows"],"authentication":"API token required; create an n8n credential using the API Key from the OnlineLiveSupport REST API tab and the CRM base URL.","commonUseCases":["Send customer notifications such as order updates or shipping alerts","Automate WhatsApp marketing campaigns","Recover abandoned Shopify carts","Send rich media messages like images, videos, documents, and locations"],"limitations":["Audio messages must be in AAC format","Requires an active WhatsApp number connected through the OnlineLiveSupport dashboard via QR code","Uses the OnlineLiveSupport cloud platform and its API token rather than the official WhatsApp Business API"],"relatedNodes":[]}


node_type: @kapso/n8n-nodes-kapso.kapsoTrigger
package_name: @kapso/n8n-nodes-kapso
display_name: Kapso Trigger
description: Starts the workflow when Kapso receives WhatsApp events
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: rgaonago
author_github_url: https://github.com/gokapso/kapso-n8n-nodes.git
npm_package_name: @kapso/n8n-nodes-kapso
npm_version: 0.1.3
community_fetched_at: 2026-07-14T14:40:34.497Z
ai_summary_generated_at: 2026-06-26 10:29:17
npm_readme:
  # @kapso/n8n-nodes-kapso

  This is an n8n community node package for Kapso WhatsApp automations.

  It includes a trigger for inbound Kapso/WhatsApp webhook events and an action node for sending outbound WhatsApp messages through Kapso.

  [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)
  [Example workflows](#example-workflows)
  [Local testing](#local-testing)
  [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.

  Package name: `@kapso/n8n-nodes-kapso`.

  ## Operations

  ### Kapso Trigger

  Starts workflows from Kapso webhooks:

  - Phone-number events such as `whatsapp.message.received`, delivery statuses, and conversation lifecycle events.
  - Project events such as `whatsapp.phone_number.created` and workflow execution events.

  ### Kapso

  Actions available in workflows:

  - List connected WhatsApp phone numbers.
  - List WhatsApp messages stored by Kapso.
  - Send WhatsApp text messages.
  - Send WhatsApp template messages.
  - Send raw WhatsApp Cloud API message payloads.
  - Mark WhatsApp messages as read, optionally with a typing indicator.

  ## Credentials

  Create a **Kapso API** credential with:

  - **API Key**: your Kapso API key. The node sends it as `X-API-Key`.
  - **Base URL**: defaults to `https://api.kapso.ai`.
  - **Meta Graph Version**: defaults to `v24.0`.

  ## Compatibility

  Generated with the official `@n8n/create-node` scaffold and tested against the installed n8n node tooling in this repository.

  ## Usage

  For inbound WhatsApp messages, use **Kapso Trigger** with scope **Phone Number**, enter the Meta `phone_number_id`, and subscribe to `whatsapp.message.received`.

  For outbound messages, use **Kapso** with the **Send Text**, **Send Template**, or **Send Raw Payload** operations. The raw payload operation mirrors the WhatsApp Cloud API payload sent to `/{phone_number_id}/messages`.

  ## Example workflows

  ### Inbound WhatsApp message to n8n workflow

  1. Add **Kapso Trigger** as the first node.
  2. Set **Scope** to **Phone Number**.
  3. Enter the Meta `phone_number_id` for the WhatsApp sender managed in Kapso.
  4. Keep **Events** set to `whatsapp.message.received`.
  5. Leave **Verify Signature** enabled in production.
  6. Connect any downstream n8n nodes that should process the inbound message payload.

  This workflow starts whenever Kapso delivers a WhatsApp inbound message webhook to n8n.

  ### Send a WhatsApp reply through Kapso

  1. Add a **Kapso** node after any trigger or workflow step.
  2. Set **Resource** to **WhatsApp Message**.
  3. Set **Operation** to **Send Text**.
  4. Enter the sender **Phone Number ID**.
  5. Enter the recipient phone number in international format without `+`, for example `15551234567`.
  6. Set **Message** to a static value or an n8n expression from an earlier node.

  Use **Send Template** instead when sending approved WhatsApp template messages outside the customer service window.

  ## Local testing

  Run the package in a local n8n instance with:

  ```bash
  npm run dev
  ```

  This compiles the node and starts n8n with the local package loaded. For inbound webhook testing, expose local n8n to the internet and set n8n's public webhook URL before starting it:

  ```bash
  WEBHOOK_URL=https://your-public-n8n-url.example.com/ N8N_PROXY_HOPS=1 npm run dev
  ```

  Use Tailscale Funnel, not Tailscale Serve, when Kapso needs to call your local n8n instance. `tailscale serve 5678` is only reachable inside your tailnet. Kapso is outside your tailnet, so expose n8n with:

  ```bash
  tailscale funnel 5678
  ```

  With Tailscale Funnel, the public URL should forward to local port `5678`. The **Kapso Trigger** webhook endpoint is generated by n8n and shown in the node UI. The node registers that generated URL with Kapso when the workflow is activated or when n8n starts listening for a manual test webhook. The trailing path configured by this node is `webhook`, but the full URL includes n8n's workflow-specific webhook ID. If the editor also runs behind the same public URL, set `N8N_EDITOR_BASE_URL` to that URL too.

  If you create the Kapso webhook yourself, set **Registration Mode** to **Manual** on the **Kapso Trigger** node. For n8n's test URL, you must click **Test workflow** before sending the WhatsApp message; `/webhook-test/...` URLs are temporary and n8n only keeps them registered while the workflow is listening for a test event. For persistent delivery, use the production URL shown by n8n, activate the workflow, and register that `/webhook/...` URL in Kapso.

  For local manual testing, disable **Verify Signature** or send a valid `X-Webhook-Signature` HMAC header. In production, leave signature verification enabled and either let Kapso return the webhook secret during registration or paste the secret into **Webhook Secret**.

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [n8n creating nodes documentation](https://docs.n8n.io/integrations/creating-nodes/overview/)
  - [Kapso](https://kapso.ai)

  ## Version history

  ### 0.1.2

  Adds example workflow documentation and Kapso package author metadata for verification.

  ### 0.1.1

  Adds an `npm run test` verification script for n8n Creator Portal checks.

  ### 0.1.0

  Initial Kapso trigger and action nodes.

ai_documentation_summary:
  {"purpose":"Provides Kapso WhatsApp automation integration for n8n, including a trigger for inbound WhatsApp/webhook events and actions for sending and managing WhatsApp messages.","capabilities":["Trigger workflows from Kapso webhooks for phone-number events such as whatsapp.message.received, delivery statuses, and conversation lifecycle events","Trigger workflows from project events such as whatsapp.phone_number.created and workflow execution events","List connected WhatsApp phone numbers","List WhatsApp messages stored by Kapso","Send WhatsApp text messages","Send WhatsApp template messages","Send raw WhatsApp Cloud API message payloads","Mark WhatsApp messages as read, optionally with a typing indicator"],"authentication":"Kapso API credential required: API Key sent as X-API-Key; Base URL defaults to https://api.kapso.ai; Meta Graph Version defaults to v24.0","commonUseCases":["Start an n8n workflow when a WhatsApp message is received via Kapso","Send WhatsApp replies or proactive messages from n8n","Send approved WhatsApp template messages outside the customer service window","Process and manage WhatsApp message status/read tracking","Work with raw WhatsApp Cloud API payloads through Kapso"],"limitations":["Inbound webhook setup may require manual registration or test-workflow activation depending on registration mode","Test webhook URLs are temporary and only active while n8n is listening for a test event","Webhook signature verification must be disabled for local testing unless a valid X-Webhook-Signature is provided"],"relatedNodes":[]}


node_type: @kapso/n8n-nodes-kapso.kapso
package_name: @kapso/n8n-nodes-kapso
display_name: Kapso
description: Send WhatsApp messages and inspect Kapso WhatsApp resources
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: rgaonago
author_github_url: https://github.com/gokapso/kapso-n8n-nodes.git
npm_package_name: @kapso/n8n-nodes-kapso
npm_version: 0.1.3
community_fetched_at: 2026-07-14T14:40:34.498Z
ai_summary_generated_at: 2026-06-26 10:29:17
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "whatsAppMessage",
      "options": [
        {
          "name": "Phone Number",
          "value": "phoneNumber"
        },
        {
          "name": "WhatsApp Message",
          "value": "whatsAppMessage"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List",
          "value": "list",
          "action": "List connected phone numbers",
          "description": "List connected WhatsApp phone numbers"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "phoneNumber"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "sendText",
      "options": [
        {
          "name": "List",
          "value": "list",
          "action": "List messages",
          "description": "List WhatsApp messages stored by Kapso"
        },
        {
          "name": "Mark as Read",
          "value": "markAsRead",
          "action": "Mark a message as read",
          "description": "Mark a WhatsApp message as read"
        },
        {
          "name": "Send Raw Payload",
          "value": "sendRaw",
          "action": "Send a raw message payload",
          "description": "Send any WhatsApp Cloud API message payload through Kapso"
        },
        {
          "name": "Send Template",
          "value": "sendTemplate",
          "action": "Send a template message",
          "description": "Send a WhatsApp template message through Kapso"
        },
        {
          "name": "Send Text",
          "value": "sendText",
          "action": "Send a text message",
          "description": "Send a WhatsApp text message through Kapso"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "whatsAppMessage"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "List",
      "value": "list",
      "action": "List connected phone numbers",
      "description": "List connected WhatsApp phone numbers",
      "resource": "phoneNumber"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List messages",
      "description": "List WhatsApp messages stored by Kapso",
      "resource": "whatsAppMessage"
    },
    {
      "name": "Mark as Read",
      "value": "markAsRead",
      "action": "Mark a message as read",
      "description": "Mark a WhatsApp message as read",
      "resource": "whatsAppMessage"
    },
    {
      "name": "Send Raw Payload",
      "value": "sendRaw",
      "action": "Send a raw message payload",
      "description": "Send any WhatsApp Cloud API message payload through Kapso",
      "resource": "whatsAppMessage"
    },
    {
      "name": "Send Template",
      "value": "sendTemplate",
      "action": "Send a template message",
      "description": "Send a WhatsApp template message through Kapso",
      "resource": "whatsAppMessage"
    },
    {
      "name": "Send Text",
      "value": "sendText",
      "action": "Send a text message",
      "description": "Send a WhatsApp text message through Kapso",
      "resource": "whatsAppMessage"
    }
  ]

npm_readme:
  # @kapso/n8n-nodes-kapso

  This is an n8n community node package for Kapso WhatsApp automations.

  It includes a trigger for inbound Kapso/WhatsApp webhook events and an action node for sending outbound WhatsApp messages through Kapso.

  [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)
  [Example workflows](#example-workflows)
  [Local testing](#local-testing)
  [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.

  Package name: `@kapso/n8n-nodes-kapso`.

  ## Operations

  ### Kapso Trigger

  Starts workflows from Kapso webhooks:

  - Phone-number events such as `whatsapp.message.received`, delivery statuses, and conversation lifecycle events.
  - Project events such as `whatsapp.phone_number.created` and workflow execution events.

  ### Kapso

  Actions available in workflows:

  - List connected WhatsApp phone numbers.
  - List WhatsApp messages stored by Kapso.
  - Send WhatsApp text messages.
  - Send WhatsApp template messages.
  - Send raw WhatsApp Cloud API message payloads.
  - Mark WhatsApp messages as read, optionally with a typing indicator.

  ## Credentials

  Create a **Kapso API** credential with:

  - **API Key**: your Kapso API key. The node sends it as `X-API-Key`.
  - **Base URL**: defaults to `https://api.kapso.ai`.
  - **Meta Graph Version**: defaults to `v24.0`.

  ## Compatibility

  Generated with the official `@n8n/create-node` scaffold and tested against the installed n8n node tooling in this repository.

  ## Usage

  For inbound WhatsApp messages, use **Kapso Trigger** with scope **Phone Number**, enter the Meta `phone_number_id`, and subscribe to `whatsapp.message.received`.

  For outbound messages, use **Kapso** with the **Send Text**, **Send Template**, or **Send Raw Payload** operations. The raw payload operation mirrors the WhatsApp Cloud API payload sent to `/{phone_number_id}/messages`.

  ## Example workflows

  ### Inbound WhatsApp message to n8n workflow

  1. Add **Kapso Trigger** as the first node.
  2. Set **Scope** to **Phone Number**.
  3. Enter the Meta `phone_number_id` for the WhatsApp sender managed in Kapso.
  4. Keep **Events** set to `whatsapp.message.received`.
  5. Leave **Verify Signature** enabled in production.
  6. Connect any downstream n8n nodes that should process the inbound message payload.

  This workflow starts whenever Kapso delivers a WhatsApp inbound message webhook to n8n.

  ### Send a WhatsApp reply through Kapso

  1. Add a **Kapso** node after any trigger or workflow step.
  2. Set **Resource** to **WhatsApp Message**.
  3. Set **Operation** to **Send Text**.
  4. Enter the sender **Phone Number ID**.
  5. Enter the recipient phone number in international format without `+`, for example `15551234567`.
  6. Set **Message** to a static value or an n8n expression from an earlier node.

  Use **Send Template** instead when sending approved WhatsApp template messages outside the customer service window.

  ## Local testing

  Run the package in a local n8n instance with:

  ```bash
  npm run dev
  ```

  This compiles the node and starts n8n with the local package loaded. For inbound webhook testing, expose local n8n to the internet and set n8n's public webhook URL before starting it:

  ```bash
  WEBHOOK_URL=https://your-public-n8n-url.example.com/ N8N_PROXY_HOPS=1 npm run dev
  ```

  Use Tailscale Funnel, not Tailscale Serve, when Kapso needs to call your local n8n instance. `tailscale serve 5678` is only reachable inside your tailnet. Kapso is outside your tailnet, so expose n8n with:

  ```bash
  tailscale funnel 5678
  ```

  With Tailscale Funnel, the public URL should forward to local port `5678`. The **Kapso Trigger** webhook endpoint is generated by n8n and shown in the node UI. The node registers that generated URL with Kapso when the workflow is activated or when n8n starts listening for a manual test webhook. The trailing path configured by this node is `webhook`, but the full URL includes n8n's workflow-specific webhook ID. If the editor also runs behind the same public URL, set `N8N_EDITOR_BASE_URL` to that URL too.

  If you create the Kapso webhook yourself, set **Registration Mode** to **Manual** on the **Kapso Trigger** node. For n8n's test URL, you must click **Test workflow** before sending the WhatsApp message; `/webhook-test/...` URLs are temporary and n8n only keeps them registered while the workflow is listening for a test event. For persistent delivery, use the production URL shown by n8n, activate the workflow, and register that `/webhook/...` URL in Kapso.

  For local manual testing, disable **Verify Signature** or send a valid `X-Webhook-Signature` HMAC header. In production, leave signature verification enabled and either let Kapso return the webhook secret during registration or paste the secret into **Webhook Secret**.

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [n8n creating nodes documentation](https://docs.n8n.io/integrations/creating-nodes/overview/)
  - [Kapso](https://kapso.ai)

  ## Version history

  ### 0.1.2

  Adds example workflow documentation and Kapso package author metadata for verification.

  ### 0.1.1

  Adds an `npm run test` verification script for n8n Creator Portal checks.

  ### 0.1.0

  Initial Kapso trigger and action nodes.

ai_documentation_summary:
  {"purpose":"Provides n8n integration for Kapso WhatsApp automations, including inbound webhook triggers and outbound WhatsApp message actions. It lets workflows receive WhatsApp events and interact with Kapso-managed WhatsApp resources.","capabilities":["Trigger workflows from Kapso webhook events","Receive phone-number events such as WhatsApp message received, delivery status, and conversation lifecycle events","Receive project events such as WhatsApp phone number created and workflow execution events","List connected WhatsApp phone numbers","List WhatsApp messages stored by Kapso","Send WhatsApp text messages","Send WhatsApp template messages","Send raw WhatsApp Cloud API message payloads","Mark WhatsApp messages as read, optionally with a typing indicator"],"authentication":"Kapso API credential using an API Key sent as X-API-Key; also configures Base URL and Meta Graph Version.","commonUseCases":["Start an n8n workflow when a WhatsApp message is received through Kapso","Send WhatsApp replies or template messages from an n8n workflow","Inspect WhatsApp phone numbers and stored messages managed by Kapso","Mark customer messages as read after processing them"],"limitations":["Inbound webhook testing uses temporary /webhook-test URLs that only work while the workflow is listening for a test event","Persistent inbound delivery requires registering the production /webhook URL and activating the workflow","Signature verification must be disabled for local manual testing unless a valid X-Webhook-Signature is provided"],"relatedNodes":["Kapso Trigger","WhatsApp Message"]}


node_type: n8n-nodes-rdsm.rdStationMarketingTrigger
package_name: n8n-nodes-rdsm
display_name: RD Station Marketing Trigger
description: Starts the workflow when RD Station Marketing sends a webhook event
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: thiagozf
author_github_url: https://github.com/ResultadosDigitais/
npm_package_name: n8n-nodes-rdsm
npm_version: 0.0.5
community_fetched_at: 2026-07-14T14:40:34.499Z
ai_summary_generated_at: 2026-06-26 10:29:17
npm_readme:
  # n8n-nodes-rdsm

  Community node to integrate n8n with RD Station Marketing.

  ## Implemented Resources

  | Resource                 | Operations                                                                                                              |
  | ------------------------ | ----------------------------------------------------------------------------------------------------------------------- |
  | Contact                  | Create, Get, Update, Delete, Add Tags, Get Events                                                                       |
  | Conversion and Trigger   | Create Conversion Event                                                                                                 |
  | Custom Field             | Get Many, Create, Update, Delete                                                                                        |
  | E-Commerce Event         | Checkout Started, Abandoned Cart, Order Paid, Order Canceled, Order Fulfilled, Shipment Delivered                       |
  | Qualification and Funnel | Get Contact Funnels, Mark Lead as Opportunity, Mark Opportunity as Won, Mark Opportunity as Lost, Update Contact Funnel |

  ## Implemented Triggers

  | Trigger                      | Events                        |
  | ---------------------------- | ----------------------------- |
  | RD Station Marketing Trigger | Converted, Marked Opportunity |

  ## Authentication

  Credential: **RD Station Marketing (OAuth2)**.

  Create an app in the [RD Station App Store](https://developers.rdstation.com/reference/criar-aplicativo-appstore) and use its `client_id` and `client_secret` in the n8n credential. Register the n8n **OAuth Redirect URL** (shown in the credential screen) as the app callback URL — it must match exactly.

  Default API base URL: `https://api.rd.services`

  | Step | Endpoint |
  | ---- | -------- |
  | Authorization | `{baseUrl}/auth/dialog` |
  | Access token (code exchange) | `{baseUrl}/auth/token?token_by=code` |
  | Token refresh | `{baseUrl}/auth/token` |

  See the [RD Station Marketing authentication docs](https://developers.rdstation.com/reference/autentica%C3%A7%C3%A3o) for the full OAuth2 flow.

  ## Local Development

  ```bash
  npm install
  npm run build
  npm run lint
  ```

  ## License

  [MIT](./LICENSE)

ai_documentation_summary:
  {"purpose":"Triggers an n8n workflow when RD Station Marketing sends a webhook event. This community node also provides actions for managing contacts, custom fields, conversion events, e-commerce events, and funnel/qualification data in RD Station Marketing.","capabilities":["Trigger workflows on RD Station Marketing events: Converted, Marked Opportunity","Create, get, update, delete contacts","Add tags to contacts and retrieve contact events","Create conversion events","Get many, create, update, and delete custom fields","Record e-commerce events: Checkout Started, Abandoned Cart, Order Paid, Order Canceled, Order Fulfilled, Shipment Delivered","Get contact funnels","Mark leads as opportunity, won, or lost","Update contact funnel stage"],"authentication":"RD Station Marketing OAuth2 credential required. Supports a configurable Base URL for the API; default is https://api.rd.services. OAuth authorization uses https://accounts.rdstation.com/oauth/authorize and the access token endpoint is derived from the Base URL.","commonUseCases":["Start automations when a contact is converted or marked as an opportunity in RD Station Marketing","Sync and maintain contact records and tags between RD Station Marketing and n8n","Track conversion and e-commerce events from external systems into RD Station Marketing","Manage lead qualification and funnel stages based on workflow conditions"],"limitations":["Only two trigger events are implemented: Converted and Marked Opportunity","The README does not mention support for other RD Station Marketing resources beyond those listed"],"relatedNodes":[]}


node_type: n8n-nodes-rdsm.rdStationMarketing
package_name: n8n-nodes-rdsm
display_name: RD Station Marketing
description: Interact with RD Station Marketing
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: thiagozf
author_github_url: https://github.com/ResultadosDigitais/
npm_package_name: n8n-nodes-rdsm
npm_version: 0.0.5
community_fetched_at: 2026-07-14T14:40:34.500Z
ai_summary_generated_at: 2026-06-26 10:29:17
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "contact",
      "options": [
        {
          "name": "Contact",
          "value": "contact"
        },
        {
          "name": "Conversion and Trigger",
          "value": "conversionsAndTriggers"
        },
        {
          "name": "Custom Field",
          "value": "customFields"
        },
        {
          "name": "E-Commerce Event",
          "value": "ecommerceEvents"
        },
        {
          "name": "Qualification and Funnel",
          "value": "qualificationAndFunnels"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Add Tags",
          "value": "addTags",
          "action": "Add tags to a contact"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create a contact"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a contact"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a contact"
        },
        {
          "name": "Get Events",
          "value": "getEvents",
          "action": "Get contact events"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a contact"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "contact"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createConversionEvent",
      "options": [
        {
          "name": "Create Conversion Event",
          "value": "createConversionEvent",
          "action": "Create a conversion event"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "conversionsAndTriggers"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many custom fields"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create a custom field"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a custom field"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a custom field"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "customFields"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "checkoutStarted",
      "options": [
        {
          "name": "Abandoned Cart",
          "value": "abandonedCart",
          "action": "Track abandoned cart event"
        },
        {
          "name": "Checkout Started",
          "value": "checkoutStarted",
          "action": "Track checkout started event"
        },
        {
          "name": "Order Canceled",
          "value": "orderCanceled",
          "action": "Track order canceled event"
        },
        {
          "name": "Order Fulfilled",
          "value": "shippedOrder",
          "action": "Track order fulfilled event"
        },
        {
          "name": "Order Paid",
          "value": "orderAndPaymentCompleted",
          "action": "Track order paid event"
        },
        {
          "name": "Shipment Delivered",
          "value": "deliveredOrder",
          "action": "Track shipment delivered event"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "ecommerceEvents"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "markOpportunity",
      "options": [
        {
          "name": "Get Contact Funnels",
          "value": "getContactFunnels",
          "action": "Get contact funnels"
        },
        {
          "name": "Mark Lead as Opportunity",
          "value": "markOpportunity",
          "action": "Mark lead as opportunity"
        },
        {
          "name": "Mark Opportunity as Lost",
          "value": "markOpportunityLost",
          "action": "Mark opportunity as lost"
        },
        {
          "name": "Mark Opportunity as Won",
          "value": "markOpportunityWon",
          "action": "Mark opportunity as won"
        },
        {
          "name": "Update Contact Funnel",
          "value": "updateContactFunnel",
          "action": "Update contact funnel"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "qualificationAndFunnels"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Add Tags",
      "value": "addTags",
      "action": "Add tags to a contact",
      "resource": "contact"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a contact",
      "resource": "contact"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a contact",
      "resource": "contact"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a contact",
      "resource": "contact"
    },
    {
      "name": "Get Events",
      "value": "getEvents",
      "action": "Get contact events",
      "resource": "contact"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a contact",
      "resource": "contact"
    },
    {
      "name": "Create Conversion Event",
      "value": "createConversionEvent",
      "action": "Create a conversion event",
      "resource": "conversionsAndTriggers"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many custom fields",
      "resource": "customFields"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a custom field",
      "resource": "customFields"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a custom field",
      "resource": "customFields"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a custom field",
      "resource": "customFields"
    },
    {
      "name": "Abandoned Cart",
      "value": "abandonedCart",
      "action": "Track abandoned cart event",
      "resource": "ecommerceEvents"
    },
    {
      "name": "Checkout Started",
      "value": "checkoutStarted",
      "action": "Track checkout started event",
      "resource": "ecommerceEvents"
    },
    {
      "name": "Order Canceled",
      "value": "orderCanceled",
      "action": "Track order canceled event",
      "resource": "ecommerceEvents"
    },
    {
      "name": "Order Fulfilled",
      "value": "shippedOrder",
      "action": "Track order fulfilled event",
      "resource": "ecommerceEvents"
    },
    {
      "name": "Order Paid",
      "value": "orderAndPaymentCompleted",
      "action": "Track order paid event",
      "resource": "ecommerceEvents"
    },
    {
      "name": "Shipment Delivered",
      "value": "deliveredOrder",
      "action": "Track shipment delivered event",
      "resource": "ecommerceEvents"
    },
    {
      "name": "Get Contact Funnels",
      "value": "getContactFunnels",
      "action": "Get contact funnels",
      "resource": "qualificationAndFunnels"
    },
    {
      "name": "Mark Lead as Opportunity",
      "value": "markOpportunity",
      "action": "Mark lead as opportunity",
      "resource": "qualificationAndFunnels"
    },
    {
      "name": "Mark Opportunity as Lost",
      "value": "markOpportunityLost",
      "action": "Mark opportunity as lost",
      "resource": "qualificationAndFunnels"
    },
    {
      "name": "Mark Opportunity as Won",
      "value": "markOpportunityWon",
      "action": "Mark opportunity as won",
      "resource": "qualificationAndFunnels"
    },
    {
      "name": "Update Contact Funnel",
      "value": "updateContactFunnel",
      "action": "Update contact funnel",
      "resource": "qualificationAndFunnels"
    }
  ]

npm_readme:
  # n8n-nodes-rdsm

  Community node to integrate n8n with RD Station Marketing.

  ## Implemented Resources

  | Resource                 | Operations                                                                                                              |
  | ------------------------ | ----------------------------------------------------------------------------------------------------------------------- |
  | Contact                  | Create, Get, Update, Delete, Add Tags, Get Events                                                                       |
  | Conversion and Trigger   | Create Conversion Event                                                                                                 |
  | Custom Field             | Get Many, Create, Update, Delete                                                                                        |
  | E-Commerce Event         | Checkout Started, Abandoned Cart, Order Paid, Order Canceled, Order Fulfilled, Shipment Delivered                       |
  | Qualification and Funnel | Get Contact Funnels, Mark Lead as Opportunity, Mark Opportunity as Won, Mark Opportunity as Lost, Update Contact Funnel |

  ## Implemented Triggers

  | Trigger                      | Events                        |
  | ---------------------------- | ----------------------------- |
  | RD Station Marketing Trigger | Converted, Marked Opportunity |

  ## Authentication

  Credential: **RD Station Marketing (OAuth2)**.

  Create an app in the [RD Station App Store](https://developers.rdstation.com/reference/criar-aplicativo-appstore) and use its `client_id` and `client_secret` in the n8n credential. Register the n8n **OAuth Redirect URL** (shown in the credential screen) as the app callback URL — it must match exactly.

  Default API base URL: `https://api.rd.services`

  | Step | Endpoint |
  | ---- | -------- |
  | Authorization | `{baseUrl}/auth/dialog` |
  | Access token (code exchange) | `{baseUrl}/auth/token?token_by=code` |
  | Token refresh | `{baseUrl}/auth/token` |

  See the [RD Station Marketing authentication docs](https://developers.rdstation.com/reference/autentica%C3%A7%C3%A3o) for the full OAuth2 flow.

  ## Local Development

  ```bash
  npm install
  npm run build
  npm run lint
  ```

  ## License

  [MIT](./LICENSE)

ai_documentation_summary:
  {"purpose":"Integrates n8n with RD Station Marketing to manage contacts, custom fields, conversion and ecommerce events, qualification/funnel updates, and event-based triggers.","capabilities":["Create, get, update, and delete contacts","Add tags to contacts and fetch contact events","Create conversion events","Get many, create, update, and delete custom fields","Send ecommerce events such as checkout started, abandoned cart, order paid, order canceled, order fulfilled, and shipment delivered","Get contact funnels and update funnel status by marking leads/opportunities as opportunity, won, or lost","Trigger workflows on Converted and Marked Opportunity events"],"authentication":"OAuth2 using the RD Station Marketing credential; supports a configurable Base URL for the API, with authorization via https://accounts.rdstation.com/oauth/authorize.","commonUseCases":["Sync and enrich CRM contacts in RD Station Marketing from n8n workflows","Track conversions and ecommerce lifecycle events from external systems","Automate lead qualification and funnel stage updates based on marketing or sales activity","Trigger downstream workflows when contacts convert or are marked as opportunities"],"limitations":["Only the listed resources, operations, and trigger events are implemented","Access token endpoint is derived from the configured Base URL rather than being fixed"],"relatedNodes":["n8n Trigger","Contact","Custom Field"]}


node_type: n8n-nodes-fondaro.fondaroPollingTrigger
package_name: n8n-nodes-fondaro
display_name: Fondaro Polling 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: satherj
author_github_url: https://github.com/fondaro/
npm_package_name: n8n-nodes-fondaro
npm_version: 1.4.0
community_fetched_at: 2026-07-14T14:40:34.502Z
ai_summary_generated_at: 2026-06-26 10:29:17
description:
  Starts the workflow by polling Fondaro for new leads. Use this on self-hosted n8n instances that cannot receive webhooks, for example behind a firewall.

npm_readme:
  # n8n-nodes-fondaro

  This is an n8n community node package for [Fondaro](https://fondaro.com), the real estate CRM. It lets you create and update leads, deals, tasks, notes and tags, read a lead's activity and call log (with call outcomes) from your n8n workflows, and start workflows the moment things happen in your Fondaro CRM — new leads, status changes, logged calls, and deal and task events.

  The package ships three nodes:

  | Node | Type | What it does |
  |---|---|---|
  | **Fondaro** | Action | Create, find and update leads, deals, tasks, notes and tags |
  | **Fondaro Trigger** | Webhook trigger | Starts a workflow the moment a CRM event happens, delivered as a signed webhook |
  | **Fondaro Polling Trigger** | Polling trigger | Starts a workflow by polling for new leads, for instances that cannot receive webhooks |

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

  ## Installation

  ### Self-hosted n8n (GUI)

  1. Open **Settings > Community Nodes**.
  2. Select **Install**.
  3. Enter `n8n-nodes-fondaro` and confirm.

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

  ### Self-hosted n8n (CLI)

  Install the package into your n8n user folder (usually `~/.n8n/nodes`):

  ```bash
  cd ~/.n8n/nodes
  npm i n8n-nodes-fondaro
  ```

  Restart n8n afterwards.

  ### Environment bootstrap

  For containerized or declarative setups you can have n8n install the package on boot:

  ```bash
  N8N_COMMUNITY_PACKAGES_MANAGED_BY_ENV=true
  N8N_COMMUNITY_PACKAGES='[{"name":"n8n-nodes-fondaro","version":"1.0.0"}]'
  ```

  ## Credentials

  ### Creating a Fondaro API key

  1. In the Fondaro dashboard, go to **Organization > Integrations > n8n**.
  2. Select **Generate key** and give the key a name.
  3. Copy the key immediately. It is shown exactly once and cannot be retrieved later. Keys look like `fdr_n8n_` followed by 32 hex characters.

  ### Setting up the credential in n8n

  1. In n8n, create a new **Fondaro API** credential.
  2. Paste the API key.
  3. Leave the **Base URL** at `https://api.fondaro.com` unless Fondaro support has told you otherwise.
  4. Save. n8n tests the credential against the Fondaro `whoami` endpoint and shows your organization name on success.

  An OAuth2 credential (**Fondaro OAuth2 API**) is also included for setups that prefer the OAuth2 authorization code flow, for example on n8n Cloud. The API key credential is the recommended path.

  ### Key rotation

  To rotate a key: generate a new key in the Fondaro dashboard, swap it into the n8n credential, then revoke the old key. There is no in-place rotation; generate, swap, revoke.

  ## The Fondaro node (actions)

  | Resource | Operation | Description |
  |---|---|---|
  | Lead | Create | Create a new lead |
  | Lead | Find | Find one lead by email, phone or external ID |
  | Lead | Get | Get a lead by its numeric ID |
  | Lead | Get Activities | Read a lead's activity feed — notes, tasks, emails, status changes and call attempts with their outcomes |
  | Lead | Search | Free text search across leads, with limit and offset |
  | Lead | Update Contact | Update name, email, phone, lead type or language |
  | Lead | Update Status | Set the CRM status |
  | Deal | Create | Create a deal for a lead |
  | Deal | Change Stage | Move a deal to a different stage |
  | Deal | Close Won | Mark a deal as won |
  | Deal | Close Lost | Mark a deal as lost, with an optional free-text reason |
  | Deal | Get | Get a deal by its ID |
  | Deal | Get Many | List all deals on a lead |
  | Task | Create | Create a task on a lead |
  | Note | Create | Add a note to a lead |
  | Tag | Add | Add tags to a lead by name or ID (additive; missing names are created, IDs must exist) |
  | Tag | Get | Read a lead's current set of tags |
  | User | List | List your team members with their email, name and role |
  | User | Get | Resolve one team member (email, name, role) by their `user_…` ID |

  Lead IDs are numbers. Deal, task, note and subscription IDs are UUID strings. Team-member IDs are Clerk `user_…` strings — the same values you see in a lead's `assigneeIds` and on the `lead.assigned` event.

  The node can also be used as a tool by n8n AI agents.

  ### Find returns purchased leads only

  The **Lead > Find** operation returns only leads that have been purchased into your CRM. A 404 response means no purchased lead matched the identifier, not that your key is broken or the API is down.

  ### Dropdown values

  Tag and assignee dropdowns load live from your organization. Since 1.4.0 the tag dropdowns bind stable tag **IDs** (shown by name), so a picked tag keeps working after it is renamed or merged in the dashboard; workflows saved with older versions hold names, which the API still accepts. In the `tags` field, a plain name that does not exist is created automatically, while a UUID-shaped entry must match an existing tag and is never created. The status and stage dropdowns are fixed lists, kept in sync with Fondaro:

  - CRM status: `lead`, `potential`, `bad_timing`, `client`, `unqualified`
  - Lead type: `buyer`, `seller`
  - Deal stage: `qualified`, `viewing`, `offer`, `reserved`, `under_contract`

  Deal currency is controlled by your organization settings in Fondaro; the node never sends a currency. A 400 on deal creation means the organization has no billing currency set yet.

  **`lead` is the entry status; the dashboard labels it "New".** They are the same value — the dropdown shows **New**, the API value is `lead`.

  **There is no `unassigned` status.** A lead is *unassigned* when its `assigneeIds` is empty — it still has a status (usually `lead`/New). Read assignment from `assigneeIds`, not from `status`. The `lead.created`, `lead.statusChanged` and `lead.assigned` events all carry `assigneeIds`, so you can compute "unassigned" directly with `data.assigneeIds.length === 0`, no extra lookup.

  ### Reading activity and call outcomes

  **Lead > Get Activities** returns a lead's unified, paginated activity feed: notes, tasks, emails, status changes, deal-stage changes, assignee changes and **call attempts with their outcomes**. Each entry is `{ type, occurredAt, …type-specific fields }`; the response is `{ entries, total, hasMore }`.

  - Optional **Limit** (1–100, default 20) and **Offset** for paging.
  - Optional **Types** — a comma-separated filter, e.g. `call` to fetch only the call log, or `call,note,status-change`. Valid values: `call`, `note`, `task-created`, `task-completed`, `email`, `status-change`, `deal-stage-change`, `deal-won`, `deal-lost`, `assignee-change`, `lead-created`.

  A call entry looks like:

  ```json
  {
    "type": "call",
    "occurredAt": "2026-06-15T10:00:00.000Z",
    "call": {
      "id": "…",
      "direction": "outbound",
      "outcome": "no_answer",
      "status": "no-answer",
      "durationSeconds": 0,
      "startedAt": "…",
      "endedAt": "…",
      "hasRecording": false
    }
  }
  ```

  `outcome` is the call result: `success` (connected), `no_answer` (tried, nobody picked up), `invalid_number`, `bad_timing`, `not_interested`. Transcripts and recording URLs are never included — only `hasRecording`.

  **Call summary on the lead record.** Every **Lead > Get / Find / Search** result now also carries the latest call summary, so you can branch a flow without a separate Get Activities call:

  | Field | Meaning |
  |---|---|
  | `totalCalls` | Number of calls placed/received. `0` ⇒ assigned but never called. |
  | `lastCallStatus` | Outcome of the most recent call. `no_answer` ⇒ called, nobody picked up. |
  | `lastCallAt` | When the most recent call happened. |
  | `lastCallDirection` | `inbound` or `outbound`. |

  This answers "assigned-but-not-called yet" (`totalCalls === 0`) vs "called, no answer" (`lastCallStatus === 'no_answer'`) — the distinction the CRM status enum does not encode.

  ### Resolving a team member (User resource)

  Events and a lead's `assigneeIds` give you the assignee as a Clerk `user_…` ID, not an email. The **User** resource turns that ID into a real person:

  - **User > List** → every team member as `{ id, firstName, lastName, email, role, imageUrl }`.
  - **User > Get** (takes a `User ID`) → that one member, or a 404 if the ID is not a member of your organization.

  This needs the `users:read` scope on your API key. Keys minted with the default "everything" scope already have it; a key with a hand-picked scope set must have `users:read` granted.

  > This is distinct from the assignee dropdown used when *creating* a lead/deal/task (that's a design-time picker). **User > Get** is for resolving an ID to an email at *run time* inside a flow.

  #### Speed-to-lead recipe

  To alert the rep a lead was just assigned to:

  1. **Fondaro Trigger** on **Lead Assigned**.
  2. **Fondaro → User → Get** with `User ID` set to `{{$json["data"]["added"][0]}}` (or `{{$json["data"]["assigneeIds"][0]}}`).
  3. Send the notification to the resolved `email`.

  No hardcoded name→ID map — new hires resolve automatically.

  ## The Fondaro Trigger node (webhooks)

  The webhook trigger registers a subscription with Fondaro when the workflow is activated and removes it on deactivation. Fondaro then POSTs signed deliveries to your n8n webhook URL as events happen.

  ### Event catalog

  | Event | Value |
  |---|---|
  | New Lead | `lead.created` |
  | Lead Status Changed | `lead.statusChanged` |
  | Lead Assigned | `lead.assigned` |
  | Deal Created | `deal.created` |
  | Deal Stage Changed | `deal.stageChanged` |
  | Deal Won | `deal.won` |
  | Deal Lost | `deal.lost` |
  | Task Created | `task.created` |
  | Task Completed | `task.completed` |
  | Note Created | `note.created` |
  | Lead Tagged | `lead.tagged` |
  | Lead Untagged | `lead.untagged` |
  | Call Logged | `call.logged` |
  | Call Analyzed | `call.analyzed` |

  Most webhook payloads contain IDs and CRM state only, never contact details. The one exception is **`call.analyzed`** (see below), which is opt-in and content-bearing. Fetch full records back through the Fondaro action node.

  #### Enriched routing fields

  So you can route without a follow-up lookup, the lead and deal events carry the relevant non-PII state inline:

  | Event | Extra `data` fields |
  |---|---|
  | `lead.created` | `status`, `assigneeIds` |
  | `lead.statusChanged` | `assigneeIds` (current owner set) |
  | `lead.assigned` | `assigneeIds` (resulting full set), `status` |
  | `deal.created` | `leadId`, `stage`, `value` |
  | `deal.stageChanged` | `leadId` |
  | `deal.won` | `leadId`, `value` |
  | `deal.lost` | `leadId` |
  | `lead.tagged` | `tagId`, `changedBy` (one delivery per tag added) |
  | `lead.untagged` | `tagId`, `changedBy` (one delivery per tag removed) |

  **Resolving a `tagId` to its name:** call `GET /integrations/v1/tags/{tagId}` (scope `tags:read`) with an HTTP Request node — it returns `{ id, name, color, archivedAt }` and works for archived tags. For `lead.tagged` events the Fondaro node's **Tag > Get** on the lead also works; for `lead.untagged` the id lookup is the only way, since the tag is no longer in the lead's set.

  **Filtering tag events:** the trigger node has an optional **Only for Tags** field (shown when Lead Tagged/Untagged is selected). Non-matching deliveries are acknowledged and dropped inside the node, by stable tag ID, so the filter survives renames. Note that merging tags in the dashboard deliberately fires **no** `lead.tagged` events for the re-pointed leads — a merge is a catalogue correction, not thousands of lead events.

  `value` is the deal's own amount (the sale figure you entered) in your organization's currency — not Fondaro's lead pricing, which is never emitted. `status` is the CRM status (`lead`/New, `potential`, …); `assigneeIds` is the set of `user_…` IDs the lead is assigned to (empty ⇒ unassigned). A `lead.assigned` delivery, for example:

  ```json
  {
    "organizationId": "…",
    "leadId": 123,
    "added": ["user_abc"],
    "removed": [],
    "assigneeIds": ["user_abc"],
    "status": "lead",
    "changedBy": "user_admin"
  }
  ```

  > Ordering note: for leads created through this node, auto-routing assigns the owner *after* the create commits, so `lead.created` may carry an empty `assigneeIds` for those leads.

  **`call.logged`** fires the first time a call reaches a terminal state, for both outbound and inbound calls attached to a lead. The `data` carries the outcome but no PII:

  ```json
  {
    "organizationId": "…",
    "leadId": 123,
    "callId": "…",
    "direction": "outbound",
    "outcome": "no_answer",
    "status": "no-answer",
    "durationSeconds": 0,
    "missed": true,
    "occurredAt": "2026-06-15T10:00:00.000Z"
  }
  ```

  It does **not** fire for calls from unknown numbers that aren't matched to a lead (there is nothing for a lead-centric automation to act on). Use **Lead > Get Activities** to read the full call log back.

  **`call.analyzed`** fires separately, when a call's AI analysis is ready (summary, sentiment, lead interest, objections, next steps). It's distinct from `call.logged`, which still carries the carrier-level outcome unchanged. Analysis runs asynchronously and only after a transcript exists, so this arrives after `call.logged` (and only for calls that get analyzed). The `data`:

  ```json
  {
    "organizationId": "…",
    "leadId": 123,
    "callId": "…",
    "direction": "outbound",
    "occurredAt": "2026-06-15T10:05:00.000Z",
    "analysis": {
      "summary": "…",
      "sentiment": "positive",
      "leadInterest": "high",
      "objections": ["price"],
      "nextSteps": ["send brochure"],
      "coachingTips": ["…"],
      "keyTopics": ["financing"]
    }
  }
  ```

  > **Content-bearing event — opt in deliberately.** Unlike every other event, `call.analyzed` carries an AI-generated `summary` (free text) that **may mention names, numbers or other details spoken on the call**. It carries no transcript or recording URL. It only arrives if you subscribe to **Call Analyzed**; it never rides the other events.

  ### Signature verification

  Every delivery is signed. The node verifies each request before your workflow runs:

  - Fondaro sends `X-Fondaro-Signature: sha256=<hex>`, `X-Fondaro-Event` and `X-Fondaro-Timestamp` headers.
  - The signature is an HMAC-SHA256 of `timestamp.rawBody` using the per-subscription secret issued at registration.
  - The node recomputes the signature over the raw request bytes, compares it in constant time, and rejects any delivery whose timestamp is more than 5 minutes old or in the future. Replayed or tampered deliveries get a 401 and are never passed to your workflow.

  ## The Fondaro Polling Trigger node

  Use the polling trigger when your n8n instance cannot receive inbound webhooks, which is typical for self-hosted instances behind a firewall or NAT without a public URL. It polls Fondaro for new leads on the schedule you configure, dedupes on lead ID, and tracks its own cursor so each lead is emitted once. When you test the workflow manually it returns the latest leads as a sample.

  If your instance is publicly reachable, prefer the webhook trigger: it is instant and cheaper on your rate limit.

  ## Rate limits

  Every API key has its own request ceiling. The ceiling is generous for normal workflow volume, but a runaway loop will be throttled with `429` responses. Back off and retry, or slow the offending workflow down.

  ## Compatibility

  Requires n8n 1.x and Node.js 20.15 or newer. The package has zero runtime dependencies.

  ## Resources

  - [Fondaro](https://fondaro.com)
  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)

  ## License

  [MIT](LICENSE)

ai_documentation_summary:
  {"purpose":"Polls Fondaro for new leads and starts an n8n workflow when new lead records are found. It is intended for self-hosted n8n instances that cannot receive webhooks, such as those behind a firewall.","capabilities":["Triggers workflows by polling for new leads in Fondaro","Supports use on environments that cannot accept incoming webhooks","Can be configured as a polling-based trigger node in n8n"],"authentication":"Fondaro API key required via a Fondaro API credential; OAuth2 is also supported as an alternative credential method.","commonUseCases":["Start an automation when new leads are added to Fondaro","Run Fondaro lead-processing workflows on self-hosted n8n instances without webhook access"],"limitations":["Only polls for new leads; it is not a general CRM event trigger","Intended for instances that cannot receive webhooks, so it is less real-time than webhook triggers"],"relatedNodes":["Fondaro","Fondaro Trigger"]}


node_type: n8n-nodes-fondaro.fondaroTrigger
package_name: n8n-nodes-fondaro
display_name: Fondaro 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: satherj
author_github_url: https://github.com/fondaro/
npm_package_name: n8n-nodes-fondaro
npm_version: 1.4.0
community_fetched_at: 2026-07-14T14:40:34.503Z
ai_summary_generated_at: 2026-06-26 10:29:17
description:
  Starts the workflow on real-time Fondaro CRM events — new lead, lead status changed, call logged, call analyzed, deal and task events — delivered as signed webhooks

npm_readme:
  # n8n-nodes-fondaro

  This is an n8n community node package for [Fondaro](https://fondaro.com), the real estate CRM. It lets you create and update leads, deals, tasks, notes and tags, read a lead's activity and call log (with call outcomes) from your n8n workflows, and start workflows the moment things happen in your Fondaro CRM — new leads, status changes, logged calls, and deal and task events.

  The package ships three nodes:

  | Node | Type | What it does |
  |---|---|---|
  | **Fondaro** | Action | Create, find and update leads, deals, tasks, notes and tags |
  | **Fondaro Trigger** | Webhook trigger | Starts a workflow the moment a CRM event happens, delivered as a signed webhook |
  | **Fondaro Polling Trigger** | Polling trigger | Starts a workflow by polling for new leads, for instances that cannot receive webhooks |

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

  ## Installation

  ### Self-hosted n8n (GUI)

  1. Open **Settings > Community Nodes**.
  2. Select **Install**.
  3. Enter `n8n-nodes-fondaro` and confirm.

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

  ### Self-hosted n8n (CLI)

  Install the package into your n8n user folder (usually `~/.n8n/nodes`):

  ```bash
  cd ~/.n8n/nodes
  npm i n8n-nodes-fondaro
  ```

  Restart n8n afterwards.

  ### Environment bootstrap

  For containerized or declarative setups you can have n8n install the package on boot:

  ```bash
  N8N_COMMUNITY_PACKAGES_MANAGED_BY_ENV=true
  N8N_COMMUNITY_PACKAGES='[{"name":"n8n-nodes-fondaro","version":"1.0.0"}]'
  ```

  ## Credentials

  ### Creating a Fondaro API key

  1. In the Fondaro dashboard, go to **Organization > Integrations > n8n**.
  2. Select **Generate key** and give the key a name.
  3. Copy the key immediately. It is shown exactly once and cannot be retrieved later. Keys look like `fdr_n8n_` followed by 32 hex characters.

  ### Setting up the credential in n8n

  1. In n8n, create a new **Fondaro API** credential.
  2. Paste the API key.
  3. Leave the **Base URL** at `https://api.fondaro.com` unless Fondaro support has told you otherwise.
  4. Save. n8n tests the credential against the Fondaro `whoami` endpoint and shows your organization name on success.

  An OAuth2 credential (**Fondaro OAuth2 API**) is also included for setups that prefer the OAuth2 authorization code flow, for example on n8n Cloud. The API key credential is the recommended path.

  ### Key rotation

  To rotate a key: generate a new key in the Fondaro dashboard, swap it into the n8n credential, then revoke the old key. There is no in-place rotation; generate, swap, revoke.

  ## The Fondaro node (actions)

  | Resource | Operation | Description |
  |---|---|---|
  | Lead | Create | Create a new lead |
  | Lead | Find | Find one lead by email, phone or external ID |
  | Lead | Get | Get a lead by its numeric ID |
  | Lead | Get Activities | Read a lead's activity feed — notes, tasks, emails, status changes and call attempts with their outcomes |
  | Lead | Search | Free text search across leads, with limit and offset |
  | Lead | Update Contact | Update name, email, phone, lead type or language |
  | Lead | Update Status | Set the CRM status |
  | Deal | Create | Create a deal for a lead |
  | Deal | Change Stage | Move a deal to a different stage |
  | Deal | Close Won | Mark a deal as won |
  | Deal | Close Lost | Mark a deal as lost, with an optional free-text reason |
  | Deal | Get | Get a deal by its ID |
  | Deal | Get Many | List all deals on a lead |
  | Task | Create | Create a task on a lead |
  | Note | Create | Add a note to a lead |
  | Tag | Add | Add tags to a lead by name or ID (additive; missing names are created, IDs must exist) |
  | Tag | Get | Read a lead's current set of tags |
  | User | List | List your team members with their email, name and role |
  | User | Get | Resolve one team member (email, name, role) by their `user_…` ID |

  Lead IDs are numbers. Deal, task, note and subscription IDs are UUID strings. Team-member IDs are Clerk `user_…` strings — the same values you see in a lead's `assigneeIds` and on the `lead.assigned` event.

  The node can also be used as a tool by n8n AI agents.

  ### Find returns purchased leads only

  The **Lead > Find** operation returns only leads that have been purchased into your CRM. A 404 response means no purchased lead matched the identifier, not that your key is broken or the API is down.

  ### Dropdown values

  Tag and assignee dropdowns load live from your organization. Since 1.4.0 the tag dropdowns bind stable tag **IDs** (shown by name), so a picked tag keeps working after it is renamed or merged in the dashboard; workflows saved with older versions hold names, which the API still accepts. In the `tags` field, a plain name that does not exist is created automatically, while a UUID-shaped entry must match an existing tag and is never created. The status and stage dropdowns are fixed lists, kept in sync with Fondaro:

  - CRM status: `lead`, `potential`, `bad_timing`, `client`, `unqualified`
  - Lead type: `buyer`, `seller`
  - Deal stage: `qualified`, `viewing`, `offer`, `reserved`, `under_contract`

  Deal currency is controlled by your organization settings in Fondaro; the node never sends a currency. A 400 on deal creation means the organization has no billing currency set yet.

  **`lead` is the entry status; the dashboard labels it "New".** They are the same value — the dropdown shows **New**, the API value is `lead`.

  **There is no `unassigned` status.** A lead is *unassigned* when its `assigneeIds` is empty — it still has a status (usually `lead`/New). Read assignment from `assigneeIds`, not from `status`. The `lead.created`, `lead.statusChanged` and `lead.assigned` events all carry `assigneeIds`, so you can compute "unassigned" directly with `data.assigneeIds.length === 0`, no extra lookup.

  ### Reading activity and call outcomes

  **Lead > Get Activities** returns a lead's unified, paginated activity feed: notes, tasks, emails, status changes, deal-stage changes, assignee changes and **call attempts with their outcomes**. Each entry is `{ type, occurredAt, …type-specific fields }`; the response is `{ entries, total, hasMore }`.

  - Optional **Limit** (1–100, default 20) and **Offset** for paging.
  - Optional **Types** — a comma-separated filter, e.g. `call` to fetch only the call log, or `call,note,status-change`. Valid values: `call`, `note`, `task-created`, `task-completed`, `email`, `status-change`, `deal-stage-change`, `deal-won`, `deal-lost`, `assignee-change`, `lead-created`.

  A call entry looks like:

  ```json
  {
    "type": "call",
    "occurredAt": "2026-06-15T10:00:00.000Z",
    "call": {
      "id": "…",
      "direction": "outbound",
      "outcome": "no_answer",
      "status": "no-answer",
      "durationSeconds": 0,
      "startedAt": "…",
      "endedAt": "…",
      "hasRecording": false
    }
  }
  ```

  `outcome` is the call result: `success` (connected), `no_answer` (tried, nobody picked up), `invalid_number`, `bad_timing`, `not_interested`. Transcripts and recording URLs are never included — only `hasRecording`.

  **Call summary on the lead record.** Every **Lead > Get / Find / Search** result now also carries the latest call summary, so you can branch a flow without a separate Get Activities call:

  | Field | Meaning |
  |---|---|
  | `totalCalls` | Number of calls placed/received. `0` ⇒ assigned but never called. |
  | `lastCallStatus` | Outcome of the most recent call. `no_answer` ⇒ called, nobody picked up. |
  | `lastCallAt` | When the most recent call happened. |
  | `lastCallDirection` | `inbound` or `outbound`. |

  This answers "assigned-but-not-called yet" (`totalCalls === 0`) vs "called, no answer" (`lastCallStatus === 'no_answer'`) — the distinction the CRM status enum does not encode.

  ### Resolving a team member (User resource)

  Events and a lead's `assigneeIds` give you the assignee as a Clerk `user_…` ID, not an email. The **User** resource turns that ID into a real person:

  - **User > List** → every team member as `{ id, firstName, lastName, email, role, imageUrl }`.
  - **User > Get** (takes a `User ID`) → that one member, or a 404 if the ID is not a member of your organization.

  This needs the `users:read` scope on your API key. Keys minted with the default "everything" scope already have it; a key with a hand-picked scope set must have `users:read` granted.

  > This is distinct from the assignee dropdown used when *creating* a lead/deal/task (that's a design-time picker). **User > Get** is for resolving an ID to an email at *run time* inside a flow.

  #### Speed-to-lead recipe

  To alert the rep a lead was just assigned to:

  1. **Fondaro Trigger** on **Lead Assigned**.
  2. **Fondaro → User → Get** with `User ID` set to `{{$json["data"]["added"][0]}}` (or `{{$json["data"]["assigneeIds"][0]}}`).
  3. Send the notification to the resolved `email`.

  No hardcoded name→ID map — new hires resolve automatically.

  ## The Fondaro Trigger node (webhooks)

  The webhook trigger registers a subscription with Fondaro when the workflow is activated and removes it on deactivation. Fondaro then POSTs signed deliveries to your n8n webhook URL as events happen.

  ### Event catalog

  | Event | Value |
  |---|---|
  | New Lead | `lead.created` |
  | Lead Status Changed | `lead.statusChanged` |
  | Lead Assigned | `lead.assigned` |
  | Deal Created | `deal.created` |
  | Deal Stage Changed | `deal.stageChanged` |
  | Deal Won | `deal.won` |
  | Deal Lost | `deal.lost` |
  | Task Created | `task.created` |
  | Task Completed | `task.completed` |
  | Note Created | `note.created` |
  | Lead Tagged | `lead.tagged` |
  | Lead Untagged | `lead.untagged` |
  | Call Logged | `call.logged` |
  | Call Analyzed | `call.analyzed` |

  Most webhook payloads contain IDs and CRM state only, never contact details. The one exception is **`call.analyzed`** (see below), which is opt-in and content-bearing. Fetch full records back through the Fondaro action node.

  #### Enriched routing fields

  So you can route without a follow-up lookup, the lead and deal events carry the relevant non-PII state inline:

  | Event | Extra `data` fields |
  |---|---|
  | `lead.created` | `status`, `assigneeIds` |
  | `lead.statusChanged` | `assigneeIds` (current owner set) |
  | `lead.assigned` | `assigneeIds` (resulting full set), `status` |
  | `deal.created` | `leadId`, `stage`, `value` |
  | `deal.stageChanged` | `leadId` |
  | `deal.won` | `leadId`, `value` |
  | `deal.lost` | `leadId` |
  | `lead.tagged` | `tagId`, `changedBy` (one delivery per tag added) |
  | `lead.untagged` | `tagId`, `changedBy` (one delivery per tag removed) |

  **Resolving a `tagId` to its name:** call `GET /integrations/v1/tags/{tagId}` (scope `tags:read`) with an HTTP Request node — it returns `{ id, name, color, archivedAt }` and works for archived tags. For `lead.tagged` events the Fondaro node's **Tag > Get** on the lead also works; for `lead.untagged` the id lookup is the only way, since the tag is no longer in the lead's set.

  **Filtering tag events:** the trigger node has an optional **Only for Tags** field (shown when Lead Tagged/Untagged is selected). Non-matching deliveries are acknowledged and dropped inside the node, by stable tag ID, so the filter survives renames. Note that merging tags in the dashboard deliberately fires **no** `lead.tagged` events for the re-pointed leads — a merge is a catalogue correction, not thousands of lead events.

  `value` is the deal's own amount (the sale figure you entered) in your organization's currency — not Fondaro's lead pricing, which is never emitted. `status` is the CRM status (`lead`/New, `potential`, …); `assigneeIds` is the set of `user_…` IDs the lead is assigned to (empty ⇒ unassigned). A `lead.assigned` delivery, for example:

  ```json
  {
    "organizationId": "…",
    "leadId": 123,
    "added": ["user_abc"],
    "removed": [],
    "assigneeIds": ["user_abc"],
    "status": "lead",
    "changedBy": "user_admin"
  }
  ```

  > Ordering note: for leads created through this node, auto-routing assigns the owner *after* the create commits, so `lead.created` may carry an empty `assigneeIds` for those leads.

  **`call.logged`** fires the first time a call reaches a terminal state, for both outbound and inbound calls attached to a lead. The `data` carries the outcome but no PII:

  ```json
  {
    "organizationId": "…",
    "leadId": 123,
    "callId": "…",
    "direction": "outbound",
    "outcome": "no_answer",
    "status": "no-answer",
    "durationSeconds": 0,
    "missed": true,
    "occurredAt": "2026-06-15T10:00:00.000Z"
  }
  ```

  It does **not** fire for calls from unknown numbers that aren't matched to a lead (there is nothing for a lead-centric automation to act on). Use **Lead > Get Activities** to read the full call log back.

  **`call.analyzed`** fires separately, when a call's AI analysis is ready (summary, sentiment, lead interest, objections, next steps). It's distinct from `call.logged`, which still carries the carrier-level outcome unchanged. Analysis runs asynchronously and only after a transcript exists, so this arrives after `call.logged` (and only for calls that get analyzed). The `data`:

  ```json
  {
    "organizationId": "…",
    "leadId": 123,
    "callId": "…",
    "direction": "outbound",
    "occurredAt": "2026-06-15T10:05:00.000Z",
    "analysis": {
      "summary": "…",
      "sentiment": "positive",
      "leadInterest": "high",
      "objections": ["price"],
      "nextSteps": ["send brochure"],
      "coachingTips": ["…"],
      "keyTopics": ["financing"]
    }
  }
  ```

  > **Content-bearing event — opt in deliberately.** Unlike every other event, `call.analyzed` carries an AI-generated `summary` (free text) that **may mention names, numbers or other details spoken on the call**. It carries no transcript or recording URL. It only arrives if you subscribe to **Call Analyzed**; it never rides the other events.

  ### Signature verification

  Every delivery is signed. The node verifies each request before your workflow runs:

  - Fondaro sends `X-Fondaro-Signature: sha256=<hex>`, `X-Fondaro-Event` and `X-Fondaro-Timestamp` headers.
  - The signature is an HMAC-SHA256 of `timestamp.rawBody` using the per-subscription secret issued at registration.
  - The node recomputes the signature over the raw request bytes, compares it in constant time, and rejects any delivery whose timestamp is more than 5 minutes old or in the future. Replayed or tampered deliveries get a 401 and are never passed to your workflow.

  ## The Fondaro Polling Trigger node

  Use the polling trigger when your n8n instance cannot receive inbound webhooks, which is typical for self-hosted instances behind a firewall or NAT without a public URL. It polls Fondaro for new leads on the schedule you configure, dedupes on lead ID, and tracks its own cursor so each lead is emitted once. When you test the workflow manually it returns the latest leads as a sample.

  If your instance is publicly reachable, prefer the webhook trigger: it is instant and cheaper on your rate limit.

  ## Rate limits

  Every API key has its own request ceiling. The ceiling is generous for normal workflow volume, but a runaway loop will be throttled with `429` responses. Back off and retry, or slow the offending workflow down.

  ## Compatibility

  Requires n8n 1.x and Node.js 20.15 or newer. The package has zero runtime dependencies.

  ## Resources

  - [Fondaro](https://fondaro.com)
  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)

  ## License

  [MIT](LICENSE)

ai_documentation_summary:
  {"purpose":"Starts n8n workflows in real time when Fondaro CRM events occur, delivered as signed webhooks. It is used to react to events like new leads, lead status changes, logged/analyzed calls, and deal/task updates.","capabilities":["Webhook trigger for real-time Fondaro CRM events","Starts workflows on new lead events","Starts workflows on lead status change events","Starts workflows on logged call and analyzed call events","Starts workflows on deal events","Starts workflows on task events","Receives signed webhooks"],"authentication":"Fondaro API key or Fondaro OAuth2 API credential (OAuth2 authorization code flow supported; API key is the recommended method)","commonUseCases":["Notify or route leads instantly when a new lead is created in Fondaro","Trigger follow-up automations when a lead status changes","Kick off workflows for call, deal, or task activity in Fondaro CRM"],"limitations":["This trigger depends on Fondaro being able to send webhooks to n8n; for environments that cannot receive webhooks, the package provides a separate polling trigger","Events are delivered as signed webhooks, so the workflow must be set up to accept and process webhook signatures"],"relatedNodes":["Fondaro","Fondaro Polling Trigger"]}


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

updated_at: 2026-07-14 14:40:34
author_name: satherj
author_github_url: https://github.com/fondaro/
npm_package_name: n8n-nodes-fondaro
npm_version: 1.4.0
community_fetched_at: 2026-07-14T14:40:34.504Z
ai_summary_generated_at: 2026-06-26 10:29:17
description:
  Create, find and update Fondaro CRM leads, deals, tasks, notes and tags, read a lead's activity and call log, and resolve team members by ID

properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "lead",
      "options": [
        {
          "name": "Deal",
          "value": "deal"
        },
        {
          "name": "Lead",
          "value": "lead"
        },
        {
          "name": "Note",
          "value": "note"
        },
        {
          "name": "Tag",
          "value": "tag"
        },
        {
          "name": "Task",
          "value": "task"
        },
        {
          "name": "User",
          "value": "user"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a lead",
          "routing": {
            "request": {
              "url": "/integrations/v1/leads",
              "method": "POST"
            }
          },
          "description": "Create a new lead in the CRM"
        },
        {
          "name": "Find",
          "value": "find",
          "action": "Find a lead",
          "routing": {
            "request": {
              "url": "/integrations/v1/leads/find",
              "method": "GET"
            }
          },
          "description": "Find a single lead by email, phone or external ID. Find returns only leads that have been purchased into your CRM. A 404 means no purchased lead matched, not that your key is broken."
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a lead",
          "routing": {
            "request": {
              "url": "=/integrations/v1/leads/{{$parameter.leadId}}",
              "method": "GET"
            }
          },
          "description": "Get a lead by its ID"
        },
        {
          "name": "Get Activities",
          "value": "getActivities",
          "action": "Get activities for a lead",
          "routing": {
            "request": {
              "url": "=/integrations/v1/leads/{{$parameter.leadId}}/activities",
              "method": "GET"
            }
          },
          "description": "Read a lead's notes, tasks, emails, status changes and call attempts with their outcomes (e.g. no answer, success)"
        },
        {
          "name": "Search",
          "value": "search",
          "action": "Search leads",
          "routing": {
            "request": {
              "url": "/integrations/v1/leads/search",
              "method": "GET"
            }
          },
          "description": "Search leads by free text"
        },
        {
          "name": "Update Contact",
          "value": "updateContact",
          "action": "Update lead contact details",
          "routing": {
            "request": {
              "url": "=/integrations/v1/leads/{{$parameter.leadId}}/contact",
              "method": "PATCH"
            }
          },
          "description": "Update the contact details of a lead"
        },
        {
          "name": "Update Status",
          "value": "updateStatus",
          "action": "Update lead status",
          "routing": {
            "request": {
              "url": "=/integrations/v1/leads/{{$parameter.leadId}}/status",
              "method": "PATCH"
            }
          },
          "description": "Update the CRM status of a lead"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "lead"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Change Stage",
          "value": "changeStage",
          "action": "Change the stage of a deal",
          "routing": {
            "request": {
              "url": "=/integrations/v1/deals/{{$parameter.dealId}}/stage",
              "method": "PATCH"
            }
          },
          "description": "Move a deal to a different stage"
        },
        {
          "name": "Close Lost",
          "value": "closeLost",
          "action": "Close a deal as lost",
          "routing": {
            "request": {
              "url": "=/integrations/v1/deals/{{$parameter.dealId}}/lost",
              "method": "POST"
            }
          },
          "description": "Mark a deal as lost, optionally with a reason"
        },
        {
          "name": "Close Won",
          "value": "closeWon",
          "action": "Close a deal as won",
          "routing": {
            "request": {
              "url": "=/integrations/v1/deals/{{$parameter.dealId}}/won",
              "method": "POST"
            }
          },
          "description": "Mark a deal as won"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create a deal",
          "routing": {
            "request": {
              "url": "/integrations/v1/deals",
              "method": "POST"
            }
          },
          "description": "Create a new deal for a lead. The deal currency is controlled by your organization settings in Fondaro. A 400 response means the organization has no billing currency set."
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a deal",
          "routing": {
            "request": {
              "url": "=/integrations/v1/deals/{{$parameter.dealId}}",
              "method": "GET"
            }
          },
          "description": "Get a deal by its ID"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many deals for a lead",
          "routing": {
            "request": {
              "url": "=/integrations/v1/leads/{{$parameter.leadId}}/deals",
              "method": "GET"
            }
          },
          "description": "Get all deals that belong to a lead"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "deal"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a note on a lead",
          "routing": {
            "request": {
              "url": "=/integrations/v1/leads/{{$parameter.leadId}}/notes",
              "method": "POST"
            }
          },
          "description": "Add a note to a lead"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "note"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "add",
      "options": [
        {
          "name": "Add",
          "value": "add",
          "action": "Add tags to a lead",
          "routing": {
            "request": {
              "url": "=/integrations/v1/leads/{{$parameter.leadId}}/tags",
              "method": "POST"
            }
          },
          "description": "Add tags to a lead by name or ID. Additive: plain names that do not exist are created automatically; IDs must match existing tags and are never created."
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get tags for a lead",
          "routing": {
            "request": {
              "url": "=/integrations/v1/leads/{{$parameter.leadId}}/tags",
              "method": "GET"
            }
          },
          "description": "Read the lead's current set of tags"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "tag"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a task on a lead",
          "routing": {
            "request": {
              "url": "=/integrations/v1/leads/{{$parameter.leadId}}/tasks",
              "method": "POST"
            }
          },
          "description": "Create a task attached to a lead"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "task"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a team user by ID",
          "routing": {
            "request": {
              "url": "=/integrations/v1/users/{{$parameter.userId}}",
              "method": "GET"
            }
          },
          "description": "Resolve a single team member (email, name, role) by their user ID. Use this to turn a user_… value from assigneeIds or lead.assigned into a rep email."
        },
        {
          "name": "List",
          "value": "list",
          "action": "List team users",
          "routing": {
            "request": {
              "url": "/integrations/v1/users",
              "method": "GET"
            }
          },
          "description": "List all team members (email, name, role) in the organization"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create a lead",
      "routing": {
        "request": {
          "url": "/integrations/v1/leads",
          "method": "POST"
        }
      },
      "description": "Create a new lead in the CRM",
      "resource": "lead"
    },
    {
      "name": "Find",
      "value": "find",
      "action": "Find a lead",
      "routing": {
        "request": {
          "url": "/integrations/v1/leads/find",
          "method": "GET"
        }
      },
      "description": "Find a single lead by email, phone or external ID. Find returns only leads that have been purchased into your CRM. A 404 means no purchased lead matched, not that your key is broken.",
      "resource": "lead"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a lead",
      "routing": {
        "request": {
          "url": "=/integrations/v1/leads/{{$parameter.leadId}}",
          "method": "GET"
        }
      },
      "description": "Get a lead by its ID",
      "resource": "lead"
    },
    {
      "name": "Get Activities",
      "value": "getActivities",
      "action": "Get activities for a lead",
      "routing": {
        "request": {
          "url": "=/integrations/v1/leads/{{$parameter.leadId}}/activities",
          "method": "GET"
        }
      },
      "description": "Read a lead's notes, tasks, emails, status changes and call attempts with their outcomes (e.g. no answer, success)",
      "resource": "lead"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search leads",
      "routing": {
        "request": {
          "url": "/integrations/v1/leads/search",
          "method": "GET"
        }
      },
      "description": "Search leads by free text",
      "resource": "lead"
    },
    {
      "name": "Update Contact",
      "value": "updateContact",
      "action": "Update lead contact details",
      "routing": {
        "request": {
          "url": "=/integrations/v1/leads/{{$parameter.leadId}}/contact",
          "method": "PATCH"
        }
      },
      "description": "Update the contact details of a lead",
      "resource": "lead"
    },
    {
      "name": "Update Status",
      "value": "updateStatus",
      "action": "Update lead status",
      "routing": {
        "request": {
          "url": "=/integrations/v1/leads/{{$parameter.leadId}}/status",
          "method": "PATCH"
        }
      },
      "description": "Update the CRM status of a lead",
      "resource": "lead"
    },
    {
      "name": "Change Stage",
      "value": "changeStage",
      "action": "Change the stage of a deal",
      "routing": {
        "request": {
          "url": "=/integrations/v1/deals/{{$parameter.dealId}}/stage",
          "method": "PATCH"
        }
      },
      "description": "Move a deal to a different stage",
      "resource": "deal"
    },
    {
      "name": "Close Lost",
      "value": "closeLost",
      "action": "Close a deal as lost",
      "routing": {
        "request": {
          "url": "=/integrations/v1/deals/{{$parameter.dealId}}/lost",
          "method": "POST"
        }
      },
      "description": "Mark a deal as lost, optionally with a reason",
      "resource": "deal"
    },
    {
      "name": "Close Won",
      "value": "closeWon",
      "action": "Close a deal as won",
      "routing": {
        "request": {
          "url": "=/integrations/v1/deals/{{$parameter.dealId}}/won",
          "method": "POST"
        }
      },
      "description": "Mark a deal as won",
      "resource": "deal"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a deal",
      "routing": {
        "request": {
          "url": "/integrations/v1/deals",
          "method": "POST"
        }
      },
      "description": "Create a new deal for a lead. The deal currency is controlled by your organization settings in Fondaro. A 400 response means the organization has no billing currency set.",
      "resource": "deal"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a deal",
      "routing": {
        "request": {
          "url": "=/integrations/v1/deals/{{$parameter.dealId}}",
          "method": "GET"
        }
      },
      "description": "Get a deal by its ID",
      "resource": "deal"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many deals for a lead",
      "routing": {
        "request": {
          "url": "=/integrations/v1/leads/{{$parameter.leadId}}/deals",
          "method": "GET"
        }
      },
      "description": "Get all deals that belong to a lead",
      "resource": "deal"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a note on a lead",
      "routing": {
        "request": {
          "url": "=/integrations/v1/leads/{{$parameter.leadId}}/notes",
          "method": "POST"
        }
      },
      "description": "Add a note to a lead",
      "resource": "note"
    },
    {
      "name": "Add",
      "value": "add",
      "action": "Add tags to a lead",
      "routing": {
        "request": {
          "url": "=/integrations/v1/leads/{{$parameter.leadId}}/tags",
          "method": "POST"
        }
      },
      "description": "Add tags to a lead by name or ID. Additive: plain names that do not exist are created automatically; IDs must match existing tags and are never created.",
      "resource": "tag"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get tags for a lead",
      "routing": {
        "request": {
          "url": "=/integrations/v1/leads/{{$parameter.leadId}}/tags",
          "method": "GET"
        }
      },
      "description": "Read the lead's current set of tags",
      "resource": "tag"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a task on a lead",
      "routing": {
        "request": {
          "url": "=/integrations/v1/leads/{{$parameter.leadId}}/tasks",
          "method": "POST"
        }
      },
      "description": "Create a task attached to a lead",
      "resource": "task"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a team user by ID",
      "routing": {
        "request": {
          "url": "=/integrations/v1/users/{{$parameter.userId}}",
          "method": "GET"
        }
      },
      "description": "Resolve a single team member (email, name, role) by their user ID. Use this to turn a user_… value from assigneeIds or lead.assigned into a rep email.",
      "resource": "user"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List team users",
      "routing": {
        "request": {
          "url": "/integrations/v1/users",
          "method": "GET"
        }
      },
      "description": "List all team members (email, name, role) in the organization",
      "resource": "user"
    }
  ]

npm_readme:
  # n8n-nodes-fondaro

  This is an n8n community node package for [Fondaro](https://fondaro.com), the real estate CRM. It lets you create and update leads, deals, tasks, notes and tags, read a lead's activity and call log (with call outcomes) from your n8n workflows, and start workflows the moment things happen in your Fondaro CRM — new leads, status changes, logged calls, and deal and task events.

  The package ships three nodes:

  | Node | Type | What it does |
  |---|---|---|
  | **Fondaro** | Action | Create, find and update leads, deals, tasks, notes and tags |
  | **Fondaro Trigger** | Webhook trigger | Starts a workflow the moment a CRM event happens, delivered as a signed webhook |
  | **Fondaro Polling Trigger** | Polling trigger | Starts a workflow by polling for new leads, for instances that cannot receive webhooks |

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

  ## Installation

  ### Self-hosted n8n (GUI)

  1. Open **Settings > Community Nodes**.
  2. Select **Install**.
  3. Enter `n8n-nodes-fondaro` and confirm.

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

  ### Self-hosted n8n (CLI)

  Install the package into your n8n user folder (usually `~/.n8n/nodes`):

  ```bash
  cd ~/.n8n/nodes
  npm i n8n-nodes-fondaro
  ```

  Restart n8n afterwards.

  ### Environment bootstrap

  For containerized or declarative setups you can have n8n install the package on boot:

  ```bash
  N8N_COMMUNITY_PACKAGES_MANAGED_BY_ENV=true
  N8N_COMMUNITY_PACKAGES='[{"name":"n8n-nodes-fondaro","version":"1.0.0"}]'
  ```

  ## Credentials

  ### Creating a Fondaro API key

  1. In the Fondaro dashboard, go to **Organization > Integrations > n8n**.
  2. Select **Generate key** and give the key a name.
  3. Copy the key immediately. It is shown exactly once and cannot be retrieved later. Keys look like `fdr_n8n_` followed by 32 hex characters.

  ### Setting up the credential in n8n

  1. In n8n, create a new **Fondaro API** credential.
  2. Paste the API key.
  3. Leave the **Base URL** at `https://api.fondaro.com` unless Fondaro support has told you otherwise.
  4. Save. n8n tests the credential against the Fondaro `whoami` endpoint and shows your organization name on success.

  An OAuth2 credential (**Fondaro OAuth2 API**) is also included for setups that prefer the OAuth2 authorization code flow, for example on n8n Cloud. The API key credential is the recommended path.

  ### Key rotation

  To rotate a key: generate a new key in the Fondaro dashboard, swap it into the n8n credential, then revoke the old key. There is no in-place rotation; generate, swap, revoke.

  ## The Fondaro node (actions)

  | Resource | Operation | Description |
  |---|---|---|
  | Lead | Create | Create a new lead |
  | Lead | Find | Find one lead by email, phone or external ID |
  | Lead | Get | Get a lead by its numeric ID |
  | Lead | Get Activities | Read a lead's activity feed — notes, tasks, emails, status changes and call attempts with their outcomes |
  | Lead | Search | Free text search across leads, with limit and offset |
  | Lead | Update Contact | Update name, email, phone, lead type or language |
  | Lead | Update Status | Set the CRM status |
  | Deal | Create | Create a deal for a lead |
  | Deal | Change Stage | Move a deal to a different stage |
  | Deal | Close Won | Mark a deal as won |
  | Deal | Close Lost | Mark a deal as lost, with an optional free-text reason |
  | Deal | Get | Get a deal by its ID |
  | Deal | Get Many | List all deals on a lead |
  | Task | Create | Create a task on a lead |
  | Note | Create | Add a note to a lead |
  | Tag | Add | Add tags to a lead by name or ID (additive; missing names are created, IDs must exist) |
  | Tag | Get | Read a lead's current set of tags |
  | User | List | List your team members with their email, name and role |
  | User | Get | Resolve one team member (email, name, role) by their `user_…` ID |

  Lead IDs are numbers. Deal, task, note and subscription IDs are UUID strings. Team-member IDs are Clerk `user_…` strings — the same values you see in a lead's `assigneeIds` and on the `lead.assigned` event.

  The node can also be used as a tool by n8n AI agents.

  ### Find returns purchased leads only

  The **Lead > Find** operation returns only leads that have been purchased into your CRM. A 404 response means no purchased lead matched the identifier, not that your key is broken or the API is down.

  ### Dropdown values

  Tag and assignee dropdowns load live from your organization. Since 1.4.0 the tag dropdowns bind stable tag **IDs** (shown by name), so a picked tag keeps working after it is renamed or merged in the dashboard; workflows saved with older versions hold names, which the API still accepts. In the `tags` field, a plain name that does not exist is created automatically, while a UUID-shaped entry must match an existing tag and is never created. The status and stage dropdowns are fixed lists, kept in sync with Fondaro:

  - CRM status: `lead`, `potential`, `bad_timing`, `client`, `unqualified`
  - Lead type: `buyer`, `seller`
  - Deal stage: `qualified`, `viewing`, `offer`, `reserved`, `under_contract`

  Deal currency is controlled by your organization settings in Fondaro; the node never sends a currency. A 400 on deal creation means the organization has no billing currency set yet.

  **`lead` is the entry status; the dashboard labels it "New".** They are the same value — the dropdown shows **New**, the API value is `lead`.

  **There is no `unassigned` status.** A lead is *unassigned* when its `assigneeIds` is empty — it still has a status (usually `lead`/New). Read assignment from `assigneeIds`, not from `status`. The `lead.created`, `lead.statusChanged` and `lead.assigned` events all carry `assigneeIds`, so you can compute "unassigned" directly with `data.assigneeIds.length === 0`, no extra lookup.

  ### Reading activity and call outcomes

  **Lead > Get Activities** returns a lead's unified, paginated activity feed: notes, tasks, emails, status changes, deal-stage changes, assignee changes and **call attempts with their outcomes**. Each entry is `{ type, occurredAt, …type-specific fields }`; the response is `{ entries, total, hasMore }`.

  - Optional **Limit** (1–100, default 20) and **Offset** for paging.
  - Optional **Types** — a comma-separated filter, e.g. `call` to fetch only the call log, or `call,note,status-change`. Valid values: `call`, `note`, `task-created`, `task-completed`, `email`, `status-change`, `deal-stage-change`, `deal-won`, `deal-lost`, `assignee-change`, `lead-created`.

  A call entry looks like:

  ```json
  {
    "type": "call",
    "occurredAt": "2026-06-15T10:00:00.000Z",
    "call": {
      "id": "…",
      "direction": "outbound",
      "outcome": "no_answer",
      "status": "no-answer",
      "durationSeconds": 0,
      "startedAt": "…",
      "endedAt": "…",
      "hasRecording": false
    }
  }
  ```

  `outcome` is the call result: `success` (connected), `no_answer` (tried, nobody picked up), `invalid_number`, `bad_timing`, `not_interested`. Transcripts and recording URLs are never included — only `hasRecording`.

  **Call summary on the lead record.** Every **Lead > Get / Find / Search** result now also carries the latest call summary, so you can branch a flow without a separate Get Activities call:

  | Field | Meaning |
  |---|---|
  | `totalCalls` | Number of calls placed/received. `0` ⇒ assigned but never called. |
  | `lastCallStatus` | Outcome of the most recent call. `no_answer` ⇒ called, nobody picked up. |
  | `lastCallAt` | When the most recent call happened. |
  | `lastCallDirection` | `inbound` or `outbound`. |

  This answers "assigned-but-not-called yet" (`totalCalls === 0`) vs "called, no answer" (`lastCallStatus === 'no_answer'`) — the distinction the CRM status enum does not encode.

  ### Resolving a team member (User resource)

  Events and a lead's `assigneeIds` give you the assignee as a Clerk `user_…` ID, not an email. The **User** resource turns that ID into a real person:

  - **User > List** → every team member as `{ id, firstName, lastName, email, role, imageUrl }`.
  - **User > Get** (takes a `User ID`) → that one member, or a 404 if the ID is not a member of your organization.

  This needs the `users:read` scope on your API key. Keys minted with the default "everything" scope already have it; a key with a hand-picked scope set must have `users:read` granted.

  > This is distinct from the assignee dropdown used when *creating* a lead/deal/task (that's a design-time picker). **User > Get** is for resolving an ID to an email at *run time* inside a flow.

  #### Speed-to-lead recipe

  To alert the rep a lead was just assigned to:

  1. **Fondaro Trigger** on **Lead Assigned**.
  2. **Fondaro → User → Get** with `User ID` set to `{{$json["data"]["added"][0]}}` (or `{{$json["data"]["assigneeIds"][0]}}`).
  3. Send the notification to the resolved `email`.

  No hardcoded name→ID map — new hires resolve automatically.

  ## The Fondaro Trigger node (webhooks)

  The webhook trigger registers a subscription with Fondaro when the workflow is activated and removes it on deactivation. Fondaro then POSTs signed deliveries to your n8n webhook URL as events happen.

  ### Event catalog

  | Event | Value |
  |---|---|
  | New Lead | `lead.created` |
  | Lead Status Changed | `lead.statusChanged` |
  | Lead Assigned | `lead.assigned` |
  | Deal Created | `deal.created` |
  | Deal Stage Changed | `deal.stageChanged` |
  | Deal Won | `deal.won` |
  | Deal Lost | `deal.lost` |
  | Task Created | `task.created` |
  | Task Completed | `task.completed` |
  | Note Created | `note.created` |
  | Lead Tagged | `lead.tagged` |
  | Lead Untagged | `lead.untagged` |
  | Call Logged | `call.logged` |
  | Call Analyzed | `call.analyzed` |

  Most webhook payloads contain IDs and CRM state only, never contact details. The one exception is **`call.analyzed`** (see below), which is opt-in and content-bearing. Fetch full records back through the Fondaro action node.

  #### Enriched routing fields

  So you can route without a follow-up lookup, the lead and deal events carry the relevant non-PII state inline:

  | Event | Extra `data` fields |
  |---|---|
  | `lead.created` | `status`, `assigneeIds` |
  | `lead.statusChanged` | `assigneeIds` (current owner set) |
  | `lead.assigned` | `assigneeIds` (resulting full set), `status` |
  | `deal.created` | `leadId`, `stage`, `value` |
  | `deal.stageChanged` | `leadId` |
  | `deal.won` | `leadId`, `value` |
  | `deal.lost` | `leadId` |
  | `lead.tagged` | `tagId`, `changedBy` (one delivery per tag added) |
  | `lead.untagged` | `tagId`, `changedBy` (one delivery per tag removed) |

  **Resolving a `tagId` to its name:** call `GET /integrations/v1/tags/{tagId}` (scope `tags:read`) with an HTTP Request node — it returns `{ id, name, color, archivedAt }` and works for archived tags. For `lead.tagged` events the Fondaro node's **Tag > Get** on the lead also works; for `lead.untagged` the id lookup is the only way, since the tag is no longer in the lead's set.

  **Filtering tag events:** the trigger node has an optional **Only for Tags** field (shown when Lead Tagged/Untagged is selected). Non-matching deliveries are acknowledged and dropped inside the node, by stable tag ID, so the filter survives renames. Note that merging tags in the dashboard deliberately fires **no** `lead.tagged` events for the re-pointed leads — a merge is a catalogue correction, not thousands of lead events.

  `value` is the deal's own amount (the sale figure you entered) in your organization's currency — not Fondaro's lead pricing, which is never emitted. `status` is the CRM status (`lead`/New, `potential`, …); `assigneeIds` is the set of `user_…` IDs the lead is assigned to (empty ⇒ unassigned). A `lead.assigned` delivery, for example:

  ```json
  {
    "organizationId": "…",
    "leadId": 123,
    "added": ["user_abc"],
    "removed": [],
    "assigneeIds": ["user_abc"],
    "status": "lead",
    "changedBy": "user_admin"
  }
  ```

  > Ordering note: for leads created through this node, auto-routing assigns the owner *after* the create commits, so `lead.created` may carry an empty `assigneeIds` for those leads.

  **`call.logged`** fires the first time a call reaches a terminal state, for both outbound and inbound calls attached to a lead. The `data` carries the outcome but no PII:

  ```json
  {
    "organizationId": "…",
    "leadId": 123,
    "callId": "…",
    "direction": "outbound",
    "outcome": "no_answer",
    "status": "no-answer",
    "durationSeconds": 0,
    "missed": true,
    "occurredAt": "2026-06-15T10:00:00.000Z"
  }
  ```

  It does **not** fire for calls from unknown numbers that aren't matched to a lead (there is nothing for a lead-centric automation to act on). Use **Lead > Get Activities** to read the full call log back.

  **`call.analyzed`** fires separately, when a call's AI analysis is ready (summary, sentiment, lead interest, objections, next steps). It's distinct from `call.logged`, which still carries the carrier-level outcome unchanged. Analysis runs asynchronously and only after a transcript exists, so this arrives after `call.logged` (and only for calls that get analyzed). The `data`:

  ```json
  {
    "organizationId": "…",
    "leadId": 123,
    "callId": "…",
    "direction": "outbound",
    "occurredAt": "2026-06-15T10:05:00.000Z",
    "analysis": {
      "summary": "…",
      "sentiment": "positive",
      "leadInterest": "high",
      "objections": ["price"],
      "nextSteps": ["send brochure"],
      "coachingTips": ["…"],
      "keyTopics": ["financing"]
    }
  }
  ```

  > **Content-bearing event — opt in deliberately.** Unlike every other event, `call.analyzed` carries an AI-generated `summary` (free text) that **may mention names, numbers or other details spoken on the call**. It carries no transcript or recording URL. It only arrives if you subscribe to **Call Analyzed**; it never rides the other events.

  ### Signature verification

  Every delivery is signed. The node verifies each request before your workflow runs:

  - Fondaro sends `X-Fondaro-Signature: sha256=<hex>`, `X-Fondaro-Event` and `X-Fondaro-Timestamp` headers.
  - The signature is an HMAC-SHA256 of `timestamp.rawBody` using the per-subscription secret issued at registration.
  - The node recomputes the signature over the raw request bytes, compares it in constant time, and rejects any delivery whose timestamp is more than 5 minutes old or in the future. Replayed or tampered deliveries get a 401 and are never passed to your workflow.

  ## The Fondaro Polling Trigger node

  Use the polling trigger when your n8n instance cannot receive inbound webhooks, which is typical for self-hosted instances behind a firewall or NAT without a public URL. It polls Fondaro for new leads on the schedule you configure, dedupes on lead ID, and tracks its own cursor so each lead is emitted once. When you test the workflow manually it returns the latest leads as a sample.

  If your instance is publicly reachable, prefer the webhook trigger: it is instant and cheaper on your rate limit.

  ## Rate limits

  Every API key has its own request ceiling. The ceiling is generous for normal workflow volume, but a runaway loop will be throttled with `429` responses. Back off and retry, or slow the offending workflow down.

  ## Compatibility

  Requires n8n 1.x and Node.js 20.15 or newer. The package has zero runtime dependencies.

  ## Resources

  - [Fondaro](https://fondaro.com)
  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)

  ## License

  [MIT](LICENSE)

ai_documentation_summary:
  {"purpose":"Connects n8n to Fondaro CRM for managing real estate leads and related records. It supports creating, finding, updating, and reading CRM data, and can also trigger workflows from Fondaro events.","capabilities":["Create leads, deals, tasks, notes, and tags","Find leads by email, phone, or external ID","Get leads and read lead activity feeds, including call attempts and outcomes","Search leads with limit and offset","Update lead contact details and CRM status","Create deals and move them through stages","Close deals as won or lost with an optional reason","List deals for a lead","List team members and resolve a team member by Clerk user ID","Can be used as a tool by n8n AI agents"],"authentication":"API key required (Fondaro API credential); OAuth2 credential is also available as an alternative","commonUseCases":["Automatically create or update CRM records from incoming form submissions or other workflow data","Look up and enrich lead records before sales follow-up","Track lead activity, notes, tasks, and call outcomes in n8n workflows","Manage deal progression and closure from automation","Resolve assignee/team member information for CRM events and routing"],"limitations":["Lead > Find returns only purchased leads; a 404 can mean no purchased lead matched","Deal creation requires the organization to have a billing currency configured","There is no 'unassigned' status; assignment must be inferred from empty assigneeIds","Tag and assignee dropdown values are loaded live from the organization"],"relatedNodes":["Fondaro Trigger","Fondaro Polling Trigger"]}


node_type: n8n-nodes-submitrax.submitrax
package_name: n8n-nodes-submitrax
display_name: SubmitraX
description: Manage forms, submissions, workspaces, exports, and members via the SubmitraX API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: zeerobug
author_github_url: https://github.com/zeerobug/
npm_package_name: n8n-nodes-submitrax
npm_version: 1.4.3
community_fetched_at: 2026-07-14T14:40:34.505Z
ai_summary_generated_at: 2026-06-26 10:29:17
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "form",
      "options": [
        {
          "name": "Export",
          "value": "export"
        },
        {
          "name": "Form",
          "value": "form"
        },
        {
          "name": "Member",
          "value": "member"
        },
        {
          "name": "Submission",
          "value": "submission"
        },
        {
          "name": "Workspace",
          "value": "workspace"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a workspace",
          "routing": {
            "request": {
              "url": "/workspaces",
              "method": "POST"
            }
          },
          "description": "Create a new workspace"
        },
        {
          "name": "Generate Token",
          "value": "generateToken",
          "action": "Generate an API token",
          "routing": {
            "request": {
              "url": "=/workspaces/{{$parameter.workspaceId}}/token",
              "method": "POST"
            }
          },
          "description": "Generate a new API token for a workspace (invalidates previous token)"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many workspaces",
          "routing": {
            "request": {
              "url": "/workspaces",
              "method": "GET"
            }
          },
          "description": "Return many workspaces you own or are a member of"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "workspace"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a form",
          "routing": {
            "request": {
              "url": "/forms",
              "method": "POST"
            }
          },
          "description": "Create a new form in a workspace"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a form",
          "routing": {
            "request": {
              "url": "=/forms/{{$parameter.formId}}",
              "method": "GET"
            }
          },
          "description": "Get details of a specific form"
        },
        {
          "name": "Get HTML",
          "value": "getHtml",
          "action": "Get form HTML",
          "routing": {
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "url": "=/forms/public/{{$parameter.formKey}}/html",
              "json": false,
              "method": "GET"
            }
          },
          "description": "Fetch the public HTML of a form by its key (no credential required)"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many forms",
          "routing": {
            "request": {
              "url": "/forms",
              "method": "GET"
            }
          },
          "description": "Get many forms across"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a form",
          "routing": {
            "request": {
              "url": "=/forms/{{$parameter.formId}}",
              "method": "PATCH"
            }
          },
          "description": "Update an existing form"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "form"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many submissions",
          "routing": {
            "request": {
              "url": "=/submissions/form/{{$parameter.formId}}",
              "method": "GET"
            }
          },
          "description": "Get many submissions for a specific form"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "submission"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create an export",
          "routing": {
            "request": {
              "url": "=/exports/form/{{$parameter.formId}}",
              "method": "POST"
            }
          },
          "description": "Generate an export file for a form's submissions"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "export"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many members",
          "routing": {
            "request": {
              "url": "=/members/{{$parameter.workspaceId}}/members",
              "method": "GET"
            }
          },
          "description": "Get many members of a workspace"
        },
        {
          "name": "Invite",
          "value": "invite",
          "action": "Invite a member",
          "routing": {
            "request": {
              "url": "=/members/{{$parameter.workspaceId}}/members/invite",
              "method": "POST"
            }
          },
          "description": "Invite a new user to a workspace"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "member"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create a workspace",
      "routing": {
        "request": {
          "url": "/workspaces",
          "method": "POST"
        }
      },
      "description": "Create a new workspace",
      "resource": "workspace"
    },
    {
      "name": "Generate Token",
      "value": "generateToken",
      "action": "Generate an API token",
      "routing": {
        "request": {
          "url": "=/workspaces/{{$parameter.workspaceId}}/token",
          "method": "POST"
        }
      },
      "description": "Generate a new API token for a workspace (invalidates previous token)",
      "resource": "workspace"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many workspaces",
      "routing": {
        "request": {
          "url": "/workspaces",
          "method": "GET"
        }
      },
      "description": "Return many workspaces you own or are a member of",
      "resource": "workspace"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a form",
      "routing": {
        "request": {
          "url": "/forms",
          "method": "POST"
        }
      },
      "description": "Create a new form in a workspace",
      "resource": "form"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a form",
      "routing": {
        "request": {
          "url": "=/forms/{{$parameter.formId}}",
          "method": "GET"
        }
      },
      "description": "Get details of a specific form",
      "resource": "form"
    },
    {
      "name": "Get HTML",
      "value": "getHtml",
      "action": "Get form HTML",
      "routing": {
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "url": "=/forms/public/{{$parameter.formKey}}/html",
          "json": false,
          "method": "GET"
        }
      },
      "description": "Fetch the public HTML of a form by its key (no credential required)",
      "resource": "form"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many forms",
      "routing": {
        "request": {
          "url": "/forms",
          "method": "GET"
        }
      },
      "description": "Get many forms across",
      "resource": "form"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a form",
      "routing": {
        "request": {
          "url": "=/forms/{{$parameter.formId}}",
          "method": "PATCH"
        }
      },
      "description": "Update an existing form",
      "resource": "form"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many submissions",
      "routing": {
        "request": {
          "url": "=/submissions/form/{{$parameter.formId}}",
          "method": "GET"
        }
      },
      "description": "Get many submissions for a specific form",
      "resource": "submission"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create an export",
      "routing": {
        "request": {
          "url": "=/exports/form/{{$parameter.formId}}",
          "method": "POST"
        }
      },
      "description": "Generate an export file for a form's submissions",
      "resource": "export"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many members",
      "routing": {
        "request": {
          "url": "=/members/{{$parameter.workspaceId}}/members",
          "method": "GET"
        }
      },
      "description": "Get many members of a workspace",
      "resource": "member"
    },
    {
      "name": "Invite",
      "value": "invite",
      "action": "Invite a member",
      "routing": {
        "request": {
          "url": "=/members/{{$parameter.workspaceId}}/members/invite",
          "method": "POST"
        }
      },
      "description": "Invite a new user to a workspace",
      "resource": "member"
    }
  ]

npm_readme:
  # n8n-nodes-submitrax

  Stop manually checking your forms. This n8n community node connects [SubmitraX](https://submitrax.com) to your workflows so every new submission instantly triggers the next step — notify your team, update your CRM, export to a spreadsheet, or anything else n8n can do.

  Full access to the SubmitraX API: manage workspaces, forms, submissions, members, and exports without leaving your automation.

  ## Installation

  ### Community Nodes (Recommended)

  For users on n8n v0.187.0+, install directly through the n8n interface:

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

  ### Manual Installation

  ```bash
  npm install n8n-nodes-submitrax
  ```

  ## Quick Setup

  1. **Get API Token**: Go to your SubmitraX workspace settings and generate an API token.
  2. **Add Node**: In n8n, search for "SubmitraX" in the node palette.
  3. **Configure Credentials**: Create a new SubmitraX API credential and enter your API Token.
  4. **Select Operation**: Choose from the available resources and operations below.

  ## Usage Examples

  ### Real-time Submission Alerts
  Use the **Submission Trigger** to fire the moment a form is filled out. Route the data to Slack, send a confirmation email, or log it to a database — all automatically.

  ### Form Creation and Invites
  1. **Create Workspace**: Spin up a new workspace for a client or project.
  2. **Invite Member**: Add collaborators in the same workflow step.
  3. **Create Form**: Provision a new form programmatically, no manual UI work needed.

  ### Data Export Automation
  1. **Get Forms**: Pull the full list of forms in a workspace.
  2. **Export Submissions**: Schedule a daily CSV or JSON export for reporting, then forward it wherever it needs to go.

  ## Supported Operations

  ### 📁 **Workspace Management**
  - **Create**: Create a new workspace
  - **Generate Token**: Generate a new API token for a workspace
  - **Get Many**: Retrieve a list of your workspaces

  ### 📝 **Form Management**
  - **Create**: Create a new form
  - **Get**: Retrieve details of a specific form by ID
  - **Get Many**: List all forms within a workspace

  ### 📥 **Submission Management**
  - **Get Many**: Retrieve and filter form submissions

  ### 👥 **Member Management**
  - **Invite**: Invite a new user to a workspace
  - **Get Many**: List all members within a workspace

  ### 📤 **Export Operations**
  - **Create**: Generate an export of form submissions (CSV or JSON)

  ### ⚡ **Trigger**
  - **Submission Trigger**: Automatically start your workflow when a form receives a new submission (handles webhook registration and deletion automatically)

  ## Compatibility

  Tested against n8n version 1.0.0 and above.

  ## Resources

  * [SubmitraX Official Website](https://submitrax.com)
  * [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)

ai_documentation_summary:
  {"purpose":"Connects SubmitraX to n8n so workflows can react to new form submissions and manage SubmitraX resources through the API. It supports automation for workspaces, forms, submissions, members, and exports.","capabilities":["Create, list, and generate tokens for workspaces","Create forms and retrieve form details or list forms in a workspace","Retrieve and filter submissions","Invite members and list workspace members","Create CSV or JSON exports of submissions","Trigger workflows on new form submissions via webhook"],"authentication":"API token required","commonUseCases":["Send alerts or notifications when a form is submitted","Automatically create workspaces, forms, and invite members in onboarding workflows","Export submissions to CSV or JSON for reporting or syncing to other systems"],"limitations":["No limitations explicitly mentioned in the README"],"relatedNodes":["Webhook Trigger","HTTP Request"]}


node_type: n8n-nodes-submitrax.submitraxTrigger
package_name: n8n-nodes-submitrax
display_name: SubmitraX Trigger
description: Starts the workflow when a SubmitraX form receives a submission
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: zeerobug
author_github_url: https://github.com/zeerobug/
npm_package_name: n8n-nodes-submitrax
npm_version: 1.4.3
community_fetched_at: 2026-07-14T14:40:34.506Z
ai_summary_generated_at: 2026-06-26 10:29:17
npm_readme:
  # n8n-nodes-submitrax

  Stop manually checking your forms. This n8n community node connects [SubmitraX](https://submitrax.com) to your workflows so every new submission instantly triggers the next step — notify your team, update your CRM, export to a spreadsheet, or anything else n8n can do.

  Full access to the SubmitraX API: manage workspaces, forms, submissions, members, and exports without leaving your automation.

  ## Installation

  ### Community Nodes (Recommended)

  For users on n8n v0.187.0+, install directly through the n8n interface:

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

  ### Manual Installation

  ```bash
  npm install n8n-nodes-submitrax
  ```

  ## Quick Setup

  1. **Get API Token**: Go to your SubmitraX workspace settings and generate an API token.
  2. **Add Node**: In n8n, search for "SubmitraX" in the node palette.
  3. **Configure Credentials**: Create a new SubmitraX API credential and enter your API Token.
  4. **Select Operation**: Choose from the available resources and operations below.

  ## Usage Examples

  ### Real-time Submission Alerts
  Use the **Submission Trigger** to fire the moment a form is filled out. Route the data to Slack, send a confirmation email, or log it to a database — all automatically.

  ### Form Creation and Invites
  1. **Create Workspace**: Spin up a new workspace for a client or project.
  2. **Invite Member**: Add collaborators in the same workflow step.
  3. **Create Form**: Provision a new form programmatically, no manual UI work needed.

  ### Data Export Automation
  1. **Get Forms**: Pull the full list of forms in a workspace.
  2. **Export Submissions**: Schedule a daily CSV or JSON export for reporting, then forward it wherever it needs to go.

  ## Supported Operations

  ### 📁 **Workspace Management**
  - **Create**: Create a new workspace
  - **Generate Token**: Generate a new API token for a workspace
  - **Get Many**: Retrieve a list of your workspaces

  ### 📝 **Form Management**
  - **Create**: Create a new form
  - **Get**: Retrieve details of a specific form by ID
  - **Get Many**: List all forms within a workspace

  ### 📥 **Submission Management**
  - **Get Many**: Retrieve and filter form submissions

  ### 👥 **Member Management**
  - **Invite**: Invite a new user to a workspace
  - **Get Many**: List all members within a workspace

  ### 📤 **Export Operations**
  - **Create**: Generate an export of form submissions (CSV or JSON)

  ### ⚡ **Trigger**
  - **Submission Trigger**: Automatically start your workflow when a form receives a new submission (handles webhook registration and deletion automatically)

  ## Compatibility

  Tested against n8n version 1.0.0 and above.

  ## Resources

  * [SubmitraX Official Website](https://submitrax.com)
  * [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)

ai_documentation_summary:
  {"purpose":"Connects SubmitraX to n8n so workflows can be triggered by new form submissions and manage SubmitraX resources like workspaces, forms, members, submissions, and exports. It enables automations such as notifications, CRM updates, and data exports.","capabilities":["Submission Trigger: starts a workflow when a form receives a new submission","Workspace management: create workspaces, generate API tokens, and list workspaces","Form management: create forms, get form details, and list forms in a workspace","Submission management: list and filter form submissions","Member management: invite users to a workspace and list workspace members","Export operations: create CSV or JSON exports of form submissions","Automatic webhook registration and deletion for the trigger"],"authentication":"API token required; create a SubmitraX API credential in n8n and enter the API token from workspace settings","commonUseCases":["Triggering Slack alerts, emails, or database updates when a form is submitted","Creating workspaces, forms, and inviting members programmatically","Exporting submissions to CSV or JSON for reporting","Retrieving and filtering submissions for downstream automation"],"limitations":["Tested against n8n version 1.0.0 and above","Trigger handles webhook registration and deletion automatically, so manual webhook management is not needed"],"relatedNodes":["Webhook Trigger","n8n form-related nodes","HTTP Request"]}


node_type: n8n-nodes-pulpo-wms.pulpoWms
package_name: n8n-nodes-pulpo-wms
display_name: Pulpo WMS
description: Interact with the Pulpo WMS API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: bashlenix
author_github_url: https://github.com/Mhd-Bashi/PulpoWMS_n8n_Custom_Node.git
npm_package_name: n8n-nodes-pulpo-wms
npm_version: 0.1.3
community_fetched_at: 2026-07-14T14:40:34.507Z
ai_summary_generated_at: 2026-06-26 10:29:17
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "salesOrder",
      "options": [
        {
          "name": "Incoming Good",
          "value": "incomingGood"
        },
        {
          "name": "Inventory Stock",
          "value": "inventoryStock"
        },
        {
          "name": "Product",
          "value": "product"
        },
        {
          "name": "Purchase Order",
          "value": "purchaseOrder"
        },
        {
          "name": "Sales Order",
          "value": "salesOrder"
        },
        {
          "name": "Sales Order Fulfillment",
          "value": "salesOrderFulfillment"
        },
        {
          "name": "Third Party",
          "value": "thirdParty"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create an incoming good",
          "description": "Create a new incoming good document"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get an incoming good",
          "description": "Get an incoming good by ID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many incoming goods",
          "description": "Get a list of incoming good documents"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "incomingGood"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many stock entries",
          "description": "Get a list of stock entries"
        },
        {
          "name": "Remove",
          "value": "remove",
          "action": "Remove stock",
          "description": "Remove a quantity from stock at a location"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "inventoryStock"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a product",
          "description": "Create a new product"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a product",
          "description": "Get a product by ID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many products",
          "description": "Get a list of products"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a product",
          "description": "Update a product by ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "product"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a purchase order",
          "description": "Create a new purchase order"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a purchase order",
          "description": "Get a purchase order by ID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many purchase orders",
          "description": "Get a list of purchase orders"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a purchase order",
          "description": "Update a purchase order by ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "purchaseOrder"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a sales order",
          "description": "Create a new sales order"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a sales order",
          "description": "Get a sales order by ID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many sales orders",
          "description": "Get a list of sales orders"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a sales order",
          "description": "Update a sales order by ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "salesOrder"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a fulfillment order",
          "description": "Get a fulfillment order by ID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many fulfillment orders",
          "description": "Get a list of fulfillment orders"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "salesOrderFulfillment"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a third party",
          "description": "Create a new third party"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a third party",
          "description": "Get a third party by ID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many third parties",
          "description": "Get a list of third parties"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a third party",
          "description": "Update a third party by ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "thirdParty"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create an incoming good",
      "description": "Create a new incoming good document",
      "resource": "incomingGood"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get an incoming good",
      "description": "Get an incoming good by ID",
      "resource": "incomingGood"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many incoming goods",
      "description": "Get a list of incoming good documents",
      "resource": "incomingGood"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many stock entries",
      "description": "Get a list of stock entries",
      "resource": "inventoryStock"
    },
    {
      "name": "Remove",
      "value": "remove",
      "action": "Remove stock",
      "description": "Remove a quantity from stock at a location",
      "resource": "inventoryStock"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a product",
      "description": "Create a new product",
      "resource": "product"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a product",
      "description": "Get a product by ID",
      "resource": "product"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many products",
      "description": "Get a list of products",
      "resource": "product"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a product",
      "description": "Update a product by ID",
      "resource": "product"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a purchase order",
      "description": "Create a new purchase order",
      "resource": "purchaseOrder"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a purchase order",
      "description": "Get a purchase order by ID",
      "resource": "purchaseOrder"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many purchase orders",
      "description": "Get a list of purchase orders",
      "resource": "purchaseOrder"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a purchase order",
      "description": "Update a purchase order by ID",
      "resource": "purchaseOrder"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a sales order",
      "description": "Create a new sales order",
      "resource": "salesOrder"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a sales order",
      "description": "Get a sales order by ID",
      "resource": "salesOrder"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many sales orders",
      "description": "Get a list of sales orders",
      "resource": "salesOrder"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a sales order",
      "description": "Update a sales order by ID",
      "resource": "salesOrder"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a fulfillment order",
      "description": "Get a fulfillment order by ID",
      "resource": "salesOrderFulfillment"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many fulfillment orders",
      "description": "Get a list of fulfillment orders",
      "resource": "salesOrderFulfillment"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a third party",
      "description": "Create a new third party",
      "resource": "thirdParty"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a third party",
      "description": "Get a third party by ID",
      "resource": "thirdParty"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many third parties",
      "description": "Get a list of third parties",
      "resource": "thirdParty"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a third party",
      "description": "Update a third party by ID",
      "resource": "thirdParty"
    }
  ]

npm_readme:
  # n8n-nodes-pulpo-wms

  An n8n community node for [Pulpo WMS](https://pulpo.co) — a cloud-based warehouse management system. Use it to automate warehouse operations: manage products, purchase orders, sales orders, incoming goods, inventory stock, fulfillments, third parties, and more.

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

  ## Installation

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

  Or install directly from the n8n UI: **Settings → Community Nodes → Install** → enter `n8n-nodes-pulpo-wms`.

  ## Credentials

  The node uses Pulpo WMS's OAuth 2.0 password-grant flow.

  **Prerequisites:**
  1. An active Pulpo WMS account
  2. Your environment subdomain (e.g. `mycompany` from `mycompany.pulpo.co`)

  **Setup in n8n:**
  1. In any Pulpo WMS node, click **Create new credential**
  2. Fill in:
     - **Environment** — your subdomain (e.g. `mycompany`)
     - **Username** — your Pulpo WMS login email
     - **Password** — your Pulpo WMS password
  3. Click **Save** — the node tests the credentials automatically

  A token is acquired per request and is not stored between executions.

  ## Operations

  ### Pulpo WMS (action node)

  | Resource | Operations |
  |---|---|
  | **Product** | Get Many, Get, Create, Update |
  | **Purchase Order** | Get Many, Get, Create, Update |
  | **Sales Order** | Get Many, Get, Create, Update |
  | **Sales Order Fulfillment** | Get Many (all or by sales order), Get |
  | **Incoming Good** | Get Many, Get, Create |
  | **Inventory Stock** | Get Many, Remove |
  | **Third Party** | Get Many, Get, Create, Update |

  **Live dropdowns** — Warehouse and Location fields load options directly from your Pulpo WMS account.

  ### Pulpo WMS Trigger (trigger node)

  Starts a workflow when a Pulpo WMS event occurs.

  | Event | Description |
  |---|---|
  | **New Goods Receipt** | Fires when an incoming good document is created |
  | **New/Updated Sales Order** | Fires when a sales order is created or updated |

  The trigger registers a webhook in your Pulpo WMS account scoped to a specific warehouse. It automatically creates the webhook when the workflow is activated and removes it when deactivated.

  ## Compatibility

  - Tested against n8n `1.x`
  - Uses Pulpo WMS REST API v1 (`/api/v1`)

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Pulpo WMS website](https://pulpo.co)
  - [Pulpo WMS API documentation](https://pulpo.co/api-docs)
  - [Source code](https://github.com/Mhd-Bashi/PulpoWMS_n8n_Custom_Node)

  ## Version history

  ### 0.1.0
  Initial release with full CRUD coverage for all core Pulpo WMS resources, live warehouse/location dropdowns, and webhook-based triggers.

ai_documentation_summary:
  {"purpose":"Integrates n8n with the Pulpo WMS warehouse management system to automate warehouse operations and respond to warehouse events. It supports CRUD-style actions for core resources plus webhook-based triggers.","capabilities":["Product management: Get Many, Get, Create, Update","Purchase order management: Get Many, Get, Create, Update","Sales order management: Get Many, Get, Create, Update","Sales order fulfillment: Get Many (all or by sales order), Get","Incoming goods management: Get Many, Get, Create","Inventory stock management: Get Many, Remove","Third party management: Get Many, Get, Create, Update","Live dropdowns for Warehouse and Location fields","Triggers for New Goods Receipt events","Triggers for New/Updated Sales Order events"],"authentication":"OAuth 2.0 password-grant flow using Pulpo WMS credentials; requires environment subdomain, username, and password.","commonUseCases":["Automating warehouse workflows such as product, order, and inventory updates","Syncing purchase orders, sales orders, and incoming goods with other systems","Monitoring warehouse events to trigger downstream automations","Managing inventory stock and third-party records in Pulpo WMS"],"limitations":["Uses Pulpo WMS REST API v1 only (/api/v1)","Tested against n8n 1.x","Access tokens are acquired per request and are not stored between executions"],"relatedNodes":["Pulpo WMS Trigger","n8n community nodes"]}


node_type: n8n-nodes-pulpo-wms.pulpoWmsTrigger
package_name: n8n-nodes-pulpo-wms
display_name: Pulpo WMS Trigger
description: Starts the workflow when Pulpo WMS 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: bashlenix
author_github_url: https://github.com/Mhd-Bashi/PulpoWMS_n8n_Custom_Node.git
npm_package_name: n8n-nodes-pulpo-wms
npm_version: 0.1.3
community_fetched_at: 2026-07-14T14:40:34.508Z
ai_summary_generated_at: 2026-06-26 10:29:17
npm_readme:
  # n8n-nodes-pulpo-wms

  An n8n community node for [Pulpo WMS](https://pulpo.co) — a cloud-based warehouse management system. Use it to automate warehouse operations: manage products, purchase orders, sales orders, incoming goods, inventory stock, fulfillments, third parties, and more.

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

  ## Installation

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

  Or install directly from the n8n UI: **Settings → Community Nodes → Install** → enter `n8n-nodes-pulpo-wms`.

  ## Credentials

  The node uses Pulpo WMS's OAuth 2.0 password-grant flow.

  **Prerequisites:**
  1. An active Pulpo WMS account
  2. Your environment subdomain (e.g. `mycompany` from `mycompany.pulpo.co`)

  **Setup in n8n:**
  1. In any Pulpo WMS node, click **Create new credential**
  2. Fill in:
     - **Environment** — your subdomain (e.g. `mycompany`)
     - **Username** — your Pulpo WMS login email
     - **Password** — your Pulpo WMS password
  3. Click **Save** — the node tests the credentials automatically

  A token is acquired per request and is not stored between executions.

  ## Operations

  ### Pulpo WMS (action node)

  | Resource | Operations |
  |---|---|
  | **Product** | Get Many, Get, Create, Update |
  | **Purchase Order** | Get Many, Get, Create, Update |
  | **Sales Order** | Get Many, Get, Create, Update |
  | **Sales Order Fulfillment** | Get Many (all or by sales order), Get |
  | **Incoming Good** | Get Many, Get, Create |
  | **Inventory Stock** | Get Many, Remove |
  | **Third Party** | Get Many, Get, Create, Update |

  **Live dropdowns** — Warehouse and Location fields load options directly from your Pulpo WMS account.

  ### Pulpo WMS Trigger (trigger node)

  Starts a workflow when a Pulpo WMS event occurs.

  | Event | Description |
  |---|---|
  | **New Goods Receipt** | Fires when an incoming good document is created |
  | **New/Updated Sales Order** | Fires when a sales order is created or updated |

  The trigger registers a webhook in your Pulpo WMS account scoped to a specific warehouse. It automatically creates the webhook when the workflow is activated and removes it when deactivated.

  ## Compatibility

  - Tested against n8n `1.x`
  - Uses Pulpo WMS REST API v1 (`/api/v1`)

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Pulpo WMS website](https://pulpo.co)
  - [Pulpo WMS API documentation](https://pulpo.co/api-docs)
  - [Source code](https://github.com/Mhd-Bashi/PulpoWMS_n8n_Custom_Node)

  ## Version history

  ### 0.1.0
  Initial release with full CRUD coverage for all core Pulpo WMS resources, live warehouse/location dropdowns, and webhook-based triggers.

ai_documentation_summary:
  {"purpose":"Triggers n8n workflows when Pulpo WMS events occur, and also provides action operations to manage core warehouse management data in Pulpo WMS. It supports automating products, orders, inventory, incoming goods, third parties, and related warehouse processes.","capabilities":["Trigger workflows on New Goods Receipt events","Trigger workflows on New/Updated Sales Order events","Register and remove webhooks automatically on workflow activation/deactivation","CRUD operations for Products","CRUD operations for Purchase Orders","CRUD operations for Sales Orders","Get/monitor Sales Order Fulfillments","CRUD operations for Incoming Goods","Get and remove Inventory Stock records","CRUD operations for Third Parties"],"authentication":"OAuth 2.0 password-grant flow using Pulpo WMS credentials (environment subdomain, username/email, and password). A token is acquired per request and is not stored between executions.","commonUseCases":["Automatically start a workflow when new goods are received in Pulpo WMS","Sync or react to sales order changes in n8n","Automate creation and updates of warehouse records such as products, purchase orders, and third parties"],"limitations":["Trigger webhook is scoped to a specific warehouse","Uses Pulpo WMS REST API v1 only","Tested against n8n 1.x"],"relatedNodes":["Pulpo WMS"]}


node_type: n8n-nodes-stealthgpt.stealthGpt
package_name: n8n-nodes-stealthgpt
display_name: StealthGPT
description: Generate natural, human, publish-ready long-form content or humanize existing text with StealthGPT
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: danilstealth
author_github_url: https://github.com/StealthGPT/
npm_package_name: n8n-nodes-stealthgpt
npm_version: 0.1.2
community_fetched_at: 2026-07-14T14:40:34.509Z
ai_summary_generated_at: 2026-06-26 10:29:17
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "contentGeneration",
      "options": [
        {
          "name": "Content Generation",
          "value": "contentGeneration",
          "description": "Run the full content pipeline (research, draft, humanize and more)"
        },
        {
          "name": "Text Humanization",
          "value": "textHumanization",
          "description": "Humanize existing text into natural, publish-ready writing"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "start",
      "options": [
        {
          "name": "Start Run",
          "value": "start",
          "action": "Start a content generation run",
          "description": "Start a full content pipeline run (research, draft, humanize and more)"
        },
        {
          "name": "Get Run Status",
          "value": "getRunStatus",
          "action": "Get a content generation run status",
          "description": "Retrieve the status and result of a content generation run"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "contentGeneration"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "start",
      "options": [
        {
          "name": "Start Run",
          "value": "start",
          "action": "Start a text humanization run",
          "description": "Turn existing text into natural, human, publish-ready text"
        },
        {
          "name": "Get Run Status",
          "value": "getRunStatus",
          "action": "Get a text humanization run status",
          "description": "Retrieve the status and result of a humanization run"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "textHumanization"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Start Run",
      "value": "start",
      "action": "Start a content generation run",
      "description": "Start a full content pipeline run (research, draft, humanize and more)",
      "resource": "contentGeneration"
    },
    {
      "name": "Get Run Status",
      "value": "getRunStatus",
      "action": "Get a content generation run status",
      "description": "Retrieve the status and result of a content generation run",
      "resource": "contentGeneration"
    },
    {
      "name": "Start Run",
      "value": "start",
      "action": "Start a text humanization run",
      "description": "Turn existing text into natural, human, publish-ready text",
      "resource": "textHumanization"
    },
    {
      "name": "Get Run Status",
      "value": "getRunStatus",
      "action": "Get a text humanization run status",
      "description": "Retrieve the status and result of a humanization run",
      "resource": "textHumanization"
    }
  ]

npm_readme:
  # n8n-nodes-stealthgpt

  This is an n8n community node. It lets you use [StealthGPT](https://www.stealthgpt.ai) in your n8n workflows.

  StealthGPT turns prompts and existing drafts into **natural, human, publish-ready long-form content** via API. Use the full content pipeline (research → draft → optional fact-check → humanize → optional citations/images → final markdown) or just the humanization step on text you already have. The output is designed to read as natural and human, and to hold up against AI-content detectors and editorial quality filters.

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

  - [Installation](#installation)
  - [Operations](#operations)
  - [Credentials](#credentials)
  - [How it works (async runs)](#how-it-works-async-runs)
  - [Example workflows](#example-workflows)
  - [Billing & credits](#billing--credits)
  - [Resources](#resources)
  - [Support](#support)
  - [License](#license)
  - [Changelog](#changelog)

  ## Installation

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

  In n8n: go to **Settings → Community Nodes → Install**, enter `n8n-nodes-stealthgpt`, and confirm.

  ## Operations

  The node exposes two resources, each with a **Start Run** and a **Get Run Status** operation.

  ### Content Generation

  Runs the full StealthGPT content pipeline.

  **Start Run** fields:

  - **Preset** — `Academic`, `SEO`, or `Social`.
  - **Prompt** — the topic or brief to generate from (required).
  - **Platform** — `LinkedIn` or `Medium` (shown only for the `Social` preset).
  - **Enable Fact Check** — run an additional fact-checking step (default off).
  - **Enable Image Generation** — generate images for the content (default off).
  - **Wait for Completion** — poll until the run finishes and return the result (default on).
  - **Poll Interval (Seconds)** / **Max Wait (Seconds)** — control polling when waiting (defaults 5s / 600s).
  - **Options** — `Idempotency Key`, `Webhook URL`, `Webhook Secret`.

  **Get Run Status** fields:

  - **Run ID** — the ID returned when the run was started (content generation run IDs are prefixed with `run_`).

  ### Text Humanization

  Transforms existing text into natural, human-quality writing.

  **Start Run** fields:

  - **Text** — the text to humanize (required).
  - **Quality Mode** — `Quality` or `Fast` (default `Quality`).
  - **Model** — `Heavy` or `Lite` (default `Heavy`).
  - **Output Format** — `Text` or `Markdown` (default `Text`).
  - **Wait for Completion** — poll until the run finishes and return the result (default on).
  - **Poll Interval (Seconds)** / **Max Wait (Seconds)** — control polling when waiting (defaults 5s / 600s).
  - **Options** — `Idempotency Key`, `Webhook URL`, `Webhook Secret`.

  **Get Run Status** fields:

  - **Run ID** — the ID returned when the run was started.

  The completed humanization payload includes `howLikelyToBeDetected`, a human-likeness score from 0–100 where **higher means more human**.

  ## Credentials

  You need a StealthGPT API key.

  1. Create an account at [stealthgpt.ai](https://www.stealthgpt.ai).
  2. Get your API key from [https://www.stealthgpt.ai/stealthapi](https://www.stealthgpt.ai/stealthapi).
  3. In n8n, create a **StealthGPT API** credential and paste the key into **API Token**.
  4. Leave **Base URL** as `https://www.stealthgpt.ai` unless instructed otherwise.

  The credential is authenticated with the `api-token` header and tested against the balance endpoint. Your key stays in your n8n instance.

  ## How it works (async runs)

  StealthGPT runs are **asynchronous**. Starting a run returns a `runId` immediately; a full pipeline run can take several minutes.

  - **Wait for Completion = on** (default): the node starts the run and polls the status endpoint every *Poll Interval* seconds, up to *Max Wait* seconds, then returns the terminal payload. If the run ends as `failed` or `cancelled`, the node throws an error with the API's message. If it doesn't finish in time, the node throws a timeout error that includes the `runId` so you can fetch the result later.
  - **Wait for Completion = off**: the node returns `{ runId, status, statusUrl }` immediately. Wire your own polling (a **Wait** node + **Get Run Status**) or use a webhook to continue when the run finishes.

  Use the **Options → Idempotency Key** to make start calls safe to retry without creating duplicate runs or charges. You can optionally provide **Webhook URL** / **Webhook Secret** to have StealthGPT call back on completion; see the API docs for the signature scheme.

  ## Example workflows

  ### RSS → SEO article → WordPress draft

  1. **RSS Read** trigger.
  2. **StealthGPT** → Content Generation → Start Run, Preset `SEO`, Prompt built from the feed item, Wait for Completion on.
  3. **WordPress** → create a draft post from `result` (markdown).

  ### Webhook → Humanize → Google Docs

  1. **Webhook** trigger receiving the source text.
  2. **StealthGPT** → Text Humanization → Start Run, Output Format `Markdown`, Wait for Completion on.
  3. **Google Docs** → insert `result`.

  ### Long-running run with manual polling

  1. **StealthGPT** → Start Run with Wait for Completion **off** → returns `runId`.
  2. **Wait** node (e.g. 30s).
  3. **StealthGPT** → Get Run Status with the `runId`.
  4. **IF** `status` is `completed` → continue; otherwise loop back to the Wait node.

  ## Billing & credits

  Runs consume StealthGPT credits. Completed runs return billing metadata such as `creditsSpent`, `remainingCredits`, and `billingMode`. Using an **Idempotency Key** prevents duplicate charges on safe retries. Failed and cancelled runs behave predictably per the API contract. Manage credits and billing at [stealthgpt.ai](https://www.stealthgpt.ai).

  ## Resources

  - [StealthGPT API documentation](https://docs.stealthgpt.ai)
  - [Get an API key](https://www.stealthgpt.ai/stealthapi)
  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)

  ## Support

  - Help Center: [stealthgpt.zendesk.com](https://stealthgpt.zendesk.com/)
  - Issues: [github.com/StealthGPT/n8n-nodes-stealthgpt/issues](https://github.com/StealthGPT/n8n-nodes-stealthgpt/issues)

  ## License

  [MIT](LICENSE)

  ## Changelog

  See [CHANGELOG.md](CHANGELOG.md).

  ### Compatibility

  Requires n8n with Node.js 20.15 or newer. Built and tested against the n8n nodes API version 1.

ai_documentation_summary:
  {"purpose":"StealthGPT lets you generate natural, publish-ready long-form content from prompts or humanize existing text inside n8n workflows. It supports both a full content generation pipeline and a text humanization flow, with asynchronous run handling.","capabilities":["Content Generation resource with Start Run and Get Run Status operations","Text Humanization resource with Start Run and Get Run Status operations","Full content pipeline support: research, draft, optional fact-check, humanize, optional citations/images, final markdown","Humanize existing text into natural writing","Preset selection for Academic, SEO, or Social content","Social platform targeting for LinkedIn or Medium","Optional fact checking and image generation","Wait for completion with polling or manual status checking","Webhook callback support for completed runs","Idempotency key support to avoid duplicate runs and charges"],"authentication":"API key required via StealthGPT API credential using an API Token header","commonUseCases":["Generate SEO articles or blog drafts from RSS items or briefs","Humanize source text before publishing or inserting into documents","Run long content jobs asynchronously and poll for completion","Send completed content into WordPress, Google Docs, or other publishing tools"],"limitations":["Runs are asynchronous and may take several minutes to complete","Content generation is limited to presets Academic, SEO, and Social","Social preset only supports LinkedIn or Medium platform targeting","Humanization output format is limited to Text or Markdown","Base URL is expected to remain the default unless otherwise instructed"],"relatedNodes":["RSS Read","WordPress","Google Docs","Webhook","Wait"]}


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

updated_at: 2026-07-14 14:40:34
author_name: arthurschabbach
author_github_url: https://github.com/ArthurSchabbach/
npm_package_name: n8n-nodes-advbox
npm_version: 1.0.51
community_fetched_at: 2026-07-14T14:40:34.510Z
ai_summary_generated_at: 2026-06-26 10:29:17
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "customer",
      "options": [
        {
          "name": "Customer",
          "value": "customer"
        },
        {
          "name": "Lawsuit",
          "value": "lawsuit"
        },
        {
          "name": "Task",
          "value": "task"
        },
        {
          "name": "Movement",
          "value": "movement"
        },
        {
          "name": "Settings",
          "value": "settings"
        },
        {
          "name": "Transaction",
          "value": "transaction"
        }
      ],
      "required": true,
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a new customer",
          "description": "Create a new customer."
        },
        {
          "name": "Get By ID",
          "value": "get",
          "action": "Get customer by ID",
          "description": "Get customer by ID."
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many customers",
          "description": "Get many customers."
        },
        {
          "name": "Get Birthdays",
          "value": "getBirthdays",
          "action": "Get customers with birthdays",
          "description": "Get customers with birthdays in current month."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "customer"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a new lawsuit",
          "description": "Create a new lawsuit."
        },
        {
          "name": "Get By ID",
          "value": "get",
          "action": "Get lawsuit by ID",
          "description": "Get lawsuit by ID."
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many lawsuits",
          "description": "Get many lawsuits."
        },
        {
          "name": "Get Lawsuit Task History",
          "value": "getTaskHistory",
          "action": "Get lawsuit task history",
          "description": "Get task history for a lawsuit."
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update an existing lawsuit",
          "description": "Update an existing lawsuit."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "lawsuit"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getTasks",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a new task",
          "description": "Create a new task."
        },
        {
          "name": "Get Tasks",
          "value": "getTasks",
          "action": "Get tasks",
          "description": "Retrieve a list of tasks based on filters."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "task"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a new manual movement",
          "description": "Create a new manual movement."
        },
        {
          "name": "Get History",
          "value": "getHistory",
          "action": "Movement history",
          "description": "Get movement history for a lawsuit."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "movement"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get account settings",
          "description": "Get account settings."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "settings"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a transaction",
          "description": "Create a new financial transaction."
        },
        {
          "name": "Get All",
          "value": "getAll",
          "action": "Get all transactions",
          "description": "Retrieve financial transactions with comprehensive filter options."
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a transaction",
          "description": "Update an existing financial transaction."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "transaction"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create a new customer",
      "description": "Create a new customer.",
      "resource": "customer"
    },
    {
      "name": "Get By ID",
      "value": "get",
      "action": "Get customer by ID",
      "description": "Get customer by ID.",
      "resource": "customer"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many customers",
      "description": "Get many customers.",
      "resource": "customer"
    },
    {
      "name": "Get Birthdays",
      "value": "getBirthdays",
      "action": "Get customers with birthdays",
      "description": "Get customers with birthdays in current month.",
      "resource": "customer"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a new lawsuit",
      "description": "Create a new lawsuit.",
      "resource": "lawsuit"
    },
    {
      "name": "Get By ID",
      "value": "get",
      "action": "Get lawsuit by ID",
      "description": "Get lawsuit by ID.",
      "resource": "lawsuit"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many lawsuits",
      "description": "Get many lawsuits.",
      "resource": "lawsuit"
    },
    {
      "name": "Get Lawsuit Task History",
      "value": "getTaskHistory",
      "action": "Get lawsuit task history",
      "description": "Get task history for a lawsuit.",
      "resource": "lawsuit"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update an existing lawsuit",
      "description": "Update an existing lawsuit.",
      "resource": "lawsuit"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a new task",
      "description": "Create a new task.",
      "resource": "task"
    },
    {
      "name": "Get Tasks",
      "value": "getTasks",
      "action": "Get tasks",
      "description": "Retrieve a list of tasks based on filters.",
      "resource": "task"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a new manual movement",
      "description": "Create a new manual movement.",
      "resource": "movement"
    },
    {
      "name": "Get History",
      "value": "getHistory",
      "action": "Movement history",
      "description": "Get movement history for a lawsuit.",
      "resource": "movement"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get account settings",
      "description": "Get account settings.",
      "resource": "settings"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a transaction",
      "description": "Create a new financial transaction.",
      "resource": "transaction"
    },
    {
      "name": "Get All",
      "value": "getAll",
      "action": "Get all transactions",
      "description": "Retrieve financial transactions with comprehensive filter options.",
      "resource": "transaction"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a transaction",
      "description": "Update an existing financial transaction.",
      "resource": "transaction"
    }
  ]

npm_readme:
  # n8n-nodes-advbox

  This is an n8n community node for [ADVBOX](https://www.advbox.com.br/) API integration. It lets you manage customers, lawsuits, tasks, movements, transactions and settings directly from your n8n workflows.

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

  [Installation](#installation) |
  [Credentials](#credentials) |
  [Operations](#operations) |
  [Development](#development) |
  [License](#license)

  ## Installation

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

  ### Via n8n UI

  1. Go to **Settings > Community Nodes**
  2. Click on **Install**
  3. Enter `n8n-nodes-advbox` in the **npm Package Name** field
  4. Click on **Install**

  ### Via npm

  ```bash
  npm install n8n-nodes-advbox
  ```

  ## Credentials

  To use the ADVBOX node, create credentials with:

  | Field | Required | Description |
  |-------|----------|-------------|
  | **API Token** | Yes | Your ADVBOX API token |
  | **API URL** | Yes | The ADVBOX API URL (default: `https://app.advbox.com.br/api/v1`) |
  | **Agent Identifier** | No | Optional identifier sent as `x-agent` header |

  ## Operations

  ### Customer

  | Operation | Description |
  |-----------|-------------|
  | **Create** | Create a new customer |
  | **Get by ID** | Get a customer by ID |
  | **Get Many** | List customers with filters (name, phone, identification, document, email, city, state, occupation, date range) |
  | **Get Birthdays** | Get customers with birthdays in the current month |

  ### Lawsuit

  | Operation | Description |
  |-----------|-------------|
  | **Create** | Create a new lawsuit |
  | **Get by ID** | Get a lawsuit by ID |
  | **Get Many** | List lawsuits with filters (name, process number, protocol number, customer, group, type, responsible, stage) |
  | **Get Task History** | Get the task history for a lawsuit |
  | **Update** | Update an existing lawsuit |

  ### Task

  | Operation | Description |
  |-----------|-------------|
  | **Create** | Create a new task with optional comments, scheduling, urgency and importance flags |
  | **Get Tasks** | List tasks with filters (date range, user, lawsuit, deadline, completion status) |

  ### Movement

  | Operation | Description |
  |-----------|-------------|
  | **Create** | Create a manual movement for a lawsuit |
  | **Get History** | Get movement history for a lawsuit |

  ### Transaction

  | Operation | Description |
  |-----------|-------------|
  | **Get All** | List transactions with filters (process number, customer, responsible, category, cost center, date ranges) |
  | **Create** | Create a new financial transaction |
  | **Update** | Update an existing transaction |

  ### Settings

  | Operation | Description |
  |-----------|-------------|
  | **Get** | Retrieve account settings (users, origins, task types, stages, lawsuit types) |

  ## Development

  ```bash
  # Clone the repository
  git clone https://github.com/ArthurSchabbach/n8n-nodes-advbox.git
  cd n8n-nodes-advbox

  # Install dependencies
  npm install

  # Lint
  npm run lint

  # Build
  npm run build

  # Link to your local n8n installation
  npm link
  # In your n8n installation directory:
  npm link n8n-nodes-advbox
  ```

  ## License

  [MIT](LICENSE)

ai_documentation_summary:
  {"purpose":"Integrates n8n with the ADVBOX API to manage legal and client-related data such as customers, lawsuits, tasks, movements, transactions, and account settings from workflows.","capabilities":["Create, retrieve, and filter customers","Create, retrieve, list, and update lawsuits","Create tasks and list tasks with filters","Create manual lawsuit movements and fetch movement history","List, create, and update financial transactions","Retrieve account settings such as users, origins, task types, stages, and lawsuit types","Get customers with birthdays in the current month","Get task history for a lawsuit"],"authentication":"API token required; API URL required; optional Agent Identifier header","commonUseCases":["Sync customer and lawsuit records between n8n and ADVBOX","Automate task creation and follow-up reminders for legal cases","Track case movements and financial transactions in workflows","Retrieve filtered lists of customers, lawsuits, or tasks for reporting"],"limitations":["No OAuth2 support mentioned","Operations are limited to the endpoints exposed in the README","API URL must be provided if not using the default ADVBOX API endpoint"],"relatedNodes":[]}


node_type: @seventhingscompany/n8n-nodes-seventhings.seventhings
package_name: @seventhingscompany/n8n-nodes-seventhings
display_name: seventhings
description: Manage assets, tasks, rental cases, locations, rooms and files in seventhings
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: hra42
author_github_url: https://github.com/seventhingsCompany/n8n-nodes-seventhings.git
npm_package_name: @seventhingscompany/n8n-nodes-seventhings
npm_version: 0.3.0
community_fetched_at: 2026-07-14T14:40:34.511Z
ai_summary_generated_at: 2026-06-26 10:29:17
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "asset",
      "options": [
        {
          "name": "Asset",
          "value": "asset"
        },
        {
          "name": "Circularity Hub Item",
          "value": "circularityHubItem"
        },
        {
          "name": "Circularity Hub Order",
          "value": "circularityHubOrder"
        },
        {
          "name": "Field Definition",
          "value": "fieldDefinition"
        },
        {
          "name": "File",
          "value": "file"
        },
        {
          "name": "Location",
          "value": "location"
        },
        {
          "name": "Person",
          "value": "person"
        },
        {
          "name": "Rental Case",
          "value": "rentalCase"
        },
        {
          "name": "Room",
          "value": "room"
        },
        {
          "name": "Task",
          "value": "task"
        },
        {
          "name": "User",
          "value": "user"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Archive",
          "value": "archive",
          "action": "Archive an asset",
          "description": "Archive an asset"
        },
        {
          "name": "Attach File",
          "value": "attachFile",
          "action": "Attach a file to an asset",
          "description": "Attach a file to an asset"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create an asset",
          "description": "Create an asset"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete an asset",
          "description": "Delete an asset"
        },
        {
          "name": "Detach File",
          "value": "detachFile",
          "action": "Detach a file from an asset",
          "description": "Detach a file from an asset"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get an asset",
          "description": "Get an asset by UUID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many assets",
          "description": "Get many assets"
        },
        {
          "name": "Move to Location",
          "value": "moveToLocation",
          "action": "Move an asset to a location",
          "description": "Move an asset to a location"
        },
        {
          "name": "Move to Room",
          "value": "moveToRoom",
          "action": "Move an asset to a room",
          "description": "Move an asset to a room"
        },
        {
          "name": "Unarchive",
          "value": "unarchive",
          "action": "Unarchive an asset",
          "description": "Unarchive an asset"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update an asset",
          "description": "Update an asset"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "asset"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Add Objects",
          "value": "addObjects",
          "action": "Add objects to circularity hub",
          "description": "Add assets to Circularity Hub in bulk"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a circularity hub item",
          "description": "Delete a Circularity Hub item"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a circularity hub item",
          "description": "Get a Circularity Hub item"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many circularity hub items",
          "description": "Get many Circularity Hub items"
        },
        {
          "name": "Suggest Category",
          "value": "suggestCategory",
          "action": "Suggest a circularity hub category",
          "description": "Suggest a category from filters"
        },
        {
          "name": "Suggest Rest Price",
          "value": "suggestRestPrice",
          "action": "Suggest a circularity hub rest price",
          "description": "Suggest a rest price from input fields"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a circularity hub item",
          "description": "Update a Circularity Hub item"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "circularityHubItem"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a circularity hub order",
          "description": "Create a Circularity Hub order"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a circularity hub order",
          "description": "Get a Circularity Hub order"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many circularity hub orders",
          "description": "Get many Circularity Hub orders"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a circularity hub order",
          "description": "Update a Circularity Hub order"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "circularityHubOrder"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a field definition",
          "description": "Create a field definition"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a field definition",
          "description": "Get a field definition by UUID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many field definitions",
          "description": "Get many field definitions"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a field definition",
          "description": "Update a field definition"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "fieldDefinition"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Close",
          "value": "close",
          "action": "Close a task",
          "description": "Close a task"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create a task",
          "description": "Create a task"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a task",
          "description": "Delete a task"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a task",
          "description": "Get a task by UUID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many tasks",
          "description": "Get many tasks"
        },
        {
          "name": "Reopen",
          "value": "reopen",
          "action": "Reopen a task",
          "description": "Reopen a task"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a task",
          "description": "Update a task"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "task"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a rental case",
          "description": "Create a rental case"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a rental case",
          "description": "Delete a rental case"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a rental case",
          "description": "Get a rental case by UUID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many rental cases",
          "description": "Get many rental cases"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a rental case",
          "description": "Update a rental case"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "rentalCase"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a location",
          "description": "Create a location"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a location",
          "description": "Delete a location"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a location",
          "description": "Get a location by UUID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many locations",
          "description": "Get many locations"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a location",
          "description": "Update a location"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "location"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a room",
          "description": "Create a room"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a room",
          "description": "Delete a room"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a room",
          "description": "Get a room by UUID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many rooms",
          "description": "Get many rooms"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a room",
          "description": "Update a room"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "room"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "upload",
      "options": [
        {
          "name": "Download Data",
          "value": "downloadData",
          "action": "Download file data",
          "description": "Download the file data as binary output"
        },
        {
          "name": "Download Thumbnail",
          "value": "downloadThumbnail",
          "action": "Download file thumbnail",
          "description": "Download the file thumbnail as binary output"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a file",
          "description": "Get file metadata"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many files",
          "description": "Get many files"
        },
        {
          "name": "Upload",
          "value": "upload",
          "action": "Upload a file",
          "description": "Upload a file"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "file"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a person",
          "description": "Create a person"
        },
        {
          "name": "Create User",
          "value": "createUser",
          "action": "Create user from person",
          "description": "Create users for persons matching a filter"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a person",
          "description": "Delete a person"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a person",
          "description": "Get a person by UUID"
        },
        {
          "name": "Get by ID",
          "value": "getById",
          "action": "Get a person by ID",
          "description": "Get a person by numeric ID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many persons",
          "description": "Get many persons"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a person",
          "description": "Update a person"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "person"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a user",
          "description": "Get a user by UUID"
        },
        {
          "name": "Get by ID",
          "value": "getById",
          "action": "Get a user by ID",
          "description": "Get a user by numeric ID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many users",
          "description": "Get many users"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Archive",
      "value": "archive",
      "action": "Archive an asset",
      "description": "Archive an asset",
      "resource": "asset"
    },
    {
      "name": "Attach File",
      "value": "attachFile",
      "action": "Attach a file to an asset",
      "description": "Attach a file to an asset",
      "resource": "asset"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create an asset",
      "description": "Create an asset",
      "resource": "asset"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete an asset",
      "description": "Delete an asset",
      "resource": "asset"
    },
    {
      "name": "Detach File",
      "value": "detachFile",
      "action": "Detach a file from an asset",
      "description": "Detach a file from an asset",
      "resource": "asset"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get an asset",
      "description": "Get an asset by UUID",
      "resource": "asset"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many assets",
      "description": "Get many assets",
      "resource": "asset"
    },
    {
      "name": "Move to Location",
      "value": "moveToLocation",
      "action": "Move an asset to a location",
      "description": "Move an asset to a location",
      "resource": "asset"
    },
    {
      "name": "Move to Room",
      "value": "moveToRoom",
      "action": "Move an asset to a room",
      "description": "Move an asset to a room",
      "resource": "asset"
    },
    {
      "name": "Unarchive",
      "value": "unarchive",
      "action": "Unarchive an asset",
      "description": "Unarchive an asset",
      "resource": "asset"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update an asset",
      "description": "Update an asset",
      "resource": "asset"
    },
    {
      "name": "Add Objects",
      "value": "addObjects",
      "action": "Add objects to circularity hub",
      "description": "Add assets to Circularity Hub in bulk",
      "resource": "circularityHubItem"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a circularity hub item",
      "description": "Delete a Circularity Hub item",
      "resource": "circularityHubItem"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a circularity hub item",
      "description": "Get a Circularity Hub item",
      "resource": "circularityHubItem"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many circularity hub items",
      "description": "Get many Circularity Hub items",
      "resource": "circularityHubItem"
    },
    {
      "name": "Suggest Category",
      "value": "suggestCategory",
      "action": "Suggest a circularity hub category",
      "description": "Suggest a category from filters",
      "resource": "circularityHubItem"
    },
    {
      "name": "Suggest Rest Price",
      "value": "suggestRestPrice",
      "action": "Suggest a circularity hub rest price",
      "description": "Suggest a rest price from input fields",
      "resource": "circularityHubItem"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a circularity hub item",
      "description": "Update a Circularity Hub item",
      "resource": "circularityHubItem"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a circularity hub order",
      "description": "Create a Circularity Hub order",
      "resource": "circularityHubOrder"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a circularity hub order",
      "description": "Get a Circularity Hub order",
      "resource": "circularityHubOrder"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many circularity hub orders",
      "description": "Get many Circularity Hub orders",
      "resource": "circularityHubOrder"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a circularity hub order",
      "description": "Update a Circularity Hub order",
      "resource": "circularityHubOrder"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a field definition",
      "description": "Create a field definition",
      "resource": "fieldDefinition"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a field definition",
      "description": "Get a field definition by UUID",
      "resource": "fieldDefinition"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many field definitions",
      "description": "Get many field definitions",
      "resource": "fieldDefinition"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a field definition",
      "description": "Update a field definition",
      "resource": "fieldDefinition"
    },
    {
      "name": "Close",
      "value": "close",
      "action": "Close a task",
      "description": "Close a task",
      "resource": "task"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a task",
      "description": "Create a task",
      "resource": "task"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a task",
      "description": "Delete a task",
      "resource": "task"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a task",
      "description": "Get a task by UUID",
      "resource": "task"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many tasks",
      "description": "Get many tasks",
      "resource": "task"
    },
    {
      "name": "Reopen",
      "value": "reopen",
      "action": "Reopen a task",
      "description": "Reopen a task",
      "resource": "task"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a task",
      "description": "Update a task",
      "resource": "task"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a rental case",
      "description": "Create a rental case",
      "resource": "rentalCase"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a rental case",
      "description": "Delete a rental case",
      "resource": "rentalCase"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a rental case",
      "description": "Get a rental case by UUID",
      "resource": "rentalCase"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many rental cases",
      "description": "Get many rental cases",
      "resource": "rentalCase"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a rental case",
      "description": "Update a rental case",
      "resource": "rentalCase"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a location",
      "description": "Create a location",
      "resource": "location"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a location",
      "description": "Delete a location",
      "resource": "location"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a location",
      "description": "Get a location by UUID",
      "resource": "location"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many locations",
      "description": "Get many locations",
      "resource": "location"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a location",
      "description": "Update a location",
      "resource": "location"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a room",
      "description": "Create a room",
      "resource": "room"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a room",
      "description": "Delete a room",
      "resource": "room"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a room",
      "description": "Get a room by UUID",
      "resource": "room"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many rooms",
      "description": "Get many rooms",
      "resource": "room"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a room",
      "description": "Update a room",
      "resource": "room"
    },
    {
      "name": "Download Data",
      "value": "downloadData",
      "action": "Download file data",
      "description": "Download the file data as binary output",
      "resource": "file"
    },
    {
      "name": "Download Thumbnail",
      "value": "downloadThumbnail",
      "action": "Download file thumbnail",
      "description": "Download the file thumbnail as binary output",
      "resource": "file"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a file",
      "description": "Get file metadata",
      "resource": "file"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many files",
      "description": "Get many files",
      "resource": "file"
    },
    {
      "name": "Upload",
      "value": "upload",
      "action": "Upload a file",
      "description": "Upload a file",
      "resource": "file"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a person",
      "description": "Create a person",
      "resource": "person"
    },
    {
      "name": "Create User",
      "value": "createUser",
      "action": "Create user from person",
      "description": "Create users for persons matching a filter",
      "resource": "person"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a person",
      "description": "Delete a person",
      "resource": "person"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a person",
      "description": "Get a person by UUID",
      "resource": "person"
    },
    {
      "name": "Get by ID",
      "value": "getById",
      "action": "Get a person by ID",
      "description": "Get a person by numeric ID",
      "resource": "person"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many persons",
      "description": "Get many persons",
      "resource": "person"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a person",
      "description": "Update a person",
      "resource": "person"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a user",
      "description": "Get a user by UUID",
      "resource": "user"
    },
    {
      "name": "Get by ID",
      "value": "getById",
      "action": "Get a user by ID",
      "description": "Get a user by numeric ID",
      "resource": "user"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many users",
      "description": "Get many users",
      "resource": "user"
    }
  ]

npm_readme:
  # @seventhingscompany/n8n-nodes-seventhings

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

  seventhings is an asset-management and inventory platform for tracking physical assets, tasks, rental cases, locations, rooms, persons, users, files and Circularity Hub workflows across an organization. This package adds two nodes: a **seventhings** action node for reading and writing those records, and a **seventhings Trigger** node that starts workflows when records change.

  [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.

  Install the package `@seventhingscompany/n8n-nodes-seventhings` from **Settings → Community Nodes** in your n8n instance.

  ## Operations

  This package provides two nodes.

  ### seventhings (action node)

  Manage assets, tasks, rental cases, locations, rooms, files, persons, users, field definitions and Circularity Hub records. The node is organized by **resource**, each with its own set of operations.

  | Resource | Operations |
  |----------|------------|
  | **Asset** | Create, Update, Get, Get Many, Archive, Unarchive, Delete, Move to Location, Move to Room, Attach File, Detach File |
  | **Task** | Create, Update, Get, Get Many, Close, Reopen, Delete |
  | **Rental Case** | Create, Update, Get, Get Many, Delete |
  | **Location** | Create, Update, Get, Get Many, Delete |
  | **Room** | Create, Update, Get, Get Many, Delete |
  | **File** | Upload, Get, Get Many, Download Data, Download Thumbnail |
  | **Person** | Create, Update, Get, Get by ID, Get Many, Delete, Create User |
  | **User** | Get, Get by ID, Get Many |
  | **Field Definition** | Create, Update, Get, Get Many |
  | **Circularity Hub Item** | Add Objects, Suggest Category, Suggest Rest Price, Get, Get Many, Update, Delete |
  | **Circularity Hub Order** | Create, Get, Get Many, Update |

  Notes:

  - **Get** looks a record up by UUID; **Get Many** lists/filters records with a **Return All** toggle and a **Limit**.
  - **Asset** and **Room** Create/Update expose your tenant's own custom fields dynamically (via a resource mapper that reads the field definitions), so the inputs match your seventhings configuration.
  - **Asset → Create** supports a find-or-create behaviour to avoid duplicates.
  - **Asset → Attach File / Detach File** target an attachment-type field, picked from a dropdown of the asset's attachment fields.
  - **Room** records belong to a **Building** (a Location), selected from a dropdown.
  - **File → Upload** accepts either an upstream node's **binary** data or a public **URL** to download, and returns the uploaded file's UUID — which you can then attach to an asset.
  - **File → Download Data / Download Thumbnail** write binary output to a configurable binary property.
  - **Person** Create/Update uses your tenant's person field definitions dynamically, matching the SDK's flexible field map.
  - **Field Definition** operations are schema administration operations for Asset, Room and Person templates.
  - **Circularity Hub** operations cover SDK item/order workflows, category and rest-price suggestions, and adding assets to the hub.

  ### seventhings Trigger (polling)

  Starts a workflow when seventhings records change. The trigger **polls** the API (there are no webhooks). Pick one event:

  - **New Asset**, **Updated Asset**
  - **New Task**, **Updated Task**, **Task Closed**, **Task Reopened**, **Task Overdue**, **Task Due Soon**
  - **New Rental Case**, **Updated Rental Case**, **Rental Case Returned**

  **Task Due Soon** has a **Days Ahead** input (default 3) controlling how far ahead to look for upcoming deadlines.

  ## Credentials

  You need a seventhings account and API access.

  **Prerequisites**

  - A seventhings instance (you log in at `https://<yourcompany>.seventhings.com`).
  - A **Client ID**, found in seventhings under **Integrations → Rest API**.

  **Setting up the credential**

  Create a **Seventhings API** credential with:

  - **Subdomain** — the `<yourcompany>` part of your seventhings URL.
  - **Username** — your seventhings login (an email address).
  - **Password** — your seventhings password.
  - **Client ID** — from Integrations → Rest API.

  Authentication uses a session bearer token obtained via a password grant. n8n fetches and caches the token automatically and refreshes it when it expires, so you only ever enter the four fields above. Use **Test** to confirm the connection.

  ## Compatibility

  - Requires **n8n 1.x** (uses `n8nNodesApiVersion: 1`).
  - Built and tested against **Node.js 20+**.

  No known incompatibilities. If you hit one, please open an issue.

  ## Usage

  - Records are selected through searchable dropdowns (resource locators) — start typing to find an asset, task, location, room or rental case, or paste a UUID directly.
  - For list operations, enable **Return All** to fetch every record, or leave it off and set a **Limit**.
  - For **Asset → Attach File / Detach File**, first **Upload** a file (File resource) to get its UUID, then choose the asset's attachment field from the dropdown.
  - For **File → Download Data / Download Thumbnail**, set **Output Binary Field** to the binary property name downstream nodes should read.
  - For **Field Definition** Create/Update and Circularity Hub Update operations, JSON inputs are validated before requests are sent.
  - The action node is usable as a tool by AI agents.

  New to n8n? See the [Try it out](https://docs.n8n.io/try-it-out/) documentation to get started.

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [seventhings API documentation](https://helpcenter.seventhings.com/en/articles/58547-how-do-i-use-the-seventhings-api)

  ## Version history

  ### 0.3.0

  Expanded SDK parity with Files, Persons, Users, Field Definitions and Circularity Hub:

  - File metadata lookup/list and binary data/thumbnail downloads.
  - Person create/update/get/list/delete and create-user workflows.
  - Read-only user lookup/list operations.
  - Field Definition create/update/get/list for Asset, Room and Person templates.
  - Circularity Hub item/order operations, suggestions and add-object workflow.

  ### 0.1.0

  Initial release. Full parity with the seventhings Zapier integration:

  - **seventhings** action node with Asset, Task, Rental Case, Location, Room and File resources.
  - **seventhings Trigger** node with 11 polling events.
  - Session-token authentication with automatic refresh.

ai_documentation_summary:
  {"purpose":"Integrates seventhings into n8n workflows for managing assets, tasks, rental cases, locations, rooms, and files. It also includes a polling trigger to start workflows when selected records change.","capabilities":["Asset operations: create, update, get, get many, archive, unarchive, delete, move to location, move to room, attach file, detach file","Task operations: create, update, get, get many, close, reopen, delete","Rental case operations: create, update, get, get many, delete","Location operations: create, update, get, get many, delete","Room operations: create, update, get, get many, delete","File upload from binary data or public URL","Polling trigger for new and updated assets, tasks, rental cases, and task status/deadline events","Dynamic custom-field mapping for Asset and Room create/update based on tenant configuration","Find-or-create behavior for Asset creation","Searchable record selection by UUID or dropdown lookup"],"authentication":"API access with session bearer token using password grant; requires Subdomain, Username, Password, and Client ID.","commonUseCases":["Automatically create or update assets, tasks, rental cases, locations, and rooms from other systems","Attach uploaded files to assets","Trigger workflows when assets, tasks, or rental cases are created or updated","Monitor task deadlines and lifecycle events such as overdue, due soon, closed, and reopened","Synchronize inventory data with seventhings from n8n"],"limitations":["Trigger uses polling only; there are no webhooks","Task Due Soon requires a Days Ahead setting, defaulting to 3","Requires n8n 1.x and Node.js 20+"],"relatedNodes":["seventhings Trigger"]}


node_type: @seventhingscompany/n8n-nodes-seventhings.seventhingsTrigger
package_name: @seventhingscompany/n8n-nodes-seventhings
display_name: seventhings Trigger
description: Starts a workflow when seventhings records change
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: hra42
author_github_url: https://github.com/seventhingsCompany/n8n-nodes-seventhings.git
npm_package_name: @seventhingscompany/n8n-nodes-seventhings
npm_version: 0.3.0
community_fetched_at: 2026-07-14T14:40:34.512Z
ai_summary_generated_at: 2026-06-26 10:29:17
npm_readme:
  # @seventhingscompany/n8n-nodes-seventhings

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

  seventhings is an asset-management and inventory platform for tracking physical assets, tasks, rental cases, locations, rooms, persons, users, files and Circularity Hub workflows across an organization. This package adds two nodes: a **seventhings** action node for reading and writing those records, and a **seventhings Trigger** node that starts workflows when records change.

  [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.

  Install the package `@seventhingscompany/n8n-nodes-seventhings` from **Settings → Community Nodes** in your n8n instance.

  ## Operations

  This package provides two nodes.

  ### seventhings (action node)

  Manage assets, tasks, rental cases, locations, rooms, files, persons, users, field definitions and Circularity Hub records. The node is organized by **resource**, each with its own set of operations.

  | Resource | Operations |
  |----------|------------|
  | **Asset** | Create, Update, Get, Get Many, Archive, Unarchive, Delete, Move to Location, Move to Room, Attach File, Detach File |
  | **Task** | Create, Update, Get, Get Many, Close, Reopen, Delete |
  | **Rental Case** | Create, Update, Get, Get Many, Delete |
  | **Location** | Create, Update, Get, Get Many, Delete |
  | **Room** | Create, Update, Get, Get Many, Delete |
  | **File** | Upload, Get, Get Many, Download Data, Download Thumbnail |
  | **Person** | Create, Update, Get, Get by ID, Get Many, Delete, Create User |
  | **User** | Get, Get by ID, Get Many |
  | **Field Definition** | Create, Update, Get, Get Many |
  | **Circularity Hub Item** | Add Objects, Suggest Category, Suggest Rest Price, Get, Get Many, Update, Delete |
  | **Circularity Hub Order** | Create, Get, Get Many, Update |

  Notes:

  - **Get** looks a record up by UUID; **Get Many** lists/filters records with a **Return All** toggle and a **Limit**.
  - **Asset** and **Room** Create/Update expose your tenant's own custom fields dynamically (via a resource mapper that reads the field definitions), so the inputs match your seventhings configuration.
  - **Asset → Create** supports a find-or-create behaviour to avoid duplicates.
  - **Asset → Attach File / Detach File** target an attachment-type field, picked from a dropdown of the asset's attachment fields.
  - **Room** records belong to a **Building** (a Location), selected from a dropdown.
  - **File → Upload** accepts either an upstream node's **binary** data or a public **URL** to download, and returns the uploaded file's UUID — which you can then attach to an asset.
  - **File → Download Data / Download Thumbnail** write binary output to a configurable binary property.
  - **Person** Create/Update uses your tenant's person field definitions dynamically, matching the SDK's flexible field map.
  - **Field Definition** operations are schema administration operations for Asset, Room and Person templates.
  - **Circularity Hub** operations cover SDK item/order workflows, category and rest-price suggestions, and adding assets to the hub.

  ### seventhings Trigger (polling)

  Starts a workflow when seventhings records change. The trigger **polls** the API (there are no webhooks). Pick one event:

  - **New Asset**, **Updated Asset**
  - **New Task**, **Updated Task**, **Task Closed**, **Task Reopened**, **Task Overdue**, **Task Due Soon**
  - **New Rental Case**, **Updated Rental Case**, **Rental Case Returned**

  **Task Due Soon** has a **Days Ahead** input (default 3) controlling how far ahead to look for upcoming deadlines.

  ## Credentials

  You need a seventhings account and API access.

  **Prerequisites**

  - A seventhings instance (you log in at `https://<yourcompany>.seventhings.com`).
  - A **Client ID**, found in seventhings under **Integrations → Rest API**.

  **Setting up the credential**

  Create a **Seventhings API** credential with:

  - **Subdomain** — the `<yourcompany>` part of your seventhings URL.
  - **Username** — your seventhings login (an email address).
  - **Password** — your seventhings password.
  - **Client ID** — from Integrations → Rest API.

  Authentication uses a session bearer token obtained via a password grant. n8n fetches and caches the token automatically and refreshes it when it expires, so you only ever enter the four fields above. Use **Test** to confirm the connection.

  ## Compatibility

  - Requires **n8n 1.x** (uses `n8nNodesApiVersion: 1`).
  - Built and tested against **Node.js 20+**.

  No known incompatibilities. If you hit one, please open an issue.

  ## Usage

  - Records are selected through searchable dropdowns (resource locators) — start typing to find an asset, task, location, room or rental case, or paste a UUID directly.
  - For list operations, enable **Return All** to fetch every record, or leave it off and set a **Limit**.
  - For **Asset → Attach File / Detach File**, first **Upload** a file (File resource) to get its UUID, then choose the asset's attachment field from the dropdown.
  - For **File → Download Data / Download Thumbnail**, set **Output Binary Field** to the binary property name downstream nodes should read.
  - For **Field Definition** Create/Update and Circularity Hub Update operations, JSON inputs are validated before requests are sent.
  - The action node is usable as a tool by AI agents.

  New to n8n? See the [Try it out](https://docs.n8n.io/try-it-out/) documentation to get started.

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [seventhings API documentation](https://helpcenter.seventhings.com/en/articles/58547-how-do-i-use-the-seventhings-api)

  ## Version history

  ### 0.3.0

  Expanded SDK parity with Files, Persons, Users, Field Definitions and Circularity Hub:

  - File metadata lookup/list and binary data/thumbnail downloads.
  - Person create/update/get/list/delete and create-user workflows.
  - Read-only user lookup/list operations.
  - Field Definition create/update/get/list for Asset, Room and Person templates.
  - Circularity Hub item/order operations, suggestions and add-object workflow.

  ### 0.1.0

  Initial release. Full parity with the seventhings Zapier integration:

  - **seventhings** action node with Asset, Task, Rental Case, Location, Room and File resources.
  - **seventhings Trigger** node with 11 polling events.
  - Session-token authentication with automatic refresh.

ai_documentation_summary:
  {"purpose":"Starts workflows when seventhings records change, using polling rather than webhooks. It is part of the seventhings n8n community package, which also includes an action node for managing assets, tasks, rental cases, locations, rooms, and files.","capabilities":["Polls for record changes in seventhings","Triggers on New Asset and Updated Asset events","Triggers on New Task, Updated Task, Task Closed, Task Reopened, Task Overdue, and Task Due Soon events","Triggers on New Rental Case, Updated Rental Case, and Rental Case Returned events","Supports a configurable Days Ahead input for Task Due Soon"],"authentication":"Seventhings API credential using Subdomain, Username, Password, and Client ID; authentication is via a session bearer token obtained with password grant and refreshed automatically","commonUseCases":["Start a workflow when a new asset is created or an existing asset is updated","Monitor tasks for status changes, overdue tasks, or upcoming due dates","Trigger automations when rental cases are created, updated, or returned"],"limitations":["Uses polling only; there are no webhooks","Only supports the listed record-change trigger events"],"relatedNodes":["seventhings"]}


node_type: @imagekit/n8n-nodes-imagekit.imagekitTrigger
package_name: @imagekit/n8n-nodes-imagekit
display_name: ImageKit Trigger
description: Triggers on ImageKit webhook events (file lifecycle, transformations, video processing).
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: imagekit-developer
author_github_url: https://github.com/imagekit-developer/n8n-nodes-imagekit.git
npm_package_name: @imagekit/n8n-nodes-imagekit
npm_version: 1.0.6
community_fetched_at: 2026-07-14T14:40:34.513Z
ai_summary_generated_at: 2026-06-26 10:29:17
npm_readme:
  [<img width="250" alt="ImageKit.io" src="https://raw.githubusercontent.com/imagekit-developer/imagekit-javascript/master/assets/imagekit-light-logo.svg"/>](https://imagekit.io)

  # ImageKit.io n8n Community Node

  [![npm version](https://img.shields.io/npm/v/@imagekit/n8n-nodes-imagekit)](https://www.npmjs.com/package/@imagekit/n8n-nodes-imagekit)
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
  [![n8n Community Node](https://img.shields.io/badge/n8n-community%20node-FF6D5A)](https://docs.n8n.io/integrations/community-nodes/)
  [![Twitter Follow](https://img.shields.io/twitter/follow/imagekitio?label=Follow&style=social)](https://twitter.com/ImagekitIo)

  This n8n community node brings [ImageKit.io](https://imagekit.io/) media management APIs directly into your automation workflows. Use it to upload, organize, search, update, and manage files and folders in your ImageKit media library without writing custom integration code.

  ImageKit is a complete media management platform for real-time image and video optimization, transformation, storage, metadata management, and delivery through a global CDN. With this node, n8n workflows can connect ImageKit with your CMS, DAM, e-commerce, support, analytics, and internal operations systems.

  [n8n](https://n8n.io/) is a workflow automation platform that helps you connect apps, APIs, and services with low-code workflows.

  ## Installation

  You can install the node in n8n using the community nodes UI.

  1. Open your n8n instance.
  2. Go to **Settings > Community Nodes**.
  3. Select **Install**.
  4. Enter the package name:

  ```bash
  @imagekit/n8n-nodes-imagekit
  ```

  5. Select **Install** and restart n8n if your deployment requires it.

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

  ## Documentation

  Refer to the ImageKit [official API documentation](https://imagekit.io/docs/api-reference) for detailed API behavior, request parameters, and response formats.

  For n8n-specific setup, see:

  - **Community nodes:** [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - **Credentials:** [n8n credentials documentation](https://docs.n8n.io/credentials/)
  - **Workflows:** [n8n workflow documentation](https://docs.n8n.io/workflows/)

  ## What you can build

  Use this node to automate common ImageKit media workflows:

  - **Upload assets:** Upload files from n8n binary data or remote URLs.
  - **Organize media:** Create, move, copy, rename, and delete files and folders.
  - **Search assets:** List and search media library assets with filters, pagination, and sorting.
  - **Manage metadata:** Fetch metadata, update custom metadata, and manage custom metadata field definitions.
  - **Process in bulk:** Delete files or update tags across multiple file IDs.
  - **Maintain delivery freshness:** Purge CDN cache and check purge request status.
  - **Automate account operations:** Manage origins, URL endpoints, usage data, and saved extensions.
  - **React to ImageKit events:** Use webhook triggers to start workflows from ImageKit events.

  ## Authentication

  To use this node, create ImageKit API credentials in n8n.

  1. Sign in to your [ImageKit dashboard](https://imagekit.io/dashboard).
  2. Go to **Developer Options > API Keys**.
  3. Copy your **Private Key**.
  4. In n8n, create credentials of type **ImageKit API**.
  5. Paste the private key and save the credentials.

  For webhook triggers, configure credentials of type **ImageKit Webhook API** with the webhook secret used to verify incoming ImageKit webhook payloads.

  **Security note:** Your ImageKit private key can perform privileged account operations. Store it only in n8n credentials and never expose it in workflow data, logs, frontend code, or shared screenshots.

  ## Usage

  ### Upload a file

  1. Add the **ImageKit** node to your workflow.
  2. Select **File** as the resource.
  3. Select **Upload** as the operation.
  4. Provide either:
     - **Input Data Field Name** for binary data from a previous node, or
     - **File URL** for a remote file.
  5. Set the file name and optional upload settings such as folder, tags, overwrite behavior, custom metadata, and response fields.
  6. Execute the workflow.

  ### List and search assets

  1. Add the **ImageKit** node to your workflow.
  2. Select **Asset** as the resource.
  3. Select **List and Search** as the operation.
  4. Configure **Limit**, **Skip**, **Sort By**, and **Sort Direction**.
  5. Optionally filter by path, file type, or asset type.

  ### Search query examples

  ImageKit supports Lucene-like search syntax for advanced asset discovery.

  ```text
  name:"image.jpg"
  type:image
  size:>1000000
  tags:product AND tags:featured
  ```

  Refer to ImageKit's [list and search assets documentation](https://imagekit.io/docs/api-reference/digital-asset-management-dam/list-and-search-assets) for the full search syntax.

  ## Resources

  - [ImageKit](https://imagekit.io/)
  - [ImageKit API documentation](https://imagekit.io/docs/api-reference)
  - [ImageKit dashboard](https://imagekit.io/dashboard)
  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [n8n workflow documentation](https://docs.n8n.io/workflows/)

ai_documentation_summary:
  {"purpose":"Triggers n8n workflows from ImageKit webhook events related to file lifecycle, transformations, and video processing. It lets you react to ImageKit events automatically inside n8n.","capabilities":["Receives ImageKit webhook events","Triggers workflows on file lifecycle events","Triggers workflows on transformation events","Triggers workflows on video processing events","Verifies incoming webhook payloads using a webhook secret"],"authentication":"Webhook secret required for ImageKit Webhook API credentials","commonUseCases":["Start workflows when files are uploaded, updated, or deleted in ImageKit","Automate downstream actions when media transformations complete","React to video processing events in real time"],"limitations":[],"relatedNodes":["ImageKit"]}


node_type: @imagekit/n8n-nodes-imagekit.imagekit
package_name: @imagekit/n8n-nodes-imagekit
display_name: ImageKit
description: Interact with the ImageKit API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: imagekit-developer
author_github_url: https://github.com/imagekit-developer/n8n-nodes-imagekit.git
npm_package_name: @imagekit/n8n-nodes-imagekit
npm_version: 1.0.6
community_fetched_at: 2026-07-14T14:40:34.514Z
ai_summary_generated_at: 2026-06-26 10:29:17
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "asset",
      "options": [
        {
          "name": "Account",
          "value": "account"
        },
        {
          "name": "Account Origin",
          "value": "accountOrigin"
        },
        {
          "name": "Account URL Endpoint",
          "value": "accountUrlEndpoint"
        },
        {
          "name": "Asset",
          "value": "asset"
        },
        {
          "name": "Custom Metadata Field",
          "value": "customMetadataFields"
        },
        {
          "name": "File",
          "value": "file"
        },
        {
          "name": "File Version",
          "value": "fileVersion"
        },
        {
          "name": "Folder",
          "value": "folder"
        },
        {
          "name": "Metadata",
          "value": "metadata"
        },
        {
          "name": "Purge Cache",
          "value": "purgeCache"
        },
        {
          "name": "Saved Extension",
          "value": "savedExtension"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List and Search",
          "value": "list",
          "action": "List and search assets",
          "description": "This API can list all the uploaded files and folders in your ImageKit.io media library. In addition, you can fine-tune your query by specifying various filters by generating a query string in a Lucene-like syntax and provide this generated string as the value of the searchQuery."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "asset"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "upload",
      "options": [
        {
          "name": "Bulk Add Tags",
          "value": "bulkAddTags",
          "action": "Bulk add tags to files",
          "description": "Add tags to multiple files"
        },
        {
          "name": "Bulk Delete",
          "value": "bulkDelete",
          "action": "Bulk delete files",
          "description": "Delete multiple files by their IDs"
        },
        {
          "name": "Bulk Remove AI Tags",
          "value": "bulkRemoveAITags",
          "action": "Bulk remove AI tags from files",
          "description": "Remove AI tags from multiple files"
        },
        {
          "name": "Bulk Remove Tags",
          "value": "bulkRemoveTags",
          "action": "Bulk remove tags from files",
          "description": "Remove tags from multiple files"
        },
        {
          "name": "Copy",
          "value": "copy",
          "action": "Copy a file",
          "description": "Copy a file to another location"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a file",
          "description": "Delete a file by its ID"
        },
        {
          "name": "Get Details",
          "value": "get",
          "action": "Get file details",
          "description": "Get details of a file by its ID"
        },
        {
          "name": "Move",
          "value": "move",
          "action": "Move a file",
          "description": "Move a file to another location"
        },
        {
          "name": "Publish / Unpublish",
          "value": "publish",
          "action": "Publish or unpublish a file",
          "description": "Change the publication status of a file and its versions"
        },
        {
          "name": "Rename",
          "value": "rename",
          "action": "Rename a file",
          "description": "Rename a file"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update file details",
          "description": "Update details of a file"
        },
        {
          "name": "Upload",
          "value": "upload",
          "action": "Upload a file",
          "description": "Upload a file to ImageKit"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "file"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a file version",
          "description": "Delete a specific version of a file"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a file version",
          "description": "Get a specific version of a file"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List file versions",
          "description": "List all versions of a file"
        },
        {
          "name": "Restore",
          "value": "restore",
          "action": "Restore a file version",
          "description": "Restore a specific version of a file"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "fileVersion"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getByFileId",
      "options": [
        {
          "name": "Get by File ID",
          "value": "getByFileId",
          "action": "Get metadata by file ID",
          "description": "Get metadata of a file by its ID"
        },
        {
          "name": "Get From URL",
          "value": "getFromUrl",
          "action": "Get metadata from URL",
          "description": "Get metadata of a file from its remote URL"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "metadata"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Copy",
          "value": "copy",
          "action": "Copy a folder",
          "description": "Copy a folder to another location"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create a folder",
          "description": "Create a new folder"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a folder",
          "description": "Delete a folder"
        },
        {
          "name": "Get Job Status",
          "value": "getJobStatus",
          "action": "Get bulk job status",
          "description": "Get the status of a bulk folder operation job"
        },
        {
          "name": "Move",
          "value": "move",
          "action": "Move a folder",
          "description": "Move a folder to another location"
        },
        {
          "name": "Rename",
          "value": "rename",
          "action": "Rename a folder",
          "description": "Rename a folder"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "folder"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a custom metadata field",
          "description": "Create a new custom metadata field"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a custom metadata field",
          "description": "Delete a custom metadata field"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List custom metadata fields",
          "description": "List all custom metadata fields"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a custom metadata field",
          "description": "Update an existing custom metadata field"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "customMetadataFields"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "purge",
      "options": [
        {
          "name": "Get Purge Status",
          "value": "getStatus",
          "action": "Get purge status",
          "description": "Get the status of a purge request"
        },
        {
          "name": "Purge",
          "value": "purge",
          "action": "Purge cache",
          "description": "Purge cache for a file URL"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "purgeCache"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getUsage",
      "options": [
        {
          "name": "Get Usage",
          "value": "getUsage",
          "action": "Get account usage",
          "description": "Get account usage statistics"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "account"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create an origin",
          "description": "Create a new origin"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete an origin",
          "description": "Delete an origin"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get an origin",
          "description": "Get details of a specific origin"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List origins",
          "description": "List all origins"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update an origin",
          "description": "Update an existing origin"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "accountOrigin"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a URL endpoint",
          "description": "Create a new URL endpoint"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a URL endpoint",
          "description": "Delete a URL endpoint"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a URL endpoint",
          "description": "Get details of a specific URL endpoint"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List URL endpoints",
          "description": "List all URL endpoints"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a URL endpoint",
          "description": "Update an existing URL endpoint"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "accountUrlEndpoint"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a saved extension",
          "description": "Create a new saved extension"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a saved extension",
          "description": "Delete a saved extension"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a saved extension",
          "description": "Get details of a specific saved extension"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List saved extensions",
          "description": "List all saved extensions"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a saved extension",
          "description": "Update an existing saved extension"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "savedExtension"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "List and Search",
      "value": "list",
      "action": "List and search assets",
      "description": "This API can list all the uploaded files and folders in your ImageKit.io media library. In addition, you can fine-tune your query by specifying various filters by generating a query string in a Lucene-like syntax and provide this generated string as the value of the searchQuery.",
      "resource": "asset"
    },
    {
      "name": "Bulk Add Tags",
      "value": "bulkAddTags",
      "action": "Bulk add tags to files",
      "description": "Add tags to multiple files",
      "resource": "file"
    },
    {
      "name": "Bulk Delete",
      "value": "bulkDelete",
      "action": "Bulk delete files",
      "description": "Delete multiple files by their IDs",
      "resource": "file"
    },
    {
      "name": "Bulk Remove AI Tags",
      "value": "bulkRemoveAITags",
      "action": "Bulk remove AI tags from files",
      "description": "Remove AI tags from multiple files",
      "resource": "file"
    },
    {
      "name": "Bulk Remove Tags",
      "value": "bulkRemoveTags",
      "action": "Bulk remove tags from files",
      "description": "Remove tags from multiple files",
      "resource": "file"
    },
    {
      "name": "Copy",
      "value": "copy",
      "action": "Copy a file",
      "description": "Copy a file to another location",
      "resource": "file"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a file",
      "description": "Delete a file by its ID",
      "resource": "file"
    },
    {
      "name": "Get Details",
      "value": "get",
      "action": "Get file details",
      "description": "Get details of a file by its ID",
      "resource": "file"
    },
    {
      "name": "Move",
      "value": "move",
      "action": "Move a file",
      "description": "Move a file to another location",
      "resource": "file"
    },
    {
      "name": "Publish / Unpublish",
      "value": "publish",
      "action": "Publish or unpublish a file",
      "description": "Change the publication status of a file and its versions",
      "resource": "file"
    },
    {
      "name": "Rename",
      "value": "rename",
      "action": "Rename a file",
      "description": "Rename a file",
      "resource": "file"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update file details",
      "description": "Update details of a file",
      "resource": "file"
    },
    {
      "name": "Upload",
      "value": "upload",
      "action": "Upload a file",
      "description": "Upload a file to ImageKit",
      "resource": "file"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a file version",
      "description": "Delete a specific version of a file",
      "resource": "fileVersion"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a file version",
      "description": "Get a specific version of a file",
      "resource": "fileVersion"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List file versions",
      "description": "List all versions of a file",
      "resource": "fileVersion"
    },
    {
      "name": "Restore",
      "value": "restore",
      "action": "Restore a file version",
      "description": "Restore a specific version of a file",
      "resource": "fileVersion"
    },
    {
      "name": "Get by File ID",
      "value": "getByFileId",
      "action": "Get metadata by file ID",
      "description": "Get metadata of a file by its ID",
      "resource": "metadata"
    },
    {
      "name": "Get From URL",
      "value": "getFromUrl",
      "action": "Get metadata from URL",
      "description": "Get metadata of a file from its remote URL",
      "resource": "metadata"
    },
    {
      "name": "Copy",
      "value": "copy",
      "action": "Copy a folder",
      "description": "Copy a folder to another location",
      "resource": "folder"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a folder",
      "description": "Create a new folder",
      "resource": "folder"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a folder",
      "description": "Delete a folder",
      "resource": "folder"
    },
    {
      "name": "Get Job Status",
      "value": "getJobStatus",
      "action": "Get bulk job status",
      "description": "Get the status of a bulk folder operation job",
      "resource": "folder"
    },
    {
      "name": "Move",
      "value": "move",
      "action": "Move a folder",
      "description": "Move a folder to another location",
      "resource": "folder"
    },
    {
      "name": "Rename",
      "value": "rename",
      "action": "Rename a folder",
      "description": "Rename a folder",
      "resource": "folder"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a custom metadata field",
      "description": "Create a new custom metadata field",
      "resource": "customMetadataFields"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a custom metadata field",
      "description": "Delete a custom metadata field",
      "resource": "customMetadataFields"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List custom metadata fields",
      "description": "List all custom metadata fields",
      "resource": "customMetadataFields"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a custom metadata field",
      "description": "Update an existing custom metadata field",
      "resource": "customMetadataFields"
    },
    {
      "name": "Get Purge Status",
      "value": "getStatus",
      "action": "Get purge status",
      "description": "Get the status of a purge request",
      "resource": "purgeCache"
    },
    {
      "name": "Purge",
      "value": "purge",
      "action": "Purge cache",
      "description": "Purge cache for a file URL",
      "resource": "purgeCache"
    },
    {
      "name": "Get Usage",
      "value": "getUsage",
      "action": "Get account usage",
      "description": "Get account usage statistics",
      "resource": "account"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create an origin",
      "description": "Create a new origin",
      "resource": "accountOrigin"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete an origin",
      "description": "Delete an origin",
      "resource": "accountOrigin"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get an origin",
      "description": "Get details of a specific origin",
      "resource": "accountOrigin"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List origins",
      "description": "List all origins",
      "resource": "accountOrigin"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update an origin",
      "description": "Update an existing origin",
      "resource": "accountOrigin"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a URL endpoint",
      "description": "Create a new URL endpoint",
      "resource": "accountUrlEndpoint"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a URL endpoint",
      "description": "Delete a URL endpoint",
      "resource": "accountUrlEndpoint"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a URL endpoint",
      "description": "Get details of a specific URL endpoint",
      "resource": "accountUrlEndpoint"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List URL endpoints",
      "description": "List all URL endpoints",
      "resource": "accountUrlEndpoint"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a URL endpoint",
      "description": "Update an existing URL endpoint",
      "resource": "accountUrlEndpoint"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a saved extension",
      "description": "Create a new saved extension",
      "resource": "savedExtension"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a saved extension",
      "description": "Delete a saved extension",
      "resource": "savedExtension"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a saved extension",
      "description": "Get details of a specific saved extension",
      "resource": "savedExtension"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List saved extensions",
      "description": "List all saved extensions",
      "resource": "savedExtension"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a saved extension",
      "description": "Update an existing saved extension",
      "resource": "savedExtension"
    }
  ]

npm_readme:
  [<img width="250" alt="ImageKit.io" src="https://raw.githubusercontent.com/imagekit-developer/imagekit-javascript/master/assets/imagekit-light-logo.svg"/>](https://imagekit.io)

  # ImageKit.io n8n Community Node

  [![npm version](https://img.shields.io/npm/v/@imagekit/n8n-nodes-imagekit)](https://www.npmjs.com/package/@imagekit/n8n-nodes-imagekit)
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
  [![n8n Community Node](https://img.shields.io/badge/n8n-community%20node-FF6D5A)](https://docs.n8n.io/integrations/community-nodes/)
  [![Twitter Follow](https://img.shields.io/twitter/follow/imagekitio?label=Follow&style=social)](https://twitter.com/ImagekitIo)

  This n8n community node brings [ImageKit.io](https://imagekit.io/) media management APIs directly into your automation workflows. Use it to upload, organize, search, update, and manage files and folders in your ImageKit media library without writing custom integration code.

  ImageKit is a complete media management platform for real-time image and video optimization, transformation, storage, metadata management, and delivery through a global CDN. With this node, n8n workflows can connect ImageKit with your CMS, DAM, e-commerce, support, analytics, and internal operations systems.

  [n8n](https://n8n.io/) is a workflow automation platform that helps you connect apps, APIs, and services with low-code workflows.

  ## Installation

  You can install the node in n8n using the community nodes UI.

  1. Open your n8n instance.
  2. Go to **Settings > Community Nodes**.
  3. Select **Install**.
  4. Enter the package name:

  ```bash
  @imagekit/n8n-nodes-imagekit
  ```

  5. Select **Install** and restart n8n if your deployment requires it.

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

  ## Documentation

  Refer to the ImageKit [official API documentation](https://imagekit.io/docs/api-reference) for detailed API behavior, request parameters, and response formats.

  For n8n-specific setup, see:

  - **Community nodes:** [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - **Credentials:** [n8n credentials documentation](https://docs.n8n.io/credentials/)
  - **Workflows:** [n8n workflow documentation](https://docs.n8n.io/workflows/)

  ## What you can build

  Use this node to automate common ImageKit media workflows:

  - **Upload assets:** Upload files from n8n binary data or remote URLs.
  - **Organize media:** Create, move, copy, rename, and delete files and folders.
  - **Search assets:** List and search media library assets with filters, pagination, and sorting.
  - **Manage metadata:** Fetch metadata, update custom metadata, and manage custom metadata field definitions.
  - **Process in bulk:** Delete files or update tags across multiple file IDs.
  - **Maintain delivery freshness:** Purge CDN cache and check purge request status.
  - **Automate account operations:** Manage origins, URL endpoints, usage data, and saved extensions.
  - **React to ImageKit events:** Use webhook triggers to start workflows from ImageKit events.

  ## Authentication

  To use this node, create ImageKit API credentials in n8n.

  1. Sign in to your [ImageKit dashboard](https://imagekit.io/dashboard).
  2. Go to **Developer Options > API Keys**.
  3. Copy your **Private Key**.
  4. In n8n, create credentials of type **ImageKit API**.
  5. Paste the private key and save the credentials.

  For webhook triggers, configure credentials of type **ImageKit Webhook API** with the webhook secret used to verify incoming ImageKit webhook payloads.

  **Security note:** Your ImageKit private key can perform privileged account operations. Store it only in n8n credentials and never expose it in workflow data, logs, frontend code, or shared screenshots.

  ## Usage

  ### Upload a file

  1. Add the **ImageKit** node to your workflow.
  2. Select **File** as the resource.
  3. Select **Upload** as the operation.
  4. Provide either:
     - **Input Data Field Name** for binary data from a previous node, or
     - **File URL** for a remote file.
  5. Set the file name and optional upload settings such as folder, tags, overwrite behavior, custom metadata, and response fields.
  6. Execute the workflow.

  ### List and search assets

  1. Add the **ImageKit** node to your workflow.
  2. Select **Asset** as the resource.
  3. Select **List and Search** as the operation.
  4. Configure **Limit**, **Skip**, **Sort By**, and **Sort Direction**.
  5. Optionally filter by path, file type, or asset type.

  ### Search query examples

  ImageKit supports Lucene-like search syntax for advanced asset discovery.

  ```text
  name:"image.jpg"
  type:image
  size:>1000000
  tags:product AND tags:featured
  ```

  Refer to ImageKit's [list and search assets documentation](https://imagekit.io/docs/api-reference/digital-asset-management-dam/list-and-search-assets) for the full search syntax.

  ## Resources

  - [ImageKit](https://imagekit.io/)
  - [ImageKit API documentation](https://imagekit.io/docs/api-reference)
  - [ImageKit dashboard](https://imagekit.io/dashboard)
  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [n8n workflow documentation](https://docs.n8n.io/workflows/)

ai_documentation_summary:
  {"purpose":"This node connects n8n workflows to the ImageKit.io media management API. It lets you automate file, folder, metadata, CDN, and account operations, as well as react to ImageKit webhook events.","capabilities":["Upload files from n8n binary data or remote URLs","Create, move, copy, rename, and delete files and folders","List and search assets with filters, pagination, sorting, and Lucene-like query syntax","Fetch and update metadata, including custom metadata and custom metadata field definitions","Bulk delete files and bulk update tags across multiple file IDs","Purge CDN cache and check purge request status","Manage origins, URL endpoints, usage data, and saved extensions","Trigger workflows from ImageKit webhook events"],"authentication":"API key required via ImageKit API credentials (Private Key); webhook triggers use ImageKit Webhook API credentials with webhook secret verification","commonUseCases":["Automating media uploads into ImageKit from forms, CMSs, or other apps","Searching and organizing digital assets in a workflow","Updating metadata or tags in bulk for DAM operations","Purging CDN cache after asset changes","Starting n8n workflows from ImageKit webhook events"],"limitations":["Requires an ImageKit Private Key for privileged account operations","Webhook triggers require separate webhook secret credentials for verification"],"relatedNodes":["Webhook Trigger","HTTP Request"]}


node_type: @streameye/n8n-nodes-streameye.streameye
package_name: @streameye/n8n-nodes-streameye
display_name: Streameye
description: Interact with the Streameye API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: snoop088
author_github_url: https://github.com/StreamEye/n8n-nodes-streameye.git
npm_package_name: @streameye/n8n-nodes-streameye
npm_version: 1.0.4
community_fetched_at: 2026-07-14T14:40:34.515Z
ai_summary_generated_at: 2026-06-26 10:29:17
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "wizards",
      "options": [
        {
          "name": "Feed",
          "value": "feeds"
        },
        {
          "name": "Gallery",
          "value": "galleries"
        },
        {
          "name": "Wizard",
          "value": "wizards"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create feed",
          "description": "Create feed"
        },
        {
          "name": "Get by ID",
          "value": "getById",
          "action": "Get feed",
          "description": "Get feed"
        },
        {
          "name": "Get Files",
          "value": "getFiles",
          "action": "Get feed files",
          "description": "Download the generated files for a feed"
        },
        {
          "name": "Get Images",
          "value": "getImages",
          "action": "Get feed images",
          "description": "Get rendered images for a feed"
        },
        {
          "name": "Get Many",
          "value": "list",
          "action": "Get feeds",
          "description": "Get feeds"
        },
        {
          "name": "Get Permalinks",
          "value": "getPermalinks",
          "action": "Get feed permalinks",
          "description": "Get permalinks for a feed"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update feed",
          "description": "Update feed"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "feeds"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listGalleryAssets",
      "options": [
        {
          "name": "Get Many",
          "value": "listGalleryAssets",
          "action": "Get gallery assets",
          "description": "Get gallery assets"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "galleries"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Get Many",
          "value": "list",
          "action": "Get wizards",
          "description": "Get wizards"
        },
        {
          "name": "Get by ID",
          "value": "getById",
          "action": "Get wizard",
          "description": "Get wizard"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "wizards"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create feed",
      "description": "Create feed",
      "resource": "feeds"
    },
    {
      "name": "Get by ID",
      "value": "getById",
      "action": "Get feed",
      "description": "Get feed",
      "resource": "feeds"
    },
    {
      "name": "Get Files",
      "value": "getFiles",
      "action": "Get feed files",
      "description": "Download the generated files for a feed",
      "resource": "feeds"
    },
    {
      "name": "Get Images",
      "value": "getImages",
      "action": "Get feed images",
      "description": "Get rendered images for a feed",
      "resource": "feeds"
    },
    {
      "name": "Get Many",
      "value": "list",
      "action": "Get feeds",
      "description": "Get feeds",
      "resource": "feeds"
    },
    {
      "name": "Get Permalinks",
      "value": "getPermalinks",
      "action": "Get feed permalinks",
      "description": "Get permalinks for a feed",
      "resource": "feeds"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update feed",
      "description": "Update feed",
      "resource": "feeds"
    },
    {
      "name": "Get Many",
      "value": "listGalleryAssets",
      "action": "Get gallery assets",
      "description": "Get gallery assets",
      "resource": "galleries"
    },
    {
      "name": "Get Many",
      "value": "list",
      "action": "Get wizards",
      "description": "Get wizards",
      "resource": "wizards"
    },
    {
      "name": "Get by ID",
      "value": "getById",
      "action": "Get wizard",
      "description": "Get wizard",
      "resource": "wizards"
    }
  ]

npm_readme:
  # @streameye/n8n-nodes-streameye

  [![npm version](https://img.shields.io/npm/v/@streameye/n8n-nodes-streameye?style=flat-square)](https://www.npmjs.com/package/@streameye/n8n-nodes-streameye)
  [![n8n community node](https://img.shields.io/badge/n8n-community%20node-FF6D5A?style=flat-square)](https://docs.n8n.io/integrations/community-nodes/)
  [![License: MIT](https://img.shields.io/badge/license-MIT-blue?style=flat-square)](./LICENSE)

  This is an [n8n](https://n8n.io/) community node. It lets you use the [Streameye](https://streameye.com/) API in your n8n workflows to build, render and distribute **data-driven creatives** straight from your automations.

  **Streameye** is a dynamic creative platform for building, rendering and distributing data-driven banners and feeds from reusable **wizards** and asset **galleries**. With this node you can create and update feeds, inject live data and images, render the results as **ad tags, rendered images and permalinks** — all without leaving n8n.

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

  ---

  ## Table of Contents

  - [Key Features](#key-features)
  - [Installation](#installation)
  - [Credentials](#credentials)
  - [Operations](#operations)
    - [📰 Feed](#-feed)
    - [🖼️ Gallery](#️-gallery)
    - [🧩 Wizard](#-wizard)
  - [Triggering Workflows (Webhooks & Schedules)](#triggering-workflows-webhooks--schedules)
  - [Example Usage](#example-usage)
    - [Example 1 — Match-day banners that redirect permalinks to the next best game](#example-1--match-day-banners-that-redirect-permalinks-to-the-next-best-game)
    - [Example 2 — Scheduled retail product feed pushed to an ad platform](#example-2--scheduled-retail-product-feed-pushed-to-an-ad-platform)
  - [How It Works](#how-it-works)
    - [Feed data validation](#feed-data-validation-create--update)
    - [`asset_picker` resolution](#asset_picker-resolution)
    - [Compressed fields](#compressed-fields)
  - [Compatibility](#compatibility)
  - [Resources](#resources)
  - [Version History](#version-history)
  - [License](#license)

  ---

  ## Key Features

  - 📰 **Create & update feeds** from a wizard, with feed data validated against the wizard schema before it is sent.
  - 🪄 **Automatic image resolution** — reference gallery assets by name and the node swaps in the correct asset URL for you.
  - 🔗 **Produce ad tags, rendered images and permalinks** from any feed, optionally scoped to a single banner, quality or type.
  - 📦 **Download generated feed files** for a feed.
  - 🗂️ **Browse galleries and wizards** with rich filtering, sorting and pagination.
  - 🔐 **Secure OAuth2 authentication** against the Streameye identity provider.

  ---

  ## Installation

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

  In short:

  1. Go to **Settings → Community Nodes**.
  2. Select **Install**.
  3. Enter `@streameye/n8n-nodes-streameye` as the npm package name.
  4. Agree to the risks of using community nodes and select **Install**.

  Once installed, the **Streameye** node is available from the nodes panel.

  ---

  ## Credentials

  Authentication uses **OAuth2 (Authorization Code)** against the Streameye identity provider.

  1. Obtain an OAuth2 **Client ID** and **Client Secret** from Streameye.
  2. In n8n, create a new **Streameye OAuth2 API** credential and enter the **Client ID** and **Client Secret**.
  3. Adjust the **Scope** if needed (default: `openid email profile`).
  4. Select **Connect my account** and complete the OAuth2 sign-in flow.

  > The API URL, authorization URL and token URL are preconfigured in the credential — you don't need to set them.

  ---

  ## Operations

  The node exposes three resources — **Feed**, **Gallery** and **Wizard**. All calls go to a single Streameye GraphQL endpoint using your OAuth2 credentials.

  ### 📰 Feed

  | | Operation | Description | Key inputs |
  |---|-----------|-------------|------------|
  | ➕ | **Create** | Create a feed from a wizard. The `Data` is validated against the wizard schema before sending (see [How It Works](#how-it-works)). | **Wizard ID** *(required)*, **Name** *(required)*, **Language** *(required, default is `en`)*, **Data** — feed data as JSON *(required)*; optional **Looping** (defaults to 2) |
  | ✏️ | **Update** | Update an existing feed's data. `Data` is validated against the wizard schema. | **Feed ID** *(required)*, **Data** — JSON *(required)*; optional **Name**, **Language** (both kept unchanged if left empty), **Looping** (leave at 0 to keep current) |
  | 🔍 | **Get by ID** | Retrieve a single feed. | **Feed ID** *(required)* |
  | 📥 | **Get Files** | Download the generated files for a feed. | **Feed ID** *(required)* |
  | 🖼️ | **Get Images** | Get rendered image URLs for a feed. | **Feed ID** *(required)*, **Quality** (defaults to 93), **Type** (JPG / PNG / WEBP, defaults to JPG) |
  | 🔗 | **Get Permalinks** | Get permalink URLs for a feed. | **Feed ID** *(required)* |
  | 📋 | **Get Many** | Get feeds (filterable, sortable, paginated). | Optional **Wizard ID**, **Keyword**, **Type**, **Filters** (created/updated date ranges), **Order By** + **Order Direction**, **Page**, **Page Size** |

  > ℹ️ **Mixed-type runs.** **Get Images** and **Get Permalinks** are not supported for `html5` feeds. When a batch contains such items, those items are skipped with an n8n warning and empty output rather than failing the whole workflow.

  ### 🖼️ Gallery

  | | Operation | Description | Key inputs |
  |---|-----------|-------------|------------|
  | 📂 | **Get Many** | Get assets in a gallery (filterable, sortable, paginated). | **Gallery ID** *(required)*; optional **Keyword**, **Filters** (Category), **Order By** + **Order Direction**, **Page**, **Page Size** |

  ### 🧩 Wizard

  | | Operation | Description | Key inputs |
  |---|-----------|-------------|------------|
  | 🔍 | **Get by ID** | Retrieve a wizard's `schema`, `data` (defaults) and supported `languages`. The compressed `schema`/`data` fields are decompressed automatically. | **Wizard ID** *(required)* |
  | 📋 | **Get Many** | Get wizards (filterable, sortable, paginated). | Optional **Keyword**, **Type**, **Filters** (created/updated date ranges), **Order By** + **Order Direction**, **Page**, **Page Size** |

  ---

  ## Triggering Workflows (Webhooks & Schedules)

  Streameye does **not** ship a dedicated trigger node — the Streameye node is an **action** node that you place *after* a trigger. To start a workflow, use one of n8n's built-in triggers and then feed its data into the Streameye node.

  The two most common patterns:

  ### 🪝 Webhook (event-driven)

  Use n8n's core [**Webhook** node](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/) when an external system should push data into n8n in real time (for example, a sports-data service or an AI selection job that posts the next best games).

  1. Add a **Webhook** node as the workflow's trigger and copy its **Production URL**.
  2. Configure your external system to **POST** its payload to that URL.
  3. Wire the Webhook node into a **Streameye** node (e.g. *Feed → Update*) and map fields from `{{$json.body}}` into the feed `Data`.

  ### ⏱️ Schedule (polling)

  Use the core [**Schedule Trigger** node](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.scheduletrigger/) to run on an interval — ideal for periodically syncing a product catalogue or refreshing creatives.

  1. Add a **Schedule Trigger** and set the cadence (e.g. every 15 minutes, or daily at 06:00).
  2. Pull data from your source (database, API, spreadsheet), then pass it into a **Streameye** node.

  > 💡 You can also start any of these workflows manually with the **Manual Trigger** while you build and test.

  ---

  ## Example Usage

  > The snippets below show the *shape* of the data at each step. Map values with n8n expressions such as `{{$json.body.fixture.homeTeam}}`.

  ### Example 1 — Match-day banners that redirect permalinks to the next best game

  **Scenario:** an AI job selects the best upcoming football fixtures and posts them to n8n. The workflow updates an existing Streameye feed so its **permalinks start redirecting to the next best game** — pulling team crests from a Streameye gallery and enriching the creative with kickoff time and the last 5 meetings between the teams.

  **Flow:**

  1. **Webhook** *(trigger)* — receives the AI-selected fixture:
     ```json
     {
       "feedId": "fd_9aZ…",
       "home": "arsenal",
       "away": "chelsea",
       "kickoff": "2026-06-07T16:30:00Z"
     }
     ```
  2. **Data store / HTTP Request** — look up the **last 5 meetings** between the two teams from your own database.
  3. **Streameye → Feed → Update** — update the existing feed, injecting the match data. The crest fields are `asset_picker` fields bound to a Streameye gallery, so you can pass the **team names** and the node resolves them to the correct crest URLs automatically:
     ```json
     {
       "homeCrest": "arsenal",
       "awayCrest": "chelsea",
       "kickoff": "Sat 7 Jun · 17:30",
       "form": "W-D-L-W-W vs L-W-D-L-D"
     }
     ```
     > Because `homeCrest`/`awayCrest` are `asset_picker` fields, `"arsenal"` is swapped for that gallery asset's URL. A value that matches nothing is dropped so the wizard's default crest is used. See [`asset_picker` resolution](#asset_picker-resolution).
  4. **Streameye → Feed → Get Permalinks** — fetch the feed's permalinks. Because the **same** permalink now points at the updated feed, every banner already in the wild **redirects to the next best game** with no re-trafficking.

  The result: a single permalink per banner that always serves the freshest fixture.

  ### Example 2 — Scheduled retail product feed pushed to an ad platform

  **Scenario:** every morning, pull the latest product catalogue from a data store, update (or create) a Streameye feed, render the ads, and push the creatives to an ad platform.

  **Flow:**

  1. **Schedule Trigger** *(trigger)* — runs daily (e.g. 06:00).
  2. **Database / Spreadsheet node** — query the current product feed (image URLs, pricing, availability).
  3. **Streameye → Feed → Create** (first run) or **Feed → Update** (subsequent runs) — build the feed from a retail wizard, injecting product images **directly via their URLs**, plus pricing and availability:
     ```json
     {
       "productImage": "https://cdn.example.com/products/sku-1234.jpg",
       "price": "£49.99",
       "availability": "In stock"
     }
     ```
     > Any `asset_picker`/image field that already contains an `http(s)://` URL is kept as-is — no gallery lookup is performed.
  4. **Streameye → Feed → Get Images** — render the ads for the current products and collect the image URLs.
  5. **HTTP Request / ad-platform node** — push the rendered creatives to your ad platform.

  The result: a hands-off pipeline that keeps live product ads in sync with stock and pricing.

  ---

  ## How It Works

  ### Feed data validation (Create / Update)

  Before a feed is created or updated, the node loads the feed's wizard schema and validates the `Data` JSON against it:

  1. **Language check.** If you provide a `Language` and the wizard publishes a list of supported languages, an unsupported language throws an error listing the supported ones. (If the wizard exposes no language list, any value is accepted.)
  2. **Required fields.** Fields marked `required` in the wizard schema must be present and non-empty. This is enforced across the schema's `fields`, the fields inside `required` `groups`, the `conditionFields`, and `required` nested `items` within a field.
  3. **Defaults from the wizard.** Any required field that is missing or empty is filled from the wizard's default data when a default exists. The node adds an execution hint listing which fields were defaulted.
  4. **Validation errors.** If, after defaulting, any required field is still missing/empty, the node throws a single error listing every failing field.

  ### `asset_picker` resolution

  Wizards expose image/asset fields as the **`asset_picker`** type, each bound to a Streameye gallery (via a `galleryId` in the wizard schema). For each `asset_picker` property in your `Data` you may supply either a final asset URL **or** just an asset name — the node resolves it for you, so you don't have to look up gallery URLs manually.

  | Your value | What the node does |
  |------------|--------------------|
  | A URL (`https://…` or `http://…`) | Kept as-is — no lookup. |
  | Any other text (an asset name / keyword) | Searches that field's gallery for the keyword and substitutes the **top match's** asset URL. |
  | A keyword with **no** matching gallery asset | The property is **removed**, so the feed falls back to the **wizard's default** value for that field. |

  Resolution runs for both **Create** and **Update**, and the node adds an execution hint listing which `asset_picker` fields were resolved to URLs and which were dropped.

  **Example** — a wizard with an `asset_picker` field `team1` bound to a teams gallery:

  | `Data` you provide | Result sent to the API |
  |--------------------|------------------------|
  | `{ "team1": "https://static.streameye.net/galleries/4jt…/arsenal" }` | Unchanged (already a URL) |
  | `{ "team1": "arsenal" }` | Resolved to the matching gallery asset's URL |
  | `{ "team1": "no-such-team" }` | `team1` removed → wizard default is used |

  ### Compressed fields

  Some Streameye fields are stored gzip-compressed and base64-encoded (e.g. a wizard's `schema` and `data`). The node decompresses these on read and compresses feed `data` on write automatically — **you always work with plain JSON in n8n.**

  ---

  ## Compatibility

  - Requires an n8n version that supports community nodes (n8n Nodes API v1).
  - Requires Node.js `>=20.15`.
  - Built and linted in `strict` mode, eligible for n8n Cloud verification.
  - No external runtime dependencies (uses n8n's authenticated HTTP helpers only).

  > New to n8n? See the [Try it out](https://docs.n8n.io/try-it-out/) documentation to get started.

  ---

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [Streameye](https://streameye.com/)
  - [n8n Webhook node](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/)
  - [n8n Schedule Trigger node](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.scheduletrigger/)

  ---

  ## Version History

  ### 1.0.x

  First stable release. Feed (Create, Update, Get by ID, Get Files, Get Images, Get Permalinks, Get Many), Gallery (Get Many) and Wizard (Get by ID, Get Many) operations, OAuth2 authentication, feed-data validation against the wizard schema, automatic `asset_picker` resolution, and automatic gzip/base64 (de)compression of wizard `schema`/`data`. Published via GitHub Actions with npm provenance.

  See [CHANGELOG.md](./CHANGELOG.md) for the full history.

  ---

  ## License

  [MIT](./LICENSE) © StreamEye

ai_documentation_summary:
  {"purpose":"This node lets n8n workflows interact with the Streameye API to build, update, render, and distribute data-driven creatives. It supports managing feeds, galleries, and wizards, including generating ad tags, rendered images, permalinks, and downloadable feed files.","capabilities":["Create feeds from wizards with schema-validated JSON data","Update existing feeds with validated JSON data","Retrieve a feed by ID","Download generated feed files","Generate rendered image URLs for feeds","Generate permalink URLs for feeds","List and filter feeds with sorting and pagination","Browse gallery assets with filtering, sorting, and pagination","Browse wizards with filtering, sorting, and pagination","Automatically resolve gallery assets by name when building feed data"],"authentication":"OAuth2 (Authorization Code) using Streameye OAuth2 API credentials","commonUseCases":["Automating the creation and updating of dynamic banner or feed creatives from workflow data","Pulling rendered creatives or permalinks from Streameye and sending them to ad platforms or downstream systems","Browsing or syncing gallery assets and wizards for creative production workflows"],"limitations":["Get Images and Get Permalinks are not supported for html5 feeds; affected items are skipped with a warning instead of failing the workflow"],"relatedNodes":[]}


node_type: n8n-nodes-musicgpt.musicGptTrigger
package_name: n8n-nodes-musicgpt
display_name: MusicGPT Trigger
description: Triggers on MusicGPT conversion events
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: sakarlalals
author_github_url: https://github.com/lalalsresearch/
npm_package_name: n8n-nodes-musicgpt
npm_version: 0.1.11
community_fetched_at: 2026-07-14T14:40:34.516Z
ai_summary_generated_at: 2026-06-26 10:29:17
npm_readme:
  # n8n-nodes-musicgpt

  n8n community node for [MusicGPT](https://musicgpt.com) - AI-powered audio processing, music generation, and voice transformation.

  [![npm version](https://img.shields.io/npm/v/n8n-nodes-musicgpt)](https://www.npmjs.com/package/n8n-nodes-musicgpt)
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
  [![n8n community node](https://img.shields.io/badge/n8n-community--node-orange)](https://n8n.io)

  ## Features

  - 🎵 **Audio Generation**: Create music from text prompts or lyrics
  - 🎙️ **Text-to-Speech**: Convert text to natural-sounding speech with voice and gender options
  - 🎤 **Voice Transformation**: Change voices in audio files with 100+ voice options
  - 🎸 **Stem Separation**: Extract vocals, instruments, and 20+ individual stems
  - 🎛️ **Audio Processing**: Denoise, deecho, dereverb, master, trim, speed, convert
  - 🎹 **Advanced Generation**: Remix, extend, inpaint, add vocals, generate sound effects
  - 🔍 **Voice Search**: Find and list available voices dynamically
  - ⚡ **Triggers**: Monitor conversions and automate workflows
  - 🌐 **Webhook Support**: Async processing with callbacks
  - 📦 **Binary File Handling**: Process files from previous nodes seamlessly

  ## Quick Start

  ### Installation

  #### Via n8n Community Nodes

  1. Open your n8n instance
  2. Go to **Settings** → **Community Nodes**
  3. Click **Install**
  4. Enter: `n8n-nodes-musicgpt`
  5. Click **Install**

  #### Via npm (Self-Hosted)

  ```bash
  cd ~/.n8n/nodes
  npm install n8n-nodes-musicgpt
  ```

  ### Setup Credentials

  1. Get your API key from [musicgpt.com](https://musicgpt.com)
  2. In n8n, go to **Credentials** → **New**
  3. Search for "MusicGPT API"
  4. Enter your API key

  ### Your First Workflow

  ```
  Manual Trigger →
  MusicGPT (Generate Audio):
    - Prompt: "Upbeat electronic dance music"
  → Wait (45 seconds) →
  MusicGPT (Get Conversion by ID) →
  Process result
  ```

  ## Operations Overview

  ### 📦 What's Included

  - **1 Action Node**: MusicGPT (25 operations across 4 resources)
  - **1 Trigger Node**: MusicGPT Trigger (2 trigger types)

  ### Audio Generation (6 operations)

  | Operation | Description | Processing Time |
  |-----------|-------------|----------------|
  | **Generate Audio** | Create music from prompts or lyrics | 30-60s |
  | **Text to Speech** | Convert text to speech with voice and gender options | 15-25s |
  | **Voice Changer** | Transform voices in audio | 20-40s |
  | **Cover Song** | Create AI covers with different voices | 40-70s |
  | **Extraction** | Separate 20+ stems (vocals, instruments, etc.) | 40-90s |
  | **Denoise** | Remove background noise | 15-25s |

  ### Audio Processing (9 operations)

  | Operation | Description | Processing Time |
  |-----------|-------------|----------------|
  | **Deecho** | Remove echo | 20-30s |
  | **Dereverb** | Remove reverb | 20-30s |
  | **Audio Mastering** | Master to professional quality | 30-50s |
  | **Trim Audio** | Cut to time range | 5-15s |
  | **Change Speed** | Adjust playback speed | 10-20s |
  | **Audio to MIDI** | Convert to MIDI notation | 30-45s |
  | **Extract Key/BPM** | Detect key and tempo | 10-20s |
  | **File Convert** | Convert formats/sample rates | 15-30s |
  | **Transcribe** | Speech to text (10+ languages) | 15-40s |

  ### Advanced Generation (6 operations)

  | Operation | Description | Processing Time |
  |-----------|-------------|----------------|
  | **Remix** | AI-powered remixing | 60-120s |
  | **Extend** | Extend audio duration | 60-100s |
  | **Inpaint** | Replace audio sections | 40-70s |
  | **Sing Over Instrumental** | Add vocals to instrumentals | 60-100s |
  | **Sound Generator** | Generate sound effects | 20-40s |
  | **Prompt to Lyrics** | Generate lyrics | 5-15s |

  ### Searches (4 operations)

  | Operation | Description |
  |-----------|-------------|
  | **Get All Voices** | List available voices with pagination |
  | **Search Voices** | Search voices by name |
  | **Get Conversion by ID** | Check status and retrieve results |
  | **Get Conversions by User** | Get user history with filters |

  ### Triggers (2 types)

  | Trigger | Description |
  |---------|-------------|
  | **Get Conversion** | Poll specific conversion until complete |
  | **New Conversions** | Trigger on new user conversions |

  ## Documentation

  | Resource | Description |
  |----------|-------------|
  | **[Full Documentation](./DOCUMENTATION.md)** | Complete API reference with parameters, examples, and patterns |
  | **[Quick Reference](./API-REFERENCE.md)** | Fast lookup for all operations and parameters |

  ## Usage Examples

  ### Example 1: Text-to-Speech Podcast Generator

  ```
  Schedule Trigger (weekly) →
  Fetch Script (HTTP Request) →
  Text to Speech:
    - Text: {{ $json.script }}
    - Language: English
    - Voice: Professional narrator
  → Wait (20s) →
  Get Conversion →
  Upload to Podcast Host →
  Notify Team (Slack)
  ```

  ### Example 2: AI Cover Song API

  ```
  Webhook (receive song URL + artist) →
  Search Voices (find artist voice) →
  Cover Song (generate with voice) →
  Respond (task_id)

  (Separate Webhook)
  Completion Callback →
  Upload to Storage →
  Notify User
  ```

  ### Example 3: Audio Processing Pipeline

  ```
  File Upload Trigger →
  Parallel Processing:
    ├─ Denoise
    ├─ Extract Key/BPM
    └─ Transcribe
  → Merge Results →
  Audio Mastering →
  Save to Database
  ```

  ### Example 4: Music Production Workflow

  ```
  Manual Trigger →
  Generate Audio (from lyrics) →
  Wait (45s) →
  Get Conversion →
  Extraction (separate stems) →
  Wait (60s) →
  Remix (transform style) →
  Download & Archive
  ```

  ### Example 5: Automated Content Creation

  ```
  MusicGPT Trigger (New Conversions) →
  Filter (music_generation, completed) →
  Auto-Master Audio →
  Convert to Multiple Formats →
  Upload to CDN →
  Update Database →
  Email Notification
  ```

  ## Supported Formats & Features

  ### Audio Formats
  - **Input**: MP3, WAV, FLAC, OGG, AAC, WEBM, M4A
  - **Output**: MP3, WAV, FLAC, OGG, AAC, WEBM

  ### Transcription Languages
  English, Spanish, French, German, Italian, Portuguese, Chinese, Japanese, Korean, Auto-detect

  ### Available Stems (Extraction)
  - **Vocals**: vocals, male_vocal, female_vocal, lead_vocal, back_vocal
  - **Rhythm**: drums, kick, snare, toms, hi-hat, ride, crash
  - **Strings**: guitar, bass, rhythm_guitar, solo_guitar, acoustic_guitar, electric_guitar
  - **Keys**: piano, keys, strings, winds
  - **Full**: instrumental (all instruments)

  ### Sample Rates
  8kHz, 16kHz, 22.05kHz, 24kHz, 32kHz, 44.1kHz (CD), 48kHz (Pro), 96kHz (Hi-Res), 192kHz (Ultra)

  ## Advanced Features

  ### Webhook Callbacks

  Enable async processing for long operations:

  ```javascript
  {
    "webhook_url": "https://your-webhook.com/callback"
  }
  ```

  Receive completion notifications:
  ```json
  {
    "event": "conversion.completed",
    "task_id": "task_abc123",
    "status": "completed",
    "output_url": "https://cdn.musicgpt.com/result.mp3"
  }
  ```

  ### Binary File Processing

  Process files from previous nodes:

  ```
  HTTP Request (download) →
    └─ Response: File
  MusicGPT:
    └─ Audio Source: File
    └─ Binary Property: "data"
  ```

  ### Dynamic Voice Loading

  Voice selection fields dynamically load 100+ available voices from the API, with search and filter capabilities.

  ## Troubleshooting

  | Issue | Solution |
  |-------|----------|
  | "Authentication failed" | Verify API key in credentials |
  | "Conversion not found" | Increase wait time (operations vary: 15s-120s) |
  | "Invalid voice_id" | Use "Get All Voices" to see valid IDs |
  | "File too large" | Compress or split audio files |
  | "Rate limit exceeded" | Add delays between requests or upgrade plan |
  | "Binary data error" | Ensure previous node outputs file data |

  ## Contributing

  Contributions are welcome! See the [GitHub repository](https://github.com/lalalsresearch/n8n-nodes-musicgpt) for development setup and guidelines.

  ## Support

  - **📖 Documentation**: [DOCUMENTATION.md](./DOCUMENTATION.md)
  - **⚡ Quick Reference**: [API-REFERENCE.md](./API-REFERENCE.md)
  - **💬 Community**: [n8n Forum](https://community.n8n.io)
  - **📧 Email**: support@musicgpt.com

  ## Resources

  - **MusicGPT API Docs**: [docs.musicgpt.com](https://docs.musicgpt.com)
  - **n8n Documentation**: [docs.n8n.io](https://docs.n8n.io)
  - **Creating n8n Nodes**: [docs.n8n.io/integrations/creating-nodes](https://docs.n8n.io/integrations/creating-nodes/)
  - **n8n Community**: [community.n8n.io](https://community.n8n.io)

  ## License

  MIT License - see [LICENSE](LICENSE) file for details.

  ## Credits

  - **MusicGPT API**: [musicgpt.com](https://musicgpt.com)
  - **n8n Platform**: [n8n.io](https://n8n.io)

  ---

  **Made with ❤️ for the n8n community**

ai_documentation_summary:
  {"purpose":"Triggers n8n workflows when MusicGPT conversion events occur, including monitoring new conversions and polling a specific conversion until it completes. It is part of the MusicGPT community node for AI audio generation and processing workflows.","capabilities":["Trigger on new MusicGPT conversions","Poll a specific conversion until complete","Monitor conversion status/results for automation","Integrate with MusicGPT async webhook/callback workflows"],"authentication":"MusicGPT API key required","commonUseCases":["Start workflows when MusicGPT jobs finish","Automate post-processing after new MusicGPT conversions","Poll long-running audio generation or transformation jobs","Build webhook-driven audio production pipelines"],"limitations":["README only documents 2 trigger types for this node","MusicGPT conversions may be asynchronous and require waiting/polling"],"relatedNodes":["MusicGPT"]}


node_type: n8n-nodes-musicgpt.musicGpt
package_name: n8n-nodes-musicgpt
display_name: MusicGPT
description: Interact with MusicGPT API for audio processing and voice management
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: sakarlalals
author_github_url: https://github.com/lalalsresearch/
npm_package_name: n8n-nodes-musicgpt
npm_version: 0.1.11
community_fetched_at: 2026-07-14T14:40:34.518Z
ai_summary_generated_at: 2026-06-26 10:29:17
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "audioGeneration",
      "options": [
        {
          "name": "Advanced Generation",
          "value": "advancedGeneration",
          "description": "Advanced audio generation and manipulation"
        },
        {
          "name": "Audio Generation",
          "value": "audioGeneration",
          "description": "Generate and process audio"
        },
        {
          "name": "Audio Processing",
          "value": "audioProcessing",
          "description": "Process and enhance audio files"
        },
        {
          "name": "Search",
          "value": "search",
          "description": "Search and retrieve voices, conversions, and data"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "generateAudio",
      "options": [
        {
          "name": "Cover Song",
          "value": "coverSong",
          "action": "Create cover",
          "description": "Create a cover version with different voice"
        },
        {
          "name": "Denoise",
          "value": "denoise",
          "action": "Denoise audio",
          "description": "Remove noise from audio"
        },
        {
          "name": "Extraction",
          "value": "extraction",
          "action": "Extract audio",
          "description": "Extract vocals, instrumentals, or stems"
        },
        {
          "name": "Generate Audio",
          "value": "generateAudio",
          "action": "Generate audio",
          "description": "Generate music from prompts or lyrics"
        },
        {
          "name": "Text to Speech",
          "value": "textToSpeech",
          "action": "Text to speech",
          "description": "Convert text to speech"
        },
        {
          "name": "Voice Changer",
          "value": "voiceChanger",
          "action": "Change voice",
          "description": "Transform voice in audio"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "audioGeneration"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "deecho",
      "options": [
        {
          "name": "Audio Mastering",
          "value": "audioMastering",
          "action": "Master audio",
          "description": "Master audio for professional quality"
        },
        {
          "name": "Audio to MIDI",
          "value": "audioToMidi",
          "action": "Convert to MIDI",
          "description": "Convert audio to MIDI"
        },
        {
          "name": "Audio Transcribe",
          "value": "audioTranscribe",
          "action": "Transcribe audio",
          "description": "Transcribe speech to text"
        },
        {
          "name": "Change Audio Speed",
          "value": "changeAudioSpeed",
          "action": "Change speed",
          "description": "Adjust playback speed"
        },
        {
          "name": "Deecho",
          "value": "deecho",
          "action": "Remove echo",
          "description": "Remove echo from audio"
        },
        {
          "name": "Dereverb",
          "value": "dereverb",
          "action": "Remove reverb",
          "description": "Remove reverb from audio"
        },
        {
          "name": "Extract Key/BPM",
          "value": "extractKeyBpm",
          "action": "Extract key and BPM",
          "description": "Extract musical key and tempo"
        },
        {
          "name": "File Convert",
          "value": "fileConvert",
          "action": "Convert format",
          "description": "Convert audio format"
        },
        {
          "name": "Trim Audio",
          "value": "trimAudio",
          "action": "Trim audio",
          "description": "Cut audio to specific time range"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "audioProcessing"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "remix",
      "options": [
        {
          "name": "Extend",
          "value": "extend",
          "action": "Extend audio",
          "description": "Extend audio duration"
        },
        {
          "name": "Inpaint",
          "value": "inpaint",
          "action": "Inpaint audio",
          "description": "Replace a section of audio"
        },
        {
          "name": "Prompt to Lyrics",
          "value": "promptToLyrics",
          "action": "Generate lyrics",
          "description": "Generate lyrics from prompt"
        },
        {
          "name": "Remix",
          "value": "remix",
          "action": "Remix audio",
          "description": "Remix audio with AI"
        },
        {
          "name": "Sing Over Instrumental",
          "value": "singOverInstrumental",
          "action": "Sing over instrumental",
          "description": "Add vocals to instrumental track"
        },
        {
          "name": "Sound Generator",
          "value": "soundGenerator",
          "action": "Generate sound",
          "description": "Generate sound effects from text"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "advancedGeneration"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAllVoices",
      "options": [
        {
          "name": "Get All Voices",
          "value": "getAllVoices",
          "action": "Get all voices",
          "description": "Fetch all available voices with their IDs and metadata"
        },
        {
          "name": "Get Conversion by ID",
          "value": "getConversionById",
          "action": "Get conversion by ID",
          "description": "Retrieve a specific conversion by type and ID"
        },
        {
          "name": "Get Conversions by User",
          "value": "getConversionsByUser",
          "action": "Get conversions by user",
          "description": "Fetch your conversions with optional filters and pagination"
        },
        {
          "name": "Search Voices",
          "value": "searchVoices",
          "action": "Search voices",
          "description": "Search voices by name and return matching results"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "search"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Cover Song",
      "value": "coverSong",
      "action": "Create cover",
      "description": "Create a cover version with different voice",
      "resource": "audioGeneration"
    },
    {
      "name": "Denoise",
      "value": "denoise",
      "action": "Denoise audio",
      "description": "Remove noise from audio",
      "resource": "audioGeneration"
    },
    {
      "name": "Extraction",
      "value": "extraction",
      "action": "Extract audio",
      "description": "Extract vocals, instrumentals, or stems",
      "resource": "audioGeneration"
    },
    {
      "name": "Generate Audio",
      "value": "generateAudio",
      "action": "Generate audio",
      "description": "Generate music from prompts or lyrics",
      "resource": "audioGeneration"
    },
    {
      "name": "Text to Speech",
      "value": "textToSpeech",
      "action": "Text to speech",
      "description": "Convert text to speech",
      "resource": "audioGeneration"
    },
    {
      "name": "Voice Changer",
      "value": "voiceChanger",
      "action": "Change voice",
      "description": "Transform voice in audio",
      "resource": "audioGeneration"
    },
    {
      "name": "Audio Mastering",
      "value": "audioMastering",
      "action": "Master audio",
      "description": "Master audio for professional quality",
      "resource": "audioProcessing"
    },
    {
      "name": "Audio to MIDI",
      "value": "audioToMidi",
      "action": "Convert to MIDI",
      "description": "Convert audio to MIDI",
      "resource": "audioProcessing"
    },
    {
      "name": "Audio Transcribe",
      "value": "audioTranscribe",
      "action": "Transcribe audio",
      "description": "Transcribe speech to text",
      "resource": "audioProcessing"
    },
    {
      "name": "Change Audio Speed",
      "value": "changeAudioSpeed",
      "action": "Change speed",
      "description": "Adjust playback speed",
      "resource": "audioProcessing"
    },
    {
      "name": "Deecho",
      "value": "deecho",
      "action": "Remove echo",
      "description": "Remove echo from audio",
      "resource": "audioProcessing"
    },
    {
      "name": "Dereverb",
      "value": "dereverb",
      "action": "Remove reverb",
      "description": "Remove reverb from audio",
      "resource": "audioProcessing"
    },
    {
      "name": "Extract Key/BPM",
      "value": "extractKeyBpm",
      "action": "Extract key and BPM",
      "description": "Extract musical key and tempo",
      "resource": "audioProcessing"
    },
    {
      "name": "File Convert",
      "value": "fileConvert",
      "action": "Convert format",
      "description": "Convert audio format",
      "resource": "audioProcessing"
    },
    {
      "name": "Trim Audio",
      "value": "trimAudio",
      "action": "Trim audio",
      "description": "Cut audio to specific time range",
      "resource": "audioProcessing"
    },
    {
      "name": "Extend",
      "value": "extend",
      "action": "Extend audio",
      "description": "Extend audio duration",
      "resource": "advancedGeneration"
    },
    {
      "name": "Inpaint",
      "value": "inpaint",
      "action": "Inpaint audio",
      "description": "Replace a section of audio",
      "resource": "advancedGeneration"
    },
    {
      "name": "Prompt to Lyrics",
      "value": "promptToLyrics",
      "action": "Generate lyrics",
      "description": "Generate lyrics from prompt",
      "resource": "advancedGeneration"
    },
    {
      "name": "Remix",
      "value": "remix",
      "action": "Remix audio",
      "description": "Remix audio with AI",
      "resource": "advancedGeneration"
    },
    {
      "name": "Sing Over Instrumental",
      "value": "singOverInstrumental",
      "action": "Sing over instrumental",
      "description": "Add vocals to instrumental track",
      "resource": "advancedGeneration"
    },
    {
      "name": "Sound Generator",
      "value": "soundGenerator",
      "action": "Generate sound",
      "description": "Generate sound effects from text",
      "resource": "advancedGeneration"
    },
    {
      "name": "Get All Voices",
      "value": "getAllVoices",
      "action": "Get all voices",
      "description": "Fetch all available voices with their IDs and metadata",
      "resource": "search"
    },
    {
      "name": "Get Conversion by ID",
      "value": "getConversionById",
      "action": "Get conversion by ID",
      "description": "Retrieve a specific conversion by type and ID",
      "resource": "search"
    },
    {
      "name": "Get Conversions by User",
      "value": "getConversionsByUser",
      "action": "Get conversions by user",
      "description": "Fetch your conversions with optional filters and pagination",
      "resource": "search"
    },
    {
      "name": "Search Voices",
      "value": "searchVoices",
      "action": "Search voices",
      "description": "Search voices by name and return matching results",
      "resource": "search"
    }
  ]

npm_readme:
  # n8n-nodes-musicgpt

  n8n community node for [MusicGPT](https://musicgpt.com) - AI-powered audio processing, music generation, and voice transformation.

  [![npm version](https://img.shields.io/npm/v/n8n-nodes-musicgpt)](https://www.npmjs.com/package/n8n-nodes-musicgpt)
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
  [![n8n community node](https://img.shields.io/badge/n8n-community--node-orange)](https://n8n.io)

  ## Features

  - 🎵 **Audio Generation**: Create music from text prompts or lyrics
  - 🎙️ **Text-to-Speech**: Convert text to natural-sounding speech with voice and gender options
  - 🎤 **Voice Transformation**: Change voices in audio files with 100+ voice options
  - 🎸 **Stem Separation**: Extract vocals, instruments, and 20+ individual stems
  - 🎛️ **Audio Processing**: Denoise, deecho, dereverb, master, trim, speed, convert
  - 🎹 **Advanced Generation**: Remix, extend, inpaint, add vocals, generate sound effects
  - 🔍 **Voice Search**: Find and list available voices dynamically
  - ⚡ **Triggers**: Monitor conversions and automate workflows
  - 🌐 **Webhook Support**: Async processing with callbacks
  - 📦 **Binary File Handling**: Process files from previous nodes seamlessly

  ## Quick Start

  ### Installation

  #### Via n8n Community Nodes

  1. Open your n8n instance
  2. Go to **Settings** → **Community Nodes**
  3. Click **Install**
  4. Enter: `n8n-nodes-musicgpt`
  5. Click **Install**

  #### Via npm (Self-Hosted)

  ```bash
  cd ~/.n8n/nodes
  npm install n8n-nodes-musicgpt
  ```

  ### Setup Credentials

  1. Get your API key from [musicgpt.com](https://musicgpt.com)
  2. In n8n, go to **Credentials** → **New**
  3. Search for "MusicGPT API"
  4. Enter your API key

  ### Your First Workflow

  ```
  Manual Trigger →
  MusicGPT (Generate Audio):
    - Prompt: "Upbeat electronic dance music"
  → Wait (45 seconds) →
  MusicGPT (Get Conversion by ID) →
  Process result
  ```

  ## Operations Overview

  ### 📦 What's Included

  - **1 Action Node**: MusicGPT (25 operations across 4 resources)
  - **1 Trigger Node**: MusicGPT Trigger (2 trigger types)

  ### Audio Generation (6 operations)

  | Operation | Description | Processing Time |
  |-----------|-------------|----------------|
  | **Generate Audio** | Create music from prompts or lyrics | 30-60s |
  | **Text to Speech** | Convert text to speech with voice and gender options | 15-25s |
  | **Voice Changer** | Transform voices in audio | 20-40s |
  | **Cover Song** | Create AI covers with different voices | 40-70s |
  | **Extraction** | Separate 20+ stems (vocals, instruments, etc.) | 40-90s |
  | **Denoise** | Remove background noise | 15-25s |

  ### Audio Processing (9 operations)

  | Operation | Description | Processing Time |
  |-----------|-------------|----------------|
  | **Deecho** | Remove echo | 20-30s |
  | **Dereverb** | Remove reverb | 20-30s |
  | **Audio Mastering** | Master to professional quality | 30-50s |
  | **Trim Audio** | Cut to time range | 5-15s |
  | **Change Speed** | Adjust playback speed | 10-20s |
  | **Audio to MIDI** | Convert to MIDI notation | 30-45s |
  | **Extract Key/BPM** | Detect key and tempo | 10-20s |
  | **File Convert** | Convert formats/sample rates | 15-30s |
  | **Transcribe** | Speech to text (10+ languages) | 15-40s |

  ### Advanced Generation (6 operations)

  | Operation | Description | Processing Time |
  |-----------|-------------|----------------|
  | **Remix** | AI-powered remixing | 60-120s |
  | **Extend** | Extend audio duration | 60-100s |
  | **Inpaint** | Replace audio sections | 40-70s |
  | **Sing Over Instrumental** | Add vocals to instrumentals | 60-100s |
  | **Sound Generator** | Generate sound effects | 20-40s |
  | **Prompt to Lyrics** | Generate lyrics | 5-15s |

  ### Searches (4 operations)

  | Operation | Description |
  |-----------|-------------|
  | **Get All Voices** | List available voices with pagination |
  | **Search Voices** | Search voices by name |
  | **Get Conversion by ID** | Check status and retrieve results |
  | **Get Conversions by User** | Get user history with filters |

  ### Triggers (2 types)

  | Trigger | Description |
  |---------|-------------|
  | **Get Conversion** | Poll specific conversion until complete |
  | **New Conversions** | Trigger on new user conversions |

  ## Documentation

  | Resource | Description |
  |----------|-------------|
  | **[Full Documentation](./DOCUMENTATION.md)** | Complete API reference with parameters, examples, and patterns |
  | **[Quick Reference](./API-REFERENCE.md)** | Fast lookup for all operations and parameters |

  ## Usage Examples

  ### Example 1: Text-to-Speech Podcast Generator

  ```
  Schedule Trigger (weekly) →
  Fetch Script (HTTP Request) →
  Text to Speech:
    - Text: {{ $json.script }}
    - Language: English
    - Voice: Professional narrator
  → Wait (20s) →
  Get Conversion →
  Upload to Podcast Host →
  Notify Team (Slack)
  ```

  ### Example 2: AI Cover Song API

  ```
  Webhook (receive song URL + artist) →
  Search Voices (find artist voice) →
  Cover Song (generate with voice) →
  Respond (task_id)

  (Separate Webhook)
  Completion Callback →
  Upload to Storage →
  Notify User
  ```

  ### Example 3: Audio Processing Pipeline

  ```
  File Upload Trigger →
  Parallel Processing:
    ├─ Denoise
    ├─ Extract Key/BPM
    └─ Transcribe
  → Merge Results →
  Audio Mastering →
  Save to Database
  ```

  ### Example 4: Music Production Workflow

  ```
  Manual Trigger →
  Generate Audio (from lyrics) →
  Wait (45s) →
  Get Conversion →
  Extraction (separate stems) →
  Wait (60s) →
  Remix (transform style) →
  Download & Archive
  ```

  ### Example 5: Automated Content Creation

  ```
  MusicGPT Trigger (New Conversions) →
  Filter (music_generation, completed) →
  Auto-Master Audio →
  Convert to Multiple Formats →
  Upload to CDN →
  Update Database →
  Email Notification
  ```

  ## Supported Formats & Features

  ### Audio Formats
  - **Input**: MP3, WAV, FLAC, OGG, AAC, WEBM, M4A
  - **Output**: MP3, WAV, FLAC, OGG, AAC, WEBM

  ### Transcription Languages
  English, Spanish, French, German, Italian, Portuguese, Chinese, Japanese, Korean, Auto-detect

  ### Available Stems (Extraction)
  - **Vocals**: vocals, male_vocal, female_vocal, lead_vocal, back_vocal
  - **Rhythm**: drums, kick, snare, toms, hi-hat, ride, crash
  - **Strings**: guitar, bass, rhythm_guitar, solo_guitar, acoustic_guitar, electric_guitar
  - **Keys**: piano, keys, strings, winds
  - **Full**: instrumental (all instruments)

  ### Sample Rates
  8kHz, 16kHz, 22.05kHz, 24kHz, 32kHz, 44.1kHz (CD), 48kHz (Pro), 96kHz (Hi-Res), 192kHz (Ultra)

  ## Advanced Features

  ### Webhook Callbacks

  Enable async processing for long operations:

  ```javascript
  {
    "webhook_url": "https://your-webhook.com/callback"
  }
  ```

  Receive completion notifications:
  ```json
  {
    "event": "conversion.completed",
    "task_id": "task_abc123",
    "status": "completed",
    "output_url": "https://cdn.musicgpt.com/result.mp3"
  }
  ```

  ### Binary File Processing

  Process files from previous nodes:

  ```
  HTTP Request (download) →
    └─ Response: File
  MusicGPT:
    └─ Audio Source: File
    └─ Binary Property: "data"
  ```

  ### Dynamic Voice Loading

  Voice selection fields dynamically load 100+ available voices from the API, with search and filter capabilities.

  ## Troubleshooting

  | Issue | Solution |
  |-------|----------|
  | "Authentication failed" | Verify API key in credentials |
  | "Conversion not found" | Increase wait time (operations vary: 15s-120s) |
  | "Invalid voice_id" | Use "Get All Voices" to see valid IDs |
  | "File too large" | Compress or split audio files |
  | "Rate limit exceeded" | Add delays between requests or upgrade plan |
  | "Binary data error" | Ensure previous node outputs file data |

  ## Contributing

  Contributions are welcome! See the [GitHub repository](https://github.com/lalalsresearch/n8n-nodes-musicgpt) for development setup and guidelines.

  ## Support

  - **📖 Documentation**: [DOCUMENTATION.md](./DOCUMENTATION.md)
  - **⚡ Quick Reference**: [API-REFERENCE.md](./API-REFERENCE.md)
  - **💬 Community**: [n8n Forum](https://community.n8n.io)
  - **📧 Email**: support@musicgpt.com

  ## Resources

  - **MusicGPT API Docs**: [docs.musicgpt.com](https://docs.musicgpt.com)
  - **n8n Documentation**: [docs.n8n.io](https://docs.n8n.io)
  - **Creating n8n Nodes**: [docs.n8n.io/integrations/creating-nodes](https://docs.n8n.io/integrations/creating-nodes/)
  - **n8n Community**: [community.n8n.io](https://community.n8n.io)

  ## License

  MIT License - see [LICENSE](LICENSE) file for details.

  ## Credits

  - **MusicGPT API**: [musicgpt.com](https://musicgpt.com)
  - **n8n Platform**: [n8n.io](https://n8n.io)

  ---

  **Made with ❤️ for the n8n community**

ai_documentation_summary:
  {"purpose":"MusicGPT is an n8n community node for interacting with the MusicGPT API to generate, transform, process, and transcribe audio. It supports both direct actions and trigger-based automation for asynchronous conversion workflows.","capabilities":["Generate audio from text prompts or lyrics","Convert text to speech with voice and gender options","Transform voices in audio files and support voice search/listing","Separate stems from audio, including vocals and instruments","Perform audio processing such as denoise, deecho, dereverb, mastering, trimming, speed changes, conversion, and key/BPM extraction","Convert audio to MIDI and transcribe speech to text in multiple languages","Create remixes, extend audio, inpaint sections, add vocals to instrumentals, generate sound effects, and generate lyrics","Check conversion status by ID and retrieve user conversion history","Trigger workflows on new conversions or when a specific conversion completes","Handle binary audio files from previous nodes and support webhook/callback-based async processing"],"authentication":"API key required (MusicGPT API key credential)","commonUseCases":["AI music generation from prompts or lyrics","Text-to-speech content creation for podcasts or videos","Voice conversion and AI cover song generation","Audio cleanup and mastering pipelines","Stem separation for remixing or music production"],"limitations":["Asynchronous jobs often require waiting or polling for completion","Processing times vary by operation and can be relatively long for generation and transformation tasks","Supported transcription languages are limited to the listed set plus auto-detect","Audio format support is limited to the input/output formats listed in the README"],"relatedNodes":["Wait","HTTP Request","Webhook","Schedule Trigger","Manual Trigger"]}


node_type: n8n-nodes-exayard.exayard
package_name: n8n-nodes-exayard
display_name: Exayard
description: AI-powered construction takeoffs, estimates, and bids
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: bfischer1121
author_github_url: https://github.com/ShortGenius/
npm_package_name: n8n-nodes-exayard
npm_version: 0.3.7
community_fetched_at: 2026-07-14T14:40:34.519Z
ai_summary_generated_at: 2026-06-26 10:29:17
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "project",
      "options": [
        {
          "name": "Project",
          "value": "project"
        },
        {
          "name": "Assessment",
          "value": "assessment"
        },
        {
          "name": "Estimate",
          "value": "estimate"
        },
        {
          "name": "Bid",
          "value": "bid"
        },
        {
          "name": "Vendor Price",
          "value": "vendorPrice"
        },
        {
          "name": "Quote",
          "value": "quote"
        },
        {
          "name": "File",
          "value": "file"
        },
        {
          "name": "Webhook",
          "value": "webhook"
        },
        {
          "name": "Help",
          "value": "help"
        },
        {
          "name": "Me",
          "value": "me"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List",
          "value": "list",
          "action": "List projects",
          "description": "List projects in an organization"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a project",
          "description": "Get a single project by ID"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create a project",
          "description": "Create a new project"
        },
        {
          "name": "List Pages",
          "value": "listPages",
          "action": "List pages in a project",
          "description": "List a project's pages (grouped by file)"
        },
        {
          "name": "Archive",
          "value": "archive",
          "action": "Archive a project",
          "description": "Archive an existing project"
        },
        {
          "name": "Export",
          "value": "export",
          "action": "Export a project",
          "description": "Export project data"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "project"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "upload",
      "options": [
        {
          "name": "Upload",
          "value": "upload",
          "action": "Upload a file to a project",
          "description": "Upload a binary file (e.g. a PDF) to a project"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "file"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List Endpoints",
          "value": "list",
          "action": "List webhook endpoints"
        },
        {
          "name": "Create Endpoint",
          "value": "create",
          "action": "Create a webhook endpoint"
        },
        {
          "name": "Delete Endpoint",
          "value": "delete",
          "action": "Delete a webhook endpoint"
        },
        {
          "name": "List Deliveries",
          "value": "deliveries",
          "action": "List deliveries for an endpoint"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "webhook"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Search",
          "value": "search",
          "action": "Search help articles"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "help"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get the authenticated identity"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "me"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "generate",
      "options": [
        {
          "name": "Generate",
          "value": "generate",
          "action": "Generate an estimate",
          "description": "Generate an estimate document from a project"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "estimate"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "generate",
      "options": [
        {
          "name": "Generate",
          "value": "generate",
          "action": "Generate a bid",
          "description": "Generate a bid document from a project"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "bid"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "set",
      "options": [
        {
          "name": "Set",
          "value": "set",
          "action": "Set a vendor price for a product",
          "description": "Create or replace a product's price for a vendor"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "vendorPrice"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Request Quote",
          "value": "create",
          "action": "Request a quote from a vendor",
          "description": "Request a quote from a vendor for a project"
        },
        {
          "name": "Record Quote Response",
          "value": "receive",
          "action": "Record a vendor's quote response",
          "description": "Record the vendor's response to a requested quote"
        },
        {
          "name": "Update Quote Status",
          "value": "updateStatus",
          "action": "Update a quote's status",
          "description": "Mark a quote as accepted, rejected, or expired"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "quote"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "latest",
      "options": [
        {
          "name": "Run",
          "value": "run",
          "action": "Run an AI takeoff to completion",
          "description": "Detect the given elements on the given pages (no approval step)"
        },
        {
          "name": "Propose",
          "value": "propose",
          "action": "Propose elements via AI prompt",
          "description": "Ask the AI what to measure: prompt + pages -> proposed elements"
        },
        {
          "name": "Get Latest",
          "value": "latest",
          "action": "Get the latest assessment for a project",
          "description": "Most recent assessment with detected elements"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List assessments for a project"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get an assessment by ID"
        },
        {
          "name": "Get Takeoff Summary",
          "value": "summary",
          "action": "Get aggregated takeoff totals for a project",
          "description": "Aggregated count / linear / area totals"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "assessment"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "List",
      "value": "list",
      "action": "List projects",
      "description": "List projects in an organization",
      "resource": "project"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a project",
      "description": "Get a single project by ID",
      "resource": "project"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a project",
      "description": "Create a new project",
      "resource": "project"
    },
    {
      "name": "List Pages",
      "value": "listPages",
      "action": "List pages in a project",
      "description": "List a project's pages (grouped by file)",
      "resource": "project"
    },
    {
      "name": "Archive",
      "value": "archive",
      "action": "Archive a project",
      "description": "Archive an existing project",
      "resource": "project"
    },
    {
      "name": "Export",
      "value": "export",
      "action": "Export a project",
      "description": "Export project data",
      "resource": "project"
    },
    {
      "name": "Upload",
      "value": "upload",
      "action": "Upload a file to a project",
      "description": "Upload a binary file (e.g. a PDF) to a project",
      "resource": "file"
    },
    {
      "name": "List Endpoints",
      "value": "list",
      "action": "List webhook endpoints",
      "resource": "webhook"
    },
    {
      "name": "Create Endpoint",
      "value": "create",
      "action": "Create a webhook endpoint",
      "resource": "webhook"
    },
    {
      "name": "Delete Endpoint",
      "value": "delete",
      "action": "Delete a webhook endpoint",
      "resource": "webhook"
    },
    {
      "name": "List Deliveries",
      "value": "deliveries",
      "action": "List deliveries for an endpoint",
      "resource": "webhook"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search help articles",
      "resource": "help"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get the authenticated identity",
      "resource": "me"
    },
    {
      "name": "Generate",
      "value": "generate",
      "action": "Generate an estimate",
      "description": "Generate an estimate document from a project",
      "resource": "estimate"
    },
    {
      "name": "Generate",
      "value": "generate",
      "action": "Generate a bid",
      "description": "Generate a bid document from a project",
      "resource": "bid"
    },
    {
      "name": "Set",
      "value": "set",
      "action": "Set a vendor price for a product",
      "description": "Create or replace a product's price for a vendor",
      "resource": "vendorPrice"
    },
    {
      "name": "Request Quote",
      "value": "create",
      "action": "Request a quote from a vendor",
      "description": "Request a quote from a vendor for a project",
      "resource": "quote"
    },
    {
      "name": "Record Quote Response",
      "value": "receive",
      "action": "Record a vendor's quote response",
      "description": "Record the vendor's response to a requested quote",
      "resource": "quote"
    },
    {
      "name": "Update Quote Status",
      "value": "updateStatus",
      "action": "Update a quote's status",
      "description": "Mark a quote as accepted, rejected, or expired",
      "resource": "quote"
    },
    {
      "name": "Run",
      "value": "run",
      "action": "Run an AI takeoff to completion",
      "description": "Detect the given elements on the given pages (no approval step)",
      "resource": "assessment"
    },
    {
      "name": "Propose",
      "value": "propose",
      "action": "Propose elements via AI prompt",
      "description": "Ask the AI what to measure: prompt + pages -> proposed elements",
      "resource": "assessment"
    },
    {
      "name": "Get Latest",
      "value": "latest",
      "action": "Get the latest assessment for a project",
      "description": "Most recent assessment with detected elements",
      "resource": "assessment"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List assessments for a project",
      "resource": "assessment"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get an assessment by ID",
      "resource": "assessment"
    },
    {
      "name": "Get Takeoff Summary",
      "value": "summary",
      "action": "Get aggregated takeoff totals for a project",
      "description": "Aggregated count / linear / area totals",
      "resource": "assessment"
    }
  ]

npm_readme:
  # n8n-nodes-exayard

  n8n community node for [Exayard](https://exayard.com) — AI-powered construction takeoffs, estimates, and bids.

  ## Install

  In your n8n instance:

  ```
  npm install n8n-nodes-exayard
  ```

  Restart n8n. The package ships two nodes (`Exayard` and `Exayard Trigger`) and one credential type (`Exayard API`).

  ## Authentication

  1. Sign in to Exayard and open **Settings → Developer** at https://app.exayard.com/settings/developer to create an API key. Scope it to read or write per resource — least-privilege keys keep workflows safe.
  2. In n8n, **Credentials → New → Exayard API** and paste the key, then hit **Test**. The default base URL (`https://api.exayard.com/v1`) is correct for production.
  3. **Organization ID is optional everywhere** — leave the field blank and the node derives the organization from the API key automatically.

  ## Nodes

  ### Exayard (action)

  | Resource | Operations |
  |---|---|
  | Project | List, Get, Create, List Pages, Archive, Export |
  | Assessment | Run AI Takeoff, Propose Elements, Get Latest, List, Get by ID, Get Takeoff Totals |
  | Estimate | Generate |
  | Bid | Generate |
  | Vendor Price | Set |
  | Quote | Request, Record Response, Update Status |
  | File | Upload |
  | Webhook | List Endpoints, Create Endpoint, Delete Endpoint, List Deliveries |
  | Help | Search |
  | Me | Get |

  ### Exayard Trigger

  Subscribes to Exayard lifecycle events and emits a workflow run per delivery. Supported events:

  - `project.{created,updated,archived}`
  - `assessment.{started,completed,approved,cancelled,failed}`
  - `estimate.generated`
  - `bid.generated`
  - `file.processed`
  - `quote.{requested,received,accepted,rejected,expired}`
  - `*` (all events)

  ## Use as an AI Agent tool

  The Exayard node is marked `usableAsTool`, so an n8n **AI Agent** can call it directly: add the AI Agent node, click the **Tool** connector, and pick **Exayard**. The agent can then list projects, run takeoffs, generate estimates, and more from natural-language instructions.

  Self-hosted instances must allow community nodes as tools by setting the environment variable `N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE=true`.

  Activating the trigger registers a webhook endpoint at Exayard pointing at the n8n production URL. Deactivating it deletes the endpoint so you do not leak orphan subscriptions. Signatures are verified per-delivery (HMAC-SHA256, 5-minute timestamp window).

  ## Links

  - Marketing landing page: https://exayard.com/integrations/n8n
  - API docs: https://developers.exayard.com
  - OpenAPI: https://api.exayard.com/v1/openapi.json
  - Status: https://status.exayard.com
  - Source: https://github.com/ShortGenius/n8n-nodes-exayard

  ## License

  MIT.

ai_documentation_summary:
  {"purpose":"Exayard is an n8n community node for AI-powered construction takeoffs, estimates, bids, and related project workflow automation. It supports both action-based API operations and trigger-based event subscriptions.","capabilities":["List, get, create, archive, and export projects","Run AI takeoffs, propose elements, get latest assessments, list assessments, get assessment by ID, and get takeoff totals","Generate estimates and bids","Set vendor prices","Request quotes, record quote responses, and update quote status","Upload files","Manage webhook endpoints and deliveries","Search help content","Get current user/account information","Trigger workflows from Exayard lifecycle events"],"authentication":"API key required via Exayard API credential; create the key in Exayard Developer settings and paste it into n8n. Organization ID is optional and can be derived automatically from the API key.","commonUseCases":["Automating construction takeoff and estimate generation from workflow inputs","Listening for Exayard project, assessment, estimate, bid, file, and quote events to trigger downstream automations","Managing projects and related records from n8n using an AI Agent tool","Requesting and tracking vendor quotes as part of bidding workflows"],"limitations":["Self-hosted n8n instances must enable community nodes as AI tools with N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE=true","Trigger activation creates a webhook endpoint in Exayard, so deactivation is needed to avoid orphan subscriptions","Webhook signatures are only valid within a 5-minute timestamp window"],"relatedNodes":["Exayard Trigger","AI Agent"]}


