AutomationFlowsGeneral › Intercom Webhook to Update User Data

Intercom Webhook to Update User Data

Original n8n title: Intercom Code

Intercom Code. Uses noOp, httpRequest, intercom, stickyNote. Webhook trigger; 13 nodes.

Webhook trigger★★★★☆ complexity13 nodesHTTP RequestIntercom
General Trigger: Webhook Nodes: 13 Complexity: ★★★★☆ Added:

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 →

Download .json
{
  "nodes": [
    {
      "id": "1f578b25-ab5b-40f3-9ccc-7f5975959073",
      "name": "Could not find user",
      "type": "n8n-nodes-base.noOp",
      "position": [
        1620,
        560
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "236436e0-1fc9-4411-b34c-946246ecbe19",
      "name": "On Webhook event from Intercom",
      "type": "n8n-nodes-base.webhook",
      "position": [
        700,
        500
      ],
      "parameters": {
        "path": "11e21ebc-27ef-49b5-8c77-648faf3e86e0",
        "options": {},
        "httpMethod": "POST"
      },
      "typeVersion": 1.1
    },
    {
      "id": "10e2e89c-6ea2-4888-99c8-2f5d99cb1a1d",
      "name": "set key fields",
      "type": "n8n-nodes-base.set",
      "position": [
        1120,
        340
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "3631124b-89e3-49b5-a792-36264eb502f0",
              "name": "user_id",
              "type": "string",
              "value": "={{ $json.body.data.item.id }}"
            },
            {
              "id": "3c2a877d-186b-4a26-86f2-d686e5630e42",
              "name": "email",
              "type": "string",
              "value": "={{ $json.body.data.item.email }}"
            }
          ]
        }
      },
      "typeVersion": 3.3
    },
    {
      "id": "078945ff-7c7a-4b45-9f8b-773827b9eb30",
      "name": "Update data in Intercom",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1900,
        140
      ],
      "parameters": {
        "url": "=https://api.intercom.io/contacts/{{ $('set key fields').item.json.user_id }}",
        "method": "PUT",
        "options": {},
        "sendBody": true,
        "sendHeaders": true,
        "authentication": "genericCredentialType",
        "bodyParameters": {
          "parameters": [
            {
              "name": "email",
              "value": "={{ $json.result.current_work_email }} {{ $json.result.full_name }}"
            },
            {
              "name": "name",
              "value": "={{ $json.result.full_name }}"
            },
            {
              "name": "phone",
              "value": "={{ $json.result.phone_numbers?.[0]?.E164 }}"
            },
            {
              "name": "avatar",
              "value": "={{ $json.result.employment?.profile_pic_url }}"
            },
            {
              "name": "social_profiles",
              "value": "={{ $json.social_profiles }}"
            },
            {
              "name": "location",
              "value": "={{ $json.location }}"
            }
          ]
        },
        "genericAuthType": "httpHeaderAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "Intercom-Version",
              "value": "2.10"
            }
          ]
        }
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.1
    },
    {
      "id": "4ca65df4-7244-485f-8c6c-bb1ae4cd84a8",
      "name": "Other event",
      "type": "n8n-nodes-base.noOp",
      "position": [
        1120,
        680
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "87b12749-b81e-460b-97bb-b25b59f303df",
      "name": "Intercom",
      "type": "n8n-nodes-base.intercom",
      "disabled": true,
      "position": [
        1900,
        -60
      ],
      "parameters": {
        "operation": "update",
        "additionalFields": {}
      },
      "credentials": {
        "intercomApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "ddb1dbb6-3f20-480f-9f49-641d40d9953a",
      "name": "massage data",
      "type": "n8n-nodes-base.code",
      "position": [
        1660,
        140
      ],
      "parameters": {
        "mode": "runOnceForEachItem",
        "jsCode": "// Add social profiles\n$input.item.json.social_profiles = $input.item.json.result.social_profiles.map((profile) => {\n  return {\n    type: 'social_profile',\n    name : profile.network,\n    url: profile.url,\n  }\n});\n\n$input.item.json.location = {\n  country: $input.item.json.result.location?.country,\n  city: $input.item.json.result.location?.city,\n  region: $input.item.json.result.location?.region,\n}\n\nreturn $input.item;"
      },
      "typeVersion": 2
    },
    {
      "id": "c490bb0d-ec6a-4a9a-9915-dd65ab669873",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        660,
        240
      ],
      "parameters": {
        "width": 377.10487444608555,
        "height": 609.3353028064989,
        "content": "## On User created event in Intercom\n\n1. Setup webhook url in intercom\n2. Make sure `contact.user.created` is enabled"
      },
      "typeVersion": 1
    },
    {
      "id": "3e866480-4ec8-4a27-b946-43d6358edfec",
      "name": "On user created",
      "type": "n8n-nodes-base.switch",
      "position": [
        880,
        500
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "user created",
              "conditions": {
                "options": {
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.body.topic }}",
                    "rightValue": "contact.user.created"
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {
          "fallbackOutput": "extra"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "e9efb8f5-8f97-476f-9d60-09a24b4f656a",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1260,
        20
      ],
      "parameters": {
        "color": 3,
        "width": 275.71639586410623,
        "height": 609.3353028064989,
        "content": "## Enrich data from ExactBuyer\n\n1. Add api key from Exact buyer\n2. Use email as identifier to match user\n\nUse API Guide here https://docs.exactbuyer.com/contact-enrichment/enrichment"
      },
      "typeVersion": 1
    },
    {
      "id": "4a86d237-0908-4a79-9ebf-42711f850b3e",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1600,
        -280
      ],
      "parameters": {
        "width": 562.599704579025,
        "height": 763.7223042836036,
        "content": "## Update user in Intercom\n\n1. Set Http node and generic header API Key using this guide https://developers.intercom.com/docs/build-an-integration/learn-more/authentication/\n2. Update data in intercom using this guide\nhttps://developers.intercom.com/docs/references/rest-api/api.intercom.io/Contacts/UpdateContact/"
      },
      "typeVersion": 1
    },
    {
      "id": "44eb44fc-9376-4c64-9561-3d9b585eb51f",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        540,
        -320
      ],
      "parameters": {
        "color": 4,
        "width": 623.6113141433334,
        "height": 390.44782241577565,
        "content": "# Enrich new Intercom users with contact details from ExactBuyer\n\n## This workflow aims to enrich new contacts in Intercom. The more relevant the Intercom profile, the more useful it is. Once active, this n8n workflow will update the social profiles, contact data (phone, email) as well as location data from ExactBuyer.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "fc9755ae-07ed-4151-bab0-4dc9b6c2408f",
      "name": "Enrich user from ExactBuyer",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueErrorOutput",
      "position": [
        1340,
        340
      ],
      "parameters": {
        "url": "https://api.exactbuyer.com/v1/enrich",
        "options": {
          "redirect": {
            "redirect": {}
          }
        },
        "sendQuery": true,
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "queryParameters": {
          "parameters": [
            {
              "name": "email",
              "value": "={{ $json.email }}"
            },
            {
              "name": "required",
              "value": "work_email,personal_email,email"
            }
          ]
        }
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.1
    }
  ],
  "connections": {
    "massage data": {
      "main": [
        [
          {
            "node": "Update data in Intercom",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "set key fields": {
      "main": [
        [
          {
            "node": "Enrich user from ExactBuyer",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "On user created": {
      "main": [
        [
          {
            "node": "set key fields",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Other event",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Enrich user from ExactBuyer": {
      "main": [
        [
          {
            "node": "massage data",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Could not find user",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "On Webhook event from Intercom": {
      "main": [
        [
          {
            "node": "On user created",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

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.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

How this works

Streamline your customer support by automatically updating user profiles in Intercom whenever a webhook event arrives, ensuring data accuracy without manual intervention and saving hours of administrative work. This workflow is ideal for support teams or product managers handling high volumes of user interactions in Intercom, particularly those integrating with external systems via HTTP requests. The key step involves massaging incoming data through a code node to format it correctly before pushing updates via the Intercom integration, making interactions more personalised and efficient.

Use this workflow when you need real-time synchronisation of user details from webhooks, such as after form submissions or API callbacks linked to Intercom. Avoid it for one-off data imports or if your events don't require custom data transformation, as simpler tools like Intercom's native imports suffice. Common variations include adding conditional branches for different event types or integrating with email services for follow-up notifications.

About this workflow

Intercom Code. Uses noOp, httpRequest, intercom, stickyNote. Webhook trigger; 13 nodes.

Source: https://github.com/Zie619/n8n-workflows — original creator credit. Request a take-down →

More General workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

General

PUQ Docker NextCloud deploy. Uses respondToWebhook, stickyNote, httpRequest, ssh. Webhook trigger; 44 nodes.

HTTP Request, Ssh
General

Analyze_email_headers_for_IPs_and_spoofing__3. Uses stickyNote, respondToWebhook, itemLists, httpRequest. Webhook trigger; 35 nodes.

Item Lists, HTTP Request
General

Unique QRcode coupon assignment and validation for Lead Generation system. Uses httpRequest, formTrigger, googleSheets, stickyNote. Webhook trigger; 29 nodes.

HTTP Request, Form Trigger, Google Sheets +1
General

Line Save File to Google Drive and Log File's URL. Uses googleSheets, googleDrive, httpRequest, stickyNote. Webhook trigger; 27 nodes.

Google Sheets, Google Drive, HTTP Request
General

Webhook Respondtowebhook. Uses executeWorkflow, httpRequest, stickyNote, respondToWebhook. Webhook trigger; 23 nodes.

HTTP Request