Stripe + Pipedrive: payments logged as clean deals
Payments come in. Then the busywork starts: exporting Stripe data, hunting for the right contact in Pipedrive, and trying not to create a duplicate “John Smith” for the third time.
This is where sales ops gets dragged into admin, and agency owners feel it when follow-ups slip. Even a solo founder ends up second-guessing the pipeline. Stripe Pipedrive automation fixes that by logging every payment as a clean Person + Deal you can actually trust.
Below you’ll see exactly how the workflow runs, what it creates inside Pipedrive, and the few settings that make the “no duplicates” promise real.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: Stripe + Pipedrive: payments logged as clean deals
flowchart LR
subgraph sg0["Flow 1"]
direction LR
n0["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Stripe Webhook"]
n1["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/pipedrive.svg' width='40' height='40' /></div><br/>Search a person"]
n2["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/pipedrive.svg' width='40' height='40' /></div><br/>Create a person"]
n3@{ icon: "mdi:swap-vertical", form: "rounded", label: "Set field", pos: "b", h: 48 }
n4["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Check if event id is same"]
n5["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/pipedrive.svg' width='40' height='40' /></div><br/>Append a deal"]
n6@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If event id exist", pos: "b", h: 48 }
n7@{ icon: "mdi:swap-horizontal", form: "rounded", label: "if person exists", pos: "b", h: 48 }
n8["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/pipedrive.svg' width='40' height='40' /></div><br/>Create a deal"]
n9@{ icon: "mdi:cog", form: "rounded", label: "Do nothing", pos: "b", h: 48 }
n3 --> n4
n0 --> n3
n2 --> n8
n1 --> n7
n7 --> n6
n7 --> n2
n6 --> n9
n6 --> n5
n4 --> n1
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n6,n7 decision
class n0,n4 api
classDef customIcon fill:none,stroke:none
class n0,n1,n2,n4,n5,n8 customIcon
The Problem: Payments Don’t Belong in Your Head
If Stripe is where money happens and Pipedrive is where follow-ups happen, the gap between them is expensive. Someone has to notice a payment, confirm it’s real, find the customer, and then create a deal that matches what was purchased. Miss a step and you get “paid customers” sitting in Stripe while your CRM shows nothing. Do it manually and you end up with inconsistent deal titles, wrong amounts, and duplicates that make reporting feel like a guessing game. Honestly, it’s the kind of admin that quietly steals focus every week.
It adds up fast. Here’s where it breaks down in day-to-day work.
- A single payment can take about 10 minutes to verify, log, and link to the right person, especially when the email doesn’t perfectly match.
- Duplicate contacts creep in because someone creates a new Person instead of searching properly, and then nobody knows which record is “the real one.”
- Without a Stripe Event ID check, the same webhook can create multiple deals, which ruins pipeline totals and makes forecasting awkward.
- Custom details like payment method or status get lost, so your team has to open Stripe again just to answer basic questions.
The Solution: Stripe → Pipedrive People + Deals, Automatically
This workflow listens for Stripe payment events and turns them into structured CRM records in Pipedrive. When Stripe sends a webhook, n8n captures the event, extracts the important fields (like event ID, type, and customer data), then verifies the event against Stripe’s API so you’re not trusting a random inbound payload. Next, it searches Pipedrive for a matching Person using the email in the Stripe data. If the person exists, it moves on. If not, it creates them and fills your custom fields (amount, payment method, status, source, and your Stripe Event ID field). Finally, it creates a Deal tied to that Person, so your pipeline reflects real revenue without manual entry.
The workflow starts with a Stripe webhook and a quick “field cleanup” step. Then it verifies the Stripe event, checks Pipedrive for an existing contact, blocks duplicates using the Stripe Event ID, and creates the deal only when it’s truly new.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say you receive 20 Stripe payments a week. Manually, it’s maybe 10 minutes per payment to verify it, locate or create the person, create the deal, and fill custom fields. That’s about 3 hours of repetitive admin, plus the “wait, did we already log this one?” checks. With this workflow, you spend a few minutes once setting fields and credentials, then each payment is logged automatically as it happens, with duplicates blocked by the Stripe Event ID.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Stripe for payment events and customer data
- Pipedrive to create people, deals, and custom fields
- Stripe Secret API key (get it from Stripe Dashboard → Developers → API keys)
Skill level: Intermediate. You’ll copy API keys, paste webhook URLs, and map a few Pipedrive custom field IDs.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
A Stripe payment hits your webhook. Stripe sends an HTTP POST to n8n when a payment succeeds (or the event type you choose), which means the automation runs in real time instead of waiting for someone to remember.
The event is cleaned up and verified. n8n extracts the event ID, event type, and core payload, then calls Stripe’s API to confirm the event is legitimate. This one step prevents a lot of headaches.
Pipedrive is searched, then updated safely. The workflow looks up a Person in Pipedrive using the email from Stripe. If the person doesn’t exist, it creates a new record and populates your custom fields (amount, payment method, status, source, Stripe Event ID).
A Deal is created only when it’s truly new. A duplicate-check compares Stripe Event ID values so the same event doesn’t produce multiple deals. When it passes, the workflow creates the deal linked to the right Person and pushes the amount into the fields you’ve defined.
You can easily modify the custom fields that get written to match your sales process, or switch the event types you listen for based on what “payment” means in your business. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Webhook Trigger
Set up the incoming Stripe webhook that starts the workflow.
- Add the Stripe Event Hook node as the trigger.
- Set HTTP Method to
POST. - Set Path to
stripe/4ea76359-79a3-4724-8297-398cea3c0f21. - Copy the generated webhook URL and register it in your Stripe webhook settings.
Step 2: Connect Stripe Event Verification
Normalize the incoming event and verify it against Stripe’s API.
- In Assign Event Fields, add three assignments: eventId with value
={{ $json.body.id }}, eventType with value={{ $json.body.type }}, and payload with value={{ $json.body.data.object }}. - Connect Stripe Event Hook → Assign Event Fields → Verify Stripe Event to match the execution flow.
- In Verify Stripe Event, set URL to
=https://api.stripe.com/v1/events/{{ $json.eventId }}. - Credential Required: Connect your httpHeaderAuth credentials in Verify Stripe Event.
Step 3: Connect Pipedrive and Search for Contacts
Lookup the customer in Pipedrive using the email from the verified Stripe event.
- Add Find Contact Record and set Resource to
personand Operation tosearch. - Set Term to
={{ $json.data.object.customer_details.email }}and enable Return All. - Credential Required: Connect your Pipedrive credentials in Find Contact Record.
- Wire Verify Stripe Event → Find Contact Record → Check Contact Exists.
⚠️ Common Pitfall: All Pipedrive nodes in this workflow require credentials, but none are configured. Be sure to add your Pipedrive credentials to Find Contact Record, Generate Contact, Create Deal Entry, and Append Deal Entry.
Step 4: Configure Conditional Routing and Duplicate Checks
Decide whether to create a new contact or append a deal based on existing records and event duplication checks.
- In Check Contact Exists, set the condition to check Left Value
={{ $json.item.emails[0] }}with operatorexists. - From Check Contact Exists, route the true output to Confirm Event Duplicate and the false output to Generate Contact.
- In Confirm Event Duplicate, set Left Value to
={{ $('Verify Stripe Event').item.json.id }}and Right Value to={{ $('Verify Stripe Event').item.json.id }}. - Route the true output of Confirm Event Duplicate to No Action, and the false output to Append Deal Entry.
Tip: The equality check in Confirm Event Duplicate currently compares the same value on both sides. Adjust this if you want real duplicate detection logic.
Step 5: Configure Contact Creation and Deal Actions
Create new Pipedrive contacts when missing and create or append deals based on the event flow.
- In Generate Contact, set Name to
={{ $('Verify Stripe Event').item.json.data.object.customer_details.email }}and Resource toperson. - In Generate Contact → Additional Fields, set Email to
={{ $('Verify Stripe Event').item.json.data.object.customer_details.email }}. - In Create Deal Entry, set Title to
=Deposit — {{ $json.email[0].value }} — {{ Number( $('Stripe Event Hook').item.json.body.data.object.amount_total || $('Stripe Event Hook').item.json.body.data.object.amount || 0 ) / 100 }}. - In Append Deal Entry, use the same Title expression and set Value to
={{ Number( $('Stripe Event Hook').item.json.body.data.object.amount_total || $('Stripe Event Hook').item.json.body.data.object.amount || 0 ) / 100 }}. - Set Person ID to
={{ $json.id }}in both Create Deal Entry and Append Deal Entry.
⚠️ Common Pitfall: Custom properties in Generate Contact, Create Deal Entry, and Append Deal Entry use placeholder keys like YOUR_AWS_SECRET_KEY_HERE. Replace these with real Pipedrive custom field keys.
Step 6: Test and Activate Your Workflow
Verify the workflow runs end-to-end and then activate it for production use.
- Use Stripe’s test webhook to send a sample event to the Stripe Event Hook URL.
- Confirm that Verify Stripe Event successfully retrieves the event from Stripe.
- Check that Find Contact Record finds an existing person or that Generate Contact creates a new one.
- Verify that Create Deal Entry or Append Deal Entry creates a deal with the expected Title and Value.
- Once successful, toggle the workflow to Active so new Stripe events sync automatically.
Common Gotchas
- Stripe credentials can expire or be pasted incorrectly. If events stop verifying, check your Stripe API key in n8n credentials and confirm it matches the correct Stripe account mode (test vs live).
- If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- Pipedrive custom fields need the correct field IDs, not just the field names. If data isn’t showing up, open Pipedrive settings, confirm the field IDs, and then recheck the mapping in the “create person” and “create deal” steps.
Frequently Asked Questions
About an hour if your Pipedrive custom fields are ready.
No. You will connect Stripe and Pipedrive, then paste in a few field IDs. The logic is already built into the workflow.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in Stripe API usage (typically negligible for simple event verification).
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
Yes, but you’ll want to branch by Stripe event type in the “Assign Event Fields” step, then add new paths that update existing deals instead of always creating new ones. You can reuse the same “Find Contact Record” logic, then swap the “Create Deal Entry” action for an “update deal” action (or create a new deal stage for refunds). Common tweaks include marking a custom “status” field as refunded, adding a note to the Person, and stopping notifications when the payment status is incomplete.
Usually it’s an API key problem or the wrong mode. Regenerate your Stripe secret key (make sure it matches live or test), update it in the “Verify Stripe Event” request, and retry with a fresh event. If the webhook is firing but verification fails, also confirm your endpoint is HTTPS and reachable from Stripe, because timeouts can look like auth errors.
A lot—practically, it’s limited by your n8n plan and server resources, not the workflow itself.
Often, yes, because this flow needs verification, branching, and a duplicate-prevention check that’s easier to control in n8n. You can confirm Stripe events via an HTTP request, search and conditionally create records in Pipedrive, and stop duplicates with your Stripe Event ID field without paying extra for every conditional step. Zapier or Make can still work if your version is very simple, but once you care about “clean CRM data,” the logic grows quickly. If you’re unsure, run the workflow on a small set of test payments first and compare the records it creates. Talk to an automation expert and you can sanity-check the design before going live.
Once payments land in Pipedrive automatically, your pipeline stops being “best effort” and starts being reliable. Set it up, let it run, and put your attention back on sales conversations.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.