The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"name": "Chatwoot - Search and Update Contact",
"nodes": [
{
"parameters": {},
"id": "start-node",
"name": "Manual Trigger",
"type": "n8n-nodes-base.manualTrigger",
"typeVersion": 1,
"position": [
250,
300
]
},
{
"parameters": {
"resource": "contact",
"operation": "search",
"query": "john@example.com",
"returnAll": false,
"limit": 1
},
"id": "chatwoot-search",
"name": "Search Contact by Email",
"type": "n8n-nodes-chatwoot.chatwoot",
"typeVersion": 1,
"position": [
450,
300
],
"credentials": {
"chatwootApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"conditions": {
"number": [
{
"value1": "={{ $json.id }}",
"operation": "isNotEmpty"
}
]
}
},
"id": "if-found",
"name": "Contact Found?",
"type": "n8n-nodes-base.if",
"typeVersion": 1,
"position": [
650,
300
]
},
{
"parameters": {
"resource": "contact",
"operation": "update",
"contactId": "={{ $json.id }}",
"updateFields": {
"name": "John Doe Updated",
"custom_attributes": "{\"vip\": true, \"updated_via\": \"n8n\"}"
}
},
"id": "chatwoot-update",
"name": "Update Contact",
"type": "n8n-nodes-chatwoot.chatwoot",
"typeVersion": 1,
"position": [
850,
200
],
"credentials": {
"chatwootApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"resource": "contact",
"operation": "create",
"inboxId": 1,
"name": "John Doe",
"additionalFields": {
"email": "john@example.com",
"phone_number": "+1234567890"
}
},
"id": "chatwoot-create",
"name": "Create New Contact",
"type": "n8n-nodes-chatwoot.chatwoot",
"typeVersion": 1,
"position": [
850,
400
],
"credentials": {
"chatwootApi": {
"name": "<your credential>"
}
}
}
],
"connections": {
"Manual Trigger": {
"main": [
[
{
"node": "Search Contact by Email",
"type": "main",
"index": 0
}
]
]
},
"Search Contact by Email": {
"main": [
[
{
"node": "Contact Found?",
"type": "main",
"index": 0
}
]
]
},
"Contact Found?": {
"main": [
[
{
"node": "Update Contact",
"type": "main",
"index": 0
}
],
[
{
"node": "Create New Contact",
"type": "main",
"index": 0
}
]
]
}
},
"settings": {
"saveDataSuccessExecution": "all",
"saveDataErrorExecution": "all"
},
"staticData": null,
"tags": []
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
chatwootApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Chatwoot - Search and Update Contact. Uses n8n-nodes-chatwoot. Event-driven trigger; 5 nodes.
Source: https://github.com/serversmx/n8n-nodes-chatwoot/blob/cee8463bbbb0c7770460d049a95e0a78b92f2f8c/examples/workflows/contact-sync-workflow.json — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
Convert Docx From Url To Pdf Using Convertapi. Uses manualTrigger, httpRequest, readWriteFile, stickyNote. Event-driven trigger; 6 nodes.
Preparing Data To Be Sent To A Service. Uses manualTrigger, stickyNote, googleSheets, n8nTrainingCustomerDatastore. Event-driven trigger; 6 nodes.
Extract Contracts to a Register. Uses n8n-nodes-iterationlayer. Event-driven trigger; 6 nodes.
📄 Description: This workflow helps you migrate customer records directly from Odoo v15 to Odoo v18 without the need for manual exports or intermediate files.
wf_update_all_caches. Uses executeWorkflowTrigger. Event-driven trigger; 6 nodes.