This workflow corresponds to n8n.io template #9503 — we link there as the canonical source.
This workflow follows the Gmail → Google Drive 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 →
{
"id": "T0wDKLVujfEYW1F4",
"name": "Startup pitch deck submission workflow",
"tags": [
{
"id": "",
"name": "google-drive"
},
{
"id": "",
"name": "automation"
},
{
"id": "",
"name": "pdf"
},
{
"id": "",
"name": "email-verification"
},
{
"id": "",
"name": "startups"
}
],
"nodes": [
{
"id": "8d21708c-1815-47ef-add3-41486a3f2256",
"name": "Webhook",
"type": "n8n-nodes-base.webhook",
"position": [
1344,
912
],
"parameters": {
"path": "startup-submission",
"options": {},
"httpMethod": "POST",
"responseMode": "lastNode"
},
"typeVersion": 1.1
},
{
"id": "d465a7ab-36f7-49ff-9e24-c8cf57b707a2",
"name": "Check Email Valid",
"type": "n8n-nodes-base.if",
"position": [
2144,
912
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 1,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "condition1",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
},
"leftValue": "={{ $json.valid }}",
"rightValue": "valid"
}
]
}
},
"typeVersion": 2
},
{
"id": "463c7a5f-7206-4249-aa56-8c7c90348f0d",
"name": "Upload Pitch Deck to Drive",
"type": "n8n-nodes-base.googleDrive",
"position": [
2912,
768
],
"parameters": {
"name": "={{ $('Webhook').item.json.body.startup_name }}_{{ $('Webhook').item.json.body.name }}_PitchDeck.pdf",
"driveId": {
"__rl": true,
"mode": "list",
"value": "My Drive"
},
"options": {},
"folderId": {
"__rl": true,
"mode": "list",
"value": "1XY6BPIXVzQ-SDcTk05U_lCVk0T_tgQ3r",
"cachedResultUrl": "https://drive.google.com/drive/folders/1XY6BPIXVzQ-SDcTk05U_lCVk0T_tgQ3r",
"cachedResultName": "PitchDecks"
},
"inputDataFieldName": "=data"
},
"credentials": {
"googleDriveOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 3
},
{
"id": "1dae7048-4d5a-4ad9-a843-62b66e3e1ae7",
"name": "Save Summary PDF to Drive",
"type": "n8n-nodes-base.googleDrive",
"position": [
3984,
768
],
"parameters": {
"name": "={{ $('Webhook').item.json.body.startup_name }}_Summary_{{ $now.format('YYYYMMDD_HHmmss') }}.pdf",
"driveId": {
"__rl": true,
"mode": "list",
"value": "My Drive"
},
"options": {},
"folderId": {
"__rl": true,
"mode": "list",
"value": "1_uedUg8uuDEPCzRPMgVVZ7elSluKgVw4",
"cachedResultUrl": "https://drive.google.com/drive/folders/1_uedUg8uuDEPCzRPMgVVZ7elSluKgVw4",
"cachedResultName": "Submission Summaries"
}
},
"credentials": {
"googleDriveOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 3
},
{
"id": "2074cfe8-5f97-4b7c-a47f-f00560fef6e5",
"name": "Notify Accelerator Team",
"type": "n8n-nodes-base.gmail",
"position": [
4400,
768
],
"parameters": {
"sendTo": "user@example.com",
"message": "=<div style=\"font-family: Arial, sans-serif; max-width: 600px;\">\n <h2 style=\"color: #2563eb;\">\ud83d\ude80 New Startup Pitch Deck Submission</h2>\n \n <div style=\"background: #f3f4f6; padding: 20px; border-radius: 8px; margin: 20px 0;\">\n <p><strong>Startup Name:</strong> {{ $('Webhook').item.json.body.startup_name }}</p>\n <p><strong>Founder:</strong> {{ $('Webhook').item.json.body.name }}</p>\n <p><strong>Email:</strong> {{ $('Webhook').item.json.body.email }} \u2705 <em>(Verified)</em></p>\n <p><strong>Industry:</strong> {{ $('Webhook').item.json.body.industry }}</p>\n <p><strong>Website:</strong> <a href=\"{{ $('Webhook').item.json.body.website }}\">{{ $('Webhook').item.json.body.website }}</a></p>\n </div>\n \n <div style=\"background: #ecfdf5; border-left: 4px solid #10b981; padding: 15px; margin: 20px 0;\">\n <p><strong>\ud83d\udcce Documents:</strong></p>\n <p>\n <a href=\"{{ $('Upload Pitch Deck to Drive').item.json.webViewLink }}\" \n style=\"display: inline-block; background: #2563eb; color: white; padding: 8px 16px; \n text-decoration: none; border-radius: 5px; margin: 5px;\">\n \ud83d\udcc4 View Pitch Deck\n </a>\n <a href=\"{{ $json.webViewLink }}\" \n style=\"display: inline-block; background: #10b981; color: white; padding: 8px 16px; \n text-decoration: none; border-radius: 5px; margin: 5px;\">\n \ud83d\udccb View Summary Report\n </a>\n </p>\n </div>\n \n <div style=\"background: #fff7ed; border-left: 4px solid #f59e0b; padding: 15px; margin: 20px 0;\">\n <p><strong>\ud83d\udcca Email Verification:</strong></p>\n <ul style=\"margin: 10px 0; padding-left: 20px;\">\n <li>Status: {{ $('Verifi Email').item.json.valid ? '\u2705 Valid' : '\u274c Invalid' }}</li>\n <li>RFC Compliant: {{ $('Verifi Email').item.json.details.rfcCompliant ? '\u2705' : '\u274c' }}</li>\n <li>Valid MX: {{ $('Verifi Email').item.json.details.validMxRecord ? '\u2705' : '\u274c' }}</li>\n <li>Disposable: {{ $('Verifi Email').json.details.disposable ? '\u26a0\ufe0f Yes' : '\u2705 No' }}</li>\n <li>Provider: {{ $('Verifi Email').item.json.details.mx.provider }}</li>\n </ul>\n </div>\n \n <div style=\"background: #eff6ff; border-left: 4px solid #3b82f6; padding: 15px; margin: 20px 0;\">\n <p><strong>\ud83d\udcc1 Google Drive Folder Structure:</strong></p>\n <p style=\"font-family: monospace; font-size: 12px; line-height: 1.8;\">\n \ud83d\udcc1 PitchDecks/<br>\n \u2514\u2500 {{ $('Upload Pitch Deck to Drive').item.json.name }}<br>\n \ud83d\udcc1 Submission Summaries/<br>\n \u2514\u2500 {{ $json.name }}\n </p>\n </div>\n \n <p style=\"color: #6b7280; font-size: 12px; margin-top: 30px;\">\n <strong>Automated Notification</strong><br>\n Submitted: {{ $now.format('MMMM DD, YYYY [at] HH:mm') }}<br>\n Workflow: Startup Pitch Deck Validator<br>\n Document IDs: Pitch [{{ $('Upload Pitch Deck to Drive').item.json.id.substring(0, 8) }}...] | \n Summary [{{ $json.id.substring(0, 8) }}...]\n </p>\n</div>",
"options": {},
"subject": "=New Verified Startup: {{ $('Webhook').item.json.body.startup_name }}"
},
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "63874b94-5d23-4a85-b8be-28210399764d",
"name": "Send Founder Confirmation",
"type": "n8n-nodes-base.gmail",
"position": [
4800,
768
],
"parameters": {
"sendTo": "={{ $('Webhook').item.json.body.email }}",
"message": "=<div style=\"font-family: Arial, sans-serif; max-width: 600px; margin: 0 auto;\">\n <div style=\"background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); padding: 40px; text-align: center; border-radius: 12px 12px 0 0;\">\n <h2 style=\"color: white; margin: 0; font-size: 28px;\">Thank You, {{ $('Webhook').item.json.body.name }}! \ud83c\udf89</h2>\n </div>\n \n <div style=\"background: white; padding: 30px; border: 2px solid #e5e7eb; border-top: none; border-radius: 0 0 12px 12px;\">\n <p style=\"font-size: 16px; line-height: 1.6;\">\n We've successfully received your pitch deck submission for \n <strong style=\"color: #667eea;\">{{ $('Webhook').item.json.body.startup_name }}</strong>.\n </p>\n \n <div style=\"background: #ecfdf5; border-left: 4px solid #10b981; padding: 20px; margin: 25px 0; border-radius: 8px;\">\n <h3 style=\"color: #059669; margin-top: 0;\">\u2705 Submission Confirmed</h3>\n <ul style=\"margin: 0; padding-left: 20px; color: #047857;\">\n <li>Your email has been verified</li>\n <li>Your pitch deck has been securely stored</li>\n <li>Our team has been notified</li>\n <li>You've received a summary report (attached)</li>\n </ul>\n </div>\n \n <h3 style=\"color: #1f2937; border-bottom: 2px solid #e5e7eb; padding-bottom: 10px;\">\ud83d\udccb Your Submission Details</h3>\n \n <table style=\"width: 100%; border-collapse: collapse; margin: 20px 0;\">\n <tr>\n <td style=\"padding: 12px; background: #f9fafb; border: 1px solid #e5e7eb; font-weight: 600;\">Startup</td>\n <td style=\"padding: 12px; background: white; border: 1px solid #e5e7eb;\">{{ $('Webhook').item.json.body.startup_name }}</td>\n </tr>\n <tr>\n <td style=\"padding: 12px; background: #f9fafb; border: 1px solid #e5e7eb; font-weight: 600;\">Industry</td>\n <td style=\"padding: 12px; background: white; border: 1px solid #e5e7eb;\">{{ $('Webhook').item.json.body.industry }}</td>\n </tr>\n <tr>\n <td style=\"padding: 12px; background: #f9fafb; border: 1px solid #e5e7eb; font-weight: 600;\">Website</td>\n <td style=\"padding: 12px; background: white; border: 1px solid #e5e7eb;\">\n <a href=\"{{ $('Webhook').item.json.body.website }}\" style=\"color: #2563eb;\">{{ $('Webhook').item.json.body.website }}</a>\n </td>\n </tr>\n <tr>\n <td style=\"padding: 12px; background: #f9fafb; border: 1px solid #e5e7eb; font-weight: 600;\">Submitted</td>\n <td style=\"padding: 12px; background: white; border: 1px solid #e5e7eb;\">{{ $now.format('MMMM DD, YYYY [at] HH:mm') }}</td>\n </tr>\n </table>\n \n <h3 style=\"color: #1f2937; border-bottom: 2px solid #e5e7eb; padding-bottom: 10px;\">\ud83d\ude80 What's Next?</h3>\n \n <ol style=\"line-height: 2; color: #374151;\">\n <li><strong>Review Process:</strong> Our team will evaluate your submission within 5-7 business days</li>\n <li><strong>Additional Info:</strong> You'll receive an email if we need any clarification</li>\n <li><strong>Selection:</strong> Selected startups will be invited for in-person pitch presentations</li>\n <li><strong>Timeline:</strong> Final decisions will be communicated within 2 weeks</li>\n </ol>\n \n <div style=\"background: #eff6ff; border: 2px solid #3b82f6; padding: 20px; margin: 25px 0; border-radius: 8px; text-align: center;\">\n <p style=\"margin: 0; color: #1e40af; font-size: 14px;\">\n <strong>\ud83d\udcc4 Your submission summary report is attached to this email</strong><br>\n Keep it for your records\n </p>\n </div>\n \n <div style=\"margin-top: 30px; padding-top: 20px; border-top: 2px solid #e5e7eb;\">\n <p style=\"color: #6b7280; font-size: 13px; line-height: 1.6; margin: 0;\">\n <strong style=\"color: #1f2937;\">Questions or concerns?</strong><br>\n Reply to this email or contact us at <a href=\"mailto:support@youraccelerator.com\" style=\"color: #2563eb;\">support@youraccelerator.com</a>\n </p>\n <p style=\"color: #9ca3af; font-size: 11px; margin-top: 15px; font-style: italic;\">\n This is an automated confirmation from our startup submission system<br>\n \u00a9 2025 Your Accelerator Name \u2022 All Rights Reserved\n </p>\n </div>\n </div>\n</div>",
"options": {},
"subject": "=\u2705 Thank You for Your Pitch Deck Submission - {{ $('Webhook').item.json.body.startup_name }}"
},
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "50dc9530-f16c-4959-8ef9-4d47059d725b",
"name": "Alert Admin - Invalid Email",
"type": "n8n-nodes-base.gmail",
"position": [
2560,
1104
],
"parameters": {
"sendTo": "user@example.com",
"message": "=<div style=\"font-family: Arial, sans-serif;\">\n <h3 style=\"color: #dc2626;\">\u26a0\ufe0f Invalid Email Detected</h3>\n \n <p>A startup submission was rejected due to email verification failure:</p>\n \n <div style=\"background: #fee2e2; padding: 15px; border-left: 4px solid #dc2626; margin: 20px 0;\">\n <p><strong>Startup:</strong> {{ $('Webhook').item.json.body.startup_name }}</p>\n <p><strong>Name:</strong> {{ $('Webhook').item.json.body.name }}</p>\n <p><strong>Email:</strong> {{ $('Webhook').item.json.body.email }}</p>\n <p><strong>Valid:</strong> {{ $('Verifi Email').item.json.valid }}</p>\n <p><strong>RFC Compliant:</strong> {{ $('Verifi Email').item.json.details.rfcCompliant }}</p>\n <p><strong>Valid MX Record:</strong> {{ $('Verifi Email').item.json.details.validMxRecord }}</p>\n <p><strong>Disposable:</strong> {{ $('Verifi Email').item.json.details.disposable }}</p>\n <p><strong>Spoof-Free:</strong> {{ $('Verifi Email').item.json.details.spoofFree }}</p>\n </div>\n \n <p style=\"margin-top: 20px;\">\n <strong>Action needed:</strong> Review manually if this appears to be a legitimate submission.\n </p>\n \n <p style=\"color: #6b7280; font-size: 12px; margin-top: 30px;\">\n Time: {{ $now.format('MMMM DD, YYYY [at] HH:mm') }}<br>\n Workflow: Startup Pitch Deck Validator\n </p>\n</div>",
"options": {},
"subject": "=\u26a0\ufe0f Invalid Email Submission Attempt - {{ $('Webhook').item.json.body.startup_name }}"
},
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "a8a527b6-dd88-4cff-888a-f8d5cb0176da",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
768,
-32
],
"parameters": {
"color": 7,
"width": 420,
"height": 536,
"content": "## WORKFLOW OVERVIEW\n\n### Purpose:\nAutomatically validates startup founder emails, stores pitch decks in Google Drive, generates PDF summary reports, and notifies your team and the founders.\n\n### Key Features:\n\u2705 Real-time email verification to prevent spam\n\u2705 Automated file storage in organized Drive folders\n\u2705 Beautiful PDF summary generation with full details\n\u2705 Instant notifications to review team\n\u2705 Professional confirmation emails to founders\n\u2705 Comprehensive error handling\n\n### Processing Time:\n~15-30 seconds per submission\n\n### Best For:\nAccelerators, VC firms, Startup competitions, Investment rounds"
},
"typeVersion": 1
},
{
"id": "3041e177-d0f4-441e-aef7-00b3580ba01b",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
1216,
544
],
"parameters": {
"color": 7,
"width": 380,
"height": 508,
"content": "## STEP 1: WEBHOOK TRIGGER\n\n### Accepts POST requests with:\n```json\n{\n \"name\": \"Founder Name\",\n \"email\": \"founder@startup.com\",\n \"startup_name\": \"Company Name\",\n \"website\": \"https://startup.com\",\n \"industry\": \"AI/SaaS/FinTech\",\n \"pitch_deck_file_url\": \"https://...\"\n}\n```\n\n\ud83d\udca1 **Integrate with:** Typeform, Google Forms, Webflow, Custom frontend"
},
"typeVersion": 1
},
{
"id": "6412666b-3657-4a1b-9be2-8976bdae9f66",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
1616,
704
],
"parameters": {
"color": 7,
"width": 380,
"height": 364,
"content": "## STEP 2: EMAIL VERIFICATION\n\n### Verification Checks:\n\u2705 Email format validity (RFC compliance)\n\u2705 Domain MX record existence\n\u2705 Disposable email detection\n\u2705 Spoof/fake email detection\n\u2705 Email deliverability score"
},
"typeVersion": 1
},
{
"id": "532ceaca-917a-44ff-969c-7fe7c82caf9b",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
2016,
480
],
"parameters": {
"color": 7,
"width": 380,
"height": 588,
"content": "## STEP 3: CONDITIONAL ROUTING\n\n### Logic:\n```javascript\nIF $json.valid === true\n \u2193 TRUE \u2192 Continue to file processing\n \u2193 FALSE \u2192 Send admin alert & stop\n```\n\n### TRUE Branch (Valid Email):\nDownload pitch deck file\n\n\n### FALSE Branch (Invalid Email):\n1. Alert administrator\n2. Log failed attempt\n3. End workflow"
},
"typeVersion": 1
},
{
"id": "db0dd8d7-a5f5-45c9-ba63-bc7c3b91c2fb",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
2416,
416
],
"parameters": {
"color": 7,
"width": 340,
"height": 476,
"content": "## STEP 4: DOWNLOAD PITCH DECK\n\n### Purpose:\nConverts external file URL into binary data that can be uploaded to Google Drive\n\n### Supports:\n\u2705 Direct file URLs\n\u2705 Publicly accessible links\n\u2705 Cloud storage URLs (Dropbox, Drive, S3)\n\n\u26a0\ufe0f **Note:** URL must be publicly accessible (no authentication required)"
},
"typeVersion": 1
},
{
"id": "2a41bacd-6c97-466f-b751-1c39538f7bf2",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
2768,
352
],
"parameters": {
"color": 7,
"width": 340,
"height": 588,
"content": "## STEP 5: UPLOAD TO GOOGLE DRIVE\n\n### Output Data:\n```json\n{\n \"id\": \"file_id\",\n \"name\": \"filename.pdf\",\n \"webViewLink\": \"https://drive.google.com/...\",\n \"size\": 13264,\n \"mimeType\": \"application/pdf\"\n}\n```\n\n\u2705 Organized storage\n\u2705 Automatic naming convention\n\u2705 Returns shareable link\n\u2705 Permanent backup"
},
"typeVersion": 1
},
{
"id": "8c6f65ab-103a-430a-bda2-d7c79e7508d3",
"name": "Sticky Note7",
"type": "n8n-nodes-base.stickyNote",
"position": [
3136,
304
],
"parameters": {
"color": 7,
"width": 340,
"height": 628,
"content": "## STEP 6: GENERATE PDF SUMMARY\n\n### Includes:\n\u2728 Company information\n\ud83d\udc64 Founder details\n\u2705 Email verification status with all checks\n\ud83d\udcce Link to pitch deck in Drive\n\ud83d\udcca Submission metadata\n\ud83c\udfa8 Professional gradient design\n\n### PDF Contains:\n- Startup name, industry, website\n- Founder name and verified email\n- Email validation details (RFC, MX, disposable)\n- Google Drive document link\n- Submission timestamp\n- Next steps for founders\n"
},
"typeVersion": 1
},
{
"id": "2144263b-5563-47af-bbf8-17d88e116315",
"name": "Sticky Note8",
"type": "n8n-nodes-base.stickyNote",
"position": [
3488,
496
],
"parameters": {
"color": 7,
"width": 320,
"height": 412,
"content": "## STEP 7: DOWNLOAD GENERATED PDF\n\n### Purpose:\nRetrieves the generated PDF summary from temporary S3 storage to upload to permanent Google Drive storage\n\n\u26a0\ufe0f **Important:** S3 link expires in 30 days, so we save to Drive for permanent storage\n"
},
"typeVersion": 1
},
{
"id": "a029926f-e48b-4d4c-ba86-f2cba5c07a6b",
"name": "Sticky Note9",
"type": "n8n-nodes-base.stickyNote",
"position": [
3824,
512
],
"parameters": {
"color": 7,
"width": 452,
"height": 448,
"content": "## STEP 8: SAVE PDF TO DRIVE\n\n### Folder Structure:\n```\nMy Drive/\n\u251c\u2500\u2500 PitchDecks/\n\u2502 \u2514\u2500\u2500 StartupName_FounderName_PitchDeck.pdf\n\u2514\u2500\u2500 Submission Summaries/\n \u2514\u2500\u2500 StartupName_Summary_20251012.pdf\n```\n"
},
"typeVersion": 1
},
{
"id": "37a3db8e-d61a-4776-a318-06174bf397c8",
"name": "Sticky Note10",
"type": "n8n-nodes-base.stickyNote",
"position": [
4304,
432
],
"parameters": {
"color": 7,
"width": 360,
"height": 524,
"content": "## STEP 9: NOTIFY ADMIN TEAM\n\n### Email Contains:\n\u2705 All startup details \n\u2705 Founder information and verified email\n\u2705 Clickable buttons to view documents:\n - \ud83d\udcc4 View Pitch Deck (Google Drive link)\n - \ud83d\udccb View Summary Report (Google Drive link)\n\u2705 Email verification breakdown:\n\u2705 Drive folder structure overview\n\u2705 Document IDs for reference\n\u2705 Submission timestamp"
},
"typeVersion": 1
},
{
"id": "c4cc04cb-f88f-4882-a01b-a4660015c5cf",
"name": "Sticky Note11",
"type": "n8n-nodes-base.stickyNote",
"position": [
4688,
384
],
"parameters": {
"color": 7,
"width": 360,
"height": 556,
"content": "## STEP 10: FOUNDER CONFIRMATION\n\n### Email Features:\n\u2705 Personalized thank you message\n\u2705 Submission confirmation checklist:\n - Email verified\n - Pitch deck stored securely\n - Team notified\n - Summary report attached\n\u2705 Submission details table\n\u2705 Clear next steps timeline:\n - Additional info if needed\n - Selection notification\n\u2705 Professional gradient design\n\u2705 Contact information"
},
"typeVersion": 1
},
{
"id": "84ab521d-5343-439a-ae2c-231eb8d01701",
"name": "Sticky Note12",
"type": "n8n-nodes-base.stickyNote",
"position": [
2480,
1088
],
"parameters": {
"color": 7,
"width": 428,
"height": 540,
"content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n## ERROR HANDLER: INVALID EMAIL\n\n**Alerts admin when email verification fails**\n\n### Triggered When:\n\u274c Email is invalid (fails verification)\n\u274c Disposable/temporary email detected\n\u274c No valid MX records found\n\n### Alert Contains:\n\ud83d\udcdd Startup name and founder details\n\ud83d\udce7 Failed email address\n\ud83d\udd0d Detailed verification results\n\u23f0 Timestamp of attempt\n"
},
"typeVersion": 1
},
{
"id": "cf25de21-6456-460b-9371-0a029ccd38fd",
"name": "Sticky Note13",
"type": "n8n-nodes-base.stickyNote",
"position": [
752,
528
],
"parameters": {
"color": 7,
"width": 440,
"height": 536,
"content": "## CREDENTIALS SETUP GUIDE\n\n**1\ufe0f\u20e3 VerifiEmail API**\n- Sign up: https://verifi.email\n- Get API key from dashboard\n\n**2\ufe0f\u20e3 Google Drive OAuth2**\n- Go to: https://console.cloud.google.com\n- Enable \"Google Drive API\"\n\n**3\ufe0f\u20e3 Gmail OAuth2**\n- Use same Google Cloud project as above\n- Enable \"Gmail API\" in API Library\n\n**4\ufe0f\u20e3 HTML to PDF API**\n- Service: https://pdfmunk.com\n\n### Google Drive Folder Setup:\n\ud83d\udcc1 Create these folders in your Google Drive:\n- `/PitchDecks/` (for pitch deck PDFs)\n- `/Submission Summaries/` (for summary reports)"
},
"typeVersion": 1
},
{
"id": "fa88f7ba-ba94-449a-bf2e-e3b543d1ee54",
"name": "Verifi Email",
"type": "n8n-nodes-verifiemail.verifiEmail",
"position": [
1696,
912
],
"parameters": {
"email": "={{ $json.body.email }}"
},
"credentials": {
"verifiEmailApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "7d2ce5e2-7912-465d-a7f0-ced3a8709b3a",
"name": "Download Pitch",
"type": "n8n-nodes-base.httpRequest",
"position": [
2576,
768
],
"parameters": {
"url": "={{ $('Webhook').item.json.body.pitch_deck_file_url }}",
"options": {
"response": {
"response": {
"responseFormat": "file"
}
}
}
},
"typeVersion": 4.2
},
{
"id": "3c1f17db-4ec5-4bda-bb38-23ca10380233",
"name": "HTML to PDF",
"type": "n8n-nodes-htmlcsstopdf.htmlcsstopdf",
"position": [
3264,
768
],
"parameters": {
"html_content": "=<!DOCTYPE html> <html lang=\"en\"> <head> <meta charset=\"UTF-8\"> <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"> <title>Startup Submission Summary</title> <style> * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); padding: 40px 20px; color: #1f2937; } .container { max-width: 800px; margin: 0 auto; background: white; border-radius: 16px; box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3); overflow: hidden; } .header { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); padding: 40px 30px; text-align: center; color: white; } .header h1 { font-size: 32px; font-weight: 700; margin-bottom: 10px; text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.2); } .header .subtitle { font-size: 16px; opacity: 0.95; font-weight: 300; } .content { padding: 40px 30px; } .section { margin-bottom: 30px; padding-bottom: 25px; border-bottom: 2px solid #e5e7eb; } .section:last-child { border-bottom: none; margin-bottom: 0; padding-bottom: 0; } .section-title { font-size: 20px; font-weight: 700; color: #667eea; margin-bottom: 20px; display: flex; align-items: center; gap: 10px; } .section-title::before { content: ''; width: 4px; height: 24px; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); border-radius: 2px; } .field-group { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-bottom: 15px; } .field { background: #f9fafb; padding: 15px; border-radius: 8px; border-left: 4px solid #667eea; } .field-label { font-size: 12px; font-weight: 600; text-transform: uppercase; color: #6b7280; letter-spacing: 0.5px; margin-bottom: 8px; } .field-value { font-size: 16px; font-weight: 500; color: #1f2937; word-wrap: break-word; } .field-full { grid-column: 1 / -1; } .status-badge { display: inline-block; padding: 8px 16px; border-radius: 20px; font-size: 14px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.5px; } .status-valid { background: #10b981; color: white; } .status-invalid { background: #ef4444; color: white; } .verification-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 15px; margin-top: 15px; } .verification-item { background: white; padding: 12px 15px; border-radius: 8px; border: 2px solid #e5e7eb; display: flex; justify-content: space-between; align-items: center; } .verification-label { font-size: 14px; color: #6b7280; font-weight: 500; } .verification-value { font-size: 18px; font-weight: 700; } .check-yes { color: #10b981; } .check-no { color: #ef4444; } .link-box { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); padding: 20px; border-radius: 12px; margin-top: 15px; text-align: center; } .link-box-title { color: white; font-size: 14px; font-weight: 600; margin-bottom: 12px; opacity: 0.95; } .link-button { display: inline-block; background: white; color: #667eea; padding: 12px 30px; border-radius: 8px; text-decoration: none; font-weight: 700; font-size: 14px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); transition: transform 0.2s; } .link-url { display: block; color: white; font-size: 11px; margin-top: 10px; opacity: 0.8; word-wrap: break-word; font-family: monospace; } .info-banner { background: #eff6ff; border: 2px solid #3b82f6; border-radius: 12px; padding: 20px; margin-top: 20px; } .info-banner-title { color: #1e40af; font-weight: 700; font-size: 16px; margin-bottom: 12px; } .info-banner-content { color: #1e3a8a; font-size: 14px; line-height: 1.6; } .footer { background: #f9fafb; padding: 25px 30px; text-align: center; border-top: 2px solid #e5e7eb; } .footer-text { color: #6b7280; font-size: 13px; line-height: 1.6; } .footer-text strong { color: #1f2937; } .footer-logo { margin-top: 15px; font-size: 11px; color: #9ca3af; font-style: italic; } @media print { body { background: white; padding: 0; } .container { box-shadow: none; border-radius: 0; } } </style> </head> <body> <div class=\"container\"> <!-- Header --> <div class=\"header\"> <h1>\ud83d\ude80 Startup Submission Summary</h1> <div class=\"subtitle\">Pitch Deck Submission Report</div> </div> <!-- Main Content --> <div class=\"content\"> <!-- Company Information Section --> <div class=\"section\"> <div class=\"section-title\">Company Information</div> <div class=\"field-group\"> <div class=\"field\"> <div class=\"field-label\">Startup Name</div> <div class=\"field-value\">{{ $('Webhook').item.json.body.startup_name }}</div> </div> <div class=\"field\"> <div class=\"field-label\">Industry</div> <div class=\"field-value\">{{ $('Webhook').item.json.body.industry }}</div> </div> </div> <div class=\"field-group\"> <div class=\"field field-full\"> <div class=\"field-label\">Website</div> <div class=\"field-value\">{{ $('Webhook').item.json.body.website }}</div> </div> </div> </div> <!-- Founder Information Section --> <div class=\"section\"> <div class=\"section-title\">Founder Information</div> <div class=\"field-group\"> <div class=\"field\"> <div class=\"field-label\">Full Name</div> <div class=\"field-value\">{{ $('Webhook').item.json.body.name }}</div> </div> <div class=\"field\"> <div class=\"field-label\">Email Address</div> <div class=\"field-value\">{{ $('Webhook').item.json.body.email }}</div> </div> </div> </div> <!-- Email Verification Section --> <div class=\"section\"> <div class=\"section-title\">Email Verification Status</div> <div class=\"field field-full\"> <div class=\"field-label\">Overall Status</div> <div class=\"field-value\"> <span class=\"status-badge {{ $('Verifi Email').item.json.valid ? 'status-valid' : 'status-invalid' }}\"> {{ $('Verifi Email').item.json.valid ? '\u2713 Verified' : '\u2717 Invalid' }} </span> </div> </div> <div class=\"verification-grid\"> <div class=\"verification-item\"> <span class=\"verification-label\">RFC Compliant</span> <span class=\"verification-value {{ $('Verifi Email').item.json.details.rfcCompliant ? 'check-yes' : 'check-no' }}\"> {{ $('Verifi Email').item.json.details.rfcCompliant ? '\u2713' : '\u2717' }} </span> </div> <div class=\"verification-item\"> <span class=\"verification-label\">Valid MX Record</span> <span class=\"verification-value {{ $('Verifi Email').item.json.details.validMxRecord ? 'check-yes' : 'check-no' }}\"> {{ $('Verifi Email').item.json.details.validMxRecord ? '\u2713' : '\u2717' }} </span> </div> <div class=\"verification-item\"> <span class=\"verification-label\">Spoof-Free</span> <span class=\"verification-value {{ $('Verifi Email').item.json.details.spoofFree ? 'check-yes' : 'check-no' }}\"> {{ $('Verifi Email').item.json.details.spoofFree ? '\u2713' : '\u2717' }} </span> </div> <div class=\"verification-item\"> <span class=\"verification-label\">Not Disposable</span> <span class=\"verification-value {{ !$('Verifi Email').item.json.details.disposable ? 'check-yes' : 'check-no' }}\"> {{ !$('Verifi Email').item.json.details.disposable ? '\u2713' : '\u2717' }} </span> </div> </div> <div class=\"field-group\" style=\"margin-top: 15px;\"> <div class=\"field\"> <div class=\"field-label\">Email Provider</div> <div class=\"field-value\">{{ $('Verifi Email').item.json.details.mx.provider }}</div> </div> <div class=\"field\"> <div class=\"field-label\">Verification Date</div> <div class=\"field-value\">{{ $now.format('MMMM DD, YYYY') }}</div> </div> </div> </div> <!-- Pitch Deck Access Section --> <div class=\"section\"> <div class=\"section-title\">Pitch Deck Document</div> <div class=\"field-group\"> <div class=\"field\"> <div class=\"field-label\">File Name</div> <div class=\"field-value\">{{ $json.name }}</div> </div> <div class=\"field\"> <div class=\"field-label\">File Size</div> <div class=\"field-value\">{{ ($json.size / 1024).toFixed(2) }} KB</div>\n </div> </div> </div> <div class=\"field-group\"> <div class=\"field\"> <div class=\"field-label\">Upload Date</div> <div class=\"field-value\">{{ $json.createdTime.split('T')[0] }}</div> </div> <div class=\"field\"> <div class=\"field-label\">File Type</div> <div class=\"field-value\">{{ $json.mimeType }}</div> </div> </div> <div class=\"link-box\"> <div class=\"link-box-title\">\ud83d\udcce Access Pitch Deck in Google Drive</div> <a href=\"{{ $json.webViewLink }}\" class=\"link-button\"> VIEW DOCUMENT </a> <div class=\"link-url\">{{ $json.webViewLink }}</div> </div> </div> <!-- Submission Details Section --> <div class=\"section\"> <div class=\"section-title\">Submission Information</div> <div class=\"field-group\"> <div class=\"field\"> <div class=\"field-label\">Submission Date</div> <div class=\"field-value\">{{ $now.format('MMMM DD, YYYY') }}</div> </div> <div class=\"field\"> <div class=\"field-label\">Submission Time</div> <div class=\"field-value\">{{ $now.format('HH:mm:ss') }} UTC</div> </div> </div> <div class=\"field-group\"> <div class=\"field\"> <div class=\"field-label\">Workflow Status</div> <div class=\"field-value\">\u2713 Successfully Processed</div> </div> <div class=\"field\"> <div class=\"field-label\">Document ID</div> <div class=\"field-value\">{{ $json.id }}</div> </div> </div> <div class=\"info-banner\"> <div class=\"info-banner-title\">\ud83d\udccb Next Steps</div> <div class=\"info-banner-content\"> \u2022 Our review team will evaluate this submission within 5-7 business days<br> \u2022 Founders will be contacted if additional information is needed<br> \u2022 Selected startups will receive an invitation for in-person pitch presentation<br> \u2022 All submissions are kept confidential and secure </div> </div> </div> </div> <!-- Footer --> <div class=\"footer\"> <div class=\"footer-text\"> <strong>\ud83e\udd16 Automated Report</strong><br> Generated via n8n Workflow Automation System<br> Document ID: {{ $json.id.substring(0, 12) }}... </div> <div class=\"footer-logo\"> \u00a9 2025 Your Accelerator Name \u2022 All Rights Reserved </div> </div> </div> </body> </html>"
},
"credentials": {
"htmlcsstopdfApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "47b7d405-52c4-4afc-81ff-935d4e114a31",
"name": "HTTP Request",
"type": "n8n-nodes-base.httpRequest",
"position": [
3584,
768
],
"parameters": {
"url": "={{ $json.pdf_url }}",
"options": {
"response": {
"response": {
"responseFormat": "file"
}
}
}
},
"typeVersion": 4.2
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "4bec15ce-85d2-42b6-85df-e755001103af",
"connections": {
"Webhook": {
"main": [
[
{
"node": "Verifi Email",
"type": "main",
"index": 0
}
]
]
},
"HTML to PDF": {
"main": [
[
{
"node": "HTTP Request",
"type": "main",
"index": 0
}
]
]
},
"HTTP Request": {
"main": [
[
{
"node": "Save Summary PDF to Drive",
"type": "main",
"index": 0
}
]
]
},
"Verifi Email": {
"main": [
[
{
"node": "Check Email Valid",
"type": "main",
"index": 0
}
]
]
},
"Download Pitch": {
"main": [
[
{
"node": "Upload Pitch Deck to Drive",
"type": "main",
"index": 0
}
]
]
},
"Check Email Valid": {
"main": [
[
{
"node": "Download Pitch",
"type": "main",
"index": 0
}
],
[
{
"node": "Alert Admin - Invalid Email",
"type": "main",
"index": 0
}
]
]
},
"Notify Accelerator Team": {
"main": [
[
{
"node": "Send Founder Confirmation",
"type": "main",
"index": 0
}
]
]
},
"Save Summary PDF to Drive": {
"main": [
[
{
"node": "Notify Accelerator Team",
"type": "main",
"index": 0
}
]
]
},
"Upload Pitch Deck to Drive": {
"main": [
[
{
"node": "HTML to PDF",
"type": "main",
"index": 0
}
]
]
}
},
"description": "Automatically validates startup founder emails, stores pitch decks in Google Drive, generates professional PDF summary reports, and notifies both your team and the founders."
}
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.
gmailOAuth2googleDriveOAuth2ApihtmlcsstopdfApiverifiEmailApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
A comprehensive n8n workflow template that completely automates the startup pitch deck submission process for accelerators, incubators, VC firms, and startup competitions. This workflow validates founder emails, stores pitch decks securely, generates professional PDF summaries,…
Source: https://n8n.io/workflows/9503/ — 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 entire parent consent process for school field trips, replacing manual paper forms with a secure, verified, and legally compliant digital system.
Verified Corporate Training Certificate with CEUs – Fully Automated & Verifiable
Transform your event registration process with this comprehensive automation that eliminates manual certificate creation and ensures only verified attendees receive credentials.
This workflow automates the entire pre-issuance process of workshop participation certificates. When an attendee submits a registration form via a webhook, the workflow validates the data, verifies th
Transform new hire onboarding from 3-4 hours of manual document compilation to 3 minutes of automated generation - creates personalized, role-specific document packages including welcome letters, bene