This workflow corresponds to n8n.io template #9582 — we link there as the canonical source.
This workflow follows the Agent → 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 →
{
"meta": {
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "4272efa5-4d7d-40e5-b600-369d09de57fb",
"name": "JotForm Trigger",
"type": "n8n-nodes-base.jotFormTrigger",
"position": [
-1168,
-560
],
"parameters": {
"form": "252855528344060"
},
"credentials": {
"jotFormApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "2f4a728e-c663-4cef-a138-ad855df84cd4",
"name": "Share file",
"type": "n8n-nodes-base.googleDrive",
"position": [
-944,
-560
],
"parameters": {
"fileId": {
"__rl": true,
"mode": "list",
"value": "1u73RpV-HJhNPtJHIwPZH3NPnjeaeFqAFbkgP_fRvkZM",
"cachedResultUrl": "https://docs.google.com/document/d/1u73RpV-HJhNPtJHIwPZH3NPnjeaeFqAFbkgP_fRvkZM/edit?usp=drivesdk",
"cachedResultName": "n8n workflow json"
},
"options": {},
"operation": "share",
"permissionsUi": {
"permissionsValues": {
"role": "reader",
"type": "user",
"emailAddress": "={{ $json['Email Address'] }}"
}
},
"authentication": "serviceAccount"
},
"credentials": {
"googleApi": {
"name": "<your credential>"
}
},
"typeVersion": 3
},
{
"id": "c77f8cd7-2d5c-417f-b962-8349982e043a",
"name": "Append or update row in sheet",
"type": "n8n-nodes-base.googleSheets",
"position": [
-736,
-560
],
"parameters": {
"columns": {
"value": {
"name": "={{ $('JotForm Trigger').item.json['Full Name'].first }} {{ $('JotForm Trigger').item.json['Full Name'].last }}",
"email": "={{ $('JotForm Trigger').item.json['Email Address'] }}",
"phone": "={{ $('JotForm Trigger').item.json['Phone Number'].full }}",
"products": "={{ $('JotForm Trigger').item.json['My Products'].products[0].productName }}",
"amount of sale": "={{ $('JotForm Trigger').item.json['My Products'].products[0].subTotal }} {{ $('JotForm Trigger').item.json['My Products'].products[0].currency }}"
},
"schema": [
{
"id": "name",
"type": "string",
"display": true,
"required": false,
"displayName": "name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "email",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "email",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "phone",
"type": "string",
"display": true,
"required": false,
"displayName": "phone",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "products",
"type": "string",
"display": true,
"required": false,
"displayName": "products",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "amount of sale",
"type": "string",
"display": true,
"required": false,
"displayName": "amount of sale",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"email"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1-obvaY2DHnSBXloq8zLr8Ky0sSuBgGNF8eOF9fv8ucE/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1-obvaY2DHnSBXloq8zLr8Ky0sSuBgGNF8eOF9fv8ucE",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1-obvaY2DHnSBXloq8zLr8Ky0sSuBgGNF8eOF9fv8ucE/edit?usp=drivesdk",
"cachedResultName": "Sales - n8n workflow"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.7
},
{
"id": "33166744-7cac-4448-99d3-3f1c5abaafdc",
"name": "AI Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-528,
-560
],
"parameters": {
"text": "=Create a subject line and email body for a post-purchase thank you email. The email body must be in HTML.\n\nInstructions:\n\nSubject Line: Write a warm and inviting subject line that thanks the customer for their order and hints at a community invitation.\n\nEmail Body (in HTML):\n\nCreate a visually appealing and well-structured HTML email body.\n\nStart with a personalized greeting using the placeholder {{ $json.name }}.\n\nAcknowledge their recent purchase of {{ $json.products }}.\n\nExpress excitement for them and invite them to join an exclusive community on Discord.\n\nInclude a prominent, clickable HTML <a> tag or button for the Discord invitation link: https://discord.gg/sARWmykk.\n\nExplain the benefits of joining the Discord server (e.g., connecting with other users, getting tips, receiving support).\n\nEnd with a friendly closing.\n\nThe overall tone should be appreciative, friendly, and enthusiastic.\n\nAND SIGN THE NAME WITH \"IAMVAAR\" INSTEAD OF ANY RANDOM COMPANY\n\nExpected JSON Output Example:\n\n{\n \"subject\": \"Thank you for your order, Jane Doe! You're invited!\",\n \"body\": \"<!DOCTYPE html>\\n<html>\\n<head>\\n<style>\\n body { font-family: sans-serif; color: #333; }\\n .container { max-width: 600px; margin: 0 auto; padding: 20px; border: 1px solid #eee; border-radius: 8px; }\\n .header { font-size: 24px; font-weight: bold; margin-bottom: 15px; }\\n .button { background-color: #5865F2; color: white; padding: 12px 25px; text-decoration: none; border-radius: 5px; display: inline-block; font-weight: bold; }\\n .footer { margin-top: 20px; font-size: 12px; color: #777; }\\n</style>\\n</head>\\n<body>\\n <div class=\\\"container\\\">\\n <p class=\\\"header\\\">Thanks for your purchase, Jane Doe!</p>\\n <p>We're so excited for you to receive your new products: <strong>The Ultimate Gadget, Super-Fast Charger</strong>. We know you're going to love them!</p>\\n <p>As a thank you, we'd like to invite you to join our exclusive Discord community. It's the best place to connect with other users, get tips & tricks, and receive dedicated support from our team.</p>\\n <p style=\\\"text-align: center; margin: 30px 0;\\\">\\n <a href=\\\"https://discord.gg/sARWmykk\\\" class=\\\"button\\\">Join the Discord Server</a>\\n </p>\\n <p>We can't wait to see you there!</p>\\n <p class=\\\"footer\\\">Best regards,<br>The Team</p>\\n </div>\\n</body>\\n</html>\"\n}\n",
"options": {},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 2.2
},
{
"id": "fd1a518f-8f04-4b9a-935e-2752c3b341cb",
"name": "Google Gemini Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
-528,
-352
],
"parameters": {
"options": {}
},
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "25f19e5c-c843-4fc6-9008-0966d8fde407",
"name": "Send a message",
"type": "n8n-nodes-base.gmail",
"position": [
-176,
-560
],
"parameters": {
"sendTo": "={{ $('Append or update row in sheet').item.json.email }}",
"message": "={{ $json.output.body }}",
"options": {},
"subject": "={{ $json.output.subject }}"
},
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "2a0d43d2-5c81-4459-9899-a48978593212",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1232,
-816
],
"parameters": {
"width": 1264,
"height": 656,
"content": "### This automation handles what happens right after a customer makes a purchase on your online form. It automatically shares a document with them, records the sale in a spreadsheet, uses AI to write a personalized thank-you email, and then sends it to their inbox.\n\n* A customer completes a purchase on a JotForm, which triggers the automation.\n* The system automatically shares the digital product from Google Drive and logs the sale in a Google Sheet.\n* An AI agent then crafts a personalized thank-you email based on the customer and their order.\n* Finally, the custom-written email is sent to the customer's inbox directly from your Gmail account."
},
"typeVersion": 1
},
{
"id": "74832848-4bf5-4743-985e-9433eac7283e",
"name": "Structured Output Parser",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
-352,
-352
],
"parameters": {
"jsonSchemaExample": "{\n \"subject\": \"Thank you for your order, Jane Doe! You're invited!\",\n \"body\": \"<!DOCTYPE html>\\n<html>\\n<head>\\n<style>\\n body { font-family: sans-serif; color: #333; }\\n .container { max-width: 600px; margin: 0 auto; padding: 20px; border: 1px solid #eee; border-radius: 8px; }\\n .header { font-size: 24px; font-weight: bold; margin-bottom: 15px; }\\n .button { background-color: #5865F2; color: white; padding: 12px 25px; text-decoration: none; border-radius: 5px; display: inline-block; font-weight: bold; }\\n .footer { margin-top: 20px; font-size: 12px; color: #777; }\\n</style>\\n</head>\\n<body>\\n <div class=\\\"container\\\">\\n <p class=\\\"header\\\">Thanks for your purchase, Jane Doe!</p>\\n <p>We're so excited for you to receive your new products: <strong>The Ultimate Gadget, Super-Fast Charger</strong>. We know you're going to love them!</p>\\n <p>As a thank you, we'd like to invite you to join our exclusive Discord community. It's the best place to connect with other users, get tips & tricks, and receive dedicated support from our team.</p>\\n <p style=\\\"text-align: center; margin: 30px 0;\\\">\\n <a href=\\\"https://discord.gg/sARWmykk\\\" class=\\\"button\\\">Join the Discord Server</a>\\n </p>\\n <p>We can't wait to see you there!</p>\\n <p class=\\\"footer\\\">Best regards,<br>The Team</p>\\n </div>\\n</body>\\n</html>\"\n}"
},
"typeVersion": 1.3
}
],
"connections": {
"AI Agent": {
"main": [
[
{
"node": "Send a message",
"type": "main",
"index": 0
}
]
]
},
"Share file": {
"main": [
[
{
"node": "Append or update row in sheet",
"type": "main",
"index": 0
}
]
]
},
"JotForm Trigger": {
"main": [
[
{
"node": "Share file",
"type": "main",
"index": 0
}
]
]
},
"Google Gemini Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Structured Output Parser": {
"ai_outputParser": [
[
{
"node": "AI Agent",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Append or update row in sheet": {
"main": [
[
{
"node": "AI Agent",
"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.
gmailOAuth2googleApigooglePalmApigoogleSheetsOAuth2ApijotFormApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Explanation video: https://youtu.be/QjbA-tFYCFE?si=--C36KlSgABzteoB
Source: https://n8n.io/workflows/9582/ — 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.
This workflow automates the extraction and processing of invoice data from PDFs stored in a Google Drive folder. It leverages Google Drive, Google Sheets, and Gemini AI to streamline invoice managemen
Workflow explaination video: https://youtu.be/z1grVuNOXMk
This workflow is designed for employees who need to submit expense claims for business trips. It automates the process of extracting data from receipts/invoices, logging it to a Google Sheet, and noti
Workflow explaination: https://youtu.be/ecafBTFPuvE?si=7csA1yNsaUxUG72F
This automation is designed to help you generate AI-powered music tracks, cover art, and fully rendered music videos — all triggered from a simple Telegram chat and managed via Google Sheets.