n8n-nodes-clientify 0.2.0 → 0.2.2
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.
- package/README.md +114 -52
- package/dist/README.md +574 -0
- package/dist/TRIGGERS_REFERENCE.md +922 -0
- package/dist/package.json +2 -2
- package/package.json +2 -2
|
@@ -0,0 +1,922 @@
|
|
|
1
|
+
# Clientify Triggers - Complete Reference
|
|
2
|
+
|
|
3
|
+
**Package:** n8n-nodes-clientify v0.2.0
|
|
4
|
+
**Total Triggers:** 16
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## How Triggers Work
|
|
9
|
+
|
|
10
|
+
1. **Create workflow** in n8n with Clientify Trigger node
|
|
11
|
+
2. **Select event** (e.g., "Contact Created")
|
|
12
|
+
3. **Activate workflow** → Get webhook URL
|
|
13
|
+
4. **Configure in Clientify** → Point event to webhook URL
|
|
14
|
+
5. **Event happens** → Workflow runs automatically
|
|
15
|
+
|
|
16
|
+
**Webhook URL Format:**
|
|
17
|
+
```
|
|
18
|
+
https://your-n8n-instance.com/webhook/{unique-workflow-id}/webhook
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Each workflow gets a unique URL when activated.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## 👥 Contact Triggers
|
|
26
|
+
|
|
27
|
+
### 1. Contact Created
|
|
28
|
+
|
|
29
|
+
**Event:** `contact.created`
|
|
30
|
+
**When:** New contact added to Clientify
|
|
31
|
+
|
|
32
|
+
**Input Payload:**
|
|
33
|
+
```json
|
|
34
|
+
{
|
|
35
|
+
"event": "contact.created",
|
|
36
|
+
"timestamp": "2025-10-02T15:30:00Z",
|
|
37
|
+
"account_id": "acc_12345",
|
|
38
|
+
"user_id": "user_67890",
|
|
39
|
+
"data": {
|
|
40
|
+
"contact": {
|
|
41
|
+
"id": 12345,
|
|
42
|
+
"first_name": "John",
|
|
43
|
+
"last_name": "Doe",
|
|
44
|
+
"email": "john.doe@example.com",
|
|
45
|
+
"phone": "+1234567890",
|
|
46
|
+
"company_id": 456,
|
|
47
|
+
"company_name": "Acme Corp",
|
|
48
|
+
"created_at": "2025-10-02T15:30:00Z"
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
**Output (Available in Workflow):**
|
|
55
|
+
```json
|
|
56
|
+
{
|
|
57
|
+
"event": "contact.created",
|
|
58
|
+
"timestamp": "2025-10-02T15:30:00Z",
|
|
59
|
+
"account_id": "acc_12345",
|
|
60
|
+
"user_id": "user_67890",
|
|
61
|
+
"contact_id": 12345,
|
|
62
|
+
"first_name": "John",
|
|
63
|
+
"last_name": "Doe",
|
|
64
|
+
"email": "john.doe@example.com",
|
|
65
|
+
"phone": "+1234567890",
|
|
66
|
+
"company_id": 456,
|
|
67
|
+
"company_name": "Acme Corp",
|
|
68
|
+
"created_at": "2025-10-02T15:30:00Z",
|
|
69
|
+
"_raw": { /* original payload */ }
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
**Access Data:** `{{$json.first_name}}`, `{{$json.email}}`, etc.
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
### 2. Contact Updated
|
|
78
|
+
|
|
79
|
+
**Event:** `contact.updated`
|
|
80
|
+
**When:** Contact details modified
|
|
81
|
+
|
|
82
|
+
**Input Payload:**
|
|
83
|
+
```json
|
|
84
|
+
{
|
|
85
|
+
"event": "contact.updated",
|
|
86
|
+
"timestamp": "2025-10-02T16:00:00Z",
|
|
87
|
+
"account_id": "acc_12345",
|
|
88
|
+
"user_id": "user_67890",
|
|
89
|
+
"data": {
|
|
90
|
+
"contact": {
|
|
91
|
+
"id": 12345,
|
|
92
|
+
"first_name": "John",
|
|
93
|
+
"last_name": "Doe",
|
|
94
|
+
"email": "john.new@example.com",
|
|
95
|
+
"phone": "+1234567890",
|
|
96
|
+
"company_id": 789,
|
|
97
|
+
"company_name": "New Corp",
|
|
98
|
+
"updated_at": "2025-10-02T16:00:00Z"
|
|
99
|
+
},
|
|
100
|
+
"changes": {
|
|
101
|
+
"email": {
|
|
102
|
+
"old": "john.doe@example.com",
|
|
103
|
+
"new": "john.new@example.com"
|
|
104
|
+
},
|
|
105
|
+
"company_id": {
|
|
106
|
+
"old": 456,
|
|
107
|
+
"new": 789
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
**Output:**
|
|
115
|
+
```json
|
|
116
|
+
{
|
|
117
|
+
"event": "contact.updated",
|
|
118
|
+
"timestamp": "2025-10-02T16:00:00Z",
|
|
119
|
+
"contact_id": 12345,
|
|
120
|
+
"first_name": "John",
|
|
121
|
+
"last_name": "Doe",
|
|
122
|
+
"email": "john.new@example.com",
|
|
123
|
+
"phone": "+1234567890",
|
|
124
|
+
"company_id": 789,
|
|
125
|
+
"company_name": "New Corp",
|
|
126
|
+
"updated_at": "2025-10-02T16:00:00Z",
|
|
127
|
+
"changes": {
|
|
128
|
+
"email": { "old": "john.doe@example.com", "new": "john.new@example.com" },
|
|
129
|
+
"company_id": { "old": 456, "new": 789 }
|
|
130
|
+
},
|
|
131
|
+
"_raw": { /* original payload */ }
|
|
132
|
+
}
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
**Access Changes:** `{{$json.changes.email.old}}`, `{{$json.changes.email.new}}`
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
### 3. Contact Deleted
|
|
140
|
+
|
|
141
|
+
**Event:** `contact.deleted`
|
|
142
|
+
**When:** Contact removed from Clientify
|
|
143
|
+
|
|
144
|
+
**Input Payload:**
|
|
145
|
+
```json
|
|
146
|
+
{
|
|
147
|
+
"event": "contact.deleted",
|
|
148
|
+
"timestamp": "2025-10-02T17:00:00Z",
|
|
149
|
+
"account_id": "acc_12345",
|
|
150
|
+
"user_id": "user_67890",
|
|
151
|
+
"data": {
|
|
152
|
+
"contact": {
|
|
153
|
+
"id": 12345,
|
|
154
|
+
"first_name": "John",
|
|
155
|
+
"last_name": "Doe",
|
|
156
|
+
"email": "john.doe@example.com"
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
**Output:**
|
|
163
|
+
```json
|
|
164
|
+
{
|
|
165
|
+
"event": "contact.deleted",
|
|
166
|
+
"timestamp": "2025-10-02T17:00:00Z",
|
|
167
|
+
"contact_id": 12345,
|
|
168
|
+
"first_name": "John",
|
|
169
|
+
"last_name": "Doe",
|
|
170
|
+
"email": "john.doe@example.com",
|
|
171
|
+
"_raw": { /* original payload */ }
|
|
172
|
+
}
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## 📊 Company Triggers
|
|
178
|
+
|
|
179
|
+
### 4. Company Created
|
|
180
|
+
|
|
181
|
+
**Event:** `company.created`
|
|
182
|
+
**When:** New company added to Clientify
|
|
183
|
+
|
|
184
|
+
**Input Payload:**
|
|
185
|
+
```json
|
|
186
|
+
{
|
|
187
|
+
"event": "company.created",
|
|
188
|
+
"timestamp": "2025-10-02T18:00:00Z",
|
|
189
|
+
"account_id": "acc_12345",
|
|
190
|
+
"user_id": "user_67890",
|
|
191
|
+
"data": {
|
|
192
|
+
"company": {
|
|
193
|
+
"id": 999,
|
|
194
|
+
"name": "Tech Startup Inc",
|
|
195
|
+
"domain": "techstartup.com",
|
|
196
|
+
"industry": "Technology",
|
|
197
|
+
"size": "50-100",
|
|
198
|
+
"country": "USA",
|
|
199
|
+
"created_at": "2025-10-02T18:00:00Z"
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
**Output:**
|
|
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
|
+
"created_at": "2025-10-02T18:00:00Z",
|
|
217
|
+
"_raw": { /* original payload */ }
|
|
218
|
+
}
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
**Access Data:** `{{$json.name}}`, `{{$json.domain}}`, `{{$json.industry}}`
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
### 5. Company Updated
|
|
226
|
+
|
|
227
|
+
**Event:** `company.updated`
|
|
228
|
+
**When:** Company details modified
|
|
229
|
+
|
|
230
|
+
**Input Payload:**
|
|
231
|
+
```json
|
|
232
|
+
{
|
|
233
|
+
"event": "company.updated",
|
|
234
|
+
"timestamp": "2025-10-02T19:00:00Z",
|
|
235
|
+
"account_id": "acc_12345",
|
|
236
|
+
"user_id": "user_67890",
|
|
237
|
+
"data": {
|
|
238
|
+
"company": {
|
|
239
|
+
"id": 999,
|
|
240
|
+
"name": "Tech Startup Inc",
|
|
241
|
+
"domain": "newdomain.com",
|
|
242
|
+
"industry": "SaaS",
|
|
243
|
+
"updated_at": "2025-10-02T19:00:00Z"
|
|
244
|
+
},
|
|
245
|
+
"changes": {
|
|
246
|
+
"domain": { "old": "techstartup.com", "new": "newdomain.com" },
|
|
247
|
+
"industry": { "old": "Technology", "new": "SaaS" }
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
**Output:**
|
|
254
|
+
```json
|
|
255
|
+
{
|
|
256
|
+
"event": "company.updated",
|
|
257
|
+
"timestamp": "2025-10-02T19:00:00Z",
|
|
258
|
+
"company_id": 999,
|
|
259
|
+
"name": "Tech Startup Inc",
|
|
260
|
+
"domain": "newdomain.com",
|
|
261
|
+
"industry": "SaaS",
|
|
262
|
+
"updated_at": "2025-10-02T19:00:00Z",
|
|
263
|
+
"changes": {
|
|
264
|
+
"domain": { "old": "techstartup.com", "new": "newdomain.com" },
|
|
265
|
+
"industry": { "old": "Technology", "new": "SaaS" }
|
|
266
|
+
},
|
|
267
|
+
"_raw": { /* original payload */ }
|
|
268
|
+
}
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
---
|
|
272
|
+
|
|
273
|
+
### 6. Company Deleted
|
|
274
|
+
|
|
275
|
+
**Event:** `company.deleted`
|
|
276
|
+
**When:** Company removed from Clientify
|
|
277
|
+
|
|
278
|
+
**Input Payload:**
|
|
279
|
+
```json
|
|
280
|
+
{
|
|
281
|
+
"event": "company.deleted",
|
|
282
|
+
"timestamp": "2025-10-02T20:00:00Z",
|
|
283
|
+
"account_id": "acc_12345",
|
|
284
|
+
"user_id": "user_67890",
|
|
285
|
+
"data": {
|
|
286
|
+
"company": {
|
|
287
|
+
"id": 999,
|
|
288
|
+
"name": "Tech Startup Inc"
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
**Output:**
|
|
295
|
+
```json
|
|
296
|
+
{
|
|
297
|
+
"event": "company.deleted",
|
|
298
|
+
"timestamp": "2025-10-02T20:00:00Z",
|
|
299
|
+
"company_id": 999,
|
|
300
|
+
"name": "Tech Startup Inc",
|
|
301
|
+
"_raw": { /* original payload */ }
|
|
302
|
+
}
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
---
|
|
306
|
+
|
|
307
|
+
## 💼 Deal Triggers
|
|
308
|
+
|
|
309
|
+
### 7. Deal Created
|
|
310
|
+
|
|
311
|
+
**Event:** `deal.created`
|
|
312
|
+
**When:** New deal/opportunity created
|
|
313
|
+
|
|
314
|
+
**Input Payload:**
|
|
315
|
+
```json
|
|
316
|
+
{
|
|
317
|
+
"event": "deal.created",
|
|
318
|
+
"timestamp": "2025-10-02T21:00:00Z",
|
|
319
|
+
"account_id": "acc_12345",
|
|
320
|
+
"user_id": "user_67890",
|
|
321
|
+
"data": {
|
|
322
|
+
"deal": {
|
|
323
|
+
"id": 98765,
|
|
324
|
+
"title": "Enterprise License Sale",
|
|
325
|
+
"value": 50000,
|
|
326
|
+
"currency": "USD",
|
|
327
|
+
"contact_id": 12345,
|
|
328
|
+
"contact_name": "John Doe",
|
|
329
|
+
"company_id": 999,
|
|
330
|
+
"company_name": "Tech Startup Inc",
|
|
331
|
+
"pipeline_id": 1,
|
|
332
|
+
"pipeline_name": "Sales Pipeline",
|
|
333
|
+
"stage_id": 3,
|
|
334
|
+
"stage_name": "Proposal",
|
|
335
|
+
"created_at": "2025-10-02T21:00:00Z"
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
**Output:**
|
|
342
|
+
```json
|
|
343
|
+
{
|
|
344
|
+
"event": "deal.created",
|
|
345
|
+
"timestamp": "2025-10-02T21:00:00Z",
|
|
346
|
+
"deal_id": 98765,
|
|
347
|
+
"title": "Enterprise License Sale",
|
|
348
|
+
"value": 50000,
|
|
349
|
+
"currency": "USD",
|
|
350
|
+
"contact_id": 12345,
|
|
351
|
+
"contact_name": "John Doe",
|
|
352
|
+
"company_id": 999,
|
|
353
|
+
"company_name": "Tech Startup Inc",
|
|
354
|
+
"pipeline_id": 1,
|
|
355
|
+
"pipeline_name": "Sales Pipeline",
|
|
356
|
+
"stage_id": 3,
|
|
357
|
+
"stage_name": "Proposal",
|
|
358
|
+
"created_at": "2025-10-02T21:00:00Z",
|
|
359
|
+
"_raw": { /* original payload */ }
|
|
360
|
+
}
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
**Access Data:** `{{$json.title}}`, `{{$json.value}}`, `{{$json.stage_name}}`
|
|
364
|
+
|
|
365
|
+
---
|
|
366
|
+
|
|
367
|
+
### 8. Deal Updated
|
|
368
|
+
|
|
369
|
+
**Event:** `deal.updated`
|
|
370
|
+
**When:** Deal details modified
|
|
371
|
+
|
|
372
|
+
**Input Payload:**
|
|
373
|
+
```json
|
|
374
|
+
{
|
|
375
|
+
"event": "deal.updated",
|
|
376
|
+
"timestamp": "2025-10-02T22:00:00Z",
|
|
377
|
+
"account_id": "acc_12345",
|
|
378
|
+
"user_id": "user_67890",
|
|
379
|
+
"data": {
|
|
380
|
+
"deal": {
|
|
381
|
+
"id": 98765,
|
|
382
|
+
"title": "Enterprise License Sale",
|
|
383
|
+
"value": 60000,
|
|
384
|
+
"currency": "USD",
|
|
385
|
+
"stage_name": "Negotiation",
|
|
386
|
+
"updated_at": "2025-10-02T22:00:00Z"
|
|
387
|
+
},
|
|
388
|
+
"changes": {
|
|
389
|
+
"value": { "old": 50000, "new": 60000 },
|
|
390
|
+
"stage_name": { "old": "Proposal", "new": "Negotiation" }
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
```
|
|
395
|
+
|
|
396
|
+
**Output:**
|
|
397
|
+
```json
|
|
398
|
+
{
|
|
399
|
+
"event": "deal.updated",
|
|
400
|
+
"timestamp": "2025-10-02T22:00:00Z",
|
|
401
|
+
"deal_id": 98765,
|
|
402
|
+
"title": "Enterprise License Sale",
|
|
403
|
+
"value": 60000,
|
|
404
|
+
"currency": "USD",
|
|
405
|
+
"stage_name": "Negotiation",
|
|
406
|
+
"updated_at": "2025-10-02T22:00:00Z",
|
|
407
|
+
"changes": {
|
|
408
|
+
"value": { "old": 50000, "new": 60000 },
|
|
409
|
+
"stage_name": { "old": "Proposal", "new": "Negotiation" }
|
|
410
|
+
},
|
|
411
|
+
"_raw": { /* original payload */ }
|
|
412
|
+
}
|
|
413
|
+
```
|
|
414
|
+
|
|
415
|
+
---
|
|
416
|
+
|
|
417
|
+
### 9. Deal Won
|
|
418
|
+
|
|
419
|
+
**Event:** `deal.won`
|
|
420
|
+
**When:** Deal marked as won/closed successfully
|
|
421
|
+
|
|
422
|
+
**Input Payload:**
|
|
423
|
+
```json
|
|
424
|
+
{
|
|
425
|
+
"event": "deal.won",
|
|
426
|
+
"timestamp": "2025-10-02T23:00:00Z",
|
|
427
|
+
"account_id": "acc_12345",
|
|
428
|
+
"user_id": "user_67890",
|
|
429
|
+
"data": {
|
|
430
|
+
"deal": {
|
|
431
|
+
"id": 98765,
|
|
432
|
+
"title": "Enterprise License Sale",
|
|
433
|
+
"value": 60000,
|
|
434
|
+
"currency": "USD",
|
|
435
|
+
"contact_id": 12345,
|
|
436
|
+
"contact_name": "John Doe",
|
|
437
|
+
"company_id": 999,
|
|
438
|
+
"company_name": "Tech Startup Inc",
|
|
439
|
+
"stage_name": "Won",
|
|
440
|
+
"won_at": "2025-10-02T23:00:00Z"
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
```
|
|
445
|
+
|
|
446
|
+
**Output:**
|
|
447
|
+
```json
|
|
448
|
+
{
|
|
449
|
+
"event": "deal.won",
|
|
450
|
+
"timestamp": "2025-10-02T23:00:00Z",
|
|
451
|
+
"deal_id": 98765,
|
|
452
|
+
"title": "Enterprise License Sale",
|
|
453
|
+
"value": 60000,
|
|
454
|
+
"currency": "USD",
|
|
455
|
+
"contact_id": 12345,
|
|
456
|
+
"contact_name": "John Doe",
|
|
457
|
+
"company_id": 999,
|
|
458
|
+
"company_name": "Tech Startup Inc",
|
|
459
|
+
"stage_name": "Won",
|
|
460
|
+
"won_at": "2025-10-02T23:00:00Z",
|
|
461
|
+
"_raw": { /* original payload */ }
|
|
462
|
+
}
|
|
463
|
+
```
|
|
464
|
+
|
|
465
|
+
**Use Case:** Send celebration email, create onboarding task, post to Slack
|
|
466
|
+
|
|
467
|
+
---
|
|
468
|
+
|
|
469
|
+
### 10. Deal Lost
|
|
470
|
+
|
|
471
|
+
**Event:** `deal.lost`
|
|
472
|
+
**When:** Deal marked as lost/closed unsuccessfully
|
|
473
|
+
|
|
474
|
+
**Input Payload:**
|
|
475
|
+
```json
|
|
476
|
+
{
|
|
477
|
+
"event": "deal.lost",
|
|
478
|
+
"timestamp": "2025-10-03T00:00:00Z",
|
|
479
|
+
"account_id": "acc_12345",
|
|
480
|
+
"user_id": "user_67890",
|
|
481
|
+
"data": {
|
|
482
|
+
"deal": {
|
|
483
|
+
"id": 98766,
|
|
484
|
+
"title": "SMB Deal",
|
|
485
|
+
"value": 5000,
|
|
486
|
+
"currency": "USD",
|
|
487
|
+
"contact_id": 12346,
|
|
488
|
+
"contact_name": "Jane Smith",
|
|
489
|
+
"stage_name": "Lost",
|
|
490
|
+
"lost_at": "2025-10-03T00:00:00Z",
|
|
491
|
+
"lost_reason": "Budget constraints"
|
|
492
|
+
}
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
```
|
|
496
|
+
|
|
497
|
+
**Output:**
|
|
498
|
+
```json
|
|
499
|
+
{
|
|
500
|
+
"event": "deal.lost",
|
|
501
|
+
"timestamp": "2025-10-03T00:00:00Z",
|
|
502
|
+
"deal_id": 98766,
|
|
503
|
+
"title": "SMB Deal",
|
|
504
|
+
"value": 5000,
|
|
505
|
+
"currency": "USD",
|
|
506
|
+
"contact_id": 12346,
|
|
507
|
+
"contact_name": "Jane Smith",
|
|
508
|
+
"stage_name": "Lost",
|
|
509
|
+
"lost_at": "2025-10-03T00:00:00Z",
|
|
510
|
+
"lost_reason": "Budget constraints",
|
|
511
|
+
"_raw": { /* original payload */ }
|
|
512
|
+
}
|
|
513
|
+
```
|
|
514
|
+
|
|
515
|
+
**Use Case:** Add to nurture campaign, schedule follow-up in 6 months
|
|
516
|
+
|
|
517
|
+
---
|
|
518
|
+
|
|
519
|
+
### 11. Deal Stage Changed
|
|
520
|
+
|
|
521
|
+
**Event:** `deal.stage_changed`
|
|
522
|
+
**When:** Deal moves to different pipeline stage
|
|
523
|
+
|
|
524
|
+
**Input Payload:**
|
|
525
|
+
```json
|
|
526
|
+
{
|
|
527
|
+
"event": "deal.stage_changed",
|
|
528
|
+
"timestamp": "2025-10-03T01:00:00Z",
|
|
529
|
+
"account_id": "acc_12345",
|
|
530
|
+
"user_id": "user_67890",
|
|
531
|
+
"data": {
|
|
532
|
+
"deal": {
|
|
533
|
+
"id": 98765,
|
|
534
|
+
"title": "Enterprise License Sale",
|
|
535
|
+
"value": 60000,
|
|
536
|
+
"stage_id": 4,
|
|
537
|
+
"stage_name": "Contract",
|
|
538
|
+
"previous_stage_id": 3,
|
|
539
|
+
"previous_stage_name": "Negotiation"
|
|
540
|
+
},
|
|
541
|
+
"changes": {
|
|
542
|
+
"stage_name": { "old": "Negotiation", "new": "Contract" }
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
}
|
|
546
|
+
```
|
|
547
|
+
|
|
548
|
+
**Output:**
|
|
549
|
+
```json
|
|
550
|
+
{
|
|
551
|
+
"event": "deal.stage_changed",
|
|
552
|
+
"timestamp": "2025-10-03T01:00:00Z",
|
|
553
|
+
"deal_id": 98765,
|
|
554
|
+
"title": "Enterprise License Sale",
|
|
555
|
+
"value": 60000,
|
|
556
|
+
"stage_id": 4,
|
|
557
|
+
"stage_name": "Contract",
|
|
558
|
+
"previous_stage_id": 3,
|
|
559
|
+
"previous_stage_name": "Negotiation",
|
|
560
|
+
"changes": {
|
|
561
|
+
"stage_name": { "old": "Negotiation", "new": "Contract" }
|
|
562
|
+
},
|
|
563
|
+
"_raw": { /* original payload */ }
|
|
564
|
+
}
|
|
565
|
+
```
|
|
566
|
+
|
|
567
|
+
**Use Case:** Different actions per stage (Proposal → send pricing, Contract → generate document)
|
|
568
|
+
|
|
569
|
+
---
|
|
570
|
+
|
|
571
|
+
### 12. Deal Deleted
|
|
572
|
+
|
|
573
|
+
**Event:** `deal.deleted`
|
|
574
|
+
**When:** Deal removed from Clientify
|
|
575
|
+
|
|
576
|
+
**Input Payload:**
|
|
577
|
+
```json
|
|
578
|
+
{
|
|
579
|
+
"event": "deal.deleted",
|
|
580
|
+
"timestamp": "2025-10-03T02:00:00Z",
|
|
581
|
+
"account_id": "acc_12345",
|
|
582
|
+
"user_id": "user_67890",
|
|
583
|
+
"data": {
|
|
584
|
+
"deal": {
|
|
585
|
+
"id": 98767,
|
|
586
|
+
"title": "Canceled Deal"
|
|
587
|
+
}
|
|
588
|
+
}
|
|
589
|
+
}
|
|
590
|
+
```
|
|
591
|
+
|
|
592
|
+
**Output:**
|
|
593
|
+
```json
|
|
594
|
+
{
|
|
595
|
+
"event": "deal.deleted",
|
|
596
|
+
"timestamp": "2025-10-03T02:00:00Z",
|
|
597
|
+
"deal_id": 98767,
|
|
598
|
+
"title": "Canceled Deal",
|
|
599
|
+
"_raw": { /* original payload */ }
|
|
600
|
+
}
|
|
601
|
+
```
|
|
602
|
+
|
|
603
|
+
---
|
|
604
|
+
|
|
605
|
+
## ✅ Task Triggers
|
|
606
|
+
|
|
607
|
+
### 13. Task Created
|
|
608
|
+
|
|
609
|
+
**Event:** `task.created`
|
|
610
|
+
**When:** New task/activity created
|
|
611
|
+
|
|
612
|
+
**Input Payload:**
|
|
613
|
+
```json
|
|
614
|
+
{
|
|
615
|
+
"event": "task.created",
|
|
616
|
+
"timestamp": "2025-10-03T03:00:00Z",
|
|
617
|
+
"account_id": "acc_12345",
|
|
618
|
+
"user_id": "user_67890",
|
|
619
|
+
"data": {
|
|
620
|
+
"task": {
|
|
621
|
+
"id": 5555,
|
|
622
|
+
"title": "Follow up with John Doe",
|
|
623
|
+
"description": "Discuss pricing options",
|
|
624
|
+
"type": "call",
|
|
625
|
+
"contact_id": 12345,
|
|
626
|
+
"contact_name": "John Doe",
|
|
627
|
+
"deal_id": 98765,
|
|
628
|
+
"deal_title": "Enterprise License Sale",
|
|
629
|
+
"assigned_to": "user_67890",
|
|
630
|
+
"assigned_to_name": "Sales Rep",
|
|
631
|
+
"due_date": "2025-10-05",
|
|
632
|
+
"created_at": "2025-10-03T03:00:00Z"
|
|
633
|
+
}
|
|
634
|
+
}
|
|
635
|
+
}
|
|
636
|
+
```
|
|
637
|
+
|
|
638
|
+
**Output:**
|
|
639
|
+
```json
|
|
640
|
+
{
|
|
641
|
+
"event": "task.created",
|
|
642
|
+
"timestamp": "2025-10-03T03:00:00Z",
|
|
643
|
+
"task_id": 5555,
|
|
644
|
+
"title": "Follow up with John Doe",
|
|
645
|
+
"description": "Discuss pricing options",
|
|
646
|
+
"type": "call",
|
|
647
|
+
"contact_id": 12345,
|
|
648
|
+
"contact_name": "John Doe",
|
|
649
|
+
"deal_id": 98765,
|
|
650
|
+
"deal_title": "Enterprise License Sale",
|
|
651
|
+
"assigned_to": "user_67890",
|
|
652
|
+
"assigned_to_name": "Sales Rep",
|
|
653
|
+
"due_date": "2025-10-05",
|
|
654
|
+
"created_at": "2025-10-03T03:00:00Z",
|
|
655
|
+
"_raw": { /* original payload */ }
|
|
656
|
+
}
|
|
657
|
+
```
|
|
658
|
+
|
|
659
|
+
**Use Case:** Add task to Google Calendar, send notification to assigned user
|
|
660
|
+
|
|
661
|
+
---
|
|
662
|
+
|
|
663
|
+
### 14. Task Completed
|
|
664
|
+
|
|
665
|
+
**Event:** `task.completed`
|
|
666
|
+
**When:** Task marked as completed
|
|
667
|
+
|
|
668
|
+
**Input Payload:**
|
|
669
|
+
```json
|
|
670
|
+
{
|
|
671
|
+
"event": "task.completed",
|
|
672
|
+
"timestamp": "2025-10-03T04:00:00Z",
|
|
673
|
+
"account_id": "acc_12345",
|
|
674
|
+
"user_id": "user_67890",
|
|
675
|
+
"data": {
|
|
676
|
+
"task": {
|
|
677
|
+
"id": 5555,
|
|
678
|
+
"title": "Follow up with John Doe",
|
|
679
|
+
"type": "call",
|
|
680
|
+
"contact_id": 12345,
|
|
681
|
+
"contact_name": "John Doe",
|
|
682
|
+
"deal_id": 98765,
|
|
683
|
+
"assigned_to": "user_67890",
|
|
684
|
+
"assigned_to_name": "Sales Rep",
|
|
685
|
+
"completed_at": "2025-10-03T04:00:00Z"
|
|
686
|
+
}
|
|
687
|
+
}
|
|
688
|
+
}
|
|
689
|
+
```
|
|
690
|
+
|
|
691
|
+
**Output:**
|
|
692
|
+
```json
|
|
693
|
+
{
|
|
694
|
+
"event": "task.completed",
|
|
695
|
+
"timestamp": "2025-10-03T04:00:00Z",
|
|
696
|
+
"task_id": 5555,
|
|
697
|
+
"title": "Follow up with John Doe",
|
|
698
|
+
"type": "call",
|
|
699
|
+
"contact_id": 12345,
|
|
700
|
+
"contact_name": "John Doe",
|
|
701
|
+
"deal_id": 98765,
|
|
702
|
+
"assigned_to": "user_67890",
|
|
703
|
+
"assigned_to_name": "Sales Rep",
|
|
704
|
+
"completed_at": "2025-10-03T04:00:00Z",
|
|
705
|
+
"_raw": { /* original payload */ }
|
|
706
|
+
}
|
|
707
|
+
```
|
|
708
|
+
|
|
709
|
+
**Use Case:** Log activity in reporting system, update deal progress
|
|
710
|
+
|
|
711
|
+
---
|
|
712
|
+
|
|
713
|
+
### 15. Task Due Soon
|
|
714
|
+
|
|
715
|
+
**Event:** `task.due_soon`
|
|
716
|
+
**When:** Task approaching due date (configured in Clientify)
|
|
717
|
+
|
|
718
|
+
**Input Payload:**
|
|
719
|
+
```json
|
|
720
|
+
{
|
|
721
|
+
"event": "task.due_soon",
|
|
722
|
+
"timestamp": "2025-10-03T05:00:00Z",
|
|
723
|
+
"account_id": "acc_12345",
|
|
724
|
+
"user_id": "user_67890",
|
|
725
|
+
"data": {
|
|
726
|
+
"task": {
|
|
727
|
+
"id": 5556,
|
|
728
|
+
"title": "Send proposal to Jane Smith",
|
|
729
|
+
"type": "email",
|
|
730
|
+
"contact_id": 12346,
|
|
731
|
+
"contact_name": "Jane Smith",
|
|
732
|
+
"assigned_to": "user_67890",
|
|
733
|
+
"assigned_to_name": "Sales Rep",
|
|
734
|
+
"due_date": "2025-10-04",
|
|
735
|
+
"hours_until_due": 23
|
|
736
|
+
}
|
|
737
|
+
}
|
|
738
|
+
}
|
|
739
|
+
```
|
|
740
|
+
|
|
741
|
+
**Output:**
|
|
742
|
+
```json
|
|
743
|
+
{
|
|
744
|
+
"event": "task.due_soon",
|
|
745
|
+
"timestamp": "2025-10-03T05:00:00Z",
|
|
746
|
+
"task_id": 5556,
|
|
747
|
+
"title": "Send proposal to Jane Smith",
|
|
748
|
+
"type": "email",
|
|
749
|
+
"contact_id": 12346,
|
|
750
|
+
"contact_name": "Jane Smith",
|
|
751
|
+
"assigned_to": "user_67890",
|
|
752
|
+
"assigned_to_name": "Sales Rep",
|
|
753
|
+
"due_date": "2025-10-04",
|
|
754
|
+
"hours_until_due": 23,
|
|
755
|
+
"_raw": { /* original payload */ }
|
|
756
|
+
}
|
|
757
|
+
```
|
|
758
|
+
|
|
759
|
+
**Use Case:** Send reminder to assigned user
|
|
760
|
+
|
|
761
|
+
---
|
|
762
|
+
|
|
763
|
+
### 16. Task Overdue
|
|
764
|
+
|
|
765
|
+
**Event:** `task.overdue`
|
|
766
|
+
**When:** Task passed due date without completion
|
|
767
|
+
|
|
768
|
+
**Input Payload:**
|
|
769
|
+
```json
|
|
770
|
+
{
|
|
771
|
+
"event": "task.overdue",
|
|
772
|
+
"timestamp": "2025-10-03T06:00:00Z",
|
|
773
|
+
"account_id": "acc_12345",
|
|
774
|
+
"user_id": "user_67890",
|
|
775
|
+
"data": {
|
|
776
|
+
"task": {
|
|
777
|
+
"id": 5557,
|
|
778
|
+
"title": "Call prospect",
|
|
779
|
+
"type": "call",
|
|
780
|
+
"contact_id": 12347,
|
|
781
|
+
"contact_name": "Bob Johnson",
|
|
782
|
+
"assigned_to": "user_67891",
|
|
783
|
+
"assigned_to_name": "Sales Rep 2",
|
|
784
|
+
"due_date": "2025-10-02",
|
|
785
|
+
"days_overdue": 1
|
|
786
|
+
}
|
|
787
|
+
}
|
|
788
|
+
}
|
|
789
|
+
```
|
|
790
|
+
|
|
791
|
+
**Output:**
|
|
792
|
+
```json
|
|
793
|
+
{
|
|
794
|
+
"event": "task.overdue",
|
|
795
|
+
"timestamp": "2025-10-03T06:00:00Z",
|
|
796
|
+
"task_id": 5557,
|
|
797
|
+
"title": "Call prospect",
|
|
798
|
+
"type": "call",
|
|
799
|
+
"contact_id": 12347,
|
|
800
|
+
"contact_name": "Bob Johnson",
|
|
801
|
+
"assigned_to": "user_67891",
|
|
802
|
+
"assigned_to_name": "Sales Rep 2",
|
|
803
|
+
"due_date": "2025-10-02",
|
|
804
|
+
"days_overdue": 1,
|
|
805
|
+
"_raw": { /* original payload */ }
|
|
806
|
+
}
|
|
807
|
+
```
|
|
808
|
+
|
|
809
|
+
**Use Case:** Send urgent notification to manager, escalate task
|
|
810
|
+
|
|
811
|
+
---
|
|
812
|
+
|
|
813
|
+
## Quick Reference Table
|
|
814
|
+
|
|
815
|
+
| # | Event | Type | Use Case |
|
|
816
|
+
|---|-------|------|----------|
|
|
817
|
+
| 1 | `contact.created` | Contact | Welcome email, create follow-up task |
|
|
818
|
+
| 2 | `contact.updated` | Contact | Sync to external CRM, log changes |
|
|
819
|
+
| 3 | `contact.deleted` | Contact | Archive data, remove from mailing lists |
|
|
820
|
+
| 4 | `company.created` | Company | Research company, assign account manager |
|
|
821
|
+
| 5 | `company.updated` | Company | Update external systems |
|
|
822
|
+
| 6 | `company.deleted` | Company | Clean up related data |
|
|
823
|
+
| 7 | `deal.created` | Deal | Notify sales team, create tasks |
|
|
824
|
+
| 8 | `deal.updated` | Deal | Track changes, update forecasts |
|
|
825
|
+
| 9 | `deal.won` | Deal | Send celebration, create invoice, onboard customer |
|
|
826
|
+
| 10 | `deal.lost` | Deal | Add to nurture campaign, analyze loss reason |
|
|
827
|
+
| 11 | `deal.stage_changed` | Deal | Stage-specific actions (pricing, contracts) |
|
|
828
|
+
| 12 | `deal.deleted` | Deal | Log deletion, archive data |
|
|
829
|
+
| 13 | `task.created` | Task | Add to calendar, notify assignee |
|
|
830
|
+
| 14 | `task.completed` | Task | Log activity, update metrics |
|
|
831
|
+
| 15 | `task.due_soon` | Task | Send reminder |
|
|
832
|
+
| 16 | `task.overdue` | Task | Escalate to manager |
|
|
833
|
+
|
|
834
|
+
---
|
|
835
|
+
|
|
836
|
+
## Common Workflow Patterns
|
|
837
|
+
|
|
838
|
+
### Pattern 1: Instant Notification
|
|
839
|
+
```
|
|
840
|
+
[Clientify Trigger: Deal Won] → [Slack: Post to #sales-wins]
|
|
841
|
+
```
|
|
842
|
+
|
|
843
|
+
### Pattern 2: Multi-Step Automation
|
|
844
|
+
```
|
|
845
|
+
[Clientify Trigger: Contact Created] → [Send Email] → [Create Task] → [Add to Mailchimp]
|
|
846
|
+
```
|
|
847
|
+
|
|
848
|
+
### Pattern 3: Conditional Logic
|
|
849
|
+
```
|
|
850
|
+
[Clientify Trigger: Deal Stage Changed] → [IF: stage = "Contract"] → [Generate PDF Contract]
|
|
851
|
+
```
|
|
852
|
+
|
|
853
|
+
### Pattern 4: Data Sync
|
|
854
|
+
```
|
|
855
|
+
[Clientify Trigger: Contact Updated] → [IF: email changed] → [HTTP: Update HubSpot]
|
|
856
|
+
```
|
|
857
|
+
|
|
858
|
+
---
|
|
859
|
+
|
|
860
|
+
## Setup Instructions
|
|
861
|
+
|
|
862
|
+
### 1. In n8n
|
|
863
|
+
|
|
864
|
+
1. Add "Clientify Trigger" node
|
|
865
|
+
2. Select event from dropdown
|
|
866
|
+
3. Choose Clientify MCP credentials
|
|
867
|
+
4. Save workflow
|
|
868
|
+
5. **Activate workflow** (toggle ON)
|
|
869
|
+
6. Click trigger node → Expand "Webhook URLs"
|
|
870
|
+
7. Switch to "Production URL" tab
|
|
871
|
+
8. **Copy the URL** (unique per workflow)
|
|
872
|
+
|
|
873
|
+
### 2. In Clientify
|
|
874
|
+
|
|
875
|
+
1. Go to Settings → Webhooks
|
|
876
|
+
2. Click "Add Webhook"
|
|
877
|
+
3. **Event:** Select matching event (e.g., "contact.created")
|
|
878
|
+
4. **URL:** Paste n8n webhook URL
|
|
879
|
+
5. **Status:** Active
|
|
880
|
+
6. Save
|
|
881
|
+
|
|
882
|
+
### 3. Test
|
|
883
|
+
|
|
884
|
+
Create a contact/deal/task in Clientify → Check n8n executions → Verify workflow ran!
|
|
885
|
+
|
|
886
|
+
---
|
|
887
|
+
|
|
888
|
+
## Important Notes
|
|
889
|
+
|
|
890
|
+
### Event Name Matching
|
|
891
|
+
- n8n event: "Contact Created" = `contact.created`
|
|
892
|
+
- Clientify must send: `"event": "contact.created"`
|
|
893
|
+
- **Case-sensitive!**
|
|
894
|
+
|
|
895
|
+
### Data Access in Workflows
|
|
896
|
+
```javascript
|
|
897
|
+
{{$json.first_name}} // "John"
|
|
898
|
+
{{$json.email}} // "john@example.com"
|
|
899
|
+
{{$json.value}} // 50000 (for deals)
|
|
900
|
+
{{$json.changes.email.old}} // Previous email (for updates)
|
|
901
|
+
{{$json._raw}} // Full original payload
|
|
902
|
+
```
|
|
903
|
+
|
|
904
|
+
### Webhook URL Requirements
|
|
905
|
+
- Unique per workflow
|
|
906
|
+
- Only works when workflow is ACTIVE
|
|
907
|
+
- Recreating workflow = new URL
|
|
908
|
+
- Must be publicly accessible (for production)
|
|
909
|
+
|
|
910
|
+
---
|
|
911
|
+
|
|
912
|
+
## Support
|
|
913
|
+
|
|
914
|
+
- **Issues:** https://github.com/contacteitor/clientify_n8n/issues
|
|
915
|
+
- **Email:** develop@clientify.com
|
|
916
|
+
- **Docs:** https://mcp.clientify.com/docs
|
|
917
|
+
|
|
918
|
+
---
|
|
919
|
+
|
|
920
|
+
**Last Updated:** 2025-10-02
|
|
921
|
+
**Package Version:** 0.2.0
|
|
922
|
+
**Status:** ✅ Production Ready
|