Stripe to Google Sheets, sales logged and shared in Slack
Sales comes in, and then the scramble starts. Someone needs to log the transaction, confirm the invoice exists, send the receipt, and tell the team. Miss one step and you’re chasing “did we bill them?” messages later.
This Stripe Sheets Slack automation hits RevOps first, but agency owners and busy finance leads feel it too. You get a clean record in Google Sheets, a Slack notification for visibility, and a customer receipt email without anyone copy‑pasting details.
Below, you’ll see exactly what the workflow does, what you need, and how the moving parts fit together so you can run it with confidence.
How This Automation Works
Here’s the complete workflow you’ll be setting up:
n8n Workflow Template: Stripe to Google Sheets, sales logged and shared in Slack
flowchart LR
subgraph sg0["Checkout Completed Flow"]
direction LR
n0@{ icon: "mdi:database", form: "rounded", label: "Log Transaction", pos: "b", h: 48 }
n1@{ icon: "mdi:message-outline", form: "rounded", label: "Email Receipt", pos: "b", h: 48 }
n3["<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/stripe.svg' width='40' height='40' /></div><br/>Checkout Completed"]
n5@{ icon: "mdi:cog", form: "rounded", label: "Wait for Invoice", pos: "b", h: 48 }
n6@{ icon: "mdi:database", form: "rounded", label: "Lookup Invoice", pos: "b", h: 48 }
n7["<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/slack.svg' width='40' height='40' /></div><br/>Message to RevOps"]
n6 --> n1
n0 --> n7
n0 --> n5
n5 --> n6
n3 --> n0
end
subgraph sg1["Invoice Created Flow"]
direction LR
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/stripe.svg' width='40' height='40' /></div><br/>Invoice Created"]
n4@{ icon: "mdi:database", form: "rounded", label: "Log Invoice", pos: "b", h: 48 }
n2 --> n4
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 n3,n2 trigger
class n0,n6,n4 database
classDef customIcon fill:none,stroke:none
class n3,n7,n2 customIcon
Why This Matters: Post-checkout busywork causes missed follow-ups
Stripe tells you a checkout completed, but your actual process usually lives somewhere else. A spreadsheet tab for transactions. Another tab for invoices. A Slack channel where the team expects a heads-up. And the customer waiting for a receipt link so they can file it, expense it, or forward it. Doing this manually feels “quick” until you’re doing it five times a day, switching between tools, hunting for invoice PDFs, and fixing typos that should never have happened. Honestly, the worst part is the uncertainty. You don’t notice the missed receipt until a customer replies days later.
The friction compounds. Here’s where it usually breaks down.
- Someone logs the payment in Sheets, but forgets to add the invoice details, so reporting stays messy.
- Slack notifications happen “when someone remembers,” which means the team doesn’t follow up fast on higher-intent buyers.
- Receipts go out late (or from the wrong inbox), and customers end up asking for proof of purchase.
- Invoice creation can lag behind checkout, so manual workflows fail when the PDF isn’t ready yet.
What You’ll Build: Stripe events logged to Sheets, shared to Slack, and receipted by email
This workflow listens for two Stripe events: a completed checkout and an invoice being created. When a checkout completes, it immediately logs the purchase details into a “transactions” tab in Google Sheets, then posts a message into Slack so your RevOps (or whoever owns follow-up) sees the sale right away. In the background, the workflow waits briefly, then looks up the matching invoice record in Sheets once Stripe has generated it. Finally, it emails the customer a personalized receipt message with a link to download their receipt (using your connected Gmail account). The result is a tight loop: sale captured, team notified, customer receipted, and records kept clean for later reporting.
The workflow starts in Stripe, because that’s your source of truth for payments. Google Sheets becomes the shared log for transactions and invoices, which keeps finance and ops on the same page. Slack provides the real-time nudge that makes follow-up actually happen.
What You’re Building
| What Gets Automated | What You’ll Achieve |
|---|---|
|
|
Expected Results
Say you handle 10 Stripe checkouts a week. Manually, logging the transaction (about 5 minutes), notifying the team in Slack (2 minutes), finding the invoice PDF later (maybe 5 minutes), and emailing a receipt (another 5 minutes) is roughly 15–20 minutes each time, or about 3 hours a week. With this workflow, you’re mostly done after the checkout triggers it. The wait and invoice lookup happen automatically, and the email goes out without you touching it.
Before You Start
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Stripe for checkout and invoice events.
- Google Sheets to store transactions and invoices.
- Slack to notify your internal channel.
- Gmail (Google Workspace) to send customer receipt emails.
Skill level: Beginner. You’ll connect accounts, create one spreadsheet, and map a few fields.
Want someone to build this for you? Talk to an automation expert (free 15-minute consultation).
Step by Step
A Stripe checkout completes. When a customer finishes paying through Stripe Checkout, the workflow triggers immediately and pulls in the purchase details from Stripe.
The sale is logged to Google Sheets. A new row is added to your “transactions” tab, giving you a simple ledger you can filter, share, or reconcile later. Right after that, the workflow posts to Slack so the team sees the new sale in the channel you choose (the template uses a RevOps channel by default).
The workflow waits for the invoice. Stripe can create the invoice a little after the checkout, so a short delay is used to avoid trying to grab an invoice that doesn’t exist yet.
The invoice is found and the receipt email is sent. Once the invoice is available (and logged), the workflow looks up the invoice record and sends the customer an email with their receipt link using Gmail.
You can easily modify the Slack channel and the Google Sheets column mapping based on your needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Stripe Trigger
Set up both Stripe event triggers so the workflow can capture checkout sessions and invoice creation events.
- Add and open Checkout Completion Trigger, then set Events to
checkout.session.completed. - Credential Required: Connect your stripeApi credentials in Checkout Completion Trigger.
- Add and open Invoice Event Trigger, then set Events to
invoice.created. - Credential Required: Connect your stripeApi credentials in Invoice Event Trigger.
- (Optional) Keep Flowpast Branding as a visual note; it does not affect execution.
Step 2: Connect Google Sheets
Log checkout and invoice data into Google Sheets for tracking and later lookup.
- Open Record Purchase Log and set Operation to
append. - Set Document ID to
[YOUR_ID]and Sheet Name to[YOUR_ID](transactions sheet). - Verify column mappings use expressions like
{{$json.data.object.customer_details.name}},{{DateTime.fromSeconds($json.data.object.created ).toFormat('yyyy-MM-dd HH:mm:ss')}}, and{{new Intl.NumberFormat("en-US", { style: "currency", currency: $json.data.object.currency}).format($json.data.object.amount_total/100)}}. - Credential Required: Connect your googleSheetsOAuth2Api credentials in Record Purchase Log.
- Open Record Invoice Log and set Operation to
appendwith Document ID[YOUR_ID]and Sheet Name[YOUR_ID](invoices sheet). - Confirm expressions like
{{$json.data.object.id}},{{$json.data.object.invoice_pdf}}, and{{new Intl.NumberFormat("en-US", { style: "currency", currency: $json.data.object.currency}).format($json.data.object.amount_paid/100)}}. - Credential Required: Connect your googleSheetsOAuth2Api credentials in Record Invoice Log.
⚠️ Common Pitfall: Replace both [YOUR_ID] values with your actual Google Sheet ID and worksheet names, otherwise the append and lookup operations will fail.
Step 3: Set Up the Wait and Invoice Lookup
Delay the flow until invoices are created, then locate the matching invoice record.
- Open Delay for Invoice and configure the wait timing if desired (defaults are acceptable for a basic delay).
- Open Find Invoice Record and set the filter Lookup Column to
invoice_idwith Lookup Value{{$json.invoice_id}}. - Set Document ID to
[YOUR_ID]and Sheet Name to[YOUR_ID](invoices sheet). - Credential Required: Connect your googleSheetsOAuth2Api credentials in Find Invoice Record.
Record Purchase Log outputs to both Notify Revenue Ops and Delay for Invoice in parallel.
Step 4: Configure Output and Notifications
Send the customer receipt via Gmail and notify Revenue Ops in Slack.
- Open Send Receipt Email and set Send To to
{{$('Record Purchase Log').item.json.email}}. - Set Subject to
Your Demo Karma purchaseand keep the HTML Message content intact, including{{$json.invoice_pdf}}for the receipt link. - Credential Required: Connect your gmailOAuth2 credentials in Send Receipt Email.
- Open Notify Revenue Ops and set Channel to
[YOUR_ID](revops channel). - Confirm the Slack message uses
{{$json.amount_total}},{{$json.name}}, and the Stripe payment link containing{{$('Checkout Completion Trigger').item.json.data.object.payment_intent}}. - Credential Required: Connect your slackOAuth2Api credentials in Notify Revenue Ops.
Step 5: Test and Activate Your Workflow
Run a complete test to ensure all logs, notifications, and emails work as expected.
- Click Execute Workflow and trigger a test Stripe checkout session so Checkout Completion Trigger fires.
- Confirm Record Purchase Log appends a row in the transactions sheet and Notify Revenue Ops posts a Slack message.
- Wait for Invoice Event Trigger to fire, then confirm Record Invoice Log writes the invoice row.
- Verify Find Invoice Record locates the invoice and Send Receipt Email sends a message containing the PDF link.
- When tests pass, toggle the workflow to Active to run in production.
Troubleshooting Tips
- Stripe credentials and event permissions can be the culprit. If triggers don’t fire, check your Stripe webhook/events setup and confirm you’re using the right account (sandbox vs. production).
- If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- Google Sheets and Gmail permissions are picky in shared workspaces. If rows aren’t being written or emails aren’t sending, re-check the connected Google account and that it has access to the “Payments” spreadsheet and the sending inbox.
Quick Answers
About 30 minutes if your Stripe, Google, and Slack accounts are ready.
No. You’ll connect accounts and map a few fields into Google Sheets and your Slack message.
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 Gmail/Google Workspace costs if you’re not already subscribed.
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, and it’s common. You can change the Slack “Notify Revenue Ops” step to post in a different channel (or DM a specific user), and you can adjust the Google Sheets logging steps to match your columns. Some teams also tweak the delay before “Find Invoice Record” if invoice creation in Stripe takes longer, or edit the Gmail receipt template to match their exact support language.
Usually it’s the wrong Stripe environment. People test in sandbox but connect credentials from production (or the other way around). It can also be missing event access for the checkout/invoice triggers, or a revoked key after someone rotated credentials. Reconnect Stripe in n8n and then re-run a test checkout to confirm the trigger is firing.
Plenty for most small teams.
Often, yes, because this flow isn’t just “send A to B.” You’re handling two Stripe triggers, writing to two sheet tabs, waiting for invoice timing, then looking up the right record before sending an email. n8n is built for that kind of branching and “wait then continue” logic, and you can self-host to avoid per-task pricing when volume grows. Zapier or Make can still work if you keep the process very simple, but the moment you want reliable invoice timing and a lookup step, it gets fiddly. If you’re torn, Talk to an automation expert and explain your volume and tools.
Once this is live, every checkout leaves a trail your team can trust. Less chasing, fewer gaps, and a calmer end-of-week reconciliation.
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.