n8n-nodes-clientify
v0.2.4
Published
N8N node for Clientify CRM integration
Maintainers
Readme
n8n-nodes-clientify
Connect n8n to Clientify CRM using the Model Context Protocol. Access contacts, companies, deals, tasks, and more through simple workflow nodes.
Table of Contents
- Installation
- Prerequisites
- Configuration
- Available Operations
- Trigger Events
- Usage Examples
- Troubleshooting
- Support
- License
Installation
Start with the GUI method - it's the easiest.
In n8n (GUI)
- Go to Settings → Community Nodes
- Click Install
- Enter:
n8n-nodes-clientify - Click I understand the risks and then Install
- Restart n8n (important - it won't show up until you do)
Via npm (Command Line)
cd ~/.n8n/nodes
npm install n8n-nodes-clientify
# Restart n8nDocker
⚠️ Don't forget to persist the nodes directory, or you'll lose the node on restart:
volumes:
- n8n_data:/home/node/.n8nOr enable auto-reinstall:
environment:
- N8N_REINSTALL_MISSING_PACKAGES=truePrerequisites
You'll need:
- n8n 0.180.0+
- Node.js 20.15+
- Active Clientify CRM account
- JWT token from Clientify MCP server
Configuration
Step 1: Obtain Your Clientify MCP Token
- Log into your Clientify account
- Navigate to API settings or contact your Clientify administrator
- Generate or copy your MCP authentication token (JWT format)
Step 2: Add Credentials in n8n
- In n8n, go to Credentials → New
- Search for "Clientify MCP API"
- Enter your Authentication Token (JWT)
- Click Save
Step 3: Use the Node
- In your workflow, click + to add a node
- Search for "Clientify"
- Select the Clientify node
- Choose your saved credentials
- Select an operation from the dropdown
- Configure the parameters for your operation
Available Operations
26 operations available from the Clientify MCP API:
📊 Companies
- List Companies - Browse all companies with pagination
- Get Company - Fetch full company details by ID
- Create Company - Add a new company to your CRM
- Update Company - Modify existing company info
- Delete Company - Remove a company
- Search Companies - Find companies by name or criteria
👥 Contacts
- List Contacts - View all contacts or search for specific ones
- Get Contact - Look up a contact's information by ID
- Create Contact - Add someone new to your CRM
- Update Contact - Change contact details
- Delete Contact - Remove a contact
💼 Deals
- List Deals - See all deals with filters and pagination
- List Deals By Stage - Show deals in a specific pipeline stage
- Get Deal - Pull complete deal data by ID
- Create Deal - Start tracking a new opportunity
- Update Deal - Modify deal information
- Delete Deal - Remove a deal
- Mark Deal Won - Close a deal as won
- Mark Deal Lost - Mark a deal as lost
✅ Tasks
- List Tasks - View all tasks with pagination
- Get Task - Retrieve task details by ID
- Create Task - Add a new activity or to-do
- List Activity Types - See available task categories
⚙️ Configuration & Utilities
- List Pipelines - Get your sales pipeline configurations
- Get Current User - Check authenticated user details
- Get Current Time - Grab current timestamp with timezone
Trigger Events
NEW in v0.2.0! Triggers are way better than polling. The Clientify Trigger node enables automatic workflow execution when events occur in Clientify CRM. With 16 event types covering contacts, companies, deals, and tasks, you can automate workflows instantly when things happen in your CRM.
How triggers work
Add a Clientify Trigger node, pick an event (like "Contact Created"), and activate your workflow. You'll get a unique webhook URL. Configure that URL in Clientify's webhook settings, and boom - your workflow runs automatically whenever that event fires.
16 Available Triggers
| Event | Trigger Name | When It Fires | Common Use Cases | |-------|--------------|---------------|------------------| | 👥 Contacts | | | | | | Contact Created | New contact added | Welcome email, create follow-up task, add to CRM | | | Contact Updated | Contact details changed | Sync to other systems, log changes, update records | | | Contact Deleted | Contact removed | Archive data, remove from email lists, cleanup | | 📊 Companies | | | | | | Company Created | New company added | Research company, assign account manager, notify team | | | Company Updated | Company details changed | Update external systems, track changes | | | Company Deleted | Company removed | Clean up related data, archive records | | 💼 Deals | | | | | | Deal Created | New deal/opportunity created | Notify sales team, create tasks, log in analytics | | | Deal Updated | Deal details changed | Track value changes, update forecasts, log activity | | | Deal Won | Deal closed successfully | Send celebration, create invoice, start onboarding | | | Deal Lost | Deal closed unsuccessfully | Add to nurture campaign, analyze loss reason | | | Deal Stage Changed | Deal moved to different stage | Stage-specific actions (send pricing, generate contract) | | | Deal Deleted | Deal removed | Log deletion, archive data | | ✅ Tasks | | | | | | Task Created | New task added | Add to calendar, notify assignee, sync to project tools | | | Task Completed | Task marked complete | Log activity, update metrics, trigger next steps | | | Task Due Soon | Task approaching due date | Send reminder to assignee | | | Task Overdue | Task past due date | Escalate to manager, send urgent notification |
Setup Instructions
In n8n:
- Add "Clientify Trigger" node to your workflow
- Select the event from the dropdown
- Choose your Clientify MCP credentials
- Save and activate the workflow (toggle ON)
- Click the trigger node → Expand "Webhook URLs"
- Switch to "Production URL" tab
- Copy the webhook URL
In Clientify:
- Go to Settings → Webhooks
- Click "Add Webhook"
- Select the matching event (e.g., "contact.created")
- Paste your n8n webhook URL
- Set status to "Active"
- Save
Test It: Create a contact, deal, or task in Clientify → Check n8n executions → Your workflow should have run!
Data You'll Receive
Webhook data is automatically flattened for easy access in your workflows. Event payloads look like this:
Contact Events (contact.created, contact.updated, contact.deleted)
{
"event": "contact.created",
"timestamp": "2025-10-02T15:30:00Z",
"contact_id": 12345,
"first_name": "John",
"last_name": "Doe",
"email": "[email protected]",
"phone": "+1234567890",
"company_id": 456,
"company_name": "Acme Corp",
"changes": { /* only for .updated events */ }
}Access with: {{$json.first_name}}, {{$json.email}}, {{$json.company_name}}
Company Events (company.created, company.updated, company.deleted)
{
"event": "company.created",
"timestamp": "2025-10-02T18:00:00Z",
"company_id": 999,
"name": "Tech Startup Inc",
"domain": "techstartup.com",
"industry": "Technology",
"size": "50-100",
"country": "USA"
}Access with: {{$json.name}}, {{$json.domain}}, {{$json.industry}}
Deal Events (deal.created, deal.updated, deal.won, deal.lost, deal.stage_changed, deal.deleted)
{
"event": "deal.won",
"timestamp": "2025-10-02T23:00:00Z",
"deal_id": 98765,
"title": "Enterprise License Sale",
"value": 60000,
"currency": "USD",
"contact_id": 12345,
"contact_name": "John Doe",
"company_id": 999,
"company_name": "Tech Startup Inc",
"stage_name": "Won",
"won_at": "2025-10-02T23:00:00Z"
}Access with: {{$json.title}}, {{$json.value}}, {{$json.contact_name}}
Task Events (task.created, task.completed, task.due_soon, task.overdue)
{
"event": "task.created",
"timestamp": "2025-10-03T03:00:00Z",
"task_id": 5555,
"title": "Follow up with John Doe",
"description": "Discuss pricing options",
"type": "call",
"contact_id": 12345,
"contact_name": "John Doe",
"deal_id": 98765,
"assigned_to_name": "Sales Rep",
"due_date": "2025-10-05"
}Access with: {{$json.title}}, {{$json.contact_name}}, {{$json.due_date}}
Important Notes
- Event names are case-sensitive - use
contact.created, notContact.Created - Each workflow gets a unique webhook URL - you'll need to update Clientify if you recreate the workflow
- ⚠️ Common mistake: Workflows must be active to receive webhooks - toggle that switch on!
- All payloads include a
_rawfield with the original data if you need it - Update events show what changed in the
changesobject (old vs new values) - 💡 Tip: Session IDs expire after each request. Don't try to reuse them across workflow runs.
Usage Examples
We recommend starting with List Contacts to verify your setup works.
Example 1: List All Contacts
Retrieve a paginated list of all contacts in your CRM.
Configuration:
- Operation:
List Contacts - Parameters: Leave empty for all contacts, or add filters
Output: Array of contact objects with names, emails, phone numbers, and IDs.
[
{
"id": 123,
"first_name": "John",
"last_name": "Doe",
"email": "[email protected]",
"phone": "+1234567890",
"company_id": 456
}
]Example 2: Auto-Send Welcome Email (Using Trigger)
NEW in v0.2.0!
Automatically send a welcome email when a new contact is created.
Workflow:
Clientify Trigger
- Event:
Contact Created
- Event:
Send Email
- To:
{{$json.email}} - Subject:
Welcome {{$json.first_name}}! - Body: Welcome message
- To:
Create Task
- Title:
Follow up with {{$json.first_name}} {{$json.last_name}} - Contact ID:
{{$json.contact_id}} - Due: 3 days from now
- Title:
Result: When someone creates a contact "Jane Smith" in Clientify:
- Jane automatically receives welcome email
- Follow-up task is created for sales team
- All happens instantly without manual intervention
Example 3: Deal Won Notification (Using Trigger)
NEW in v0.2.0!
Notify your team instantly when a deal closes.
Workflow:
Clientify Trigger
- Event:
Deal Won
- Event:
Slack (or Email)
- Message:
🎉 Deal Won! {{$json.title}} - ${{$json.value}} - {{$json.contact_name}} - Channel:
#sales-wins
- Message:
Clientify (Action Node)
- Operation:
Create Task - Title:
Onboard {{$json.contact_name}} - Deal ID:
{{$json.deal_id}}
- Operation:
Result: When a deal is marked as won:
- Team gets instant Slack notification
- Onboarding task is automatically created
- No manual steps required
Troubleshooting
Node not showing up?
Restart n8n first. Seriously - it won't appear until you do a full restart.
Still nothing? Clear your browser cache (Ctrl+Shift+Del) and search for "Clientify" in the node panel. Not the package name, just "Clientify".
Check Settings → Community Nodes to confirm it installed. If it's there but still not showing up, something's cached - try a hard refresh (Ctrl+F5).
Getting auth errors?
Your token's probably expired or invalid. Double-check it in your Clientify settings, or generate a fresh one. Happens to everyone.
Make sure you're using the MCP token, not a regular API key - they're different things. The MCP token starts with your account identifier.
Missing parameter errors?
Look for the red asterisk (*) next to field names - those are required.
Some operations need IDs from previous steps. Run a Get operation first to grab the ID, then pass it to Update or Delete. You'll save yourself a headache. Example: Get Contact → use {{$json.id}} in Update Contact.
Empty results?
Your token might not have permission to access that data. Check your Clientify user permissions first.
Pro tip: Try listing without filters to confirm basic access works. If you see results, then it's your filters that need adjusting.
Development & Contribution
This is an official Clientify node. Contributions are welcome!
Repository: https://github.com/contacteitor/clientify_n8n
Report Issues: https://github.com/contacteitor/clientify_n8n/issues
Documentation: See the repository for full documentation
Support
- Issues & Bugs: https://github.com/contacteitor/clientify_n8n/issues
- Email: [email protected]
- Clientify Documentation: https://mcp.clientify.com/docs
Version History
v0.2.0 (2025-10-02) - Triggers!
Added webhook-based triggers for real-time automation. ~~28 operations~~ 16 trigger events covering contacts, companies, deals, and tasks. Way faster than polling.
v0.1.0 (2025-10-01) - Initial release
26 operations for managing contacts, companies, deals, and tasks through the MCP API.
License
MIT License - see LICENSE file for details.
Copyright (c) 2025 Clientify
Made with ❤️ by Clientify
This is an official Clientify node. n8n is a trademark of its respective owner.
