Skip to main content
Add legally binding e-signatures to any n8n workflow. The Firma community node (n8n-nodes-firma) gives you a dedicated Firma node with 83 operations, a trigger node with automatic webhook management, and a native credential type. This guide covers three integration paths:
  1. Firma node (recommended) — Select a resource and operation from dropdown menus. Built-in fields for recipients, settings, and document sources.
  2. Firma Trigger node — Automatically registers a webhook with Firma when the workflow activates. Starts a workflow when a Firma event occurs (e.g. signing_request.completed).
  3. AI Agent tool — The Firma node works as a native tool for n8n AI Agents, so the agent can send signing requests autonomously from natural-language instructions.
If you prefer not to install community nodes, see Using the HTTP Request node instead at the end of this guide.

Prerequisites

  • A Firma account with an API key
  • An n8n instance (Cloud or self-hosted, v1.0+). Path 3 (AI Agent tool) requires n8n v1.47+
  • At least one Firma template with signing fields configured

Install the community node

From Settings

  1. In n8n, go to Settings > Community Nodes
  2. Click Install
  3. Enter n8n-nodes-firma
  4. Agree to the risks and click Install

From the Workflow Editor

You can also install without leaving your workflow:
  1. Open any workflow and click + to add a node
  2. Search for Firma in the node search panel
  3. If the node is not yet installed, n8n shows it under Community Nodes in the search results with an Install option
  4. Select it to install and add it to your workflow in one step
After installation, the Firma and Firma Trigger nodes appear in the node panel.
For self-hosted n8n, you can also install manually: cd ~/.n8n/nodes && npm install n8n-nodes-firma, then restart n8n.

Set up credentials

  1. In the n8n editor, click the Credentials icon in the left sidebar
  2. Click Add Credential and search for Firma API
  3. Set the fields:
    • API Key: paste your Firma workspace API key (found in Workspace Settings > API)
    • Webhook Secret (optional): paste your webhook signing secret if you plan to use the Firma Trigger node with signature validation. A secret is automatically generated when you enable webhooks for your workspace or company. To find it, go to Workspace Settings > Webhooks (or Company Settings > Webhooks) and copy the secret using the show/copy controls. If you need to rotate the secret later, click Regenerate; the old secret stays valid for a 7-day grace period. See the webhooks guide for full setup.
  4. Leave Environment set to Production unless you are connecting to a self-hosted or staging instance
  5. Click Save
n8n encrypts credentials using your instance’s N8N_ENCRYPTION_KEY. Never paste your API key directly into node fields. Always reference it through the credential so it stays out of exported workflow JSON.

Path 1: Firma node

The Firma node lets you interact with the Firma API through dropdown menus instead of manually configuring HTTP requests.

Send a signing request from a template

  1. Add a Firma node to your workflow
  2. Select your Firma API credential
  3. Set Resource to Signing Request and Operation to Create and Send
  4. Fill in:
    • Name: a name for the signing request (e.g. {{ $json.contract_name }})
    • Document Source: Template
    • Template ID: the ID of your Firma template
  5. Under Recipients, click Add Recipient and fill in:
    • Email: {{ $json.signer_email }}
    • First Name: {{ $json.signer_first_name }}
    • Designation: Signer
    • Order: 1
  6. Optionally expand Additional Fields to set language or expiration, and Settings to control download permissions, OTP verification, or email notifications
The node creates and sends the signing request in one atomic call. The output includes the id of the new signing request for use in downstream nodes.

Create a draft first, then send after approval

If you need a human review step before sending:
  1. Use the Create operation (creates a draft, does not send)
  2. Add an n8n Wait or approval node in the middle of your workflow
  3. Use the Send operation in a later node, passing the signing request ID from the Create step

Other common operations

The node supports all 8 resources (Signing Request, Template, Webhook, Workspace, Company, Domain, Email Template, JWT) with a total of 83 operations. See the full list in the API reference.
Disable Retry On Fail for write operations. Firma’s write endpoints (Create, Create and Send, Send, Resend) have no idempotency key. Auto-retrying these operations can create duplicate legally-binding signing requests. In the node settings, set Retry On Fail to off for workflows that use these operations.

Wire it into a trigger

Connect the Firma node to whatever upstream trigger drives your workflow. Common patterns:
  • Form Trigger > Firma: a customer fills an n8n form, the workflow immediately sends them a contract to sign
  • Webhook Trigger > Firma: your app posts to an n8n webhook when a deal closes, n8n fires the signing request
  • Schedule Trigger > database query > Firma: nightly batch of renewal contracts goes out automatically

Path 2: Firma Trigger node

The Firma Trigger node starts a workflow when a Firma event occurs. Unlike a generic Webhook node, it automatically registers and deregisters the webhook with Firma when you activate or deactivate the workflow.

Set up a trigger

  1. Create a new workflow and add a Firma Trigger node as the trigger
  2. Select your Firma API credential
  3. In Events, select which events to listen for (e.g. Signing Request Completed, Signing Request Recipient Declined)
  4. Optionally set Workspace ID to scope the webhook to a single workspace. Without it, the webhook receives events for all workspaces in the company.
  5. Activate the workflow
When you activate the workflow, the trigger node automatically creates a webhook in your Firma account pointing to the n8n production URL. When you deactivate, it deletes the webhook. If an orphaned webhook from a previous activation exists, the node detects and reuses it.

Available events

The trigger supports all 27 Firma webhook events:
  • Signing Request: created, sent, viewed, completed, expired, cancelled, deleted, updated, certificate generated, reminder sent, field filled, document updated
  • Recipients: added, signed, declined, updated, identity changed
  • Templates: created, updated, deleted, field added, used
  • Workspaces: created, updated, deleted
  • Domains: verified, verification failed

Branch on event type

Add a Switch node after the Firma Trigger to route on {{ $json.type }}. A common setup:
  • signing_request.completed > update a record in your CRM, send a confirmation email, kick off provisioning
  • signing_request.recipient.declined > notify sales
  • signing_request.expired > re-send or move the deal to lost
To archive the signed document, add a Firma node after the Switch that uses the Download operation with the signing request ID from the trigger payload.

Signature validation

If you added a Webhook Secret to your Firma API credential, the trigger node automatically validates the X-Firma-Signature header using HMAC-SHA256. It also supports X-Firma-Signature-Old for secret rotation grace periods. Events with invalid or missing signatures are rejected.

HTTPS required

Firma’s webhook API requires HTTPS URLs. n8n Cloud handles this automatically. For self-hosted instances, use a reverse proxy with TLS or a tunnel service during development:
Firma gates webhook delivery behind a master switch at both the company and workspace level. If the trigger activates but never receives events, confirm that webhooks are enabled for your workspace in the Firma dashboard (Workspace Settings > Webhooks). The per-webhook Test button bypasses this switch, so a successful test does not guarantee real event delivery.

Path 3: Firma as a tool for the n8n AI Agent

The Firma node has usableAsTool enabled, which means it works natively as a tool for the n8n AI Agent node. The agent can browse templates, create signing requests, check status, and more, all from natural-language instructions.
  1. In your AI Agent workflow, add a Firma node as a tool input on the agent
  2. Select your Firma API credential
  3. Choose which resource and operation to expose (e.g. Signing Request > Create and Send)
To give the agent broader capabilities, add multiple Firma tool nodes with different operations:
  • One for Template > List (so the agent can find the right template)
  • One for Signing Request > Create and Send (so it can send documents)
  • One for Signing Request > Get (so it can check status)
The agent decides when to call each tool based on the conversation context.

Embedded signing

If your workflow ends with the signer completing the document inside another app rather than over email, fetch the recipient’s signing_request_user_id from the API response and embed Firma’s signing UI in an iframe:
See the embedded signing guide for full setup including security best practices.

Using the HTTP Request node instead

If you prefer not to install community nodes, you can call the Firma API directly with the HTTP Request node and a Header Auth credential.

Create a Header Auth credential

  1. In the n8n editor, click the Credentials icon in the left sidebar
  2. Click Add Credential and search for Header Auth
  3. Set the fields:
    • Name (credential name): Firma API
    • Name (header): Authorization
    • Value: paste your Firma API key
  4. Click Save

Send a signing request

Add an HTTP Request node and configure it: Paste this into the JSON body field, using n8n expressions to pull values from upstream nodes:
The create-and-send endpoint creates the signing request and sends it to recipients atomically. If you need a human review step before sending, use POST /signing-requests to create a draft, then POST /signing-requests/{id}/send in a later node after approval.

Receive webhooks without the community node

Use an n8n Webhook trigger node and register its URL manually with Firma:
  1. Create a new workflow with a Webhook node as the trigger. Set HTTP Method to POST and copy the Production URL.
  2. In the Firma dashboard, go to Settings > Webhooks, click Add webhook, paste the n8n production URL, and select your events.
  3. Add a Switch node after the Webhook trigger to route on {{ $json.body.type }}.
See the webhooks guide for the full list of event types and signature verification.

Bonus: MCP connection for AI-assisted building

Firma ships a Docs MCP server that you can connect to any MCP-capable client (Claude Desktop, Cursor, etc.) while building n8n workflows. It lets the AI search Firma documentation in real time, so generated configs reference the correct endpoints, fields, and webhook event names. Add the server using the URL:
This is for the build experience only and does not affect your deployed workflows.

Next steps