Stripe to Notion, sales logged and delivered by email
You made the sale, Stripe shows “paid,” and then… you still have to send the thing. That manual delivery loop is where files get forgotten, buyers follow up, and you waste your best hours doing admin.
This hits template sellers first, honestly. But coaches delivering downloads and micro-SaaS owners shipping access links feel the same pain. With this Stripe Notion automation, the right email goes out automatically, and every sale lands in Notion without you touching it.
Below you’ll see how the workflow runs, what it replaces, and what you need to get it live without custom code.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: Stripe to Notion, sales logged and delivered by email
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/httprequest.dark.svg' width='40' height='40' /></div><br/>Get Stripe Session"]
n2@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Check Product", pos: "b", h: 48 }
n3@{ icon: "mdi:message-outline", form: "rounded", label: "Send Email - Product A", pos: "b", h: 48 }
n4@{ icon: "mdi:message-outline", form: "rounded", label: "Send Email - Product B", pos: "b", h: 48 }
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/notion.dark.svg' width='40' height='40' /></div><br/>Log to Notion"]
n6["<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/telegram.svg' width='40' height='40' /></div><br/>Telegram Notify"]
n2 --> n3
n2 --> n4
n5 --> n6
n0 --> n1
n1 --> n2
n3 --> n5
n4 --> n5
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 n2 decision
class n5 database
class n0,n1 api
classDef customIcon fill:none,stroke:none
class n0,n1,n5,n6 customIcon
The Problem: Manual delivery after Stripe is risky
Stripe is great at taking payments. It is not built to guarantee that the right buyer gets the right file, at the right time, with a clean record you can reference later. So you end up checking notifications, opening the checkout details, matching the product name, copying an email address, sending a “here you go” message, then trying to remember where you track sales. It sounds small until you’re doing it at night, from your phone, between meetings, or during a launch. That’s when mistakes happen.
The friction compounds. Here’s where it breaks down in real life.
- You have to look up what they bought, which means wrong links get sent when you’re rushed.
- Support requests pile up because buyers don’t get instant delivery and assume something failed.
- Your sales log ends up spread across Stripe exports, notes, and “I’ll fix this later” spreadsheets.
- You miss new-customer moments because you only notice sales when you finally check Stripe.
The Solution: Stripe-triggered delivery + Notion sales logging
This workflow listens for a successful Stripe checkout and takes fulfillment off your plate. When Stripe fires a checkout.session.completed event, n8n grabs the full session details directly from Stripe (so you’re not guessing what was purchased). Then it checks the purchased item description and routes the buyer down the correct path. One path sends the delivery email for Product A, another sends the delivery email for Product B, each with a personalized greeting and the correct download link. After the email goes out, the workflow logs the sale to your Notion “Sales Log” database with the buyer’s name, email, product, date, and a Delivered status. Optionally, it pings you in Telegram so you know immediately when money hits your account.
The workflow starts with a Stripe webhook and a quick Stripe API lookup. Next, an “is this Product A or Product B?” check decides which email to send. Finally, Notion gets the record, and Telegram can send a private “new sale” message.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say you sell two products (a Notion template and a digital kit) and you average 10 sales a week. Manually, you’re typically spending about 10 minutes per sale checking the product, pasting the right link, sending the email, then logging it somewhere, so that’s around 100 minutes weekly. With this workflow, your “work” is basically zero after setup: Stripe triggers it instantly, the email sends automatically, and Notion logs the sale while you’re doing something else. You get back about 2 hours most weeks, plus you stop worrying about missed deliveries.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Stripe to receive payments and send webhook events
- Notion to store a structured Sales Log database
- Telegram for optional “new sale” notifications
- Stripe secret key (get it from Stripe Developers → API keys)
- Notion database ID (copy it from your Sales Log database URL)
- Email account credentials (set up via SMTP or Gmail OAuth)
Skill level: Beginner. You’ll paste API keys, connect accounts, and edit two email templates for your products.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
A Stripe checkout completes. Stripe calls your n8n webhook when checkout.session.completed fires, so the workflow only runs after a successful payment.
Stripe details get pulled in. n8n uses an HTTP request to fetch the full checkout session from the Stripe API, which gives you reliable data like customer name, email, and the purchased line item description.
The workflow chooses the correct delivery path. An If condition checks the product description and sends the matching email (Product A or Product B). This is the part that prevents “wrong link” headaches.
Notion logs the sale and Telegram can notify you. A new page is created in your Sales Log database with Delivered status, and an optional Telegram message gives you instant awareness without extra work.
You can easily modify the product check to support more SKUs, or change the delivery link logic to use Google Drive instead of static URLs based on your needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Webhook Trigger
Set up the entry point that listens for incoming payment events and initiates the workflow.
- Add and open Incoming Payment Webhook to capture payment notifications from your payment provider.
- Copy the Webhook URL generated by Incoming Payment Webhook and paste it into your payment platform’s webhook settings.
- Trigger a test event from your payment platform to generate a sample payload for downstream configuration.
Step 2: Connect the Checkout Data Retrieval
Fetch detailed transaction data immediately after a payment event is received.
- Open Retrieve Checkout Session and configure the request to fetch full checkout details from your payment provider.
- If your provider requires authorization headers or API keys, add them in the Headers or Authentication section of Retrieve Checkout Session.
- Confirm the connection from Incoming Payment Webhook to Retrieve Checkout Session is intact.
Step 3: Set Up Product Routing Logic
Use a condition to route the workflow to the correct follow-up email based on the purchased product.
- Open Validate Item Selection and define the condition that checks the purchased item from Retrieve Checkout Session.
- Ensure Validate Item Selection routes to Dispatch Email for Product A for the primary condition and to Dispatch Email for Product B for the alternate path.
Validate Item Selection outputs to Dispatch Email for Product A or Dispatch Email for Product B based on the condition.
Step 4: Configure Follow-up Emails and Logging
Send tailored emails based on the product purchased and log the transaction in Notion.
- Open Dispatch Email for Product A and configure the recipient, subject, and message body for Product A buyers.
- Open Dispatch Email for Product B and configure the recipient, subject, and message body for Product B buyers.
- Credential Required: Connect your SMTP credentials in both Dispatch Email for Product A and Dispatch Email for Product B.
- Open Record Entry in Notion and map transaction fields (customer email, product, amount, timestamp) from earlier nodes.
- Credential Required: Connect your Notion credentials in Record Entry in Notion.
Step 5: Send Telegram Status Notifications
Notify your team that a purchase has been processed and logged.
- Open Telegram Status Alert and set the destination chat or channel.
- Customize the message with transaction details from Record Entry in Notion or earlier nodes.
- Credential Required: Connect your Telegram credentials in Telegram Status Alert.
Dispatch Email for Product A and Dispatch Email for Product B both feed into Record Entry in Notion, which then passes to Telegram Status Alert.
Step 6: Test and Activate Your Workflow
Validate the complete purchase flow before enabling it in production.
- Click Execute Workflow and send a test payload through Incoming Payment Webhook.
- Confirm Retrieve Checkout Session returns transaction details and Validate Item Selection routes to the correct email node.
- Verify the buyer receives the correct email, a new record appears in Notion, and a Telegram alert is sent.
- When everything works, toggle Active to enable the workflow for live payments.
Common Gotchas
- Stripe credentials can expire or be pasted incorrectly. If the HTTP Request fails, check Stripe Developers → API keys first and confirm your Bearer token is the secret key, not the publishable key.
- If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- Notion permissions are easy to miss. If pages aren’t being created, confirm the Sales Log database is shared with your Notion integration and that the database ID in n8n matches the correct workspace.
Frequently Asked Questions
About 30 minutes if your Stripe, Notion, and email accounts are ready.
No. You’ll connect accounts, paste a couple of IDs/keys, and edit the email content for your products.
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/Notion usage (typically no extra API cost for this volume) and your email provider.
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 adjust the “Validate Item Selection” check and add extra email branches for each SKU. Many sellers also swap the “product description” check to match on Price ID or Product ID for better reliability. Common customizations include adding a third (or fourth) delivery email, changing the Notion fields you store, and sending different Telegram messages based on the product.
Most of the time it’s the wrong Stripe key in the HTTP Request header. Make sure you used the secret key (starts with sk_), then confirm the webhook event is actually reaching n8n by checking Stripe Developers → Webhooks → Recent deliveries. If Stripe is delivering events but n8n still errors, it can also be missing permissions on the endpoint URL, or a typo in the session ID path the request uses.
A typical n8n Cloud plan handles thousands of executions per month, and each sale is usually one execution. If you self-host, there’s no execution limit (it depends on your server). Practically, this workflow can handle a lot because it’s lightweight: one webhook, one Stripe lookup, one email, one Notion write, then an optional Telegram message.
It depends on how picky you are about control. n8n is great when you want a clean “branching” logic for multiple products, direct HTTP calls to Stripe when you need extra fields, and the option to self-host so you’re not counting tasks every time you sell something. Zapier and Make can absolutely do Stripe-to-email-to-Notion, but the pricing can sting once volume grows, and multi-branch routing often becomes harder to maintain. Also, having the Stripe API lookup step in the flow is a big deal for accuracy, and n8n makes that straightforward. If you’re unsure, Talk to an automation expert and we’ll sanity-check your setup.
Once this is live, delivery and logging happen in the background. You get the sale, the customer gets the goods, and your Notion stays clean.
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.