This workflow follows the Form Trigger → Gmail recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"nodes": [
{
"id": "fcc38ae8-0dbf-4676-b47b-ba77f97a38b8",
"name": "Create Zoom meeting",
"type": "n8n-nodes-base.zoom",
"position": [
180,
480
],
"parameters": {
"topic": "={{ $('Creation Form').item.json.title }}",
"authentication": "oAuth2",
"additionalFields": {
"password": "={{ Math.random().toString(36).slice(-4); }}",
"startTime": "={{ new Date(new Date($('Creation Form').item.json.date_start).getTime() + ($('Creation Form').item.json.hour * 3600000) + ($('Creation Form').item.json.minute * 60000)).toISOString() }}"
}
},
"credentials": {
"zoomOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "3d2dea09-c463-447b-9a9d-daca8fdcac06",
"name": "Create Stripe Product",
"type": "n8n-nodes-base.httpRequest",
"position": [
400,
480
],
"parameters": {
"url": "https://api.stripe.com/v1/products",
"method": "POST",
"options": {},
"sendBody": true,
"contentType": "form-urlencoded",
"authentication": "predefinedCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "name",
"value": "={{ $('Creation Form').item.json.title }}"
},
{
"name": "default_price_data[unit_amount]",
"value": "={{ $('Creation Form').item.json.price * 100 }}"
},
{
"name": "default_price_data[currency]",
"value": "={{ $('Config').item.json.currency }}"
}
]
},
"nodeCredentialType": "stripeApi"
},
"credentials": {
"stripeApi": {
"name": "<your credential>"
}
},
"typeVersion": 4.1
},
{
"id": "01ab74fb-19a1-42ef-a0ad-31107c7ded3f",
"name": "Config",
"type": "n8n-nodes-base.set",
"notes": "Setup your flow",
"position": [
-220,
640
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "038b54b7-9559-444e-8653-c5256a5b784e",
"name": "currency",
"type": "string",
"value": "EUR"
},
{
"id": "64d1eeee-cabe-403b-a634-f3238f586f58",
"name": "sheet_url",
"type": "string",
"value": "https://docs.google.com/spreadsheets/d/1ZliqqBNo6X0iM9yXBOiCG1e4Q7L7bQKMFmjvbSgUSnA/edit#gid=0"
},
{
"id": "997fe5a1-f601-458d-899c-673dff4acb04",
"name": "teacher_email",
"type": "string",
"value": "emm.bernard@gmail.com"
}
]
}
},
"notesInFlow": true,
"typeVersion": 3.3
},
{
"id": "2aa87b96-924b-472c-8cc6-2de028ce0195",
"name": "Send email to teacher",
"type": "n8n-nodes-base.gmail",
"position": [
1040,
480
],
"parameters": {
"sendTo": "={{ $('Config').item.json.teacher_email }}",
"message": "=<b>Congratulations, your event has been succesfully created \ud83c\udf89</b><br/><br/>\n\nTitle: {{ $('Creation Form').item.json.title }}<br/>\nPrice: {{ $('Creation Form').item.json.price }} {{ $('Config').item.json.currency }}<br/>\nStart date: {{ $('Creation Form').item.json.date_start }}<br/><br/>\n\n<b>Payment link:</b><br/>\n {{ $('Create payment link').item.json.url }}<br/>\n<i>Start sharing this link to get subscriptions</i><br/><br/>\n<b>Participant list:</b><br/>\n{{ $('Config').item.json.sheet_url }}#gid={{ $('Create Stripe Product').item.json.created }}\n<br/><br/>\n<b>Zoom infos:</b><br/>\nLink: {{ $('Create Zoom meeting').item.json.join_url }}<br/>\nSession ID: {{ $('Create Zoom meeting').item.json.id }}<br/>\nPassword: {{ $('Create Zoom meeting').item.json.password }}<br/> ",
"options": {},
"subject": "=\ud83c\udf89 {{ $('Creation Form').item.json.title }} has been created!"
},
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "40f66f09-19c9-40eb-a9c4-138464ccd371",
"name": "Create participant list",
"type": "n8n-nodes-base.googleSheets",
"position": [
840,
480
],
"parameters": {
"title": "={{ $('Creation Form').item.json.date_start }} - {{ $('Creation Form').item.json.title }} - {{ $('Create Stripe Product').item.json.created }}",
"options": {
"index": 0,
"sheetId": "={{ $('Create Stripe Product').item.json.created }}"
},
"operation": "create",
"documentId": {
"__rl": true,
"mode": "url",
"value": "={{ $('Config').item.json.sheet_url }}"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.3,
"alwaysOutputData": true
},
{
"id": "67ff21d2-57b8-4ccd-91ee-a1bff1ea23b2",
"name": "Add participant to list",
"type": "n8n-nodes-base.googleSheets",
"position": [
400,
800
],
"parameters": {
"columns": {
"value": {},
"schema": [
{
"id": "city",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "city",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "email",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "email",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "name",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "country",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "country",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "postal_code",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "postal_code",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "amount",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "amount",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "currency",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "currency",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "autoMapInputData",
"matchingColumns": []
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "id",
"value": "={{ $('On payment').item.json.data.object.metadata.event_sheet_id }}"
},
"documentId": {
"__rl": true,
"mode": "url",
"value": "={{ $('Config').item.json.sheet_url }}"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.3
},
{
"id": "67e317ba-77d5-4f77-8fe2-d38e1a68c6f1",
"name": "Send confirmation to participant",
"type": "n8n-nodes-base.gmail",
"position": [
620,
800
],
"parameters": {
"sendTo": "={{ $('On payment').item.json.data.object.customer_details.email }}",
"message": "=Dear {{ $('On payment').item.json.data.object.customer_details.name }},<br/><br/>\n\nWe are very happy to announce that your subscription to our event <b>{{ $json.title }}</b> starting on <b>{{ $json.start }}</b> is now confirmed.<br/><br/>\n\nHere are the infos you will need to participate:<br/> \nZoom link: {{ $('On payment').item.json.data.object.metadata.zoom_link }}<br/>\nZoom password:{{ $('On payment').item.json.data.object.metadata.zoom_password }}<br/>\nZoom ID: {{ $('On payment').item.json.data.object.metadata.zoom_id }}<br/><br/> \n\nLooking forward to see you there!<br/>\nKind regards<br/>",
"options": {
"appendAttribution": false
},
"subject": "Than you for your subscription \ud83d\ude4f"
},
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "ac5ca5f3-f9ca-494f-8e78-33dd663111ab",
"name": "Notify teacher",
"type": "n8n-nodes-base.gmail",
"position": [
840,
800
],
"parameters": {
"sendTo": "={{ $('Config').item.json.teacher_email }}",
"message": "=<b>A new participant registred for the event {{ $('Retrieve event infos').item.json.title }} ({{ $('Retrieve event infos').item.json.start }})!</b><br/><br/>\n\n<b>Name: {{ $('On payment').item.json.data.object.customer_details.name }}</b><br/>\n<b>Email: {{ $('On payment').item.json.data.object.customer_details.email }}</b><br/><br/>\n\n<b>Participant list:</b><br/>\n{{ $('Config').item.json.sheet_url }}#gid={{ $('On payment').item.json.data.object.metadata.event_sheet_id }} ",
"options": {},
"subject": "New participant registred \u261d\ufe0f"
},
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "33e5283f-3854-4ada-8412-858c205f1d1e",
"name": "Create payment link",
"type": "n8n-nodes-base.httpRequest",
"position": [
620,
480
],
"parameters": {
"url": "https://api.stripe.com/v1/payment_links",
"method": "POST",
"options": {},
"sendBody": true,
"contentType": "form-urlencoded",
"authentication": "predefinedCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "line_items[0][price]",
"value": "={{ $json.default_price }}"
},
{
"name": "line_items[0][quantity]",
"value": "1"
},
{
"name": "metadata[event_sheet_id]",
"value": "={{ $('Create Stripe Product').item.json.created }}"
},
{
"name": "metadata[zoom_link]",
"value": "={{ $('Create Zoom meeting').item.json.join_url }}"
},
{
"name": "metadata[zoom_password]",
"value": "={{ $('Create Zoom meeting').item.json.password }}"
},
{
"name": "metadata[zoom_id]",
"value": "={{ $('Create Zoom meeting').item.json.id }}"
},
{
"name": "metadata[title]",
"value": "={{ $('Creation Form').item.json.title }}"
},
{
"name": "metadata[start_time]",
"value": "={{ $('Create Zoom meeting').item.json.start_time }}"
},
{
"name": "metadata[price]",
"value": "={{ $('Creation Form').item.json.price }}"
},
{
"name": "metadata[currency]",
"value": "={{ $('Config').item.json.currency }}"
}
]
},
"nodeCredentialType": "stripeApi"
},
"credentials": {
"stripeApi": {
"name": "<your credential>"
}
},
"typeVersion": 4.1
},
{
"id": "600c5382-bdac-4131-a784-399f5be2b54b",
"name": "Format participant",
"type": "n8n-nodes-base.set",
"position": [
180,
800
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "dabd3bc2-ca92-4d99-a223-b0ad18945121",
"name": "email",
"type": "string",
"value": "={{ $('On payment').item.json.data.object.customer_details.email }}"
},
{
"id": "d40709f6-ffcd-4055-a374-9044a9a5e3b2",
"name": "name",
"type": "string",
"value": "={{ $('On payment').item.json.data.object.customer_details.name }}"
}
]
}
},
"typeVersion": 3.3
},
{
"id": "c8a90ac5-14cd-4ff2-bd5b-c35724f085d1",
"name": "Format event",
"type": "n8n-nodes-base.set",
"position": [
840,
280
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "a29943ba-b516-41a8-8f85-5bcee5eda0d1",
"name": "title",
"type": "string",
"value": "={{ $('Creation Form').item.json.title }}"
},
{
"id": "bf642fde-c4c2-42b4-beed-ef65efdab55b",
"name": "start",
"type": "string",
"value": "={{ $('Creation Form').item.json.date_start }}"
},
{
"id": "33f7a58e-624d-4ccc-bbea-ed3365cede20",
"name": "price",
"type": "number",
"value": "={{ $('Creation Form').item.json.price }}"
},
{
"id": "c948f71e-3b12-4c6a-a1f9-ee9a511fe262",
"name": "currency",
"type": "string",
"value": "={{ $('Config').item.json.currency }}"
},
{
"id": "887461ca-db0d-442e-8008-5fe6a6fbdd8f",
"name": "zoom_link",
"type": "string",
"value": "={{ $('Create Zoom meeting').item.json.join_url }}"
},
{
"id": "4b2bd5e2-3bd5-443a-94a3-9ababfd9d881",
"name": "zoom_id",
"type": "string",
"value": "={{ $('Create Zoom meeting').item.json.id }}"
},
{
"id": "a1cea8e2-9954-4143-b71f-5ea194a873dd",
"name": "zoom_password",
"type": "string",
"value": "={{ $('Create Zoom meeting').item.json.password }}"
},
{
"id": "faa52bc6-dfbe-49e2-bc95-dae198a61293",
"name": "payment_link",
"type": "string",
"value": "={{ $json.url }}"
},
{
"id": "d7f5f0f5-cc7b-436a-9ad1-0b8f410c62c6",
"name": "payment_id",
"type": "string",
"value": "={{ $json.id }}"
},
{
"id": "020b22d0-f525-4120-9f8b-2fa33e88c2e1",
"name": "event_sheet_id",
"type": "string",
"value": "={{ $json.metadata.event_sheet_id }}"
}
]
}
},
"typeVersion": 3.3
},
{
"id": "def10b04-98c3-46cc-bdeb-9592c7466992",
"name": "Store event",
"type": "n8n-nodes-base.googleSheets",
"position": [
1040,
280
],
"parameters": {
"columns": {
"value": {},
"schema": [],
"mappingMode": "autoMapInputData",
"matchingColumns": []
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "id",
"value": "0"
},
"documentId": {
"__rl": true,
"mode": "url",
"value": "={{ $('Config').item.json.sheet_url }}"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.3,
"alwaysOutputData": true
},
{
"id": "594fc7a1-f299-49c4-a25b-07cf2ced16f7",
"name": "Creation Form",
"type": "n8n-nodes-base.formTrigger",
"position": [
-500,
480
],
"parameters": {
"path": "1c6fe52c-48ab-4688-b5ae-7e24361aa602",
"options": {},
"formTitle": "Create a new meeting",
"formFields": {
"values": [
{
"fieldLabel": "title",
"requiredField": true
},
{
"fieldType": "number",
"fieldLabel": "price",
"requiredField": true
},
{
"fieldType": "date",
"fieldLabel": "date_start",
"requiredField": true
},
{
"fieldType": "number",
"fieldLabel": "hour"
},
{
"fieldType": "number",
"fieldLabel": "minute"
}
]
},
"responseMode": "lastNode",
"formDescription": "This automates the creation of a Zoom Meeting and a Stripe Payment page, streamlining your event setup process."
},
"typeVersion": 2
},
{
"id": "18fec11b-da39-4fe2-afab-d1585e3d9a99",
"name": "On payment",
"type": "n8n-nodes-base.stripeTrigger",
"disabled": true,
"position": [
-500,
780
],
"parameters": {
"events": [
"checkout.session.completed"
]
},
"credentials": {
"stripeApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "1d95a7a5-7ddc-4338-9784-1d0554f39808",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-220,
118
],
"parameters": {
"color": 6,
"width": 275.01592825011585,
"height": 468.76027109756643,
"content": "# Setup\n### 1/ Add Your credentials\n[Zoom](https://docs.n8n.io/integrations/builtin/credentials/zoom/)\n[Google](https://docs.n8n.io/integrations/builtin/credentials/google/)\n[Stripe](https://docs.n8n.io/integrations/builtin/credentials/stripe/)\n\nNote: For Google, you need to add Gmail and Google Sheet.\n\n### 2/ Create a [new Google Sheet](https://sheets.new/).\nKeep this sheet blank for now; it contains your meeting and participant information. Place it wherever it fits best in your organization.\n\n### 3/ And fill the config node\n# \ud83d\udc47"
},
"typeVersion": 1
},
{
"id": "58312523-1bee-4a56-9ab2-dc166fe30573",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-920,
500
],
"parameters": {
"color": 6,
"width": 372,
"height": 200.14793114506386,
"content": "# Create a meeting \ud83d\udc49\ud83c\udffb\n\nYour journey to easy event management starts here.\n\nClick this node, copy the production URL, and keep it handy. It's your personal admin tool for quickly creating new meetings. Simple and efficient!"
},
"typeVersion": 1
},
{
"id": "09153c6b-33cb-4fd1-8fa2-3513bca01f0c",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
620,
660
],
"parameters": {
"color": 6,
"width": 519.9859025074911,
"height": 106.11515926602786,
"content": "# \ud83d\udd8b\ufe0f Customize\n### Feel free to adapt email contents to your needs."
},
"typeVersion": 1
},
{
"id": "da13aadc-eb3c-4d99-8e2b-3e56a40d09f3",
"name": "if is creation flow",
"type": "n8n-nodes-base.if",
"position": [
-20,
640
],
"parameters": {
"options": {
"looseTypeValidation": true
},
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "loose"
},
"combinator": "and",
"conditions": [
{
"id": "40ddf809-1602-4120-ae7e-8be61437b50d",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
},
"leftValue": "={{ $(\"Creation Form\").isExecuted }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2
},
{
"id": "ca62dd52-cb79-45c1-a26a-91ba4c16b6ed",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
180,
340
],
"parameters": {
"color": 7,
"width": 202.64787116404852,
"height": 85.79488430601403,
"content": "### Crafted by the\n## [\ud83e\udd77 n8n.ninja](https://n8n.ninja)"
},
"typeVersion": 1
},
{
"id": "aebdc1b5-ccf7-4299-a8ec-10eb448c4d72",
"name": "the end",
"type": "n8n-nodes-base.noOp",
"position": [
1040,
800
],
"parameters": {},
"typeVersion": 1
}
],
"connections": {
"Config": {
"main": [
[
{
"node": "if is creation flow",
"type": "main",
"index": 0
}
]
]
},
"On payment": {
"main": [
[
{
"node": "Config",
"type": "main",
"index": 0
}
]
]
},
"Format event": {
"main": [
[
{
"node": "Store event",
"type": "main",
"index": 0
}
]
]
},
"Creation Form": {
"main": [
[
{
"node": "Config",
"type": "main",
"index": 0
}
]
]
},
"Notify teacher": {
"main": [
[
{
"node": "the end",
"type": "main",
"index": 0
}
]
]
},
"Format participant": {
"main": [
[
{
"node": "Add participant to list",
"type": "main",
"index": 0
}
]
]
},
"Create Zoom meeting": {
"main": [
[
{
"node": "Create Stripe Product",
"type": "main",
"index": 0
}
]
]
},
"Create payment link": {
"main": [
[
{
"node": "Create participant list",
"type": "main",
"index": 0
},
{
"node": "Format event",
"type": "main",
"index": 0
}
]
]
},
"if is creation flow": {
"main": [
[
{
"node": "Create Zoom meeting",
"type": "main",
"index": 0
}
],
[
{
"node": "Format participant",
"type": "main",
"index": 0
}
]
]
},
"Create Stripe Product": {
"main": [
[
{
"node": "Create payment link",
"type": "main",
"index": 0
}
]
]
},
"Add participant to list": {
"main": [
[
{
"node": "Send confirmation to participant",
"type": "main",
"index": 0
}
]
]
},
"Create participant list": {
"main": [
[
{
"node": "Send email to teacher",
"type": "main",
"index": 0
}
]
]
},
"Send confirmation to participant": {
"main": [
[
{
"node": "Notify teacher",
"type": "main",
"index": 0
}
]
]
}
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
gmailOAuth2googleSheetsOAuth2ApistripeApizoomOAuth2Api
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
How this works
This workflow automates the process of organising paid Zoom meetings, allowing educators or coaches to schedule sessions effortlessly while ensuring participants pay securely upfront via Stripe. It creates a Zoom meeting, sets up a corresponding Stripe product for payment, emails the teacher with details, and manages participant lists in Google Sheets, sending confirmations to everyone involved. Ideal for tutors, consultants, or training providers who want to reduce administrative hassle and focus on delivering value, the key step is the seamless integration of Stripe payments with Zoom scheduling to prevent no-shows.
Use this when running regular one-off or recurring paid sessions where secure payment verification is essential before granting access. Avoid it for free events or complex multi-session courses requiring advanced tracking. Common variations include adapting the Google Sheets setup for CRM integration or adding custom email templates for different participant types.
About this workflow
Streamline Your Zoom Meetings With Secure Automated Stripe Payments. Uses zoom, httpRequest, gmail, googleSheets. Event-driven trigger; 20 nodes.
Source: https://github.com/Zie619/n8n-workflows — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
Streamline Your Zoom Meetings with Secure, Automated Stripe Payments. Uses zoom, httpRequest, gmail, googleSheets. Event-driven trigger; 20 nodes.
🎉 Do you want to master AI automation, so you can save time and build cool stuff?
This workflow audits a list of URLs from a CSV upload or an XML sitemap using the Google PageSpeed Insights API, writes Lighthouse and Core Web Vitals metrics into a new Google Sheets report, and emai
Submit any YouTube, Vimeo, or Zoom webinar URL using a simple form and the workflow handles everything from there. It runs a two-phase pipeline: first identifying the top viral moments in your video w
Stop chasing blurry receipts and manually typing expense data. This workflow creates an intelligent, "snap-and-submit" reimbursement pipeline that hosts photos via UploadToURL, extracts deep data via