{"workflow":{"id":13219,"name":"Generate bulk certificates from Google Sheets and Google Slides","views":51,"recentViews":0,"totalViews":51,"createdAt":"2026-02-04T19:20:51.986Z","description":"# Bulk certificate generator from Google Sheets and Slides\n\n**Categories:** Productivity, Education, Google, Automation\n\nAutomate the creation of personalized certificates, diplomas, or event invitations at scale. This workflow takes a list of recipients from Google Sheets, generates customized PDFs from a Google Slides template, and tracks completion—perfect for course completions, event attendance, or team recognition programs.\n\n## Benefits\n\n- **Save 95% of manual time** - Generate hundreds of certificates in minutes instead of hours of copy-paste work\n- **Zero design skills needed** - Create your template once in Google Slides (or download from Canva and import), then let automation handle the rest\n- **Built-in tracking** - Automatically marks processed recipients and stores Drive links in your spreadsheet\n- **Rate-limit safe** - Includes intelligent delays to respect Google API quotas\n- **Clean workspace** - Automatically deletes temporary files after PDF generation\n\n## How It Works\n\nThe workflow processes recipients one at a time in a loop:\n\n1. **Read recipients** - Fetches unprocessed rows from your Google Sheet (filtered by \"Processed = FALSE\")\n2. **Copy template** - Creates a temporary copy of your Google Slides template for each recipient\n3. **Personalize content** - Replaces placeholders ({{name}}, {{date}}, {{certificateid}}) with actual recipient data\n4. **Export to PDF** - Converts the personalized slide to a high-quality PDF\n5. **Save to Drive** - Stores the final PDF in your designated Google Drive folder\n6. **Update tracker** - Marks the row as processed and adds the Drive link to your sheet\n7. **Cleanup** - Deletes the temporary slide copy to avoid clutter\n8. **Rate limiting** - Waits 2 seconds before processing the next recipient (prevents API quota issues)\n\nThe loop continues until all unprocessed recipients are handled.\n\n## Required Setup\n\n### Google Sheet Structure\n\nYour spreadsheet needs these columns (exact names):\n\n| Column Name | Description | Example |\n|------------|-------------|---------|\n| `CertificateID` | Unique identifier (used for filename) | CERT-001 |\n| `Name` | Recipient's full name | John Smith |\n| `Date` | Date to display on certificate | January 15, 2026 |\n| `Processed` | Track status (FALSE/TRUE) | FALSE |\n| `DriveLink` | Auto-filled with PDF link | (empty initially) |\n\nYou can add other columns (email, course name, etc.) for your records—the workflow only uses the ones above.\n\n### Google Slides Template\n\nCreate a slide in Google Slides with these placeholders:\n\n- `{{name}}` - Will be replaced with recipient's name\n- `{{date}}` - Will be replaced with the date\n- `{{certificateid}}` - Will be replaced with the unique ID\n\n**Design tip:** You can design your certificate in Canva, export as PPTX, then upload to Google Slides. This gives you access to Canva's beautiful templates while keeping Google's automation power.\n\n## Business Use Cases\n\n- **Online course creators** - Issue completion certificates to students automatically after they finish a course\n- **Event organizers** - Generate personalized attendance certificates for conference or workshop participants\n- **HR departments** - Create employee recognition awards, training completion docs, or onboarding materials at scale\n- **Educational institutions** - Batch-produce diplomas, achievement awards, or participation certificates\n- **Nonprofits** - Generate donor recognition certificates or volunteer appreciation documents\n- **Corporate training** - Issue compliance training certificates with unique tracking IDs\n\n## Set Up Steps\n\n### 1. Prepare Your Google Sheet\n\n- Create a new Google Sheet with the required columns (see structure above)\n- Fill in recipient data (CertificateID, Name, Date)\n- Set all \"Processed\" values to `FALSE`\n- Leave \"DriveLink\" column empty\n\n### 2. Create Your Slides Template\n\n- Design a certificate/diploma/invitation in Google Slides\n- Use text placeholders: `{{name}}`, `{{date}}`, `{{certificateid}}`\n- Note the template's file ID from the URL (the long string after `/presentation/d/`)\n\n**Optional Canva workflow:**\n1. Design in Canva using their certificate templates\n2. Download as PPTX\n3. Upload to Google Slides\n4. Add the placeholder text\n\n### 3. Configure the Workflow\n\nReplace placeholder IDs in these nodes:\n\n**\"Read Unprocessed Recipients\" node:**\n- Set your Google Sheet ID\n\n**\"Copy Slides Template\" node:**\n- Replace `YOUR_TEMPLATE_SLIDES_ID` with your template's file ID\n\n**\"Save PDF to Drive\" node:**\n- Set the destination folder ID where PDFs should be saved\n\n**\"Mark as Processed\" node:**\n- Confirm it points to the same Google Sheet\n\n### 4. Set Up Credentials\n\nAdd your Google account credentials for:\n- Google Sheets (OAuth2)\n- Google Drive (OAuth2)  \n- Google Slides (OAuth2)\n\n(All three can use the same Google account)\n\n### 5. Test Run\n\n- Click \"Test workflow\" with 2-3 test recipients\n- Verify PDFs are generated correctly\n- Check that your Sheet updates with \"Processed = TRUE\" and Drive links\n\n### 6. Scale to Production\n\n- Add all your recipients to the Sheet\n- Execute the workflow\n- Monitor progress in the Sheet's \"Processed\" column\n\n## Troubleshooting\n\n**\"Rate limit exceeded\" errors:**\n- Increase the wait time in \"Wait 2s (Rate Limit)\" node to 3-5 seconds\n- Process in smaller batches (50-100 at a time)\n\n**Placeholders not replacing:**\n- Ensure exact match: `{{name}}` not `{{ name }}` (no spaces)\n- Check placeholder text is plain text, not inside text boxes or grouped objects\n\n**PDFs not saving:**\n- Verify the destination folder ID is correct\n- Ensure your Google account has write permissions to that folder\n\n**Sheet not updating:**\n- Confirm \"CertificateID\" column exists and has unique values\n- Check that the \"Processed\" column is formatted as plain text (not checkbox)\n\n## Important Notes\n\n- **API quotas:** Google Slides API has daily limits. For &gt;500 certificates, consider splitting across multiple days or upgrading to Google Workspace\n- **File cleanup:** The workflow deletes temporary slide copies—do NOT delete this node or you'll fill your Drive with copies\n- **Unique IDs:** CertificateID must be unique for each recipient (used for matching and filename)\n- **Template preservation:** Your original Slides template is never modified—only copies are created\n\n**Difficulty Level:** Intermediate  \n**Estimated Build Time:** 30-45 minutes (including template design)  \n**Monthly Operating Cost:** $0 (uses Google's free tier APIs for reasonable volumes)\n\n## Customization Ideas\n\n- Add more placeholder fields (course name, instructor signature, expiration date)\n- Send certificates via email using the Gmail node after PDF generation\n- Generate QR codes with the certificate ID for verification\n- Create a public verification page using the certificate IDs\n- Use AI to auto-generate personalized messages for each recipient\n\n---\n\n*Built with ❤️ for educators, event organizers, and anyone who needs to issue bulk certificates without the manual tedium.*\n","workflow":{"id":"UwWFNPUauG6I7NdKhcV1V","meta":{"instanceId":"cc7b6445ad30da5302066ff642554de149d528ab55eabf52f705543432fc8455"},"name":"Bulk certificate generator from Google Sheets and Slides","tags":[],"nodes":[{"id":"f352d49c-d9bc-49fa-8b0a-c43a94d321fa","name":"When clicking 'Test workflow'","type":"n8n-nodes-base.manualTrigger","position":[-272,-32],"parameters":{},"typeVersion":1},{"id":"4651f9ff-07a3-4857-9d69-06cf864315e5","name":"Read Unprocessed Recipients","type":"n8n-nodes-base.googleSheets","position":[-48,-32],"parameters":{"options":{},"filtersUI":{"values":[{"lookupValue":"FALSE","lookupColumn":"Processed"}]},"sheetName":{"__rl":true,"mode":"list","value":"gid=0"},"documentId":{"__rl":true,"mode":"id","value":"YOUR_GOOGLE_SHEET_ID"}},"typeVersion":4.5},{"id":"5b34aeac-f173-4c22-8826-930bb392182f","name":"Process One at a Time","type":"n8n-nodes-base.splitInBatches","position":[224,-32],"parameters":{"options":{"reset":false}},"typeVersion":3},{"id":"0d054ec2-6ac2-43f9-a5f7-3ce5a4399556","name":"Copy Slides Template","type":"n8n-nodes-base.httpRequest","position":[480,-16],"parameters":{"url":"=https://www.googleapis.com/drive/v3/files/YOUR_TEMPLATE_SLIDES_ID/copy","method":"POST","options":{},"jsonBody":"={{ JSON.stringify({ name: 'Certificate_' + $json['CertificateID'] }) }}","sendBody":true,"specifyBody":"json","authentication":"predefinedCredentialType","nodeCredentialType":"googleDriveOAuth2Api"},"typeVersion":4.2},{"id":"546fe323-348e-4345-9658-abb66e898a19","name":"Replace Template Placeholders","type":"n8n-nodes-base.httpRequest","position":[688,-16],"parameters":{"url":"=https://slides.googleapis.com/v1/presentations/{{ $json.id }}:batchUpdate","method":"POST","options":{},"jsonBody":"={\n  \"requests\": [\n    {\n      \"replaceAllText\": {\n        \"containsText\": { \"text\": \"{{name}}\", \"matchCase\": false },\n        \"replaceText\": \"{{ $('Process One at a Time').item.json.Name }}\"\n      }\n    },\n    {\n      \"replaceAllText\": {\n        \"containsText\": { \"text\": \"{{date}}\", \"matchCase\": false },\n        \"replaceText\": \"{{ $('Process One at a Time').item.json.Date }}\"\n      }\n    },\n    {\n      \"replaceAllText\": {\n        \"containsText\": { \"text\": \"{{certificateid}}\", \"matchCase\": false },\n        \"replaceText\": \"{{ $('Process One at a Time').item.json['CertificateID'] }}\"\n      }\n    }\n  ]\n}","sendBody":true,"specifyBody":"json","authentication":"predefinedCredentialType","nodeCredentialType":"googleSlidesOAuth2Api"},"typeVersion":4.2},{"id":"404a9f32-2653-46f1-ae0f-da5e517b85f1","name":"Export to PDF","type":"n8n-nodes-base.httpRequest","position":[912,-16],"parameters":{"url":"=https://www.googleapis.com/drive/v3/files/{{ $('Copy Slides Template').item.json.id }}/export?mimeType=application/pdf","options":{"response":{"response":{"responseFormat":"file"}}},"authentication":"predefinedCredentialType","nodeCredentialType":"googleSlidesOAuth2Api"},"typeVersion":4.2},{"id":"e1d0a513-024c-49c5-b5b0-6af8145ccf09","name":"Save PDF to Drive","type":"n8n-nodes-base.googleDrive","position":[1152,-16],"parameters":{"name":"={{ $('Process One at a Time').item.json['CertificateID']}}.pdf","driveId":{"__rl":true,"mode":"list","value":"My Drive"},"options":{},"folderId":{"__rl":true,"mode":"id","value":"YOUR_OUTPUT_FOLDER_ID"}},"typeVersion":3,"alwaysOutputData":true},{"id":"beda0ef7-7376-431c-b753-2565efa28f5f","name":"Mark as Processed","type":"n8n-nodes-base.googleSheets","position":[1376,-16],"parameters":{"columns":{"value":{"DriveLink":"={{ $('Save PDF to Drive').item.json.webViewLink }}","Processed":"TRUE","CertificateID":"={{ $('Read Unprocessed Recipients').item.json['CertificateID'] }}"},"mappingMode":"defineBelow","matchingColumns":["CertificateID"]},"options":{},"operation":"update","sheetName":{"__rl":true,"mode":"list","value":"gid=0"},"documentId":{"__rl":true,"mode":"id","value":"YOUR_GOOGLE_SHEET_ID"}},"typeVersion":4.5},{"id":"e85e5469-bfeb-43d2-a9d1-e478f06695a6","name":"Delete Temporary Slide","type":"n8n-nodes-base.httpRequest","position":[1600,-16],"parameters":{"url":"=https://www.googleapis.com/drive/v3/files/{{ $('Copy Slides Template').item.json.id }}","method":"DELETE","options":{},"authentication":"predefinedCredentialType","nodeCredentialType":"googleSlidesOAuth2Api"},"typeVersion":4.2},{"id":"420a078e-5d83-416f-9b23-0c16e89222d3","name":"Wait 2s (Rate Limit)","type":"n8n-nodes-base.wait","position":[1824,-16],"webhookId":"bulk-cert-wait","parameters":{"amount":2},"typeVersion":1.1},{"id":"4cfca671-cf3d-48c5-905a-3f86db1d4433","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-928,-240],"parameters":{"width":560,"height":550,"content":"## How it works\nThis workflow generates personalized PDF certificates in bulk using Google Sheets as the data source and Google Slides as the template engine.\n\n1. Reads recipient data from a Google Sheet (only rows where Processed = FALSE)\n2. For each recipient, copies your Slides template and replaces placeholders with actual values\n3. Exports the personalized slide as a PDF and saves it to Google Drive\n4. Updates the spreadsheet with the Drive link and marks the row as processed\n5. Cleans up by deleting the temporary slide copy\n\n## Setup steps\n1. **Google Sheet**: Create a sheet with columns: Name, Date, CertificateID, Processed, DriveLink. Set Processed to FALSE for new entries.\n2. **Slides Template**: Create a template with placeholders: {{name}}, {{date}}, {{certificateid}}\n3. **Credentials**: Connect Google Sheets, Drive, and Slides OAuth2 credentials\n4. **Configure IDs**: Replace YOUR_GOOGLE_SHEET_ID, YOUR_TEMPLATE_SLIDES_ID, and YOUR_OUTPUT_FOLDER_ID in the nodes\n5. **Test**: Run with one row first to verify everything works correctly"},"typeVersion":1},{"id":"2da79aa7-186f-4239-9946-611867eb56de","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[-288,-176],"parameters":{"color":7,"width":652,"height":336,"content":"### 📥 Data Input\nReads recipients from Google Sheets and processes them one at a time to avoid API rate limits."},"typeVersion":1},{"id":"8b5724f3-07ab-4e46-ad57-b2d9730ea818","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[400,-176],"parameters":{"color":7,"width":680,"height":336,"content":"### 🎨 Certificate Generation\nCopies the Slides template, replaces placeholders with recipient data, and exports as PDF."},"typeVersion":1},{"id":"73124c2f-6c78-49f3-8571-c3e59487c0c4","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[1104,-176],"parameters":{"color":7,"width":450,"height":336,"content":"### 💾 Save & Update\nSaves the PDF to Drive and updates the spreadsheet with the file link."},"typeVersion":1},{"id":"28057c2a-b7e1-4228-abb0-36b5a76af4d0","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[1584,-176],"parameters":{"color":7,"width":414,"height":336,"content":"### 🧹 Cleanup & Loop\nDeletes temporary files and waits 2 seconds before processing the next recipient."},"typeVersion":1}],"active":false,"pinData":{},"settings":{"binaryMode":"separate","availableInMCP":false,"executionOrder":"v1"},"versionId":"6a20ac22-9b29-452b-a4c3-0447ac481c28","connections":{"Export to PDF":{"main":[[{"node":"Save PDF to Drive","type":"main","index":0}]]},"Mark as Processed":{"main":[[{"node":"Delete Temporary Slide","type":"main","index":0}]]},"Save PDF to Drive":{"main":[[{"node":"Mark as Processed","type":"main","index":0}]]},"Copy Slides Template":{"main":[[{"node":"Replace Template Placeholders","type":"main","index":0}]]},"Wait 2s (Rate Limit)":{"main":[[{"node":"Process One at a Time","type":"main","index":0}]]},"Process One at a Time":{"main":[[],[{"node":"Copy Slides Template","type":"main","index":0}]]},"Delete Temporary Slide":{"main":[[{"node":"Wait 2s (Rate Limit)","type":"main","index":0}]]},"Read Unprocessed Recipients":{"main":[[{"node":"Process One at a Time","type":"main","index":0}]]},"Replace Template Placeholders":{"main":[[{"node":"Export to PDF","type":"main","index":0}]]},"When clicking 'Test workflow'":{"main":[[{"node":"Read Unprocessed Recipients","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":15,"nodeTypes":{"n8n-nodes-base.wait":{"count":1},"n8n-nodes-base.stickyNote":{"count":5},"n8n-nodes-base.googleDrive":{"count":1},"n8n-nodes-base.httpRequest":{"count":4},"n8n-nodes-base.googleSheets":{"count":2},"n8n-nodes-base.manualTrigger":{"count":1},"n8n-nodes-base.splitInBatches":{"count":1}}},"status":"published","readyToDemo":null,"user":{"name":"Diego Alejandro Parrás","username":"diegoalejandroparras","bio":"AI Management Professor @ UBA & Founder @ Nodemat. My baby: a production n8n cluster with 22 containers (6 dedicated webhooks including one for MCP servers, 6 runners, 6 workers, Redis & PostgreSQL). \n\nCreator of GIA Method. \n\nTeaching advanced automation while building enterprise AIBPS solutions. \nLet's talk complex architectures.","verified":true,"links":["https://www.linkedin.com/in/diegoparras/"],"avatar":"https://gravatar.com/avatar/2cc7ac6eaa28f81a5a481407b4230cd28d274eb4a0ab1e01e1516522ff17e90a?r=pg&d=retro&size=200"},"nodes":[{"id":18,"icon":"file:googleSheets.svg","name":"n8n-nodes-base.googleSheets","codex":{"data":{"alias":["CSV","Sheet","Spreadsheet","GS"],"resources":{"generic":[{"url":"https://n8n.io/blog/love-at-first-sight-ricardos-n8n-journey/","icon":"❤️","label":"Love at first sight: Ricardo’s n8n journey"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/supercharging-your-conference-registration-process-with-n8n/","icon":"🎫","label":"Supercharging your conference registration process with n8n"},{"url":"https://n8n.io/blog/creating-triggers-for-n8n-workflows-using-polling/","icon":"⏲","label":"Creating triggers for n8n workflows using polling"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/migrating-community-metrics-to-orbit-using-n8n/","icon":"📈","label":"Migrating Community Metrics to Orbit using n8n"},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/your-business-doesnt-need-you-to-operate/","icon":" 🖥️","label":"Hey founders! Your business doesn't need you to operate"},{"url":"https://n8n.io/blog/how-honest-burgers-use-automation-to-save-100k-per-year/","icon":"🍔","label":"How Honest Burgers Use Automation to Save $100k per year"},{"url":"https://n8n.io/blog/how-a-digital-strategist-uses-n8n-for-online-marketing/","icon":"💻","label":"How a digital strategist uses n8n for online marketing"},{"url":"https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/","icon":"🧠","label":"Why this Product Manager loves workflow automation with n8n"},{"url":"https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/","icon":"🙌","label":"Sending Automated Congratulations with Google Sheets, Twilio, and n8n "},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googlesheets/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"}]},"categories":["Data & Storage","Productivity"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"input\",\"output\"]","defaults":{"name":"Google Sheets"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNS42OSAxIDUyIDE3LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0OC4yOTMgNjBIMTIuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDkgNTYuMzEyVjQuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTIuNzA3IDF6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM1LjY5IDEgNTIgMTcuMjI1SDM5LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzkuMjExIDE3LjIyNSA1MiAyMi40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTIwLjEyIDMxLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMS42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzEuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNC42OSAwIDUxIDE2LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0Ny4yOTMgNTlIMTEuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDggNTUuMzEyVjMuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTEuNzA3IDB6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM0LjY5IDAgNTEgMTYuMjI1SDM4LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzguMjExIDE2LjIyNSA1MSAyMS40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTE5LjEyIDMwLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMC42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzAuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjwvZz48L3N2Zz4="},"displayName":"Google Sheets","typeVersion":5,"nodeCategories":[{"id":3,"name":"Data & Storage"},{"id":4,"name":"Productivity"}]},{"id":19,"icon":"file:httprequest.svg","name":"n8n-nodes-base.httpRequest","codex":{"data":{"alias":["API","Request","URL","Build","cURL"],"resources":{"generic":[{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/automatically-pulling-and-visualizing-data-with-n8n/","icon":"📈","label":"Automatically pulling and visualizing data with n8n"},{"url":"https://n8n.io/blog/learn-how-to-automatically-cross-post-your-content-with-n8n/","icon":"✍️","label":"Learn how to automatically cross-post your content with n8n"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/running-n8n-on-ships-an-interview-with-maranics/","icon":"🛳","label":"Running n8n on ships: An interview with Maranics"},{"url":"https://n8n.io/blog/what-are-apis-how-to-use-them-with-no-code/","icon":" 🪢","label":"What are APIs and how to use them with no code"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/world-poetry-day-workflow/","icon":"📜","label":"Celebrating World Poetry Day with a daily poem in Telegram"},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/automate-designs-with-bannerbear-and-n8n/","icon":"🎨","label":"Automate Designs with Bannerbear and n8n"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/building-an-expense-tracking-app-in-10-minutes/","icon":"📱","label":"Building an expense tracking app in 10 minutes"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/how-to-use-the-http-request-node-the-swiss-army-knife-for-workflow-automation/","icon":"🧰","label":"How to use the HTTP Request Node - The Swiss Army Knife for Workflow Automation"},{"url":"https://n8n.io/blog/learn-how-to-use-webhooks-with-mattermost-slash-commands/","icon":"🦄","label":"Learn how to use webhooks with Mattermost slash commands"},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/","icon":"📈","label":"A low-code bitcoin ticker built with QuestDB and n8n.io"},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/automations-for-activists/","icon":"✨","label":"How Common Knowledge use workflow automation for activism"},{"url":"https://n8n.io/blog/creating-scheduled-text-affirmations-with-n8n/","icon":"🤟","label":"Creating scheduled text affirmations with n8n"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"output\"]","defaults":{"name":"HTTP Request","color":"#0004F5"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00MCAyMEM0MCA4Ljk1MzE0IDMxLjA0NjkgMCAyMCAwQzguOTUzMTQgMCAwIDguOTUzMTQgMCAyMEMwIDMxLjA0NjkgOC45NTMxNCA0MCAyMCA0MEMzMS4wNDY5IDQwIDQwIDMxLjA0NjkgNDAgMjBaTTIwIDM2Ljk0NThDMTguODg1MiAzNi45NDU4IDE3LjEzNzggMzUuOTY3IDE1LjQ5OTggMzIuNjk4NUMxNC43OTY0IDMxLjI5MTggMTQuMTk2MSAyOS41NDMxIDEzLjc1MjYgMjcuNjg0N0gyNi4xODk4QzI1LjgwNDUgMjkuNTQwMyAyNS4yMDQ0IDMxLjI5MDEgMjQuNTAwMiAzMi42OTg1QzIyLjg2MjIgMzUuOTY3IDIxLjExNDggMzYuOTQ1OCAyMCAzNi45NDU4Wk0xMi45MDY0IDIwQzEyLjkwNjQgMjEuNjA5NyAxMy4wMDg3IDIzLjE2NCAxMy4yMDAzIDI0LjYzMDVIMjYuNzk5N0MyNi45OTEzIDIzLjE2NCAyNy4wOTM2IDIxLjYwOTcgMjcuMDkzNiAyMEMyNy4wOTM2IDE4LjM5MDMgMjYuOTkxMyAxNi44MzYgMjYuNzk5NyAxNS4zNjk1SDEzLjIwMDNDMTMuMDA4NyAxNi44MzYgMTIuOTA2NCAxOC4zOTAzIDEyLjkwNjQgMjBaTTIwIDMuMDU0MTlDMjEuMTE0OSAzLjA1NDE5IDIyLjg2MjIgNC4wMzA3OCAyNC41MDAxIDcuMzAwMzlDMjUuMjA2NiA4LjcxNDA4IDI1LjgwNzIgMTAuNDA2NyAyNi4xOTIgMTIuMzE1M0gxMy43NTAxQzE0LjE5MzMgMTAuNDA0NyAxNC43OTQyIDguNzEyNTQgMTUuNDk5OCA3LjMwMDY0QzE3LjEzNzcgNC4wMzA4MyAxOC44ODUxIDMuMDU0MTkgMjAgMy4wNTQxOVpNMzAuMTQ3OCAyMEMzMC4xNDc4IDE4LjQwOTkgMzAuMDU0MyAxNi44NjE3IDI5LjgyMjcgMTUuMzY5NUgzNi4zMDQyQzM2LjcyNTIgMTYuODQyIDM2Ljk0NTggMTguMzk2NCAzNi45NDU4IDIwQzM2Ljk0NTggMjEuNjAzNiAzNi43MjUyIDIzLjE1OCAzNi4zMDQyIDI0LjYzMDVIMjkuODIyN0MzMC4wNTQzIDIzLjEzODMgMzAuMTQ3OCAyMS41OTAxIDMwLjE0NzggMjBaTTI2LjI3NjcgNC4yNTUxMkMyNy42MzY1IDYuMzYwMTkgMjguNzExIDkuMTMyIDI5LjM3NzQgMTIuMzE1M0gzNS4xMDQ2QzMzLjI1MTEgOC42NjggMzAuMTA3IDUuNzgzNDYgMjYuMjc2NyA0LjI1NTEyWk0xMC42MjI2IDEyLjMxNTNINC44OTI5M0M2Ljc1MTQ3IDguNjY3ODQgOS44OTM1MSA1Ljc4MzQxIDEzLjcyMzIgNC4yNTUxM0MxMi4zNjM1IDYuMzYwMjEgMTEuMjg5IDkuMTMyMDEgMTAuNjIyNiAxMi4zMTUzWk0zLjA1NDE5IDIwQzMuMDU0MTkgMjEuNjAzIDMuMjc3NDMgMjMuMTU3NSAzLjY5NDg0IDI0LjYzMDVIMTAuMTIxN0M5Ljk0NjE5IDIzLjE0MiA5Ljg1MjIyIDIxLjU5NDMgOS44NTIyMiAyMEM5Ljg1MjIyIDE4LjQwNTcgOS45NDYxOSAxNi44NTggMTAuMTIxNyAxNS4zNjk1SDMuNjk0ODRDMy4yNzc0MyAxNi44NDI1IDMuMDU0MTkgMTguMzk3IDMuMDU0MTkgMjBaTTI2LjI3NjYgMzUuNzQyN0MyNy42MzY1IDMzLjYzOTMgMjguNzExIDMwLjg2OCAyOS4zNzc0IDI3LjY4NDdIMzUuMTA0NkMzMy4yNTEgMzEuMzMyMiAzMC4xMDY4IDM0LjIxNzkgMjYuMjc2NiAzNS43NDI3Wk0xMy43MjM0IDM1Ljc0MjdDOS44OTM2OSAzNC4yMTc5IDYuNzUxNTUgMzEuMzMyNCA0Ljg5MjkzIDI3LjY4NDdIMTAuNjIyNkMxMS4yODkgMzAuODY4IDEyLjM2MzUgMzMuNjM5MyAxMy43MjM0IDM1Ljc0MjdaIiBmaWxsPSIjM0E0MkU5Ii8+Cjwvc3ZnPgo="},"displayName":"HTTP Request","typeVersion":4,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":39,"icon":"fa:sync","name":"n8n-nodes-base.splitInBatches","codex":{"data":{"alias":["Loop","Concatenate","Batch","Split","Split In Batches"],"resources":{"generic":[{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.splitinbatches/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"organization\"]","defaults":{"name":"Loop Over Items","color":"#007755"},"iconData":{"icon":"sync","type":"icon"},"displayName":"Loop Over Items (Split in Batches)","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":58,"icon":"file:googleDrive.svg","name":"n8n-nodes-base.googleDrive","codex":{"data":{"resources":{"generic":[{"url":"https://n8n.io/blog/your-business-doesnt-need-you-to-operate/","icon":" 🖥️","label":"Hey founders! Your business doesn't need you to operate"},{"url":"https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/","icon":"🧠","label":"Why this Product Manager loves workflow automation with n8n"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googledrive/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"}]},"categories":["Data & Storage"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"input\"]","defaults":{"name":"Google Drive"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgODEgNzMiPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9ImEiIG92ZXJmbG93PSJ2aXNpYmxlIj48ZyBmaWxsLXJ1bGU9Im5vbnplcm8iIHN0cm9rZT0ibm9uZSI+PHBhdGggZmlsbD0iIzAwNjZkYSIgZD0ibTYuMDQ4IDYxLjI2IDMuNTI4IDYuMDk0Yy43MzMgMS4yODMgMS43ODcgMi4yOTEgMy4wMjQgMy4wMjRsMTIuNi0yMS44MUgwYTguMyA4LjMgMCAwIDAgMS4xIDQuMTI0eiIvPjxwYXRoIGZpbGw9IiMwMGFjNDciIGQ9Ik00MCAyMi45MSAyNy40IDEuMWMtMS4yMzcuNzMzLTIuMjkxIDEuNzQxLTMuMDI0IDMuMDI0TDEuMSA0NC40NDVBOC4zIDguMyAwIDAgMCAwIDQ4LjU2OGgyNS4yeiIvPjxwYXRoIGZpbGw9IiNlYTQzMzUiIGQ9Ik02Ny40IDcwLjM3OGMxLjIzNy0uNzMzIDIuMjkxLTEuNzQxIDMuMDI0LTMuMDI0bDEuNDY2LTIuNTIgNy4wMS0xMi4xNDJhOC4zIDguMyAwIDAgMCAxLjEtNC4xMjRINTQuNzk4bDUuMzYzIDEwLjUzOHoiLz48cGF0aCBmaWxsPSIjMDA4MzJkIiBkPSJNNDAgMjIuOTEgNTIuNiAxLjFDNTEuMzYzLjM2NyA0OS45NDMgMCA0OC40NzcgMEgzMS41MjRjLTEuNDY2IDAtMi44ODcuNDEyLTQuMTI0IDEuMXoiLz48cGF0aCBmaWxsPSIjMjY4NGZjIiBkPSJNNTQuNzk5IDQ4LjU2OEgyNS4ybC0xMi42IDIxLjgxYzEuMjM3LjczMyAyLjY1NyAxLjEgNC4xMjQgMS4xaDQ2LjU1MmMxLjQ2NiAwIDIuODg3LS40MTIgNC4xMjQtMS4xeiIvPjxwYXRoIGZpbGw9IiNmZmJhMDAiIGQ9Ik02Ny4yNjIgMjQuMjg0IDU1LjYyNCA0LjEyNEM1NC44OTEgMi44NDEgNTMuODM3IDEuODMzIDUyLjYgMS4xTDQwIDIyLjkxbDE0LjggMjUuNjU5aDI1LjE1NWE4LjMgOC4zIDAgMCAwLTEuMS00LjEyNHoiLz48L2c+PC9zeW1ib2w+PC9zdmc+"},"displayName":"Google Drive","typeVersion":3,"nodeCategories":[{"id":3,"name":"Data & Storage"}]},{"id":514,"icon":"fa:pause-circle","name":"n8n-nodes-base.wait","codex":{"data":{"alias":["pause","sleep","delay","timeout"],"resources":{"generic":[{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.wait/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers","Flow"]}}},"group":"[\"organization\"]","defaults":{"name":"Wait","color":"#804050"},"iconData":{"icon":"pause-circle","type":"icon"},"displayName":"Wait","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":565,"icon":"fa:sticky-note","name":"n8n-nodes-base.stickyNote","codex":{"data":{"alias":["Comments","Notes","Sticky"],"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"input\"]","defaults":{"name":"Sticky Note","color":"#FFD233"},"iconData":{"icon":"sticky-note","type":"icon"},"displayName":"Sticky Note","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":838,"icon":"fa:mouse-pointer","name":"n8n-nodes-base.manualTrigger","codex":{"data":{"resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.manualworkflowtrigger/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"trigger\"]","defaults":{"name":"When clicking ‘Execute workflow’","color":"#909298"},"iconData":{"icon":"mouse-pointer","type":"icon"},"displayName":"Manual Trigger","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]}],"categories":[{"id":35,"name":"Document Extraction"},{"id":51,"name":"Multimodal AI"}],"image":[]}}