🔓 Unlock all 10,000+ workflows & prompts free Join Newsletter →
✅ Full access unlocked — explore all 10,000 AI workflow and prompt templates Browse Templates →
Home n8n Workflow
January 22, 2026

Zoom + Stripe: paid sessions with Sheets tracking

Lisa Granqvist Partner Workflow Automation Expert

Running paid Zoom sessions sounds simple until you’re chasing payments, copying meeting links, and manually emailing people who “definitely paid.” That’s where Zoom Stripe automation earns its keep.

Coaches feel it when a live workshop is about to start. Marketing managers feel it when support asks, “Who’s actually on the attendee list?” And if you run a small team, you feel it in your calendar. This workflow turns paid signups into a clean, reliable process.

You’ll see how one n8n workflow creates the Zoom session, takes payment in Stripe, logs everything in Google Sheets, and emails the right people automatically (without leaking the password to non-buyers).

How This Automation Works

The full n8n workflow, from trigger to final output:

n8n Workflow Template: Zoom + Stripe: paid sessions with Sheets tracking

The Problem: Paid Zoom sessions get messy fast

The first paid session is exciting. The fifth one is chaos. You’re creating meetings in Zoom, building payment links in Stripe, answering “where’s the link?” emails, and trying to keep a real attendee list somewhere that isn’t buried in Stripe events. Meanwhile, you’re also protecting access, because sending the Zoom password to the wrong person is a quick way to kill trust. It’s not hard work. It’s constant work. And it steals focus right before you have to show up and deliver.

It adds up fast. Here’s where it typically breaks down in real life.

  • You end up doing the same copy-paste loop for every session: meeting details, payment link, confirmation email, roster update.
  • Someone pays, but the confirmation goes late (or not at all), which means avoidable support messages right before the event.
  • Access control turns into guesswork because “paid” lives in Stripe, “attending” lives in your inbox, and “notes” live nowhere.
  • Your Google Sheet is always one step behind, so you can’t trust the numbers when you plan follow-ups or capacity.

The Solution: Create the meeting, sell access, and track everyone automatically

This n8n workflow ties the whole paid-session lifecycle together. You start by submitting a new session through a simple intake form, which triggers n8n to generate a Zoom meeting for that event. Next, it creates a Stripe product-style item and a payment URL via HTTP requests, so each session gets its own checkout link. At the same time, it prepares a dedicated attendee sheet in Google Sheets and logs the session details so you’re not hunting for links later. When Stripe confirms a successful payment, the workflow maps the attendee fields, appends a clean row to your sheet, and sends a confirmation email with the Zoom details to the buyer. You also get an instructor alert so you always know when someone joins.

The workflow begins with session creation (form submission) and payment setup (Stripe link). Then it switches into “verified attendee” mode when Stripe triggers a payment-completed event. From there, Google Sheets becomes the source of truth and Gmail handles the communication automatically.

What You Get: Automation vs. Results

Example: What This Looks Like

Say you run two paid Zoom sessions a week with 30 attendees each. Manually, you might spend about 15 minutes creating the meeting, 20 minutes building and testing the payment link, and another 3 minutes per attendee to confirm, send details, and update your sheet. That’s roughly 2 hours of admin per session, or about 4 hours a week. With this workflow: you submit the session once (a few minutes), then each signup is logged and emailed automatically after payment, while you just teach.

What You’ll Need

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Zoom for meeting creation and access details
  • Stripe to take payments and trigger confirmations
  • Gmail for participant confirmations and instructor alerts
  • Google Sheets to log sessions and attendees
  • Stripe API credentials (get them from Stripe Developers)

Skill level: Beginner. You’ll connect accounts, paste a Sheet URL, and edit the email text.

Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).

How It Works

A new session is submitted through a form trigger. You enter the session basics (title, time, price, and a few config fields), and n8n routes it through a quick logic check to make sure it’s running the “creation” path.

Session details are assembled and saved. The workflow sets your core settings (sheet URL, notification email, currency), then prepares the event record so Google Sheets stays consistent across sessions.

Zoom and Stripe are generated in one pass. n8n creates the Zoom meeting, then uses HTTP requests to build the Stripe item and produce a payment URL that you can share or embed anywhere.

Payment becomes the gatekeeper. When Stripe fires the “payment completed” trigger, n8n maps buyer data, appends the attendee row in Google Sheets, emails the participant their confirmed access info, and alerts you via Gmail so you’re never guessing.

You can easily modify the email wording to match your brand voice based on your needs. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Form Trigger

Set up the intake form that initiates event creation when a new meeting is submitted.

  1. Add and open Meeting Intake Form.
  2. Set Path to 1c6fe52c-48ab-4688-b5ae-7e24361aa602.
  3. Set Form Title to Create a new meeting.
  4. Set Response Mode to lastNode.
  5. Confirm the form fields include title, price, date_start, hour, and minute with required flags matching the JSON.

Tip: Keep the field labels exactly as shown so downstream expressions like {{ $('Meeting Intake Form').item.json.title }} resolve correctly.

Step 2: Connect Settings and Routing Logic

Define global settings and split the creation flow from the payment flow.

  1. Open Configure Settings and set currency to EUR.
  2. Set sheet_url to https://docs.google.com/spreadsheets/d/[YOUR_ID]/edit.
  3. Set teacher_email to [YOUR_EMAIL].
  4. Open Creation Flow Check and ensure the boolean condition uses Left Value {{ $("Meeting Intake Form").isExecuted }} with operator true.
  5. Verify the execution path: Meeting Intake FormConfigure SettingsCreation Flow Check.

⚠️ Common Pitfall: If Creation Flow Check is misconfigured, the workflow may route payment events into the creation path.

Step 3: Set Up Zoom and Stripe Creation Flow

Configure the nodes that create the Zoom session, Stripe product, and payment link.

  1. Open Generate Zoom Session and set Topic to {{ $('Meeting Intake Form').item.json.title }}. Credential Required: Connect your zoomOAuth2Api credentials.
  2. In Generate Zoom Session, set Password to {{ Math.random().toString(36).slice(-4); }} and Start Time to {{ new Date(new Date($('Meeting Intake Form').item.json.date_start).getTime() + ($('Meeting Intake Form').item.json.hour * 3600000) + ($('Meeting Intake Form').item.json.minute * 60000)).toISOString() }}.
  3. Open Build Stripe Item and set URL to https://api.stripe.com/v1/products with Method POST. Credential Required: Connect your stripeApi credentials.
  4. In Build Stripe Item, set body parameters: name to {{ $('Meeting Intake Form').item.json.title }}, default_price_data[unit_amount] to {{ $('Meeting Intake Form').item.json.price * 100 }}, and default_price_data[currency] to {{ $('Configure Settings').item.json.currency }}.
  5. Open Create Payment URL, set URL to https://api.stripe.com/v1/payment_links and Method to POST. Credential Required: Connect your stripeApi credentials.
  6. In Create Payment URL, set line_items[0][price] to {{ $json.default_price }} and add all metadata fields shown in the JSON (event_sheet_id, zoom_link, zoom_password, zoom_id, title, start_time, price, currency).

Step 4: Configure Parallel Outputs and Event Logging

After payment link creation, the workflow creates an attendee sheet and logs the event details in parallel.

  1. Confirm that Create Payment URL outputs to both Generate Attendee Sheet and Assemble Event Details in parallel.
  2. Open Generate Attendee Sheet and set Title to {{ $('Meeting Intake Form').item.json.date_start }} - {{ $('Meeting Intake Form').item.json.title }} - {{ $('Build Stripe Item').item.json.created }}. Credential Required: Connect your googleSheetsOAuth2Api credentials.
  3. In Generate Attendee Sheet, set Document ID to {{ $('Configure Settings').item.json.sheet_url }} and Sheet ID to {{ $('Build Stripe Item').item.json.created }}.
  4. Open Assemble Event Details and verify the mapped fields like title, start, price, and payment_link use the expressions shown in the JSON.
  5. Open Log Event Record and set Operation to append, Sheet Name to 0, and Document ID to {{ $('Configure Settings').item.json.sheet_url }}. Credential Required: Connect your googleSheetsOAuth2Api credentials.
  6. Open Dispatch Instructor Email and verify the subject and HTML message body contain the expressions for payment link, sheet link, and Zoom info. Credential Required: Connect your gmailOAuth2 credentials.

Step 5: Configure the Payment Completion Flow

Handle Stripe payment confirmations, append attendee data, and notify participants and instructors.

  1. Open Payment Completed Trigger and set Events to checkout.session.completed. Credential Required: Connect your stripeApi credentials.
  2. Enable Payment Completed Trigger (it is disabled by default in the JSON).
  3. Open Map Attendee Fields and set email to {{ $('Payment Completed Trigger').item.json.data.object.customer_details.email }} and name to {{ $('Payment Completed Trigger').item.json.data.object.customer_details.name }}.
  4. Open Append Attendee Row and set Document ID to {{ $('Configure Settings').item.json.sheet_url }} and Sheet Name to {{ $('Payment Completed Trigger').item.json.data.object.metadata.event_sheet_id }}. Credential Required: Connect your googleSheetsOAuth2Api credentials.
  5. Open Send Participant Confirmation and confirm the message uses {{ $json.title }} and Zoom metadata expressions. Credential Required: Connect your gmailOAuth2 credentials.
  6. Open Alert Instructor and confirm the message uses {{ $('Assemble Event Details').item.json.title }} and attendee metadata. Credential Required: Connect your gmailOAuth2 credentials.
  7. Ensure Alert Instructor leads to Workflow Finish to end the payment flow cleanly.

⚠️ Common Pitfall: If Payment Completed Trigger remains disabled, attendee confirmations and sheet updates will never run.

Step 6: Test & Activate Your Workflow

Validate the full creation and payment paths before enabling the workflow in production.

  1. Manually execute Meeting Intake Form and submit a test meeting to verify Generate Zoom Session, Build Stripe Item, and Create Payment URL create valid outputs.
  2. Confirm that Create Payment URL triggers Generate Attendee Sheet and Assemble Event Details in parallel and that Log Event Record appends a row.
  3. Use Stripe’s test mode to trigger Payment Completed Trigger and verify Append Attendee Row, Send Participant Confirmation, and Alert Instructor complete successfully.
  4. Successful execution should result in a Zoom meeting, a Stripe payment link, a new Google Sheet tab, and emails to the instructor and participant.
  5. Activate the workflow and keep Payment Completed Trigger enabled for production use.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Common Gotchas

  • Stripe credentials can expire or need specific permissions. If things break, check your Stripe Developers keys and webhook/event access first.
  • If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
  • Default prompts in AI nodes are generic. Add your brand voice early or you’ll be editing outputs forever.

Frequently Asked Questions

How long does it take to set up this Zoom Stripe automation?

About 30 minutes once your accounts are connected.

Do I need coding skills to automate paid Zoom sessions?

No. You’ll connect Zoom, Stripe, Gmail, and Google Sheets, then edit a few fields like your Sheet URL and email copy.

Is n8n free to use for this Zoom Stripe automation 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 fees (typical card processing) and whatever your email/Zoom plan costs.

Where can I host n8n to run this automation?

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.

Can I customize this Zoom Stripe automation workflow for group cohorts instead of one-off sessions?

Yes, but plan the data model first. You can keep the same “Meeting Intake Form” trigger, then adjust the “Assemble Event Details” and “Log Event Record” steps so multiple dates roll up under one cohort ID. Many people also tweak “Send Participant Confirmation” to include a cohort portal link, not just the Zoom info. If you want different emails for early-bird vs. regular pricing, that logic usually lives in the “Creation Flow Check” branching.

Why is my Zoom connection failing in this workflow?

Usually it’s expired Zoom OAuth access or missing scopes on the Zoom app you connected in n8n. Reconnect Zoom in n8n, then confirm the account has permission to create meetings. Also check that the meeting fields you submit in the form are valid (timezone mistakes cause surprisingly weird failures). If it only fails sometimes, you may be hitting Zoom rate limits when you create several meetings back-to-back.

How many attendees can this Zoom Stripe automation handle?

A lot more than you’d want to manage manually.

Is this Zoom Stripe automation better than using Zapier or Make?

It depends on how “tight” you need the process to be. Zapier and Make can handle simple payment-to-email flows, but this setup benefits from n8n’s branching (creation vs. payment path), the ability to mix built-in nodes with HTTP requests, and the fact you can self-host when volumes grow. Another practical difference is control: your Google Sheet becomes the source of truth, not a chain of fragile zaps. If you want to add checks like “only email the password after payment confirmed,” n8n is honestly easier to reason about. Talk to an automation expert if you want a recommendation based on your exact signup flow.

Once this is running, paid sessions stop being a spreadsheet-and-inbox juggling act. You get clean payments, clean access, and a roster you can trust.

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.

Lisa Granqvist

Workflow Automation Expert

Expert in workflow automation and no-code tools.

×

Use template

Get instant access to this n8n workflow Json file

💬
Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Launch login modal Launch register modal