This workflow corresponds to n8n.io template #9504 — we link there as the canonical source.
This workflow follows the Gmail → HTTP Request 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": "W5pXaBvkQw0fRgtq",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "University Admission Confirmation & Welcome Kit",
"tags": [
{
"id": "1aJxLPnoF1djapym",
"name": "student-onboarding",
"createdAt": "2025-10-22T14:02:55.311Z",
"updatedAt": "2025-10-22T14:02:55.311Z"
},
{
"id": "VtKtlbiltEKc4K10",
"name": "pdf-generation",
"createdAt": "2025-10-22T14:02:55.317Z",
"updatedAt": "2025-10-22T14:02:55.317Z"
},
{
"id": "ci2wH1ejVpSkW4Lr",
"name": "verifiemail",
"createdAt": "2025-10-22T14:02:55.281Z",
"updatedAt": "2025-10-22T14:02:55.281Z"
},
{
"id": "kYNBAoHPSd955OKZ",
"name": "education",
"createdAt": "2025-10-22T14:02:55.325Z",
"updatedAt": "2025-10-22T14:02:55.325Z"
},
{
"id": "zpw5BOkTHTazT7F6",
"name": "email-automation",
"createdAt": "2025-10-22T14:02:55.321Z",
"updatedAt": "2025-10-22T14:02:55.321Z"
}
],
"nodes": [
{
"id": "7a53c9ca-ebbc-4411-81a2-70d04fb3dfdd",
"name": "Sticky Note - Webhook Info",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2176,
464
],
"parameters": {
"color": 7,
"width": 480,
"height": 468,
"content": "## STEP 1: WEBHOOK TRIGGER\n\n**Test with cURL:**\n```bash\ncurl -X POST https://your-n8n-instance.com/webhook/admission-form \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"name\": \"John Doe\",\n \"email\": \"student@example.com\",\n \"course\": \"B.Tech Computer Science\",\n \"college_name\": \"TechNova University\",\n \"application_id\": \"TN-2025-0451\",\n \"admission_date\": \"2025-10-12\"\n }'\n```"
},
"typeVersion": 1
},
{
"id": "4c1d1566-e330-4f6a-9b5c-3faf647b866b",
"name": "Sticky Note - Credentials Setup",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2640,
992
],
"parameters": {
"color": 7,
"width": 392,
"height": 376,
"content": "## SETUP CREDENTIALS FIRST\n\n### 1\ufe0f\u20e3 VerifiEmail API\n- Sign up: https://verifi.email\n- Get API key from dashboard\n\n### 2\ufe0f\u20e3 Gmail OAuth2\n- Select: \"Gmail OAuth2 API\"\n\n### 3\ufe0f\u20e3 HTML/CSS to PDF API\n- Get API credentials at: https://pdfmunk.com\n\n\n**Test each credential before running the workflow!**"
},
"typeVersion": 1
},
{
"id": "417c4a99-9893-4d97-98db-432420594e2f",
"name": "Sticky Note - VerifiEmail Info",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1680,
496
],
"parameters": {
"color": 7,
"width": 396,
"height": 448,
"content": "## STEP 2: EMAIL VERIFICATION\n\n**Checks Performed:**\n- \u2705 RFC compliant format\n- \u2705 Valid MX records exist\n- \u2705 Domain is active\n- \u2705 Mailbox is deliverable\n- \u2705 Not a disposable email\n- \u2705 Spoof-free verification\n\n**Purpose:** Prevents fake registrations and ensures email deliverability"
},
"typeVersion": 1
},
{
"id": "7d1b0210-d498-4926-8003-5648bafe30a1",
"name": "Sticky Note - IF Condition Info",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1264,
432
],
"parameters": {
"color": 7,
"width": 360,
"height": 496,
"content": "## STEP 3: CONDITIONAL ROUTING\n\n**Decision Logic:**\nChecks `{{ $json.valid }}` from VerifiEmail\n\n**TRUE Path (Green) \u2705**\nEmail is valid and deliverable\n\u2192 Proceed to PDF generation\n\u2192 Send confirmation email\n\n**FALSE Path (Red) \u274c**\nEmail is invalid/undeliverable\n\u2192 Stop workflow\n\u2192 Log error with details\n\u2192 No PDF generated\n\u2192 No email sent"
},
"typeVersion": 1
},
{
"id": "84df3791-aea4-40d9-af7c-a9de1d5fa158",
"name": "Stop - Invalid Email",
"type": "n8n-nodes-base.stopAndError",
"position": [
-784,
1072
],
"parameters": {
"errorMessage": "=Email validation failed for: {{ $('Admission Form').item.json.body.email }}\n\nApplication ID: {{ $('Admission Form').item.json.body.application_id }}\nStudent: {{ $('Admission Form').item.json.body.name }}\n\nReason: Invalid or undeliverable email address.\n\nAction Required: Contact student to verify email address."
},
"typeVersion": 1
},
{
"id": "7d22d91c-a05d-4385-acaa-7b7087ec8856",
"name": "Sticky Note - Error Path Info",
"type": "n8n-nodes-base.stickyNote",
"position": [
-864,
1056
],
"parameters": {
"color": 7,
"width": 360,
"height": 492,
"content": "\n\n\n\n\n\n\n\n\n\n## ERROR HANDLING\n\n**Triggered when:** Email validation fails\n\n**Actions:**\n- Workflow stops immediately\n- Error logged with full details\n- No resources wasted on invalid addresses\n\n**Error Message Includes:**\n- Student name\n- Failed email address\n- Application ID\n- Reason for failure\n- Recommended action\n"
},
"typeVersion": 1
},
{
"id": "494dae0e-1ad3-46f9-8723-aa6c27741ff4",
"name": "Sticky Note - PDF Generation Info",
"type": "n8n-nodes-base.stickyNote",
"position": [
-880,
368
],
"parameters": {
"color": 7,
"width": 400,
"height": 468,
"content": "## STEP 4: PDF GENERATION\n\n**Converts HTML template to PDF using external API**\n\n**Template Features:**\n- Professional gradient header\n- University branding colors\n- Email verification badge\n- Detailed admission info box\n- Digital signature section\n- Footer with metadata\n\n**API Response:** Returns `pdf_url` for download"
},
"typeVersion": 1
},
{
"id": "46630413-481f-4bf6-8235-72493ebe7c10",
"name": "Sticky Note - Gmail Info",
"type": "n8n-nodes-base.stickyNote",
"position": [
-48,
304
],
"parameters": {
"color": 7,
"width": 400,
"height": 516,
"content": "## STEP 6: EMAIL DELIVERY\n\n**Sends welcome email with PDF attachment via Gmail**\n\n**Email Components:**\n- Personalized greeting\n- Congratulatory message\n- Program confirmation\n- Highlighted PDF attachment notice\n- Next steps checklist (5 action items)\n- Contact information\n- Professional footer\n\n**Attachment:**\nPDF file from HTTP Request node (binary format)\nAutomatically attached via Gmail's binary attachment feature"
},
"typeVersion": 1
},
{
"id": "296d02cc-b2b3-47e6-9987-81ba7246d195",
"name": "Sticky Note - Workflow Overview",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2656,
384
],
"parameters": {
"color": 7,
"width": 456,
"height": 544,
"content": "## WORKFLOW OVERVIEW\n\n**Purpose:** Automated university admission confirmation system\n\n**Processing Time:** ~8-15 seconds end-to-end\n\n**Workflow Steps:**\n1\ufe0f\u20e3 Receive admission data via webhook (POST)\n2\ufe0f\u20e3 Verify email authenticity with VerifiEmail\n3\ufe0f\u20e3 Route based on validation (valid/invalid)\n4\ufe0f\u20e3 Generate personalized PDF admission letter\n5\ufe0f\u20e3 Download PDF file via HTTP request\n6\ufe0f\u20e3 Send email with PDF attachment via Gmail\n\n**Success Path:**\n\u2705 Valid email \u2192 PDF generated \u2192 Email sent\n\n**Error Path:**\n\u274c Invalid email \u2192 Workflow stopped \u2192 Error logged\n\n**Perfect For:**\n- Universities & colleges\n- Educational institutions\n- Online course platforms\n- Training programs"
},
"typeVersion": 1
},
{
"id": "57fcb521-606a-4564-9504-4a1c88c82109",
"name": "Verifi Email",
"type": "n8n-nodes-verifiemail.verifiEmail",
"position": [
-1568,
784
],
"parameters": {
"email": "={{ $json.body.email }}"
},
"credentials": {
"verifiEmailApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "eace9399-7ea2-4da9-9f03-326394f3a085",
"name": "HTML to PDF",
"type": "n8n-nodes-htmlcsstopdf.htmlcsstopdf",
"position": [
-784,
672
],
"parameters": {
"html_content": "=<!DOCTYPE html>\n<html>\n<head>\n <style>\n @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;600;700&display=swap');\n \n * {\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n }\n \n body {\n font-family: 'Poppins', sans-serif;\n background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n padding: 40px;\n color: #333;\n }\n \n .container {\n background: white;\n max-width: 800px;\n margin: 0 auto;\n border-radius: 20px;\n overflow: hidden;\n box-shadow: 0 20px 60px rgba(0,0,0,0.3);\n }\n \n .header {\n background: linear-gradient(135deg, #1e3a8a 0%, #3b82f6 100%);\n padding: 40px;\n text-align: center;\n color: white;\n }\n \n .header h1 {\n font-size: 32px;\n margin-bottom: 10px;\n font-weight: 700;\n }\n \n .header p {\n font-size: 16px;\n opacity: 0.9;\n }\n \n .content {\n padding: 50px 40px;\n }\n \n .greeting {\n font-size: 20px;\n color: #1e3a8a;\n margin-bottom: 20px;\n font-weight: 600;\n }\n \n .message {\n line-height: 1.8;\n font-size: 15px;\n color: #555;\n margin-bottom: 30px;\n }\n \n .info-box {\n background: #f0f9ff;\n border-left: 5px solid #3b82f6;\n padding: 25px;\n margin: 30px 0;\n border-radius: 8px;\n }\n \n .info-box h3 {\n color: #1e3a8a;\n margin-bottom: 15px;\n font-size: 18px;\n }\n \n .info-item {\n display: flex;\n margin: 12px 0;\n font-size: 14px;\n }\n \n .info-label {\n font-weight: 600;\n color: #1e3a8a;\n min-width: 180px;\n }\n \n .info-value {\n color: #333;\n }\n \n .footer {\n background: #f8fafc;\n padding: 30px 40px;\n text-align: center;\n border-top: 2px solid #e2e8f0;\n }\n \n .footer p {\n color: #64748b;\n font-size: 13px;\n line-height: 1.6;\n }\n \n .signature {\n margin-top: 30px;\n font-style: italic;\n color: #1e3a8a;\n }\n \n .verification-badge {\n display: inline-block;\n background: #10b981;\n color: white;\n padding: 5px 15px;\n border-radius: 20px;\n font-size: 12px;\n margin-top: 10px;\n }\n </style>\n</head>\n<body>\n <div class=\"container\">\n <div class=\"header\">\n <h1>\ud83c\udf93 ADMISSION CONFIRMATION</h1>\n <p>Academic Year 2025-2026</p>\n <span class=\"verification-badge\">\u2713 Email Verified</span>\n </div>\n \n <div class=\"content\">\n <p class=\"greeting\">Dear {{ $('Admission Form').item.json.body.name }},</p>\n \n <p class=\"message\">\n Congratulations! We are delighted to inform you that you have been \n <strong>successfully admitted</strong> to the <strong>{{ $('Admission Form').item.json.body.course }}</strong> \n program at <strong>{{ $('Admission Form').item.json.body.college_name }}</strong>.\n </p>\n \n <p class=\"message\">\n This is a significant achievement, and we are thrilled to welcome you \n to our academic community. Your dedication and academic excellence have \n earned you this opportunity to pursue higher education with us.\n </p>\n \n <div class=\"info-box\">\n <h3>\ud83d\udccb Admission Details</h3>\n <div class=\"info-item\">\n <span class=\"info-label\">Student Name:</span>\n <span class=\"info-value\">{{ $('Admission Form').item.json.body.name }}</span>\n </div>\n <div class=\"info-item\">\n <span class=\"info-label\">Application ID:</span>\n <span class=\"info-value\">{{ $('Admission Form').item.json.body.application_id }}</span>\n </div>\n <div class=\"info-item\">\n <span class=\"info-label\">Program:</span>\n <span class=\"info-value\">{{ $('Admission Form').item.json.body.course }}</span>\n </div>\n <div class=\"info-item\">\n <span class=\"info-label\">Institution:</span>\n <span class=\"info-value\">{{ $('Admission Form').item.json.body.college_name }}</span>\n </div>\n <div class=\"info-item\">\n <span class=\"info-label\">Admission Date:</span>\n <span class=\"info-value\">{{ $('Admission Form').item.json.body.admission_date }}</span>\n </div>\n <div class=\"info-item\">\n <span class=\"info-label\">Email (Verified):</span>\n <span class=\"info-value\">{{ $('Admission Form').item.json.body.email }}</span>\n </div>\n </div>\n \n <p class=\"message\">\n Please retain this confirmation letter for your records. You will receive \n further communication regarding orientation, course registration, and \n other important details via email.\n </p>\n \n <p class=\"signature\">\n Warm regards,<br>\n <strong>Office of Admissions</strong><br>\n {{ $('Admission Form').item.json.body.college_name }}\n </p>\n </div>\n \n <div class=\"footer\">\n <p>\n This is an official admission confirmation document generated on {{ $('Admission Form').item.json.body.admission_date }}.\n <br>\n Email verification powered by VerifiEmail | Provider: {{ $('Verifi Email').item.json.details.mx.provider }}\n </p>\n </div>\n </div>\n</body>\n</html>"
},
"credentials": {
"htmlcsstopdfApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "f97a8e02-bea7-417b-a0b3-8911939c8b84",
"name": "HTTP Request",
"type": "n8n-nodes-base.httpRequest",
"position": [
-336,
672
],
"parameters": {
"url": "={{ $json.pdf_url }}",
"options": {
"response": {
"response": {
"responseFormat": "file"
}
}
}
},
"typeVersion": 4.2
},
{
"id": "bbf804cb-2413-4039-be48-24e813a29c60",
"name": "Sticky Note - HTTP Request Info",
"type": "n8n-nodes-base.stickyNote",
"position": [
-464,
368
],
"parameters": {
"color": 7,
"width": 400,
"height": 448,
"content": "## STEP 5: HTTP REQUEST - DOWNLOAD PDF\n\n**Purpose:** Downloads the generated PDF file from API\n\n**Why This Node is Needed:**\nThe HTML to PDF API returns a URL to the generated PDF. This node fetches the actual PDF file in binary format so it can be attached to the email.\n\n**Output:**\nBinary PDF data stored in the `data` property, which Gmail node uses for attachment\n"
},
"typeVersion": 1
},
{
"id": "5c90f533-5ca5-4263-90d9-7f2cf1f15e33",
"name": "Send Welcome Email",
"type": "n8n-nodes-base.gmail",
"position": [
112,
672
],
"parameters": {
"sendTo": "={{ $('Admission Form').item.json.body.email }}",
"message": "=<!DOCTYPE html>\n<html>\n<head>\n <style>\n body {\n font-family: 'Arial', sans-serif;\n line-height: 1.6;\n color: #333;\n margin: 0;\n padding: 0;\n background-color: #f4f4f4;\n }\n .container {\n max-width: 600px;\n margin: 20px auto;\n background: white;\n border-radius: 10px;\n overflow: hidden;\n box-shadow: 0 4px 6px rgba(0,0,0,0.1);\n }\n .header {\n background: linear-gradient(135deg, #1e3a8a, #3b82f6);\n color: white;\n padding: 40px 30px;\n text-align: center;\n }\n .header h1 {\n margin: 0;\n font-size: 28px;\n }\n .content {\n padding: 40px 30px;\n background: #ffffff;\n }\n .content p {\n margin: 15px 0;\n font-size: 15px;\n line-height: 1.8;\n }\n .highlight {\n background: #f0f9ff;\n border-left: 4px solid #3b82f6;\n padding: 15px;\n margin: 20px 0;\n border-radius: 5px;\n }\n .next-steps {\n margin: 20px 0;\n }\n .next-steps strong {\n color: #1e3a8a;\n display: block;\n margin-bottom: 10px;\n }\n .step {\n margin: 8px 0;\n padding-left: 20px;\n }\n .footer {\n background: #f8fafc;\n padding: 20px 30px;\n text-align: center;\n color: #64748b;\n font-size: 13px;\n }\n </style>\n</head>\n<body>\n <div class=\"container\">\n <div class=\"header\">\n <h1>\ud83c\udf89 Congratulations,{{ $('Admission Form').item.json.body.name }} !</h1>\n </div>\n \n <div class=\"content\">\n <p>Dear {{ $('Admission Form').item.json.body.name }},</p>\n \n <p>\n We are <strong>thrilled to welcome you</strong> to <strong>{{ $('Admission Form').item.json.body.college_name }}</strong>! \n Your admission to the <strong>{{ $('Admission Form').item.json.body.course }}</strong> program has been confirmed.\n </p>\n \n <div class=\"highlight\">\n <p style=\"margin: 0;\">\n \ud83d\udcce <strong>Your official admission confirmation letter is attached to this email.</strong>\n Please download and keep it for your records.\n </p>\n </div>\n \n <div class=\"next-steps\">\n <strong>\ud83d\udccb Next Steps:</strong>\n <div class=\"step\">\u2705 Review your admission letter carefully</div>\n <div class=\"step\">\u2705 Complete the enrollment form (link in next email)</div>\n <div class=\"step\">\u2705 Attend the mandatory orientation session</div>\n <div class=\"step\">\u2705 Submit all required documents by the deadline</div>\n <div class=\"step\">\u2705 Pay admission fees to confirm your seat</div>\n </div>\n \n <p>\n Our admissions team will contact you within 48 hours with additional details \n about orientation, course registration, and campus facilities.\n </p>\n \n <p>\n We look forward to seeing you on campus and supporting you throughout \n your academic journey!\n </p>\n \n <p style=\"margin-top: 30px;\">\n Best regards,<br>\n <strong>Admissions Team</strong><br>\n {{ $('Admission Form').item.json.body.college_name }}<br>\n \ud83d\udce7 admissions@technova.edu | \ud83d\udcde +91-XXXX-XXXXXX\n </p>\n </div>\n \n <div class=\"footer\">\n <p>This is an automated message. Please do not reply to this email.</p>\n <p>If you have questions, contact our admissions office.</p>\n </div>\n </div>\n</body>\n</html>",
"options": {
"attachmentsUi": {
"attachmentsBinary": [
{}
]
}
},
"subject": "=\ud83c\udf93 Admission Confirmation - Welcome to {{ $('Admission Form').item.json.body.college_name }}!"
},
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
},
"typeVersion": 2
},
{
"id": "d556376b-bcd1-42a1-94ef-3ea1bab9aa6a",
"name": "Is Email Valid?",
"type": "n8n-nodes-base.if",
"position": [
-1104,
784
],
"parameters": {
"conditions": {
"boolean": [
{
"value1": "={{ $json.valid }}",
"value2": "={{ true }}"
}
]
}
},
"typeVersion": 1
},
{
"id": "cf2d0264-15fc-42ed-a2a2-a54a533c0d3d",
"name": "Admission Form",
"type": "n8n-nodes-base.webhook",
"position": [
-2064,
784
],
"parameters": {
"path": "admission-form",
"options": {},
"httpMethod": "POST",
"responseMode": "lastNode"
},
"typeVersion": 1.1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "d76d823f-60c9-4553-ad36-ff8be5735ed5",
"connections": {
"HTML to PDF": {
"main": [
[
{
"node": "HTTP Request",
"type": "main",
"index": 0
}
]
]
},
"HTTP Request": {
"main": [
[
{
"node": "Send Welcome Email",
"type": "main",
"index": 0
}
]
]
},
"Verifi Email": {
"main": [
[
{
"node": "Is Email Valid?",
"type": "main",
"index": 0
}
]
]
},
"Admission Form": {
"main": [
[
{
"node": "Verifi Email",
"type": "main",
"index": 0
}
]
]
},
"Is Email Valid?": {
"main": [
[
{
"node": "HTML to PDF",
"type": "main",
"index": 0
}
],
[
{
"node": "Stop - Invalid Email",
"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.
gmailOAuth2htmlcsstopdfApiverifiEmailApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
A robust n8n workflow template that automates the university admission process for colleges, universities, and educational programs. This workflow validates student emails, generates professional PDF admission letters, sends personalized welcome emails, and handles errors…
Source: https://n8n.io/workflows/9504/ — 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.
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 foun
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.
Automated Email Verification & Digital Health Card Generator
Overview
Verified Corporate Training Certificate with CEUs – Fully Automated & Verifiable