Build a Pipedrive Deal Won → Stripe Invoice + Slack Win + Sheets Log Workflow with n8n
Your sales rep drags a deal to "Won" in Pipedrive. Then the real work starts: someone has to open Stripe and cut an invoice, someone has to tell the team in Slack so finance and onboarding know, and s
Your sales rep drags a deal to "Won" in Pipedrive. Then the real work starts: someone has to open Stripe and cut an invoice, someone has to tell the team in Slack so finance and onboarding know, and someone has to log the deal in a spreadsheet for the monthly revenue rollup. Three tools, three manual steps, and three chances for a closed deal to sit uninvoiced for days. This article shows you how to collapse all of that into a single n8n workflow that fires the moment the deal closes — no code, no copy-paste, no dropped revenue.
The problem: closing the deal isn't the finish line
For a busy revenue team, "Won" is a status in a CRM, but cash only moves when an invoice exists. The gap between those two events is where money leaks. A typical post-close handoff looks like this:
- Delayed invoicing. The rep is already on the next call. The invoice gets created "later" — sometimes days later — which directly stretches your days-sales-outstanding and delays collection.
- Silent wins. Finance doesn't know to expect payment. Onboarding doesn't know a new customer is coming. Leadership doesn't feel the momentum. The team never gets the small dopamine hit that keeps a sales floor motivated.
- Broken reporting. Someone forgets to log the deal in the shared sheet, so your board deck and your CRM disagree about what actually closed this month.
Each step is trivial on its own. The problem is that they're manual, repetitive, and depend on a human remembering to do them at the exact moment they're least likely to — right after the adrenaline of a close. Multiply that by every deal, every rep, every week, and you have a systemic revenue-operations leak that no amount of "just remember to invoice" will fix.
The solution: one event, four automatic actions
The fix is event-driven automation. Pipedrive already knows the exact instant a deal becomes Won — it emits an event. n8n listens for that event and fans it out into every downstream action in parallel, in under a second:
- Stripe: create (and optionally send) an invoice for the deal value, tied to the right customer.
- Slack: post a formatted win announcement to your
#winsor#revenuechannel. - Google Sheets: append a row to your revenue log with deal name, value, owner, and timestamp.
Nobody clicks anything. The rep marks the deal Won and moves on; the invoice is already generated, the team is already celebrating, and the ledger is already updated. n8n is the connective tissue that turns a CRM status change into a fully executed back-office sequence.
Step-by-step: building it in n8n
Here's the exact node layout. The whole thing is five nodes and takes about fifteen minutes to wire up.
1. Trigger — Pipedrive Trigger node
Add a Pipedrive Trigger node. Authenticate with your Pipedrive API token (Settings → Personal preferences → API in Pipedrive). Configure it to listen on the deal object for the updated action. Pipedrive registers the webhook automatically, so you don't touch their webhook UI.
Because updated fires on every edit, add an IF node right after it to filter for genuine wins. Set the condition to check that {{ $json.current.status }} equals won and {{ $json.previous.status }} does not equal won. That second clause is the one people forget — it stops the workflow re-firing when someone edits an already-won deal.
2. Enrich — Pipedrive node (get deal + person)
The trigger payload is thin. Add a Pipedrive node (Get a Deal) using the deal ID from the trigger to pull the full record: value, currency, deal owner, and the linked person/organization. If you need the customer's email for Stripe, chain a second Pipedrive operation (Get a Person) with the person_id. This gives every downstream node clean, reliable data instead of guessing from the webhook.
3. Invoice — Stripe node
Add a Stripe node authenticated with your Stripe secret key. There isn't a single "invoice" resource in the core node, so the robust pattern is an HTTP Request node pointed at the Stripe API using your Stripe credential:
- First, find or create the customer:
POST https://api.stripe.com/v1/customerswith the email and name from step 2 (or look them up by email to avoid duplicates). - Create an invoice item:
POST /v1/invoiceitemswithcustomer,amount={{ $json.value * 100 }}(Stripe uses cents), andcurrency. - Create the invoice:
POST /v1/invoiceswith the customer ID, then optionallyPOST /v1/invoices/{id}/finalizeand/sendto email it automatically.
Set the HTTP Request authentication to your Stripe credential and use application/x-www-form-urlencoded for the body — Stripe doesn't accept JSON.
4. Celebrate — Slack node
Add a Slack node (Send a Message) authenticated via OAuth2 or a bot token. Pick your channel and build a message with expressions:
🎉 *{{ $json.title }}* closed by {{ $json.owner_name }} — *{{ $json.currency }} {{ $json.value }}*! Invoice sent automatically.
Use Slack Blocks for a richer card if you want emoji, dividers, and a link back to the deal in Pipedrive. This is the node that makes the automation felt by the team.
5. Log — Google Sheets node
Add a Google Sheets node (Append Row) authenticated with OAuth2. Point it at your revenue log spreadsheet and map columns: Date = {{ $now }}, Deal = {{ $json.title }}, Value, Owner, and Invoice ID = the Stripe invoice ID returned in step 3. Now your sheet and your CRM never disagree.
Connect steps 3, 4, and 5 off the same enrichment node so they run in parallel — no reason to make Slack wait for Sheets. Activate the workflow, mark a test deal Won, and watch all three fire.
Benefits: what this actually buys you
- Faster cash. Invoices go out the instant a deal closes instead of "end of week," directly shrinking days-sales-outstanding and improving cash flow.
- Zero dropped invoices. The workflow doesn't forget, doesn't get busy, and doesn't go on vacation. Every won deal is invoiced, every time.
- Team momentum. Automatic Slack wins keep the whole company aware of revenue in real time — finance, onboarding, and leadership all see it without a status meeting.
- One source of truth. The Sheets log is populated automatically, so your reporting matches reality and month-end reconciliation stops being a scavenger hunt.
- Rep focus. Salespeople sell instead of doing admin. The highest-value people on your team stop doing the lowest-value work.
Common pitfalls (and how to avoid them)
- Double-firing on re-saves. The single biggest mistake. Without the
previous.status ≠ woncheck in your IF node, editing any field on a won deal creates a second invoice. Always compare current vs. previous status. - Currency and cents. Stripe expects the smallest currency unit — multiply Pipedrive's value by 100. Forgetting this turns a $2,000 deal into a $20 invoice. Also confirm the currency codes match between systems.
- Duplicate Stripe customers. Blindly creating a customer on every win pollutes Stripe. Look up by email first, and only create if none exists.
- Sending invoices before you're ready. During testing, create invoices as drafts (skip the
finalize/sendcalls) so you don't email real customers. Flip to auto-send only once you've verified amounts. - Slack rate limits and channel access. Make sure your bot is actually invited to the target channel, or the message silently fails. Add an error branch that pings you if any node errors, so a failed invoice never goes unnoticed.
- Timezone drift in the log.
{{ $now }}uses the workflow's timezone — set it explicitly in workflow settings so your revenue log timestamps match your accounting close.
Wire in the status guard, get the cents right, and test with drafts first, and you'll have a bulletproof close-to-cash pipeline that runs itself. Mark it Won — n8n does the rest.
Ja construimos isso pra voce
Nao comece do zero. O Pipedrive Deal Won → Stripe Invoice + Slack Win + Sheets Log e um workflow n8n pronto para instalar — conecta suas ferramentas em minutos, sem codigo.
Instalar por $59.0 →