by n8n Team
This workflow syncs Discord scheduled events to Google Calendar. On a specified schedule, a request to Discord's API is made to get the scheduled events on a particular server. Only the events that have not been created or have recently been updated will be sent to Google Calendar. Prerequisites Discord account and Discord credentials. Google account and Google credentials. How it works Triggers off on the On schedule node. Gets the scheduled events from Discord. The IDs of the Discord scheduled events are used to get the events from Google Calendar, since the IDs are the same on creation of the Google Calendar event. We can now determine which events are new or have been updated. The new or updated events are created or updated in Google Calendar.
by Jon Bungartz
How it works creates a new page in Confluence based on a page template also defined in Confluence replaces any number of placeholders with data from your workflow generic implementation for maximum flexibility Set up steps All parameters you need to change are defined in the Set node Set your Atlassian-domain Set the template id you want to use as the basis for new pages Set the target space and parent page for new pages added based on that template. 🎥 Explainer video has all the details. =) Feedback Any feedback is welcome. If you have ideas for improvements, let me know.
by Oneclick AI Squad
📚 Automated School Fee Reminder Workflow with Payment Link Automatically sends fee reminders (via email and WhatsApp) to parents with secure payment links, 3 days before the due date. 🔧 Main Components Daily Fee Check – 8 AM** Scheduled trigger that starts the workflow daily at 8 AM. Read Pending Fees** Fetches student fee records from an Excel sheet (using getAll method). Process Fee Reminders** Filters records to find pending fees due within the next 3 days. Prepare Email Reminder** Generates personalized email messages with payment links. Wait for Email Preparation** Adds delay/wait condition for email logic readiness. Send Email Reminder** Sends the fee reminder email with a secure payment link to the parent. Prepare WhatsApp Reminder** Generates WhatsApp-friendly messages with fee and payment details. Wait for WhatsApp Preparation** Waits for WhatsApp message logic to complete. Send WhatsApp Message** Sends the message to the parent’s WhatsApp number using a message API. Update Reminder Status** Updates the Excel file to mark reminders as sent to avoid duplicates. 🧩 Channels Used 📧 Email – with personalized payment link 💬 WhatsApp – formatted reminder message 🔐 Payment Integration Secure payment links are auto-generated per student to enable direct and safe online fee payments. ✅ Essential Prerequisites Excel sheet with fee records (student_fee_data.xlsx) SMTP credentials for sending email WhatsApp API or provider integration (like Twilio or Gupshup) Access to a payment gateway or service for link generation File storage access to update reminder status in Excel 📁 Required Excel File Structure (student_fee_data.xlsx) | Student ID | Name | Email | Phone | Fee Due Date | Amount | Reminder Sent | | ---------- | ---- | ----- | ----- | ------------ | ------ | ------------- | 🧾 Expected Input Format Example { "studentId": "ST123", "name": "Ria Mehta", "email": "ria.mehta@example.com", "phone": "+919123456789", "dueDate": "2025-08-10", "amount": "₹5000", "reminderSent": "No" } 🚀 Key Features ⏰ Scheduled Daily Execution – Fully automated at 8 AM 🧮 Due-Date Filtering – Only targets fees due in the next 3 days 💬 Multi-Channel Notifications – Sends reminders via both Email and WhatsApp 🔗 Secure Payment Links – Auto-generated for each student 🔄 Reminder Tracking – Prevents duplicate reminders by updating status ⚙️ Quick Setup Guide Import Workflow JSON into your n8n instance. Configure schedule in the “Daily Fee Check” node (default: 8 AM). Set Excel file path in the “Read Pending Fees” node. Update your fee processing logic in the “Process Fee Reminders” node. Add email credentials in the “Send Email Reminder” node. Integrate WhatsApp provider API in the “Send message” node. Define how you generate secure payment links. Test with sample data and activate workflow. 🛠️ Parameters to Configure | Parameter | Description | | ------------------ | ------------------------------------------ | | excel_file_path | Path to the fee tracking Excel file | | smtp_host | SMTP server for sending email reminders | | smtp_user | Email username | | smtp_password | Email password | | whatsapp_api_key | WhatsApp API key for sending messages | | payment_api_url | URL for generating payment links | | admin_email | (Optional) Admin email for error reporting |
by Intuz
This n8n template from Intuz provides a complete and automated solution for hyper-personalized email outreach. It powerfully combines AI with Gmail and Google Sheets, using specific keywords and prospect data to automatically craft unique, compelling email content that boosts engagement and secures more replies. Instead of manually replying to every lead or inquiry, this template does the heavy lifting for you, ensuring every response is relevant, thoughtful, and timely. It reads each person's unique inquiry, uses OpenAI to craft a perfectly tailored and human-like response, and sends it directly from your Gmail account. Ideal for sales, marketing, and customer support teams looking to boost engagement and save hours of manual work. Use Cases: Sales Teams: Instantly follow up with new leads from your website's contact form with a personalized touch. Customer Support: Provide initial, intelligent responses to support tickets, answering common questions or acknowledging receipt of a complex issue. Marketing Automation: Nurture leads by responding to content downloads or webinar sign-ups with relevant, non-generic information. Founders & Solopreneurs: Manage all incoming business inquiries (partnerships, media, etc.) efficiently without sacrificing quality. How It Works: Trigger the Flow (Manual): Start the automation whenever you're ready to process a new batch of inquiries from your sheet. Fetch Inquiries from Google Sheets: The workflow connects to your specified Google Sheet and reads each row. It pulls the contact's First Name, Email ID, the Inquiry Intent (e.g., "Demo Request," "Pricing Inquiry"), and the full text of their Original Inquiry. Sync Your Signature: Before writing the email, an HTTP Request node dynamically fetches your display name from your Gmail account settings. This ensures the signature in the generated email (Thanks, {{Your Name}}) is always accurate. Craft a Hyper-Personalized Reply with AI: It uses this context to generate a high-quality, professional, and friendly email reply in HTML format. For example: If the intent is "Technical Support," the AI will generate a helpful, empathetic response addressing the technical issue. If the intent is "Partnership Proposal," it will draft a professional reply acknowledging the proposal and outlining the next steps. Send via Gmail: The final node takes the AI-generated message, adds a relevant subject line (e.g., "Re: Your Demo Request"), and sends it directly to the contact's email address from your connected Gmail account. This process loops for every single row in your Google Sheet, turning a list of names into a series of meaningful conversations. Setup Instructions: To get this workflow running, you'll need to configure a few things: Credentials: Google: Connect your Google account via OAuth2 and ensure you have enabled access for Google Sheets, Google Drive, and Gmail. OpenAI: Add your OpenAI API key as a credential. Google Sheet Setup: Create a Google Sheet with the following exact column headers: -First Name -Email ID -Inquiry Intent (A short category like "Demo Request", "Billing Issue", etc.) -Original Inquiry (The full text of the email or message you received). Node Configuration: Get row(s) in sheet: Select your Google Sheet document and the specific sheet name. Message a model (OpenAI): Choose your preferred OpenAI model (e.g., gpt-4-turbo, gpt-3.5-turbo). HTTP Request & Send Personalized emails: These nodes should automatically use your configured Gmail credentials. No changes are typically needed. Connect with us Website: https://www.intuz.com/cloud/stack/n8n Email: getstarted@intuz.com LinkedIn: https://www.linkedin.com/company/intuz Get Started: https://n8n.partnerlinks.io/intuz
by Tomek
How it works Use Telegram to send in new phrases (flashcard front) You can also manually input phrase in the workflow itself ChatGPT generates provided phrase description (in English but you can change it) including multiple meanings & generates examples of using the phrase in a sample sentence (flashcard back) Steps to setup Provide your Telegram bot API key (optional) Provide your OpenAI key Provide Google Sheets credentials How to import flashcards from Google Sheets into Anki Use Google Sheets to Anki add-on: 1871608121 In Anki simply click Sync Decks and you're done :) Enjoy
by Robert Breen
n8n Workflow: OpenAI DALL·E 2 Image Generation & Google Drive Upload Description This n8n workflow automates the process of generating multiple AI-created images from a single prompt using OpenAI's DALL·E 2, then uploads the results directly to a Google Drive folder. It includes a loop to produce several image variations for the same prompt, making it ideal for creative projects, marketing materials, or content experimentation. Step-by-Step Setup Instructions 1. Prepare Your API Keys OpenAI API Key** Sign up or log in at https://platform.openai.com/ Go to API Keys and create a new one. Copy and store this securely — you'll need it in n8n. Google Drive API** Go to https://console.cloud.google.com/ Create a project and enable Google Drive API. Create OAuth 2.0 credentials and set the redirect URI to your n8n OAuth redirect (found in your n8n Google Drive node setup). Connect your Google account when adding credentials in n8n. 2. Workflow Nodes Overview Manual Trigger – Starts the workflow manually. Set Image Prompt – Stores the prompt text and base file name (e.g., “Make an image of an attractive woman standing in New York City”). Duplicate Rows (Code Node) – Creates multiple "runs" of the same prompt for variation. Loop Over Items – Processes each variation one at a time. Generate an image (OpenAI DALL·E 2) – Sends the prompt to OpenAI and retrieves an image. Upload to Google Drive – Saves each generated image to your chosen Google Drive folder. 3. Building the Workflow in n8n Step 1 — Manual Trigger Add a Manual Trigger node to start the workflow manually when testing. Step 2 — Set Image Prompt Add a Set node with two fields: Prompt → The image description text. Name → The base name for the saved file. Example: | Name | Value | |--------|---------------------------------------------------------------| | Prompt | Make an image of an attractive woman standing in New York City | | Name | woman-nyc | Step 3 — Duplicate Rows (Code Node) Use this JavaScript to create three copies of the prompt (run 1, run 2, run 3): const original = items[0].json; return [ { json: { ...original, run: 1 } }, { json: { ...original, run: 2 } }, { json: { ...original, run: 3 } }, ]; Step 4 — Loop Over Items Insert a Split in Batches node and set the batch size to 1. This ensures each prompt variation runs through the image generation process individually. Connect this node so it runs after the Duplicate Rows node. Step 5 — Generate Image Add the OpenAI Image Generation node and configure it as follows: Model**: dall-e-2 Prompt**: ={{ $json.Prompt }} Leave other options at their defaults unless you want to specify image size or style. Connect your OpenAI API credentials created in Step 1. This node will send the current prompt in the batch to OpenAI's DALL·E 2 model and return an AI-generated image. Step 6 — Upload to Google Drive Add a Google Drive node and configure it to store the generated image: File Name**: ={{ $('Set Image Prompt').item.json.Name }} - {{ $('Duplicate Rows').item.json.run }} Folder ID**: Select the target Google Drive folder where images should be saved. Connect your Google Drive OAuth2 API credentials. The node will upload each generated image to your chosen Google Drive location, with a unique filename for each variation. Running the Workflow Execute the workflow manually. The process will: Loop through each prompt variation. Generate an image using OpenAI DALL·E 2. Upload the image to Google Drive with a unique name. You will find all generated images in the selected Google Drive folder. Customization Tips Change the number of variations by editing the Duplicate Rows code. Adjust the prompt dynamically from other data sources like Google Sheets, webhooks, or forms. Schedule the workflow to run at specific times or trigger it via an API call. Created by Robert A. – Ynteractive Website: https://ynteractive.com Email: robert@ynteractive.com
by Robert Breen
This n8n training workflow demonstrates how to connect a sub-workflow as a tool to an AI Agent. In this example, the main workflow is a Website Chatbot that engages visitors, collects contact information, and sends that data to a CRM process. The CRM process itself is a separate sub-workflow, connected to the agent as a tool via the Tool Workflow node. Step-by-Step Setup Instructions 1. Create the Sub-Workflow (CRM Tool) This sub-workflow will be triggered by the AI agent to process collected information. It will: Receive inputs (email, description) from the main chatbot workflow. Format the data into a structured JSON format. Append the data to a Google Sheet (acting as the CRM database). Send a confirmation message back to the main workflow. Steps inside the sub-workflow: When Executed by Another Workflow** – Triggered by the main workflow’s tool node. Convert Conversation (Agent)** – Uses OpenAI to extract and format the input into a JSON structure: { "email": "jane.doe@example.com", "description": "Wants help automating lead intake and sending Slack notifications." } Structured Output Parser – Ensures the extracted data matches the expected JSON schema. Append row in sheet (Google Sheets) – Adds the new lead data to your CRM sheet. Code Node – Returns a simple text confirmation like "Thanks for the info, we will be in touch soon". Required setup for Google Sheets: Enable the Google Sheets API and connect your Google account in n8n. Create a sheet with at least the columns email and description. Use the sheet's Document ID and tab name in the Google Sheets node. 2. Create the Main Workflow (Website Chatbot) This workflow acts as the main AI Agent handling incoming chat messages. Steps in the main workflow: When chat message received – Starts the workflow whenever a visitor sends a message via your chatbot integration. Website Chatbot (Agent Node) – Configured with a System Message that: Briefly explains your services. Asks the visitor what processes they want to automate. Requests their name and email. Sends collected data to the CRM tool once email and description are available. OpenAI Chat Model – Connects to the AI agent as its language model. Simple Memory – Stores short-term context for the ongoing chat. CRM Tool (Tool Workflow Node) – Points to the sub-workflow created in Step 1, allowing the chatbot to trigger it directly. 3. Connecting the Sub-Workflow to the AI Agent Add a Tool Workflow node to the main workflow. Select "Parameter" as the source. Paste in your sub-workflow JSON or select it from your n8n workflows. Connect the Tool Workflow node to your AI Agent using the ai_tool connection. Give the tool a clear description (e.g., crm tool to store lead information) so the agent knows when to use it. 4. How It Works in Action A visitor sends a message through the chatbot. The AI Agent engages, asks questions, and collects their name, email, and request. Once collected, the agent triggers the CRM Tool. The sub-workflow formats the data, stores it in Google Sheets, and sends a confirmation. The chatbot confirms with the visitor that their request was received. 5. Customization Ideas Replace Google Sheets with your actual CRM API. Add validation to ensure the email format is correct before saving. Expand the CRM tool to send a Slack or email notification after storing the lead. Created by Robert A. – Ynteractive Website: https://ynteractive.com Email: robert@ynteractive.com
by Artur
Overview This automated workflow fetches Upwork job postings using Apify, removes duplicate job listings via Airtable, and sends new job opportunities to Slack. Key Features: Automated job retrieval** from Upwork via Apify API Duplicate filtering** using Airtable to store only unique jobs Slack notifications** for new job postings Runs every 30 minutes** during working hours (9 AM - 5 PM) This workflow requires an active Apify subscription to function, as it uses the Apify Upwork API to fetch job listings. Who is This For? This workflow is ideal for: Freelancers looking to track Upwork jobs in real time Recruiters automating job collection for analytics Developers who want to integrate Upwork job data into their applications What Problem Does This Solve? Manually checking Upwork for jobs is time-consuming and inefficient. This workflow: Automates job discovery based on your keywords Filters out duplicate listings, ensuring only new jobs are stored Notifies you on Slack when new jobs appear How the Workflow Works 1. Schedule Trigger (Every 20 Minutes) Triggers the workflow at 20-minute intervals Ensures job searches are only executed during working hours (9 AM - 5 PM) 2. Query Upwork for Jobs Uses Apify API to scrape Upwork job posts for specific keywords (e.g., "n8n", "Python") 3. Find Existing Jobs in Airtable Searches Airtable to check if a job (based on title and link) already exists 4. Filter Out Duplicate Jobs The Merge Node compares Upwork jobs with Airtable data The IF Node filters out jobs that are already stored in the database 5. Save Only New Jobs in Airtable The Insert Node adds only new job listings to the Airtable collection 6. Send a Slack Notification If a new job is found, a Slack message is sent with job details Setup Guide Required API Keys Upwork Scraper (Apify Token) – Get your token from Apify Airtable Credentials Slack API Token – Connect Slack to n8n and set the channel ID (default: #general) Configuration Steps Modify search keywords in the 'Assign Parameters' node (startUrls) Adjust the Working Hours in the 'If Working Hours' node Set your Slack channel in the Slack node Ensure Airtable is connected properly - you'll need to create a table with 'title' and 'link' columns. Adjust the 'If Working Hours' node to match your timezone and hours, or remove it altogether to receive notifications and updates constantly. How to Customize the Workflow Change keywords: update the startUrls in the 'Assign Parameters' node to track different job categories Change 'If Working Hours': Modify conditions in the IF Node to filter times based on your needs Modify Slack Notifications: Adjust the Slack message format to include additional job details Why Use This Workflow? Automated job tracking without manual searches Prevents duplicate entries in Airtable Instant Slack notifications for new job opportunities Customizable – adapt the workflow to different job categories Next Steps Run the workflow and test with a small set of keywords Expand job categories for better coverage Enhance notifications by integrating Telegram, Email, or a dashboard This workflow ensures real-time job tracking, prevents duplicates, and keeps you updated effortlessly.
by bangank36
Overview This workflow retrieves all blog and event collection items from a Squarespace site and saves them into a Google Sheets spreadsheet. It uses pagination to fetch 20 items per request, ensuring all content is collected efficiently. How It Works The workflow queries your Squarespace blog and event collections. It fetches data in paginated batches (20 items per page). The retrieved data is formatted and inserted into Google Sheets. The workflow runs on demand or on a schedule, ensuring your data stays up to date. Requirements Credentials To use this template, you need: Your Squarespace collection URL Google Sheets API credentials Google Sheets Setup Use this sample Google Sheets template to get started quickly. Who Is This For? This template is designed for: Bloggers looking to manage and analyze content externally. Businesses and marketers tracking content performance. Anyone who needs an automated way to extract Squarespace blog and event data. Explore More Templates Check out my other n8n templates: 👉 n8n.io/creators/bangank36
by Angel Menendez
Who is this for? This subworkflow is ideal for developers and automation builders working with UniPile and n8n to automate message enrichment and LinkedIn lead routing. What problem is this workflow solving? UniPile separates personal and organization accounts into two different API endpoints. This flow handles both intelligently so you're not missing sender context due to API quirks or bad assumptions. What this workflow does This subworkflow is used by: LinkedIn Auto Message Router with Request Detection** LinkedIn AI Response Generator with Slack Approval** It receives a message sender ID and tries to enrich it using UniPile's /people and /organizations endpoints. It returns a clean, consistent profile object regardless of which source was used. Setup Generate a UniPile API token and save it in your n8n credentials Make sure this subworkflow is triggered correctly by your parent flows Test both people and organization lookups to verify responses are normalized How to customize this workflow to your needs Add a secondary enrichment layer using tools like Clearbit or FullContact Customize the fallback logic or error handling Expand the returned data for more AI context or user routing (e.g., job title, region)
by Anurag
Description This workflow automates the extraction of structured data from invoices or similar documents using Docsumo's API. Users can upload a PDF via an n8n form trigger, which is then sent to Docsumo for processing and structured parsing. The workflow fetches key document metadata and all line items, reconstructs each invoice row with combined header and item details, and finally exports all results as an Excel file. Ideal for automating invoice data entry, reporting, or integrating with accounting systems. How It Works A user uploads a PDF document using the integrated n8n form trigger. The workflow securely sends the document to Docsumo via REST API. After uploading, it checks and retrieves the parsed document results. Header information and table line items are extracted and mapped into structured records. The complete result is exported as an Excel (.xls) file. Setup Steps Docsumo Account: Register and obtain your API key from Docsumo. n8n Credentials Manager: Add your Docsumo API key as an HTTP header credential (never hardcode the key in the workflow). Workflow Configuration: In the HTTP Request nodes, set the authentication to your saved Docsumo credentials. Update the file type or document type in the request (e.g., "type": "invoice") as needed for your use case. Testing: Enable the workflow and use the built-in form to upload a sample invoice for extraction. Features Supports PDF uploads via n8n’s built-in form or via API/webhook extension. Sends files directly to Docsumo for document data extraction using secure credentials. Extracts invoice-level metadata (number, date, vendor, totals) and full line item tables. Consolidates all data in easy-to-use Excel format for download or integration. Modular node structure, easily extensible for further automation. Prerequisites Docsumo account with API access enabled. n8n instance with form, HTTP Request, Code, and Excel/Convert to File nodes. Working Docsumo API Key stored securely in n8n’s credential manager. Example Use Cases | Scenario | Benefit | |---------------------|-----------------------------------------| | Invoice Automation | Extract line items and metadata rapidly | | Receipts Processing | Parse and digitize business receipts | | Bulk Bill Imports | Batch process bills for analytics | Notes Credentials Security:** Do not store your API key directly in HTTP Request nodes; always use n8n credentials manager. Sticky Notes:** The workflow includes sticky notes for setup, input, API call, extraction, and output steps to assist template users. Custom Columns:** You can customize header or line item extraction by editing the Code node as needed.
by Derek Cheung
Purpose of workflow: The purpose of this workflow is to automate scraping of a website, transforming it into a structured format, and loading it directly into a Google Sheets spreadsheet. How it works: Web Scraping: Uses the Jina AI service to scrape website data and convert it into LLM-friendly text. Information Extraction: Employs an AI node to extract specific book details (title, price, availability, image URL, product URL) from the scraped data. Data Splitting: Splits the extracted information into individual book entries. Google Sheets Integration: Automatically populates a Google Sheets spreadsheet with the structured book data. Step by step setup: Set up Jina AI service: Sign up for a Jina AI account and obtain an API key. Configure the HTTP Request node: Enter the Jina AI URL with the target website. Add the API key to the request headers for authentication. Set up the Information Extractor node: Use Claude AI to generate a JSON schema for data extraction. Upload a screenshot of the target website to Claude AI. Ask Claude AI to suggest a JSON schema for extracting required information. Copy the generated schema into the Information Extractor node. Configure the Split node: Set it up to separate the extracted data into individual book entries. Set up the Google Sheets node: Create a Google Sheets spreadsheet with columns for title, price, availability, image URL, and product URL. Configure the node to map the extracted data to the appropriate columns.