This workflow corresponds to n8n.io template #1998 — we link there as the canonical source.
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 →
{
"id": "KwfGSgwPQrcD92Gg",
"name": "WordPress-to-Pipedrive Integration: Automating Contact & Lead Management",
"tags": [
{
"id": "vlXJOdNziJAjaypM",
"name": "Templates",
"createdAt": "2023-11-29T10:41:32.132Z",
"updatedAt": "2023-11-29T10:41:32.132Z"
}
],
"nodes": [
{
"id": "51bde0f3-2300-4a85-89d3-cf7d7b43c94d",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-120,
0
],
"parameters": {
"width": 611,
"height": 1168.7934508816131,
"content": "### Webhook Setup for Contact Form 7 in WordPress\n* Install Contact Form 7: Begin by installing the Contact Form 7 plugin in your WordPress site. This plugin allows for easy creation and management of contact forms. You can download and install it from the WordPress plugin directory here: [Contact Form 7 Plugin](https://example.com/).\n* Use CF7 Webhook Extension: To enable webhook functionality in CF7, utilize the CF7 Webhook extension. This extension allows you to send form data to a specified URL, which is crucial for integrating with your workflow. You can find more information and download it here: [CF7 Webhook Extension](https://example.com/).\n\n### Configuring the Webhook with Contact Form 7 in WordPress\n* Obtain n8n Webhook URL: First, retrieve your n8n webhook URL. This is the specific address where the data from your WordPress contact form will be sent.\n* Update Contact Form 7 with Custom Form Code: In your WordPress dashboard, go to the Contact Form 7 plugin. Create a new form or edit an existing one, and insert the following code to create a custom contact form:\u2028\n\n<label> Name [text* your-name autocomplete:name] </label>\n<label> E-Mail-Adresse [email* your-email autocomplete:email] </label> \n<label> Unternehmen [text* company] </label> \n[submit \"Senden\"] \u2028\u2028\u2028\n\nThis code will generate a form with fields for Name, Email Address, and Company.\n* Insert n8n Webhook URL in the Webhook Field: In the settings of your CF7 form, locate the webhook field. Here, paste the n8n webhook URL that you obtained in step 1. This step is crucial to ensure that the data from your form is sent to your n8n workflow.\n* Save and Test Your Form: After configuring the webhook URL, save your form. It's recommended to test the form to ensure that data is correctly being transmitted to your n8n webhook.\n\n### Retrieving API Key in Pipedrive\n* Login to Pipedrive: Sign in to your Pipedrive account.\n* Access Settings: Navigate to your personal settings. This is usually accessible via your profile icon in the top right corner of the Pipedrive interface.\n* Find API Key: Look for the section labeled \u201cAPI\u201d or \u201cAPI Key\u201d. In this section, your personal API key will be displayed. This key is unique to your account and allows applications like n8n to access your Pipedrive data.\n* Copy the API Key: Copy the displayed API key.\n\n### Setting Up Pipedrive Credentials in n8n\n* Add Credentials: Click on the option in the node to add or select new credentials. Choose \u201cPipedrive API\u201d as the type of credentials.\n* Enter the API Key: Paste the API key you copied from Pipedrive into the appropriate field.\n* Save the Credentials: Save the credentials (name it). Your n8n workflow can now communicate with Pipedrive.\n\n\nYou need help: Then write to us at hallo@kapio.eu\nWebsite: www.kapio.eu"
},
"typeVersion": 1
},
{
"id": "ba7c4fdd-5502-408b-ba04-484f3d3b6240",
"name": "Create Lead",
"type": "n8n-nodes-base.pipedrive",
"position": [
2020,
400
],
"parameters": {
"title": "=Website request: {{ $('Webhook').item.json.body.company }}",
"resource": "lead",
"person_id": "={{ $json.person_id }}",
"associateWith": "person",
"additionalFields": {
"label_ids": [
"2a875ff0-eb41-11ed-80d0-59a724a2c908"
]
}
},
"credentials": {
"pipedriveApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "0a211c74-0ea2-4385-a19f-5d35603ca64f",
"name": "Search Person in Pipedrive",
"type": "n8n-nodes-base.httpRequest",
"position": [
900,
420
],
"parameters": {
"url": "=https://api.pipedrive.com/v1/itemSearch?term={{ $json.body['your-email'] }}&field_key=email&exact_match=true&item_types=person",
"options": {},
"authentication": "predefinedCredentialType",
"nodeCredentialType": "pipedriveApi"
},
"credentials": {
"pipedriveApi": {
"name": "<your credential>"
}
},
"typeVersion": 4.1
},
{
"id": "79fd1b5d-874f-4ffd-ab3c-1969fb71e7c2",
"name": "Check if person is in Pipedrive and output the ID",
"type": "n8n-nodes-base.code",
"position": [
1120,
420
],
"parameters": {
"jsCode": "const inputItems = $input.all();\n\n// Check if there are items and that the items array is not empty\nconst hasItems = inputItems.length > 0 && inputItems[0]?.json?.data?.items.length > 0;\n\n// Retrieve the ID of the first item if available\nconst firstItemId = hasItems ? inputItems[0].json.data.items[0].item.id : null;\n\nreturn { hasItems, firstItemId };\n"
},
"typeVersion": 2,
"alwaysOutputData": true
},
{
"id": "9664b373-11f8-4dbb-adcf-5db14498f03d",
"name": "IF Person exists in Pipedrive",
"type": "n8n-nodes-base.if",
"position": [
1320,
420
],
"parameters": {
"conditions": {
"boolean": [
{
"value1": "={{ $json.hasItems }}",
"value2": true
}
]
}
},
"typeVersion": 1
},
{
"id": "d98569ea-9879-4e65-b310-82f199abe436",
"name": "Pipedrive",
"type": "n8n-nodes-base.pipedrive",
"position": [
1540,
520
],
"parameters": {
"name": "={{ $('Webhook').item.json.body[\"your-name\"] }}",
"resource": "person",
"additionalFields": {
"email": [
"={{ $('Webhook').item.json.body[\"your-email\"] }}"
]
}
},
"credentials": {
"pipedriveApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "1afebef2-cb8c-4ef7-bb37-820b9d20f8fd",
"name": "Webhook",
"type": "n8n-nodes-base.webhook",
"position": [
720,
420
],
"parameters": {
"path": "d296fe58-4ba1-4089-ac91-88cd07a40571",
"options": {},
"httpMethod": "POST"
},
"typeVersion": 1
},
{
"id": "67813ff5-2017-4850-b9b9-2267f1bc60e6",
"name": "New Person ID",
"type": "n8n-nodes-base.code",
"position": [
1820,
400
],
"parameters": {
"jsCode": "// Check whether the value from the previous node is available\nlet personId;\n\n// Check whether the value of 'IF Person exists in Pipedrive' node is present\nif ($('IF Person exists in Pipedrive').item.json.firstItemId) {\n personId = $('IF Person exists in Pipedrive').item.json.firstItemId;\n} \n// If the above value is not available, check whether a value of '$('Pipedrive').item.json.id' is available\nelse if ($('Pipedrive').item.json.id) {\n personId = $('Pipedrive').item.json.id;\n}\n\n// If a value was found for personId, it is output as a new variable\nif (personId) {\n return { person_id: personId };\n} else {\n return { error: 'Keine Person-ID gefunden' };\n}\n"
},
"typeVersion": 2
},
{
"id": "bd5b9b7d-0450-4739-9956-51aa8339d181",
"name": "Create Note",
"type": "n8n-nodes-base.pipedrive",
"position": [
2180,
400
],
"parameters": {
"content": "=Website-Request:<br>\nName: {{ $('Webhook').item.json.body[\"your-name\"] }} <br>\nE-Mail: {{ $('Webhook').item.json.body[\"your-email\"] }}<br>\nCompany: {{ $('Webhook').item.json.body.company }}",
"resource": "note",
"additionalFields": {
"lead_id": "={{ $json.id }}",
"person_id": "={{ $('New Person ID').item.json.person_id }}"
}
},
"credentials": {
"pipedriveApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "b864919c-1438-4705-8822-0752c88f3a76",
"name": "Create Activity",
"type": "n8n-nodes-base.pipedrive",
"position": [
2340,
400
],
"parameters": {
"type": "task",
"subject": "Contacting new website lead",
"resource": "activity",
"additionalFields": {
"person_id": "={{ $('New Person ID').item.json.person_id }}",
"customProperties": {
"property": [
{
"name": "lead_id",
"value": "={{ $('Create Lead').item.json.id }}"
}
]
}
}
},
"credentials": {
"pipedriveApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
}
],
"active": true,
"settings": {
"executionOrder": "v1"
},
"versionId": "1392a3ca-f07b-4acf-8ff5-3e692445696d",
"connections": {
"Webhook": {
"main": [
[
{
"node": "Search Person in Pipedrive",
"type": "main",
"index": 0
}
]
]
},
"Pipedrive": {
"main": [
[
{
"node": "New Person ID",
"type": "main",
"index": 0
}
]
]
},
"Create Lead": {
"main": [
[
{
"node": "Create Note",
"type": "main",
"index": 0
}
]
]
},
"Create Note": {
"main": [
[
{
"node": "Create Activity",
"type": "main",
"index": 0
}
]
]
},
"New Person ID": {
"main": [
[
{
"node": "Create Lead",
"type": "main",
"index": 0
}
]
]
},
"Search Person in Pipedrive": {
"main": [
[
{
"node": "Check if person is in Pipedrive and output the ID",
"type": "main",
"index": 0
}
]
]
},
"IF Person exists in Pipedrive": {
"main": [
[
{
"node": "New Person ID",
"type": "main",
"index": 0
}
],
[
{
"node": "Pipedrive",
"type": "main",
"index": 0
}
]
]
},
"Check if person is in Pipedrive and output the ID": {
"main": [
[
{
"node": "IF Person exists in Pipedrive",
"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.
pipedriveApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Capture Contact Requests: This template efficiently handles contact requests coming through a WordPress website using the Contact Form 7 (CF7) plugin with a webhook extension. Contact Management: It automatically creates or updates contacts in Pipedrive upon receiving a new…
Source: https://n8n.io/workflows/1998/ — 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.
Automate your lead qualification pipeline — capture Typeform Webhook leads, enrich with APIs, score intelligently, and route to HubSpot, Slack, and Sheets in real-time.
How it works This Lead Capture & Auto-Qualification workflow transforms raw leads into qualified prospects through intelligent automation. Here's the high-level flow: Lead Intake → Data Validation → E
This workflow automatically adds a new lead to Pipedrive once someone forks your GitHub repository. Pipedrive account and Pipedrive credentials GitHub account and GitHub credentials GitHub Trigger nod
Enterprise AI Lead Scoring & CRM Sync. Uses httpRequest, hubspot, googleSheets. Webhook trigger; 6 nodes.
AI-Powered Lead Qualification & Routing System. Uses supabase, httpRequest, openAi, slack. Webhook trigger; 47 nodes.