AutomationFlowsWeb Scraping › Stripe → Pipedrive: Auto Create Contacts and Deals From Payments

Stripe → Pipedrive: Auto Create Contacts and Deals From Payments

ByKrishna Sharma @triggerall on n8n.io

n8n instance (cloud or self-hosted) with HTTPS reachable webhook endpoint Stripe account and secret API key Pipedrive account with API access and custom fields defined Users should create custom fields in Pipedrive and copy their field IDs (e.g. amount, payment method, status,…

Webhook trigger★★★★☆ complexity16 nodesPipedriveHTTP Request
Web Scraping Trigger: Webhook Nodes: 16 Complexity: ★★★★☆ Added:

This workflow corresponds to n8n.io template #9275 — 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 →

Download .json
{
  "id": "mXqbFVOOlSD6kNIC",
  "name": "Stripe \u2192 Pipedrive (Automatic Person + Deal Creation)",
  "tags": [
    {
      "id": "Af6k6it2U9my6q9Q",
      "name": "pipedrive",
      "createdAt": "2025-10-05T07:43:13.180Z",
      "updatedAt": "2025-10-05T07:43:13.180Z"
    },
    {
      "id": "YYaRjcTPQ5F8VMgV",
      "name": "stripe",
      "createdAt": "2025-10-05T07:43:08.134Z",
      "updatedAt": "2025-10-05T07:43:08.134Z"
    },
    {
      "id": "qtuQF3Lc141mfYiM",
      "name": "n8n template",
      "createdAt": "2025-09-11T07:44:43.900Z",
      "updatedAt": "2025-09-17T10:07:33.999Z"
    }
  ],
  "nodes": [
    {
      "id": "ee4fcc57-849c-4e74-bf2c-4ca93c6b6651",
      "name": "Stripe Webhook",
      "type": "n8n-nodes-base.webhook",
      "position": [
        -1696,
        128
      ],
      "parameters": {
        "path": "stripe/4ea76359-79a3-4724-8297-398cea3c0f21",
        "options": {},
        "httpMethod": "POST"
      },
      "typeVersion": 2.1
    },
    {
      "id": "b85ff242-0fb5-4c49-b2aa-d4ba693c0eff",
      "name": "Search a person",
      "type": "n8n-nodes-base.pipedrive",
      "position": [
        -1696,
        752
      ],
      "parameters": {
        "term": "={{ $json.data.object.customer_details.email }}",
        "resource": "person",
        "operation": "search",
        "returnAll": true,
        "additionalFields": {}
      },
      "typeVersion": 1,
      "alwaysOutputData": true
    },
    {
      "id": "2c2d5603-c273-4e81-b8dd-92231c6c5490",
      "name": "Create a person",
      "type": "n8n-nodes-base.pipedrive",
      "position": [
        -1328,
        752
      ],
      "parameters": {
        "name": "={{ $('Check if event id is same').item.json.data.object.customer_details.email }}",
        "resource": "person",
        "additionalFields": {
          "email": [
            "={{ $('Check if event id is same').item.json.data.object.customer_details.email }}"
          ],
          "customProperties": {
            "property": [
              {
                "name": "YOUR_AWS_SECRET_KEY_HERE",
                "value": "={{ Number(     $('Stripe Webhook').item.json.body.data.object.amount_total     || $('Stripe Webhook').item.json.body.data.object.amount     || 0 ) / 100 }}"
              },
              {
                "name": "YOUR_AWS_SECRET_KEY_HERE",
                "value": "Stripe"
              },
              {
                "name": "YOUR_AWS_SECRET_KEY_HERE",
                "value": "={{ $('Stripe Webhook').item.json.body.data.object.payment_method_types[0] }}"
              },
              {
                "name": "YOUR_AWS_SECRET_KEY_HERE",
                "value": "={{ $('Stripe Webhook').item.json.body.data.object.payment_status }}"
              }
            ]
          }
        }
      },
      "typeVersion": 1
    },
    {
      "id": "02872a84-39fe-4ec1-8d79-4ed6e86025c1",
      "name": "Set field",
      "type": "n8n-nodes-base.set",
      "position": [
        -1440,
        128
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "5700f6e5-5f73-4e6e-8015-f89703e98fec",
              "name": "eventId",
              "type": "string",
              "value": "={{ $json.body.id }}"
            },
            {
              "id": "6597729e-e95d-47ab-b2ef-5cf7826b7c6f",
              "name": "eventType",
              "type": "string",
              "value": "={{ $json.body.type }}"
            },
            {
              "id": "0c3660f2-6465-470c-bf81-ddeea902f7de",
              "name": "payload",
              "type": "object",
              "value": "={{ $json.body.data.object }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "04913575-544f-4bba-85de-2d80aad0abc0",
      "name": "Check if event id is same",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -1168,
        128
      ],
      "parameters": {
        "url": "=https://api.stripe.com/v1/events/{{ $json.eventId }}",
        "options": {},
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "7bb40f1f-e751-4f36-9938-23cbf4c9f183",
      "name": "Append a deal",
      "type": "n8n-nodes-base.pipedrive",
      "position": [
        -592,
        752
      ],
      "parameters": {
        "title": "=Deposit \u2014 {{ $json.email[0].value }} \u2014 {{ Number(\n    $('Stripe Webhook').item.json.body.data.object.amount_total\n    || $('Stripe Webhook').item.json.body.data.object.amount\n    || 0\n) / 100 }}",
        "additionalFields": {
          "value": "={{ Number(\n    $('Stripe Webhook').item.json.body.data.object.amount_total\n    || $('Stripe Webhook').item.json.body.data.object.amount\n    || 0\n) / 100 }}",
          "person_id": "={{ $json.id }}",
          "customProperties": {
            "property": [
              {
                "name": "YOUR_AWS_SECRET_KEY_HERE",
                "value": "={{ $('Set field').item.json.eventId }}"
              }
            ]
          }
        }
      },
      "typeVersion": 1
    },
    {
      "id": "42ebf9ab-1cc6-4afb-9a39-84e187b726b3",
      "name": "If event id exist",
      "type": "n8n-nodes-base.if",
      "position": [
        -864,
        656
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "267434a5-e6e1-4c2f-95d4-a30cd1774f7b",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $('Check if event id is same').item.json.id }}",
              "rightValue": "={{ $('Check if event id is same').item.json.id }}"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "4d41cc67-1961-42cf-8513-0d89105bec43",
      "name": "if person exists",
      "type": "n8n-nodes-base.if",
      "position": [
        -1520,
        752
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "571afebb-46e3-4694-8156-d198e558b638",
              "operator": {
                "type": "string",
                "operation": "exists",
                "singleValue": true
              },
              "leftValue": "={{ $json.item.emails[0] }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "b052c83a-3de5-486e-9935-18f0bf9ef15d",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2368,
        -96
      ],
      "parameters": {
        "color": 6,
        "width": 592,
        "height": 400,
        "content": "## Setup Guide \n**Author:** Krishna Sharma\n\n\n## Prerequisites / Requirements\n- n8n instance (cloud or self-hosted) with HTTPS reachable webhook endpoint\n- Stripe account and secret API key\n- Pipedrive account with API access and custom fields defined\n- Users should create custom fields in Pipedrive and copy their field IDs (e.g. amount, payment method, status, Stripe Event ID)\n"
      },
      "typeVersion": 1
    },
    {
      "id": "8cbdb7ab-47e3-4003-aecb-33485cbb8c44",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -944,
        -96
      ],
      "parameters": {
        "color": 4,
        "width": 736,
        "height": 400,
        "content": "## Description \n**This workflow connects Stripe to Pipedrive. Whenever a new payment (or checkout success) occurs in Stripe, this automation will:\n- Fetch the full Stripe event data\n- Find or create a customer (\u201cPerson\u201d) in Pipedrive\n- Create a \u201cDeal\u201d record corresponding to that payment\n- Log custom fields like amount, source, payment method, status\n\n### It\u2019s ideal for \n- SaaS \n- Subscription businesses\n- Agencies, or \n- Teams who want payments mirrored inside their CRM without manual work."
      },
      "typeVersion": 1
    },
    {
      "id": "dd170e8d-469f-47f9-9172-0f2f26c415f2",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2368,
        336
      ],
      "parameters": {
        "color": 5,
        "width": 592,
        "height": 608,
        "content": "## How it works (Step-by-Step)\n**Stripe Webhook:** n8n triggers on payment events from Stripe via an HTTP POST.\n\n**Edit / Set node:** Extracts eventId, eventType, and payload.\n\n**HTTP Request:** Confirms Stripe event via Stripe API (adds security).\n\n**Search Person:** Looks up Pipedrive contact by email from the Stripe payload.\n\n**IF:** Checks whether the person exists.\n    - If exists \u2192 skip to deal creation.\n        - If node - Check if Event id is not the same\n            - If same - Skip the deal creation\n            - If different - Create a deal linked to that person with the payment amount\n    - If not \u2192 create new Person.\n\n**Create Person:** Adds new Pipedrive contact, populates custom fields (amount, payment method, status, source).\n\n**Create Deal:** Creates a deal linked to that person with the payment amount."
      },
      "typeVersion": 1
    },
    {
      "id": "5e28dc28-7999-4361-82f0-e6856a8ae2d8",
      "name": "Create a deal",
      "type": "n8n-nodes-base.pipedrive",
      "position": [
        -1168,
        752
      ],
      "parameters": {
        "title": "=Deposit \u2014 {{ $json.email[0].value }} \u2014 {{ Number(\n    $('Stripe Webhook').item.json.body.data.object.amount_total\n    || $('Stripe Webhook').item.json.body.data.object.amount\n    || 0\n) / 100 }}",
        "additionalFields": {
          "value": "={{ Number(\n    $('Stripe Webhook').item.json.body.data.object.amount_total\n    || $('Stripe Webhook').item.json.body.data.object.amount\n    || 0\n) / 100 }}",
          "person_id": "={{ $json.id }}",
          "customProperties": {
            "property": [
              {
                "name": "YOUR_AWS_SECRET_KEY_HERE",
                "value": "={{ $('Set field').item.json.eventId }}"
              }
            ]
          }
        }
      },
      "typeVersion": 1
    },
    {
      "id": "a2d4afb9-d0cf-40a9-8da9-d94b126a6d55",
      "name": "Do nothing",
      "type": "n8n-nodes-base.noOp",
      "position": [
        -400,
        608
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "ee468b0d-cae8-4a13-b187-f0eec0c6d1c7",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -944,
        336
      ],
      "parameters": {
        "width": 752,
        "height": 608,
        "content": "# Step 3 - Checks if event is not same to avoid duplicate deal creation\n\n**If node:** Check if Event id is same\n- If True- Skip the deal creation and does nothing\n- If False - Create a deal linked to that person with the payment amount"
      },
      "typeVersion": 1
    },
    {
      "id": "1e7ffe51-e6af-4829-97fe-59b92cd2a933",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1744,
        -96
      ],
      "parameters": {
        "width": 768,
        "height": 400,
        "content": "# Step 1 - Initial setup\n**Stripe Webhook:** n8n triggers on payment events from Stripe\n\n**Edit / Set node:** Extracts eventId, eventType, and payload.\n\n**HTTP Request:** Confirms Stripe event via Stripe API (adds security)."
      },
      "typeVersion": 1
    },
    {
      "id": "cfdb8846-c87c-40e7-8c8a-61c22ae6d1fd",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1744,
        336
      ],
      "parameters": {
        "width": 768,
        "height": 608,
        "content": " # Step 2 - Search contact\n\n **Search Person:** Looks up Pipedrive contact by email from the Stripe payload.\n\n **IF:** Checks whether the person exists.\n - If exists \u2192 skip to deal creation.\n - If not \u2192 create new Person.\n\n#### \n**Create Person:** Adds new Pipedrive contact, populates custom fields (amount, payment method, status, source).\n\n **Create Deal:** Creates a deal linked to that person with the payment amount."
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "2237b3ce-4c15-4a80-bc92-0c8abb0eb0f2",
  "connections": {
    "Set field": {
      "main": [
        [
          {
            "node": "Check if event id is same",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Stripe Webhook": {
      "main": [
        [
          {
            "node": "Set field",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create a person": {
      "main": [
        [
          {
            "node": "Create a deal",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Search a person": {
      "main": [
        [
          {
            "node": "if person exists",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "if person exists": {
      "main": [
        [
          {
            "node": "If event id exist",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Create a person",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If event id exist": {
      "main": [
        [
          {
            "node": "Do nothing",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Append a deal",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check if event id is same": {
      "main": [
        [
          {
            "node": "Search a person",
            "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

About this workflow

n8n instance (cloud or self-hosted) with HTTPS reachable webhook endpoint Stripe account and secret API key Pipedrive account with API access and custom fields defined Users should create custom fields in Pipedrive and copy their field IDs (e.g. amount, payment method, status,…

Source: https://n8n.io/workflows/9275/ — original creator credit. Request a take-down →

More Web Scraping workflows → · Browse all categories →

Related workflows

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

Web Scraping

This n8n template provides enterprise-level version control for your workflows using GitHub integration. Stop losing hours to broken workflows and manual exports – get proper commit history, visual di

n8n, Execute Workflow Trigger, HTTP Request +1
Web Scraping

This flow creates dummy files for every item added in your *Arrs (Radarr/Sonarr) with the tag .

HTTP Request, Ssh
Web Scraping

This workflow acts as a central API gateway for all technical indicator agents in the Binance Spot Market Quant AI system. It listens for incoming webhook requests and dynamically routes them to the c

HTTP Request
Web Scraping

Sign PDF documents with legally-compliant digital signatures using X.509 certificates. Supports multiple PAdES signature levels (B, T, LT, LTA) with optional visible stamps.

Execute Command, HTTP Request, Read Write File +1
Web Scraping

📡 This workflow serves as the central Alpha Vantage API fetcher for Tesla trading indicators, delivering cleaned 20-point JSON outputs for three timeframes: , , and . It is required by the following a

HTTP Request