n8n-nodes-hubseal
v1.0.2
Published
n8n community node for HubSeal e-signature workflows
Maintainers
Readme
n8n-nodes-hubseal
🚀 Why HubSeal?
- For Everyone — Individual users get 5 free signatures monthly, with Starter and Pro plans available
- Multi-Tenant Architecture — Built for organizations of all sizes
- Template-Based Signing — Reusable document templates with predefined fields
- Anchor Text Detection — Automatically place signature fields using text markers
- Webhook Events — Real-time notifications for all signature lifecycle events
- Enterprise Security — HMAC-signed webhooks, API key authentication, role-based access
📦 Installation
n8n Cloud
- Go to Settings → Community Nodes
- Click Install a community node
- Enter:
n8n-nodes-hubseal - Click Install
n8n Self-Hosted
npm install n8n-nodes-hubsealDocker
# Add to your n8n Dockerfile
RUN cd /usr/local/lib/node_modules/n8n && npm install n8n-nodes-hubseal⚡ Quick Start
1. Create a HubSeal Account
Sign up for free at https://app.hubwf.com/signup
2. Generate an API Key
- Log into your HubSeal dashboard
- Navigate to Settings → Developer
- Click Create API Key
- Select scopes:
documents:read— List and view signature requestsdocuments:write— Create, send, void signature requestswebhooks:read— List webhooks and view delivery logswebhooks:write— Create, update, delete webhook endpoints
- Copy your key (format:
hubwf_live_sk_xxxxx)
⚠️ Important: API keys are only shown once at creation. Store securely!
3. Configure Credentials in n8n
- In n8n, go to Credentials → Add Credential
- Search for HubSeal API
- Enter:
- API Key: Your HubSeal API key
- API Base URL:
https://api.hubwf.com/v1
💡 Your API key automatically includes your tenant information — no separate Tenant ID required.
📋 Features
Document Actions
| Action | Description | Endpoint |
|--------|-------------|----------|
| Create signature request | Send a document for signing | POST /v1/documents |
| Create from template | Use a pre-built template | POST /v1/documents |
| Get document | Retrieve document details | GET /v1/documents/:id |
| List documents | List all signature requests | GET /v1/documents |
| Download signed document | Get the completed PDF | GET /v1/documents/:id/download |
| Send reminder | Remind pending signers | POST /v1/documents/:id/remind |
| Void document | Cancel a signature request | DELETE /v1/documents/:id |
Template Actions
| Action | Description | Endpoint |
|--------|-------------|----------|
| Get template | Retrieve template details | GET /v1/templates/:id |
| List templates | List all available templates | GET /v1/templates |
Webhook Actions
| Action | Description | Endpoint |
|--------|-------------|----------|
| Create webhook | Subscribe to events | POST /v1/webhooks |
| Delete webhook | Remove a subscription | DELETE /v1/webhooks/:id |
| List webhooks | List all webhooks | GET /v1/webhooks |
🔔 Triggers (Webhook Events)
Start workflows automatically when these events occur:
| Event | Description |
|-------|-------------|
| signature.request.created | New signature request created |
| signature.request.sent | Invitation emails sent to signers |
| signature.request.viewed | Signer opened the document |
| signature.request.completed | All signers finished signing |
| signature.request.declined | Signer declined to sign |
| signature.request.voided | Request was cancelled |
| signature.request.expired | Request expired |
| signature.request.reminded | Reminder emails sent to pending signers |
| signature.signer.completed | Individual signer finished |
| signature.signer.declined | Individual signer declined |
💡 Example Workflows
1. Auto-Send Contracts from CRM
HubSpot: Deal Closed Won → HubSeal: Create from Template → Slack: Notify Sales Team2. Archive Signed Documents to Cloud Storage
HubSeal Trigger: Document Completed → HubSeal: Download → Google Drive: Upload → Airtable: Log Record3. Automated Follow-Up for Pending Signatures
Schedule: Daily 9 AM → HubSeal: List Documents → Filter: Pending > 3 days → HubSeal: Send Reminder → Email: Notify Sender4. Employee Onboarding Automation
BambooHR: New Employee → HubSeal: Create from Template (Offer Letter) → Wait → HubSeal Trigger: Completed → Google Drive: Archive → Slack: Notify HR5. Multi-Step Approval Workflow
Form Submission → HubSeal: Create Request (Manager) → Wait for Completion → HubSeal: Create Request (Director) → Wait for Completion → Email: Send Final Copy🔧 Troubleshooting
Common Errors
| Error Code | Message | Solution |
|------------|---------|----------|
| 401 | Unauthorized | Check that your API key is correct and includes the Bearer prefix in the Authorization header |
| 403 | Forbidden | Your API key lacks required scopes. Create a new key with the necessary permissions |
| 404 | Not Found | Verify the document or template ID exists and belongs to your tenant |
| 409 | Conflict | Cannot modify completed, voided, or cancelled documents |
| 422 | Unprocessable Entity | Check that all required fields are provided and email addresses are valid |
| 429 | Too Many Requests | Rate limit exceeded. Wait 60 seconds before retrying |
Webhook Issues
| Problem | Solution |
|---------|----------|
| Webhook not receiving events | Ensure your endpoint URL is HTTPS and publicly accessible |
| Signature verification failing | Check that you're using the correct webhook secret and the X-HubWF-Signature header |
| Duplicate events received | Implement idempotency using the event_id in the webhook payload |
Document Creation Issues
| Problem | Solution | |---------|----------| | Template fields not populating | Ensure field names in your request match exactly with template field names | | Signer not receiving email | Verify the email address is valid and check spam folders | | PDF upload failing | Ensure file is under 10MB and is a valid PDF format |
Still Need Help?
- Check the API Documentation
- Open an issue on GitHub
- Contact support at [email protected]
🔐 Security
- API Key Authentication — Secure Bearer token authentication
- HMAC Webhook Signatures — Verify webhook authenticity with SHA-256 signatures
- Rate Limiting — 100 requests/minute per tenant
- Scope-Based Access — Granular API key permissions
Verifying Webhook Signatures
Webhooks include a signature header X-HubWF-Signature for verification:
const crypto = require('crypto');
function verifyWebhook(payload, signature, timestamp, secret) {
const signedPayload = `${timestamp}.${JSON.stringify(payload)}`;
const expectedSignature = crypto
.createHmac('sha256', secret)
.update(signedPayload)
.digest('hex');
return signature === `sha256=${expectedSignature}`;
}📖 API Reference
| Setting | Value |
|---------|-------|
| Base URL | https://api.hubwf.com/v1 |
| Authentication | Bearer Token (API Key) |
| Content-Type | application/json |
| Rate Limit | 100 requests/minute |
Request Headers
Authorization: Bearer hubwf_live_sk_your_api_key_here
Content-Type: application/jsonResponse Format
{
"success": true,
"document": {
"id": "doc_abc123",
"name": "Contract Agreement",
"status": "pending",
"created_at": "2026-01-17T10:00:00Z",
"expires_at": "2026-01-24T10:00:00Z"
},
"recipients": [
{
"id": "signer_xyz",
"name": "John Doe",
"email": "[email protected]",
"status": "sent",
"signing_url": "https://app.hubwf.com/sign/..."
}
]
}Document Statuses
| Status | Description |
|--------|-------------|
| draft | Document created but not yet sent |
| sent | Document sent to recipients, awaiting signatures |
| viewed | At least one recipient has viewed the document |
| partially_signed | Some recipients have signed, others pending |
| completed | All recipients have signed the document |
| declined | A recipient has declined to sign |
| expired | Document expired before all signatures collected |
| voided | Document was cancelled by sender |
🔗 Resources
| Resource | Link | |----------|------| | HubSeal Website | https://hubwf.com | | API Documentation | https://hubwf.com/docs | | Create Account | https://app.hubwf.com/signup | | Pricing | https://hubwf.com/pricing | | npm Package | https://www.npmjs.com/package/n8n-nodes-hubseal |
🛠 Support
| Channel | Contact | |---------|---------| | Email | [email protected] | | GitHub Issues | Report a bug | | Documentation | https://hubwf.com/docs |
📝 Changelog
v1.0.0 (2026-01-17)
- Initial release
- Document actions: Create, Get, List, Download, Remind, Void
- Template actions: Get, List
- Webhook actions: Create, Delete, List
- 9 webhook event triggers
📄 License
MIT © HubSeal
