n8n-nodes-clientify 0.2.3 → 0.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (185) hide show
  1. package/README.md +34 -504
  2. package/dist/README.md +34 -504
  3. package/dist/appmixer/clientify/crm/AddCompanyAddress/AddCompanyAddress.js +33 -0
  4. package/dist/appmixer/clientify/crm/AddCompanyAddress/component.json +115 -0
  5. package/dist/appmixer/clientify/crm/AddCompanyCall/AddCompanyCall.js +32 -0
  6. package/dist/appmixer/clientify/crm/AddCompanyCall/component.json +109 -0
  7. package/dist/appmixer/clientify/crm/AddCompanyCheckin/AddCompanyCheckin.js +31 -0
  8. package/dist/appmixer/clientify/crm/AddCompanyCheckin/component.json +98 -0
  9. package/dist/appmixer/clientify/crm/AddCompanyEmail/AddCompanyEmail.js +25 -0
  10. package/dist/appmixer/clientify/crm/AddCompanyEmail/component.json +84 -0
  11. package/dist/appmixer/clientify/crm/AddCompanyEmployee/AddCompanyEmployee.js +22 -0
  12. package/dist/appmixer/clientify/crm/AddCompanyEmployee/component.json +65 -0
  13. package/dist/appmixer/clientify/crm/AddCompanyNote/AddCompanyNote.js +25 -0
  14. package/dist/appmixer/clientify/crm/AddCompanyNote/component.json +75 -0
  15. package/dist/appmixer/clientify/crm/AddCompanyPhone/AddCompanyPhone.js +25 -0
  16. package/dist/appmixer/clientify/crm/AddCompanyPhone/component.json +87 -0
  17. package/dist/appmixer/clientify/crm/AddCompanyTag/AddCompanyTag.js +23 -0
  18. package/dist/appmixer/clientify/crm/AddCompanyTag/component.json +71 -0
  19. package/dist/appmixer/clientify/crm/AddCompanyWebsite/AddCompanyWebsite.js +23 -0
  20. package/dist/appmixer/clientify/crm/AddCompanyWebsite/component.json +65 -0
  21. package/dist/appmixer/clientify/crm/AddContactAddress/AddContactAddress.js +33 -0
  22. package/dist/appmixer/clientify/crm/AddContactAddress/component.json +115 -0
  23. package/dist/appmixer/clientify/crm/AddContactCall/AddContactCall.js +20 -0
  24. package/dist/appmixer/clientify/crm/AddContactCall/component.json +55 -0
  25. package/dist/appmixer/clientify/crm/AddContactCheckin/AddContactCheckin.js +33 -0
  26. package/dist/appmixer/clientify/crm/AddContactCheckin/component.json +109 -0
  27. package/dist/appmixer/clientify/crm/AddContactEmail/AddContactEmail.js +25 -0
  28. package/dist/appmixer/clientify/crm/AddContactEmail/component.json +85 -0
  29. package/dist/appmixer/clientify/crm/AddContactNote/AddContactNote.js +25 -0
  30. package/dist/appmixer/clientify/crm/AddContactNote/component.json +75 -0
  31. package/dist/appmixer/clientify/crm/AddContactOtherCompany/AddContactOtherCompany.js +23 -0
  32. package/dist/appmixer/clientify/crm/AddContactOtherCompany/component.json +65 -0
  33. package/dist/appmixer/clientify/crm/AddContactPhone/AddContactPhone.js +25 -0
  34. package/dist/appmixer/clientify/crm/AddContactPhone/component.json +88 -0
  35. package/dist/appmixer/clientify/crm/AddContactTag/AddContactTag.js +23 -0
  36. package/dist/appmixer/clientify/crm/AddContactTag/component.json +71 -0
  37. package/dist/appmixer/clientify/crm/AssignContactOwner/AssignContactOwner.js +23 -0
  38. package/dist/appmixer/clientify/crm/AssignContactOwner/component.json +93 -0
  39. package/dist/appmixer/clientify/crm/BatchCreateContacts/BatchCreateContacts.js +23 -0
  40. package/dist/appmixer/clientify/crm/BatchCreateContacts/component.json +90 -0
  41. package/dist/appmixer/clientify/crm/CompleteTask/CompleteTask.js +24 -0
  42. package/dist/appmixer/clientify/crm/CompleteTask/component.json +69 -0
  43. package/dist/appmixer/clientify/crm/CreateCompany/CreateCompany.js +19 -0
  44. package/dist/appmixer/clientify/crm/CreateCompany/component.json +58 -0
  45. package/dist/appmixer/clientify/crm/CreateContact/CreateContact.js +19 -0
  46. package/dist/appmixer/clientify/crm/CreateContact/component.json +88 -0
  47. package/dist/appmixer/clientify/crm/CreateTask/CreateTask.js +19 -0
  48. package/dist/appmixer/clientify/crm/CreateTask/component.json +167 -0
  49. package/dist/appmixer/clientify/crm/DeleteCompany/DeleteCompany.js +22 -0
  50. package/dist/appmixer/clientify/crm/DeleteCompany/component.json +51 -0
  51. package/dist/appmixer/clientify/crm/DeleteCompanyAddress/DeleteCompanyAddress.js +22 -0
  52. package/dist/appmixer/clientify/crm/DeleteCompanyAddress/component.json +62 -0
  53. package/dist/appmixer/clientify/crm/DeleteCompanyEmail/DeleteCompanyEmail.js +22 -0
  54. package/dist/appmixer/clientify/crm/DeleteCompanyEmail/component.json +62 -0
  55. package/dist/appmixer/clientify/crm/DeleteCompanyPhone/DeleteCompanyPhone.js +22 -0
  56. package/dist/appmixer/clientify/crm/DeleteCompanyPhone/component.json +62 -0
  57. package/dist/appmixer/clientify/crm/DeleteCompanyWebsite/DeleteCompanyWebsite.js +22 -0
  58. package/dist/appmixer/clientify/crm/DeleteCompanyWebsite/component.json +62 -0
  59. package/dist/appmixer/clientify/crm/DeleteContact/DeleteContact.js +22 -0
  60. package/dist/appmixer/clientify/crm/DeleteContact/component.json +51 -0
  61. package/dist/appmixer/clientify/crm/DeleteContactAddress/DeleteContactAddress.js +22 -0
  62. package/dist/appmixer/clientify/crm/DeleteContactAddress/component.json +62 -0
  63. package/dist/appmixer/clientify/crm/DeleteContactEmail/DeleteContactEmail.js +22 -0
  64. package/dist/appmixer/clientify/crm/DeleteContactEmail/component.json +62 -0
  65. package/dist/appmixer/clientify/crm/DeleteContactOtherCompany/DeleteContactOtherCompany.js +22 -0
  66. package/dist/appmixer/clientify/crm/DeleteContactOtherCompany/component.json +62 -0
  67. package/dist/appmixer/clientify/crm/DeleteContactPhone/DeleteContactPhone.js +22 -0
  68. package/dist/appmixer/clientify/crm/DeleteContactPhone/component.json +62 -0
  69. package/dist/appmixer/clientify/crm/GetCompany/GetCompany.js +24 -0
  70. package/dist/appmixer/clientify/crm/GetCompany/component.json +69 -0
  71. package/dist/appmixer/clientify/crm/GetContact/GetContact.js +24 -0
  72. package/dist/appmixer/clientify/crm/GetContact/component.json +90 -0
  73. package/dist/appmixer/clientify/crm/GetCurrentUser/GetCurrentUser.js +17 -0
  74. package/dist/appmixer/clientify/crm/GetCurrentUser/component.json +49 -0
  75. package/dist/appmixer/clientify/crm/GetTask/GetTask.js +24 -0
  76. package/dist/appmixer/clientify/crm/GetTask/component.json +78 -0
  77. package/dist/appmixer/clientify/crm/ListAllCompanyTags/ListAllCompanyTags.js +16 -0
  78. package/dist/appmixer/clientify/crm/ListAllCompanyTags/component.json +67 -0
  79. package/dist/appmixer/clientify/crm/ListAllContactTags/ListAllContactTags.js +16 -0
  80. package/dist/appmixer/clientify/crm/ListAllContactTags/component.json +67 -0
  81. package/dist/appmixer/clientify/crm/ListCompanies/ListCompanies.js +26 -0
  82. package/dist/appmixer/clientify/crm/ListCompanies/component.json +117 -0
  83. package/dist/appmixer/clientify/crm/ListCompanyAddresses/ListCompanyAddresses.js +20 -0
  84. package/dist/appmixer/clientify/crm/ListCompanyAddresses/component.json +79 -0
  85. package/dist/appmixer/clientify/crm/ListCompanyCustomfields/ListCompanyCustomfields.js +20 -0
  86. package/dist/appmixer/clientify/crm/ListCompanyCustomfields/component.json +79 -0
  87. package/dist/appmixer/clientify/crm/ListCompanyEmails/ListCompanyEmails.js +20 -0
  88. package/dist/appmixer/clientify/crm/ListCompanyEmails/component.json +88 -0
  89. package/dist/appmixer/clientify/crm/ListCompanyEmployees/ListCompanyEmployees.js +20 -0
  90. package/dist/appmixer/clientify/crm/ListCompanyEmployees/component.json +79 -0
  91. package/dist/appmixer/clientify/crm/ListCompanyPhones/ListCompanyPhones.js +20 -0
  92. package/dist/appmixer/clientify/crm/ListCompanyPhones/component.json +91 -0
  93. package/dist/appmixer/clientify/crm/ListCompanySectors/ListCompanySectors.js +16 -0
  94. package/dist/appmixer/clientify/crm/ListCompanySectors/component.json +64 -0
  95. package/dist/appmixer/clientify/crm/ListCompanyTags/ListCompanyTags.js +20 -0
  96. package/dist/appmixer/clientify/crm/ListCompanyTags/component.json +85 -0
  97. package/dist/appmixer/clientify/crm/ListCompanyTasks/ListCompanyTasks.js +20 -0
  98. package/dist/appmixer/clientify/crm/ListCompanyTasks/component.json +79 -0
  99. package/dist/appmixer/clientify/crm/ListCompanyWallentries/ListCompanyWallentries.js +20 -0
  100. package/dist/appmixer/clientify/crm/ListCompanyWallentries/component.json +79 -0
  101. package/dist/appmixer/clientify/crm/ListCompanyWebsites/ListCompanyWebsites.js +20 -0
  102. package/dist/appmixer/clientify/crm/ListCompanyWebsites/component.json +79 -0
  103. package/dist/appmixer/clientify/crm/ListContactAddresses/ListContactAddresses.js +20 -0
  104. package/dist/appmixer/clientify/crm/ListContactAddresses/component.json +79 -0
  105. package/dist/appmixer/clientify/crm/ListContactCustomfields/ListContactCustomfields.js +20 -0
  106. package/dist/appmixer/clientify/crm/ListContactCustomfields/component.json +79 -0
  107. package/dist/appmixer/clientify/crm/ListContactEmails/ListContactEmails.js +20 -0
  108. package/dist/appmixer/clientify/crm/ListContactEmails/component.json +88 -0
  109. package/dist/appmixer/clientify/crm/ListContactOtherCompanies/ListContactOtherCompanies.js +20 -0
  110. package/dist/appmixer/clientify/crm/ListContactOtherCompanies/component.json +85 -0
  111. package/dist/appmixer/clientify/crm/ListContactPhones/ListContactPhones.js +20 -0
  112. package/dist/appmixer/clientify/crm/ListContactPhones/component.json +91 -0
  113. package/dist/appmixer/clientify/crm/ListContactTags/ListContactTags.js +20 -0
  114. package/dist/appmixer/clientify/crm/ListContactTags/component.json +85 -0
  115. package/dist/appmixer/clientify/crm/ListContactTasks/ListContactTasks.js +20 -0
  116. package/dist/appmixer/clientify/crm/ListContactTasks/component.json +79 -0
  117. package/dist/appmixer/clientify/crm/ListContactWallentries/ListContactWallentries.js +20 -0
  118. package/dist/appmixer/clientify/crm/ListContactWallentries/component.json +79 -0
  119. package/dist/appmixer/clientify/crm/ListContacts/ListContacts.js +26 -0
  120. package/dist/appmixer/clientify/crm/ListContacts/component.json +138 -0
  121. package/dist/appmixer/clientify/crm/ListCustomFieldValues/ListCustomFieldValues.js +19 -0
  122. package/dist/appmixer/clientify/crm/ListCustomFieldValues/component.json +77 -0
  123. package/dist/appmixer/clientify/crm/ListCustomFields/ListCustomFields.js +19 -0
  124. package/dist/appmixer/clientify/crm/ListCustomFields/component.json +77 -0
  125. package/dist/appmixer/clientify/crm/ListTaskStages/ListTaskStages.js +19 -0
  126. package/dist/appmixer/clientify/crm/ListTaskStages/component.json +87 -0
  127. package/dist/appmixer/clientify/crm/ListTaskTypes/ListTaskTypes.js +19 -0
  128. package/dist/appmixer/clientify/crm/ListTaskTypes/component.json +87 -0
  129. package/dist/appmixer/clientify/crm/ListTasks/ListTasks.js +25 -0
  130. package/dist/appmixer/clientify/crm/ListTasks/component.json +102 -0
  131. package/dist/appmixer/clientify/crm/ListUsers/ListUsers.js +24 -0
  132. package/dist/appmixer/clientify/crm/ListUsers/component.json +93 -0
  133. package/dist/appmixer/clientify/crm/RemoveCompanyEmployee/RemoveCompanyEmployee.js +22 -0
  134. package/dist/appmixer/clientify/crm/RemoveCompanyEmployee/component.json +62 -0
  135. package/dist/appmixer/clientify/crm/RemoveCompanyTag/RemoveCompanyTag.js +22 -0
  136. package/dist/appmixer/clientify/crm/RemoveCompanyTag/component.json +62 -0
  137. package/dist/appmixer/clientify/crm/RemoveContactTag/RemoveContactTag.js +22 -0
  138. package/dist/appmixer/clientify/crm/RemoveContactTag/component.json +62 -0
  139. package/dist/appmixer/clientify/crm/SearchCompanies/SearchCompanies.js +29 -0
  140. package/dist/appmixer/clientify/crm/SearchCompanies/component.json +111 -0
  141. package/dist/appmixer/clientify/crm/UpdateCompany/UpdateCompany.js +24 -0
  142. package/dist/appmixer/clientify/crm/UpdateCompany/component.json +60 -0
  143. package/dist/appmixer/clientify/crm/UpdateCompanyAddress/UpdateCompanyAddress.js +35 -0
  144. package/dist/appmixer/clientify/crm/UpdateCompanyAddress/component.json +131 -0
  145. package/dist/appmixer/clientify/crm/UpdateCompanyEmail/UpdateCompanyEmail.js +27 -0
  146. package/dist/appmixer/clientify/crm/UpdateCompanyEmail/component.json +91 -0
  147. package/dist/appmixer/clientify/crm/UpdateCompanyPhone/UpdateCompanyPhone.js +27 -0
  148. package/dist/appmixer/clientify/crm/UpdateCompanyPhone/component.json +91 -0
  149. package/dist/appmixer/clientify/crm/UpdateCompanyWebsite/UpdateCompanyWebsite.js +25 -0
  150. package/dist/appmixer/clientify/crm/UpdateCompanyWebsite/component.json +81 -0
  151. package/dist/appmixer/clientify/crm/UpdateContact/UpdateContact.js +24 -0
  152. package/dist/appmixer/clientify/crm/UpdateContact/component.json +81 -0
  153. package/dist/appmixer/clientify/crm/UpdateContactAddress/UpdateContactAddress.js +35 -0
  154. package/dist/appmixer/clientify/crm/UpdateContactAddress/component.json +152 -0
  155. package/dist/appmixer/clientify/crm/UpdateContactEmail/UpdateContactEmail.js +27 -0
  156. package/dist/appmixer/clientify/crm/UpdateContactEmail/component.json +112 -0
  157. package/dist/appmixer/clientify/crm/UpdateContactMarketingStatus/UpdateContactMarketingStatus.js +25 -0
  158. package/dist/appmixer/clientify/crm/UpdateContactMarketingStatus/component.json +92 -0
  159. package/dist/appmixer/clientify/crm/UpdateContactOtherCompany/UpdateContactOtherCompany.js +25 -0
  160. package/dist/appmixer/clientify/crm/UpdateContactOtherCompany/component.json +102 -0
  161. package/dist/appmixer/clientify/crm/UpdateContactPhone/UpdateContactPhone.js +27 -0
  162. package/dist/appmixer/clientify/crm/UpdateContactPhone/component.json +112 -0
  163. package/dist/appmixer/clientify/crm/UpdateTask/UpdateTask.js +24 -0
  164. package/dist/appmixer/clientify/crm/UpdateTask/component.json +69 -0
  165. package/dist/appmixer/clientify/crm/clientify.js +49 -0
  166. package/dist/appmixer/clientify/crm/fields.js +24 -0
  167. package/dist/appmixer/clientify/crm/module.json +7 -0
  168. package/dist/credentials/{ClientifyMcpApi.credentials.d.ts → ClientifyApi.credentials.d.ts} +1 -1
  169. package/dist/credentials/ClientifyApi.credentials.js +33 -0
  170. package/dist/nodes/{ClientifyMcp/ClientifyMcpDynamic.node.d.ts → ClientifyApi/ClientifyApi.node.d.ts} +1 -1
  171. package/dist/nodes/ClientifyApi/ClientifyApi.node.js +139 -0
  172. package/dist/nodes/ClientifyApi/ClientifyApiCatalog.d.ts +23 -0
  173. package/dist/nodes/ClientifyApi/ClientifyApiCatalog.js +217 -0
  174. package/dist/nodes/{ClientifyMcp/ClientifyMcpTrigger.node.d.ts → ClientifyTrigger/ClientifyTrigger.node.d.ts} +1 -1
  175. package/dist/nodes/{ClientifyMcp/ClientifyMcpTrigger.node.js → ClientifyTrigger/ClientifyTrigger.node.js} +6 -14
  176. package/dist/nodes/ClientifyTrigger/clientify.png +0 -0
  177. package/dist/nodes/ClientifyTrigger/clientify.svg +5 -0
  178. package/dist/package.json +13 -6
  179. package/package.json +13 -6
  180. package/dist/credentials/ClientifyMcpApi.credentials.js +0 -25
  181. package/dist/nodes/ClientifyMcp/ClientifyMcpDynamic.node.js +0 -211
  182. package/dist/nodes/ClientifyMcp/ClientifyMcpFields.d.ts +0 -15
  183. package/dist/nodes/ClientifyMcp/ClientifyMcpFields.js +0 -894
  184. /package/dist/nodes/{ClientifyMcp → ClientifyApi}/clientify.png +0 -0
  185. /package/dist/nodes/{ClientifyMcp → ClientifyApi}/clientify.svg +0 -0
package/README.md CHANGED
@@ -3,19 +3,11 @@
3
3
  [![npm version](https://badge.fury.io/js/n8n-nodes-clientify.svg)](https://www.npmjs.com/package/n8n-nodes-clientify)
4
4
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
5
 
6
- Official n8n node for integrating with Clientify CRM via Model Context Protocol (MCP). This node provides seamless access to all Clientify CRM operations including contacts, companies, deals, tasks, and more.
6
+ Connect n8n to Clientify CRM via the Clientify REST API using API keys (`Authorization: Token <apiKey>`).
7
7
 
8
- ## Table of Contents
8
+ This package stays aligned with the official action catalog by generating actions/fields from the same connector spec used elsewhere (bundled inside this package under `appmixer/clientify/crm/`).
9
9
 
10
- - [Installation](#installation)
11
- - [Prerequisites](#prerequisites)
12
- - [Configuration](#configuration)
13
- - [Available Operations](#available-operations)
14
- - [Trigger Events](#trigger-events)
15
- - [Usage Examples](#usage-examples)
16
- - [Troubleshooting](#troubleshooting)
17
- - [Support](#support)
18
- - [License](#license)
10
+ Under the hood, requests are executed via `@clientify/api-client`.
19
11
 
20
12
  ## Installation
21
13
 
@@ -25,7 +17,7 @@ Official n8n node for integrating with Clientify CRM via Model Context Protocol
25
17
  2. Click **Install**
26
18
  3. Enter: `n8n-nodes-clientify`
27
19
  4. Click **I understand the risks** and then **Install**
28
- 5. **Restart n8n** (important - the node won't appear until you restart)
20
+ 5. **Restart n8n** (important - it won't show up until you do)
29
21
 
30
22
  ### Via npm (Command Line)
31
23
 
@@ -37,14 +29,14 @@ npm install n8n-nodes-clientify
37
29
 
38
30
  ### Docker
39
31
 
40
- If running n8n in Docker, ensure you persist the nodes directory:
32
+ Persist the nodes directory, or you’ll lose the node on restart:
41
33
 
42
34
  ```yaml
43
35
  volumes:
44
36
  - n8n_data:/home/node/.n8n
45
37
  ```
46
38
 
47
- Or enable auto-reinstall on restart:
39
+ Or enable auto-reinstall:
48
40
 
49
41
  ```yaml
50
42
  environment:
@@ -53,522 +45,60 @@ environment:
53
45
 
54
46
  ## Prerequisites
55
47
 
56
- - **n8n version:** 0.180.0 or higher
57
- - **Node.js version:** 20.15 or higher
58
- - **Clientify Account:** Active Clientify CRM account with API access
59
- - **Authentication Token:** JWT token from Clientify MCP server
48
+ You'll need:
49
+ - n8n 2.x
50
+ - Node.js 20+
51
+ - A Clientify API key
60
52
 
61
53
  ## Configuration
62
54
 
63
- ### Step 1: Obtain Your Clientify MCP Token
64
-
65
- 1. Log into your Clientify account
66
- 2. Navigate to API settings or contact your Clientify administrator
67
- 3. Generate or copy your MCP authentication token (JWT format)
68
-
69
- ### Step 2: Add Credentials in n8n
70
-
71
55
  1. In n8n, go to **Credentials** → **New**
72
- 2. Search for **"Clientify MCP API"**
73
- 3. Enter your **Authentication Token** (JWT)
56
+ 2. Search for **"Clientify API"**
57
+ 3. Enter your **API Key**
74
58
  4. Click **Save**
75
59
 
76
- ### Step 3: Use the Node
77
-
78
- 1. In your workflow, click **+** to add a node
79
- 2. Search for **"Clientify"**
80
- 3. Select the **Clientify** node
81
- 4. Choose your saved credentials
82
- 5. Select an operation from the dropdown
83
- 6. Configure the parameters for your operation
84
-
85
- ## Available Operations
86
-
87
- This node dynamically supports **26 operations** from the Clientify MCP API:
88
-
89
- ### 📊 Companies
90
- - **List Companies** - Retrieve all companies with pagination
91
- - **Get Company** - Get detailed information for a specific company by ID
92
- - **Create Company** - Create a new company in the CRM
93
- - **Update Company** - Update an existing company
94
- - **Delete Company** - Remove a company from the CRM
95
- - **Search Companies** - Search for companies by criteria
96
-
97
- ### 👥 Contacts
98
- - **List Contacts** - Retrieve all contacts or search for specific contacts
99
- - **Get Contact** - Get detailed information for a specific contact by ID
100
- - **Create Contact** - Create a new contact in the CRM
101
- - **Update Contact** - Update an existing contact
102
- - **Delete Contact** - Remove a contact from the CRM
103
-
104
- ### 💼 Deals
105
- - **List Deals** - Retrieve all deals with filtering and pagination
106
- - **List Deals By Stage** - Filter deals by pipeline stage
107
- - **Get Deal** - Get detailed information for a specific deal by ID
108
- - **Create Deal** - Create a new deal/opportunity
109
- - **Update Deal** - Update an existing deal
110
- - **Delete Deal** - Remove a deal from the CRM
111
- - **Mark Deal Won** - Mark a deal as won/closed successfully
112
- - **Mark Deal Lost** - Mark a deal as lost/closed unsuccessfully
113
-
114
- ### ✅ Tasks
115
- - **List Tasks** - Retrieve all tasks with pagination
116
- - **Get Task** - Get detailed information for a specific task by ID
117
- - **Create Task** - Create a new task/activity
118
- - **List Activity Types** - Get available activity types for tasks
119
-
120
- ### ⚙️ Configuration & Utilities
121
- - **List Pipelines** - Retrieve all available sales pipelines
122
- - **Get Current User** - Get information about the authenticated user
123
- - **Get Current Time** - Get current date/time with timezone awareness
124
-
125
- ## Trigger Events
126
-
127
- **NEW in v0.2.0!** 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.
128
-
129
- ### How It Works
130
-
131
- 1. Add "Clientify Trigger" node to your n8n workflow
132
- 2. Select which event should start the workflow (e.g., "Contact Created")
133
- 3. Activate the workflow to get your unique webhook URL
134
- 4. Configure the webhook in Clientify to point to your n8n URL
135
- 5. When the event happens in Clientify, your workflow runs automatically with the data
136
-
137
- ### 16 Available Triggers
138
-
139
- | Event | Trigger Name | When It Fires | Common Use Cases |
140
- |-------|--------------|---------------|------------------|
141
- | 👥 **Contacts** | | | |
142
- | | Contact Created | New contact added | Welcome email, create follow-up task, add to CRM |
143
- | | Contact Updated | Contact details changed | Sync to other systems, log changes, update records |
144
- | | Contact Deleted | Contact removed | Archive data, remove from email lists, cleanup |
145
- | 📊 **Companies** | | | |
146
- | | Company Created | New company added | Research company, assign account manager, notify team |
147
- | | Company Updated | Company details changed | Update external systems, track changes |
148
- | | Company Deleted | Company removed | Clean up related data, archive records |
149
- | 💼 **Deals** | | | |
150
- | | Deal Created | New deal/opportunity created | Notify sales team, create tasks, log in analytics |
151
- | | Deal Updated | Deal details changed | Track value changes, update forecasts, log activity |
152
- | | Deal Won | Deal closed successfully | Send celebration, create invoice, start onboarding |
153
- | | Deal Lost | Deal closed unsuccessfully | Add to nurture campaign, analyze loss reason |
154
- | | Deal Stage Changed | Deal moved to different stage | Stage-specific actions (send pricing, generate contract) |
155
- | | Deal Deleted | Deal removed | Log deletion, archive data |
156
- | ✅ **Tasks** | | | |
157
- | | Task Created | New task added | Add to calendar, notify assignee, sync to project tools |
158
- | | Task Completed | Task marked complete | Log activity, update metrics, trigger next steps |
159
- | | Task Due Soon | Task approaching due date | Send reminder to assignee |
160
- | | Task Overdue | Task past due date | Escalate to manager, send urgent notification |
161
-
162
- ### Setup Instructions
163
-
164
- **In n8n:**
165
- 1. Add "Clientify Trigger" node to your workflow
166
- 2. Select the event from the dropdown
167
- 3. Choose your Clientify MCP credentials
168
- 4. Save and **activate** the workflow (toggle ON)
169
- 5. Click the trigger node → Expand "Webhook URLs"
170
- 6. Switch to "Production URL" tab
171
- 7. Copy the webhook URL
172
-
173
- **In Clientify:**
174
- 1. Go to Settings → Webhooks
175
- 2. Click "Add Webhook"
176
- 3. Select the matching event (e.g., "contact.created")
177
- 4. Paste your n8n webhook URL
178
- 5. Set status to "Active"
179
- 6. Save
180
-
181
- **Test It:**
182
- Create a contact, deal, or task in Clientify → Check n8n executions → Your workflow should have run!
183
-
184
- ### Data You'll Receive
185
-
186
- All webhook data is automatically flattened so you can easily access it in your workflow. Here's what you get for each event type:
187
-
188
- **Contact Events** (`contact.created`, `contact.updated`, `contact.deleted`)
189
- ```json
190
- {
191
- "event": "contact.created",
192
- "timestamp": "2025-10-02T15:30:00Z",
193
- "contact_id": 12345,
194
- "first_name": "John",
195
- "last_name": "Doe",
196
- "email": "john.doe@example.com",
197
- "phone": "+1234567890",
198
- "company_id": 456,
199
- "company_name": "Acme Corp",
200
- "changes": { /* only for .updated events */ }
201
- }
202
- ```
203
- Access with: `{{$json.first_name}}`, `{{$json.email}}`, `{{$json.company_name}}`
204
-
205
- **Company Events** (`company.created`, `company.updated`, `company.deleted`)
206
- ```json
207
- {
208
- "event": "company.created",
209
- "timestamp": "2025-10-02T18:00:00Z",
210
- "company_id": 999,
211
- "name": "Tech Startup Inc",
212
- "domain": "techstartup.com",
213
- "industry": "Technology",
214
- "size": "50-100",
215
- "country": "USA"
216
- }
217
- ```
218
- Access with: `{{$json.name}}`, `{{$json.domain}}`, `{{$json.industry}}`
219
-
220
- **Deal Events** (`deal.created`, `deal.updated`, `deal.won`, `deal.lost`, `deal.stage_changed`, `deal.deleted`)
221
- ```json
222
- {
223
- "event": "deal.won",
224
- "timestamp": "2025-10-02T23:00:00Z",
225
- "deal_id": 98765,
226
- "title": "Enterprise License Sale",
227
- "value": 60000,
228
- "currency": "USD",
229
- "contact_id": 12345,
230
- "contact_name": "John Doe",
231
- "company_id": 999,
232
- "company_name": "Tech Startup Inc",
233
- "stage_name": "Won",
234
- "won_at": "2025-10-02T23:00:00Z"
235
- }
236
- ```
237
- Access with: `{{$json.title}}`, `{{$json.value}}`, `{{$json.contact_name}}`
238
-
239
- **Task Events** (`task.created`, `task.completed`, `task.due_soon`, `task.overdue`)
240
- ```json
241
- {
242
- "event": "task.created",
243
- "timestamp": "2025-10-03T03:00:00Z",
244
- "task_id": 5555,
245
- "title": "Follow up with John Doe",
246
- "description": "Discuss pricing options",
247
- "type": "call",
248
- "contact_id": 12345,
249
- "contact_name": "John Doe",
250
- "deal_id": 98765,
251
- "assigned_to_name": "Sales Rep",
252
- "due_date": "2025-10-05"
253
- }
254
- ```
255
- Access with: `{{$json.title}}`, `{{$json.contact_name}}`, `{{$json.due_date}}`
256
-
257
- ### Important Notes
258
-
259
- - **Event names are case-sensitive**: Use exact names like `contact.created` (not `Contact.Created`)
260
- - **Webhook URLs are unique** per workflow - if you recreate a workflow, you'll get a new URL
261
- - **Workflows must be active** for webhooks to work - inactive workflows won't receive events
262
- - **All data includes `_raw`** field with the original payload for advanced use cases
263
- - **Update events include `changes`** object showing what changed (old/new values)
60
+ ## Nodes
264
61
 
265
- ## Usage Examples
62
+ ### Clientify (action node)
266
63
 
267
- ### Example 1: List All Contacts
268
-
269
- Retrieve a paginated list of all contacts in your CRM.
270
-
271
- **Configuration:**
272
- - **Operation:** `List Contacts`
273
- - **Parameters:** Leave empty for all contacts, or add filters
274
-
275
- **Output:** Array of contact objects with names, emails, phone numbers, and IDs.
276
-
277
- ```json
278
- [
279
- {
280
- "id": 123,
281
- "first_name": "John",
282
- "last_name": "Doe",
283
- "email": "john.doe@example.com",
284
- "phone": "+1234567890",
285
- "company_id": 456
286
- }
287
- ]
288
- ```
289
-
290
- ---
291
-
292
- ### Example 2: Create a New Company
293
-
294
- Add a new company to your Clientify CRM.
295
-
296
- **Configuration:**
297
- - **Operation:** `Create Company`
298
- - **Parameters:**
299
- - **name** (required): `Acme Corporation`
300
- - **domain**: `acme.com`
301
- - **industry**: `Technology`
302
- - **description**: `Leading software provider`
303
-
304
- **Output:** Created company object with assigned ID.
305
-
306
- ```json
307
- {
308
- "id": 789,
309
- "name": "Acme Corporation",
310
- "domain": "acme.com",
311
- "industry": "Technology",
312
- "created_at": "2025-10-01T12:00:00Z"
313
- }
314
- ```
64
+ 1. Add a node and search for **Clientify**.
65
+ 2. Pick an **Action**.
66
+ 3. Fill fields directly or map them from previous nodes using expressions.
315
67
 
316
- ---
68
+ ### Clientify Trigger (webhook helper)
317
69
 
318
- ### Example 3: Update a Deal and Mark as Won
70
+ Use this when you want a Clientify-branded trigger in the workflow. Under the hood it behaves like an n8n webhook:
319
71
 
320
- Update deal details and mark it as successfully closed.
72
+ - Use **Test URL** when executing on the canvas.
73
+ - Use **Production URL** for always-on external calls (runs show up in **Executions**).
74
+ - The trigger verifies the incoming payload `event` matches the selected event type.
321
75
 
322
- **Workflow:**
323
- 1. **First Node:** Get the deal you want to update
324
- - **Operation:** `Get Deal`
325
- - **deal_id:** `{{$json.deal_id}}`
76
+ For payload formats and examples, see `TRIGGERS_REFERENCE.md`.
326
77
 
327
- 2. **Second Node:** Update the deal
328
- - **Operation:** `Update Deal`
329
- - **deal_id:** `{{$json.id}}`
330
- - **value:** `50000`
331
- - **notes:** `Final negotiations completed`
332
-
333
- 3. **Third Node:** Mark as won
334
- - **Operation:** `Mark Deal Won`
335
- - **deal_id:** `{{$json.id}}`
336
-
337
- ---
338
-
339
- ### Example 4: Search Companies and Create Contacts
340
-
341
- Find a company by name and create a new contact associated with it.
342
-
343
- **Workflow:**
344
- 1. **Search Companies:**
345
- - **Operation:** `Search Companies`
346
- - **query:** `Acme`
347
-
348
- 2. **Create Contact:**
349
- - **Operation:** `Create Contact`
350
- - **first_name:** `Jane`
351
- - **last_name:** `Smith`
352
- - **email:** `jane.smith@acme.com`
353
- - **company_id:** `{{$json.id}}` (from previous node)
354
-
355
- ---
356
-
357
- ### Example 5: List All Deals in a Specific Pipeline Stage
358
-
359
- Retrieve deals that are in the "Negotiation" stage.
360
-
361
- **Configuration:**
362
- - **Operation:** `List Deals By Stage`
363
- - **Parameters:**
364
- - **stage:** `Negotiation`
365
-
366
- **Use Case:** Create automated alerts when deals reach certain stages, or generate reports on pipeline health.
367
-
368
- ---
369
-
370
- ### Example 6: Auto-Send Welcome Email (Using Trigger)
371
-
372
- **NEW in v0.2.0!** Automatically send a welcome email when a new contact is created.
373
-
374
- **Workflow:**
375
- 1. **Clientify Trigger**
376
- - Event: `Contact Created`
377
-
378
- 2. **Send Email**
379
- - To: `{{$json.email}}`
380
- - Subject: `Welcome {{$json.first_name}}!`
381
- - Body: Welcome message
382
-
383
- 3. **Create Task**
384
- - Title: `Follow up with {{$json.first_name}} {{$json.last_name}}`
385
- - Contact ID: `{{$json.contact_id}}`
386
- - Due: 3 days from now
387
-
388
- **Result:** When someone creates a contact "Jane Smith" in Clientify:
389
- - Jane automatically receives welcome email
390
- - Follow-up task is created for sales team
391
- - All happens instantly without manual intervention
392
-
393
- ---
394
-
395
- ### Example 7: Deal Won Notification (Using Trigger)
396
-
397
- **NEW in v0.2.0!** Notify your team when a deal is won.
398
-
399
- **Workflow:**
400
- 1. **Clientify Trigger**
401
- - Event: `Deal Won`
78
+ ## Available Operations
402
79
 
403
- 2. **Slack** (or Email)
404
- - Message: `🎉 Deal Won! {{$json.title}} - ${{$json.value}} - {{$json.contact_name}}`
405
- - Channel: `#sales-wins`
80
+ Operations are generated from the bundled catalog (currently 81 actions).
406
81
 
407
- 3. **Clientify** (Action Node)
408
- - Operation: `Create Task`
409
- - Title: `Onboard {{$json.contact_name}}`
410
- - Deal ID: `{{$json.deal_id}}`
82
+ ## Mapping (inputs from earlier steps)
411
83
 
412
- **Result:** When a deal is marked as won:
413
- - Team gets instant Slack notification
414
- - Onboarding task is automatically created
415
- - No manual steps required
84
+ Mapping is field-based:
416
85
 
417
- ---
86
+ - Use the field’s **+** button (variable picker), or
87
+ - Toggle **=** and use expressions like `{{$node["Create Contact"].json.id}}`.
418
88
 
419
89
  ## Troubleshooting
420
90
 
421
- ### Node Doesn't Appear After Installation
422
-
423
- **Problem:** The Clientify node doesn't show up in the node panel after installing.
424
-
425
- **Solution:**
426
- 1. **Restart n8n completely** (required for new nodes)
427
- 2. Clear your browser cache (Ctrl+Shift+Delete or Cmd+Shift+Delete)
428
- 3. Search for "Clientify" (not the package name) in the node search
429
- 4. Verify installation in **Settings → Community Nodes**
430
-
431
- ### Authentication Errors
432
-
433
- **Problem:** "Authentication failed" or 401/403 errors.
434
-
435
- **Solution:**
436
- 1. Verify your JWT token is valid and not expired
437
- 2. Check that the token has the correct permissions in Clientify
438
- 3. Ensure you're using the Clientify MCP token (not a regular API key)
439
- 4. Try creating a new credential with a fresh token
440
-
441
- ### "Missing required parameter" Errors
442
-
443
- **Problem:** Operation fails with missing parameter errors.
444
-
445
- **Solution:**
446
- 1. Check which fields are marked as **required** (indicated by red asterisk)
447
- 2. Some operations require specific IDs (contact_id, company_id, etc.)
448
- 3. Use `Get` operations first to retrieve IDs, then pass them to `Update` or `Delete` operations
449
- 4. Review the parameter descriptions for expected format
450
-
451
- ### Operations Return Empty Results
452
-
453
- **Problem:** List operations return no results even though data exists.
454
-
455
- **Solution:**
456
- 1. Check pagination parameters (page, page_size)
457
- 2. Verify your token has permission to access the requested resources
458
- 3. Try without filters first to confirm data access
459
- 4. Check the Clientify web UI to confirm data exists
460
-
461
- ### Node Execution Fails in Docker
462
-
463
- **Problem:** Node fails with "package not found" errors in Docker environments.
464
-
465
- **Solution:**
466
- 1. Ensure nodes directory is persisted in volumes:
467
- ```yaml
468
- volumes:
469
- - n8n_data:/home/node/.n8n
470
- ```
471
- 2. Or enable auto-reinstall:
472
- ```yaml
473
- environment:
474
- - N8N_REINSTALL_MISSING_PACKAGES=true
475
- ```
476
- 3. Restart the container after installing the node
477
-
478
- ### Rate Limiting Errors
479
-
480
- **Problem:** "Too many requests" or 429 errors.
481
-
482
- **Solution:**
483
- 1. Add delay between operations using n8n's **Wait** node
484
- 2. Reduce the frequency of scheduled workflows
485
- 3. Batch operations where possible
486
- 4. Contact Clientify support to increase rate limits if needed
487
-
488
- ## Parameter Reference
489
-
490
- ### Common Parameters
491
-
492
- Most operations support these common parameters:
493
-
494
- - **page** (number): Page number for pagination (default: 1)
495
- - **page_size** (number): Number of results per page (default: 20, max: 100)
496
- - **sort_by** (string): Field to sort by (e.g., "created_at", "name")
497
- - **sort_order** (string): Sort direction ("asc" or "desc")
498
-
499
- ### ID Parameters
500
-
501
- Operations that work with specific records require an ID parameter:
502
-
503
- - **company_id** (number): Unique identifier for a company
504
- - **contact_id** (number): Unique identifier for a contact
505
- - **deal_id** (number): Unique identifier for a deal
506
- - **task_id** (number): Unique identifier for a task
507
-
508
- ## Advanced Usage
509
-
510
- ### Combining Multiple Operations
511
-
512
- Create powerful workflows by chaining operations:
513
-
514
- ```
515
- Trigger → Search Companies → Create Contact → Create Deal → Create Task
516
- ```
517
-
518
- ### Error Handling
519
-
520
- Use n8n's built-in error handling:
521
-
522
- 1. Enable **"Continue On Fail"** in node settings
523
- 2. Add an **IF** node to check for errors
524
- 3. Route errors to notification nodes (Email, Slack, etc.)
525
-
526
- ### Data Transformation
527
-
528
- Use n8n's **Code** or **Function** nodes to transform data between operations:
529
-
530
- ```
531
- List Contacts → Code Node (transform) → External API
532
- ```
533
-
534
- ## Development & Contribution
535
-
536
- This is an official Clientify node. Contributions are welcome!
537
-
538
- **Repository:** https://github.com/contacteitor/clientify_n8n
539
-
540
- **Report Issues:** https://github.com/contacteitor/clientify_n8n/issues
541
-
542
- **Documentation:** See the repository for full documentation
91
+ - If the node does not appear after install, restart n8n.
92
+ - If the API returns `401`, verify your API key.
93
+ - If an operation requires an ID, ensure you mapped the correct numeric ID from a previous node.
543
94
 
544
95
  ## Support
545
96
 
546
- - **Issues & Bugs:** https://github.com/contacteitor/clientify_n8n/issues
547
- - **Email:** develop@clientify.com
548
- - **Clientify Documentation:** https://mcp.clientify.com/docs
549
-
550
- ## Version History
551
-
552
- - **v0.2.0** (2025-10-02): Trigger support added
553
- - **NEW:** Clientify Trigger node for webhook events
554
- - 16 trigger events (contact, company, deal, task)
555
- - Automatic workflow execution on Clientify events
556
- - Flattened webhook payload for easy data access
557
-
558
- - **v0.1.0** (2025-10-01): Initial release
559
- - 26 MCP operations supported
560
- - Dynamic field generation from MCP API
561
- - Full CRUD operations for contacts, companies, deals, tasks
562
- - Pipeline and user management
97
+ - **Clientify API docs:** https://newapi.clientify.com/
98
+ - **Triggers reference:** `TRIGGERS_REFERENCE.md`
563
99
 
564
100
  ## License
565
101
 
566
102
  MIT License - see [LICENSE](LICENSE) file for details.
567
103
 
568
104
  Copyright (c) 2025 Clientify
569
-
570
- ---
571
-
572
- **Made with ❤️ by Clientify**
573
-
574
- *This is an official Clientify node. n8n is a trademark of its respective owner.*