How to Set Up Pipedrive Stage Change → Automated Follow-up Email in n8n
Every sales team has the same problem: a deal moves to Proposal Sent or Negotiation in Pipedrive, and the right follow-up email either never goes out, goes out three days late, or goes out with the wr
Every sales team has the same problem: a deal moves to Proposal Sent or Negotiation in Pipedrive, and the right follow-up email either never goes out, goes out three days late, or goes out with the wrong template. The rep was busy. The task got buried. The deal went cold. This is a solved problem — and the solution takes about 20 minutes to configure in n8n.
Why Manual Follow-ups Kill Pipeline Momentum
The window between a prospect entering Negotiation and going silent is short. Research consistently puts it at 24–48 hours: if you don't follow up while the deal is top of mind, response rates drop sharply. The problem isn't discipline — it's that reps are juggling 30+ active deals, and the cognitive overhead of tracking "who moved where and needs what email" is unsustainable at scale.
CRM reminders help, but they're passive. They require someone to act. Automated triggers remove the human bottleneck entirely: the moment a deal lands in a specific stage, the right message fires automatically, with the right context, from the right sender. No delay. No miss. No manual work.
n8n is particularly well-suited for this because it gives you full control over the logic — which stages trigger which emails, what data gets pulled from the deal, how the message is personalized — without locking you into a rigid CRM automation tool that charges per action.
How the Workflow Works
The workflow listens for deal stage changes in Pipedrive via webhook, checks which stage the deal moved to, fetches the relevant deal and contact details, and sends a personalized email using your existing email provider. The full flow is:
Pipedrive Webhook → Stage Filter → Get Deal Details → Get Contact Details → Send Email → Update Deal Activity Log
The key architectural decision here is using a webhook trigger rather than a polling trigger. Polling (checking Pipedrive every X minutes) introduces lag and wastes API calls. A webhook fires the instant the stage change happens — sub-second latency. Pipedrive supports webhooks natively for deal updates, which is exactly what you need.
Step-by-Step Setup in n8n
Step 1 — Pipedrive Webhook Trigger
In n8n, add a Webhook node. Set the HTTP method to POST and copy the generated webhook URL. In Pipedrive, go to Tools → Webhooks → Add Webhook, paste the URL, and select the event type updated.deal. This fires every time any deal field changes — you'll filter for stage changes in the next step.
Step 2 — Filter for Stage Change
Add an IF node. You need to check two conditions: first, that {{ $json.body.meta.change_source }} is not empty (confirming a real change occurred), and second, that the stage ID actually changed. Use the condition: {{ $json.body.current.stage_id }} does not equal {{ $json.body.previous.stage_id }}.
This prevents the workflow from firing when other deal fields (like expected close date) are updated without a stage change.
Step 3 — Route by Stage
Add a Switch node. Create a rule for each stage you want to handle. You'll need your Pipedrive stage IDs — find them by going to Settings → Pipeline → hover over the stage → the ID appears in the URL. Typical configuration:
- Stage ID
4(Proposal Sent) → Output 1 - Stage ID
5(Negotiation) → Output 2 - Stage ID
6(Contract Sent) → Output 3
Each output branch can have its own email template and logic.
Step 4 — Fetch Deal and Contact Data
On each branch, add a Pipedrive node configured to Get a Deal. Use the deal ID from the webhook payload: {{ $json.body.current.id }}. This gives you the full deal object — title, value, expected close date, owner, custom fields.
Follow it with another Pipedrive node configured to Get a Person, using the person ID from the deal: {{ $node["Get Deal"].json.person_id.value }}. This pulls the contact's name, email, and phone.
Step 5 — Send the Email
Add your email node — Gmail, Outlook, SMTP, or SendGrid all work. Configure the recipient as {{ $node["Get Person"].json.email[0].value }}. For the subject and body, use n8n's expression editor to inject deal data:
Subject: Re: {{ $node["Get Deal"].json.title }} — next steps
Hi {{ $node["Get Person"].json.first_name }},
Following up on our proposal for {{ $node["Get Deal"].json.title }}.
Deal value: ${{ $node["Get Deal"].json.value }}
Expected close: {{ $node["Get Deal"].json.expected_close_date }}
[Rest of your template]
Step 6 — Log the Activity in Pipedrive
After sending, add a Pipedrive node configured to Add an Activity. Set the type to "Email", link it to the deal ID, and set the subject to "Automated follow-up sent". This keeps your Pipedrive activity feed accurate — reps can see the email was sent without manually logging it.
Key Benefits for Sales Teams
Zero follow-up gaps. Every deal that hits Proposal Sent gets a follow-up email within seconds, not days. You eliminate the entire category of "we forgot to follow up" losses.
Personalization at scale. Because you're pulling live data from Pipedrive — deal name, value, contact name, rep name — each email reads like it was written manually. No merge tag failures, no "[FIRST NAME]" disasters.
Stage-specific messaging. A Proposal Sent email and a Negotiation email are completely different conversations. With the Switch node routing by stage, each message is contextually appropriate. You're not blasting a generic "checking in" template.
Rep activity logging is automatic. The activity node means your CRM stays clean without anyone manually logging sends. Managers get accurate pipeline visibility. Reps don't have to remember to update anything.
Full auditability. n8n's execution log shows every workflow run — when it fired, what data it used, whether the email sent successfully. If something goes wrong, you have a complete trace.
Common Pitfalls and How to Avoid Them
Firing on every deal update, not just stage changes. The updated.deal webhook fires for any field change — close date, value, title, custom fields. Without the IF node checking that stage_id actually changed, you'll send emails every time a rep updates the deal value. Always filter first.
Using stage names instead of stage IDs. Stage names can change. If someone renames "Proposal Sent" to "Proposal Delivered" in Pipedrive, your Switch node breaks silently. Use numeric stage IDs — they never change.
Not handling missing contact email. Some deals in Pipedrive don't have a person linked, or the person doesn't have an email on file. Add an IF node before the send step that checks {{ $node["Get Person"].json.email.length }} is greater than 0. If not, log an activity flagging "no email on file" so a human can follow up manually.
Sending duplicate emails. If a rep moves a deal to Proposal Sent, then quickly moves it back and forward again, the workflow fires twice. Add a check using the n8n Set node to track the last sent timestamp in a Pipedrive custom field — if an automated email was sent less than 24 hours ago for this stage, skip.
Hardcoding the sender email. Use the deal owner's email as the sender, not a generic noreply address. Pipedrive exposes the owner's email in the deal data: {{ $node["Get Deal"].json.owner_id.email }}. Emails that appear to come from the assigned rep get significantly higher response rates than emails from a shared inbox.
Not testing with real stage transitions. n8n's test execution is useful, but the only reliable test is moving an actual deal through the pipeline. Create a test deal, move it through each stage you've configured, and verify the email lands in the right inbox with the right content. Check the activity log in Pipedrive to confirm the logging node fired correctly.
Scaling the Workflow
Once the base workflow is running, the natural extensions are straightforward. Add a time delay node before the send step if you want the email to go out 2 hours after the stage change rather than immediately — this looks more natural and avoids emails sent at 11pm. Connect a Slack node to notify the rep's channel when an automated email fires, so they know it happened and can follow up personally if the prospect replies. Add a second branch that triggers a reminder task in Pipedrive if the deal stays in Negotiation for more than 5 days without activity.
The workflow also serves as a template for other stage-based automations: contract sent reminders, win/loss notifications to Slack, automatic creation of onboarding tasks when a deal hits Closed Won. The pattern is identical — webhook trigger, stage filter, fetch data, take action, log activity.
Ja construimos isso pra voce
Nao comece do zero. O Pipedrive Stage Change → Automated Follow-up Email e um workflow n8n pronto para instalar — conecta suas ferramentas em minutos, sem codigo.
Instalar por $39 →