by Chris Jadama
Who it's for YouTube creators, content marketers, and anyone who wants to automatically enrich YouTube links added to a Notion database. What it does Automatically extracts important video and channel data — including title, views, likes, comments, thumbnail, channel name, subscribers, and a custom viral score — whenever a new YouTube URL is added to Notion. How it works A Notion Trigger fires when a new page is added to your database. The workflow extracts the YouTube video ID from the provided URL. A YouTube API request retrieves video details (title, views, likes, comments, thumbnail). A second YouTube API request retrieves channel information (name and subscriber count). Both sets of data are cleaned and formatted. The enriched data is written back to the same Notion page. Requirements YouTube Data API (OAuth2 recommended) Notion integration connected to your workspace This Notion template (includes all required fields): https://lunar-curler-d17.notion.site/2a71d9a77486807a9006d048aa512d16?v=2a71d9a7748680eda620000ca9c112a4 Setup steps Duplicate the Notion template linked above. Connect your Notion credentials in n8n. Create and connect a YouTube OAuth2 credential. Assign your credential to the YouTube API nodes. Test once with a manual execution.
by Marko Korhonen
This workflow contains community nodes that are only compatible with the self-hosted version of n8n. How it works It creates a nested folder in your OneDrive's My Files You could be creating folders like: Foobar Foobar/Barfur Foobar/Barfur/Furbar Workflow checks if any of the folders in the path exists and created only the ones that don't exist. The usual case it to use it in your other workflows and execute it as Sub-workflow. Requirements n8n-nodes-datastore Community node Microsoft Drive account credential
by Alok Kumar
Learn Supabase Storage Fundamentals with n8n This template demonstrates how to integrate Supabase Storage with n8n for uploading, fetching, generating temporary signed URLs, and listing files. It’s a beginner-friendly workflow that helps you understand how to connect Supabase’s storage API with n8n automation. Who it’s for Developers and teams new to Supabase who want a hands-on learning workflow. Anyone looking to automate file uploads and retrieval from Supabase Storage. Educators or technical teams teaching Supabase fundamentals with practical demos. How it works Upload File – A user uploads a file through an n8n form, which gets stored in a Supabase storage bucket. Fetch File – Retrieve files by providing their filename. Temporary Access – Generate signed URLs with custom expiry for secure file sharing. List Objects – View all stored files in the chosen Supabase bucket. How to set up Create a Supabase account and set up a project. Create a bucket in Supabase (e.g., test-n8n). Get your Project URL and Anon Key from Supabase. In n8n, create a Supabase API Credential using your keys. Import this workflow and connect it with your credentials. Run the forms to test file upload, retrieval, and listing. Requirements A Supabase project with storage enabled. A configured Supabase API Credential in n8n. Customization Change the bucket name (test-n8n) to your own. Adjust signed URL expiry times for temporary file access. Replace Supabase with another S3-compatible storage if needed. Extend the workflow with notifications (Slack, Email) after file upload. 📝 Lessons Included Lesson 1** – Upload file to Supabase storage. Lesson 2** – Fetch file from storage. Lesson 3** – Create a temporary signed document with expiry. Lesson 4** – List all items in Supabase storage. 🔑 Prerequisites Supabase account + project. Project URL and API Key (Anon). Bucket created in Supabase. Policy created to allow read/write access. n8n with Supabase API credentials configured.
by Beex
Summary This workflow listens for HubSpot contact creation events via a webhook, standardizes the data, and sends a WhatsApp message using a predefined first contact template from Beex. How It Works Configure Webhook: The workflow is triggered when HubSpot fires the On Contact Created event. Get Contact: Retrieves the contact's ID and extracts relevant data from the HubSpot event. Validate Contact: Filters contacts to ensure they meet the requirements in this case, having valid (non-null) email and phone numbers. Set Fields: Transforms the HubSpot data by selecting only relevant fields, renaming them for clarity, and preparing them for the template. Key tasks include extracting the phone_number and country_code (removing the "+" symbol) and setting the associated_values as required by the template. The exact template name must be specified manually in this node. Send Template: Sends a welcome message via WhatsApp using the template configured in Beex. This node requires a Queue ID, which is generated based on the template configuration in Beex (see the setup section below for details). Setup Instructions Install Beex Nodes: Before importing the template, install the Beex trigger and node packages using the following package name: n8n-nodes-beex Configure HubSpot Credentials: Set up your HubSpot connection with the following: Access Token (typically from a private app) Read permissions for Contacts objects Configured webhook URL (usually from a private application) Note: The webhook URL can be found in the initial node. Make sure to distinguish between test mode and production mode. Configure Beex Credentials: For Beex users with platform access (for trial requests, contact frank@beexcc.com): Navigate to Platform Settings → API Key & Callback. Copy your API key and paste it into the Beex node (Send Template) in n8n. Configure Template in Beex: On the Beex platform, go to the Connections section in the side menu and select Templates. Select an identifier (a number through which the WhatsApp template will be sent to your contacts). Click to request a new template. Enter a Template Name and Display Name. The "Template Name" is what you'll reference in your workflow's Set Fields node. Complete any additional required fields. Configure the template message content. Note that associated values are wrapped in {{1}}, which corresponds to the configurable parameter set in the Set Fields node. Optionally, add buttons to the template. Once the template request is submitted, wait for approval. After approval, associate the template with a campaign and queue to obtain the Queue ID needed for the Send Template node. Requirements HubSpot: An account with a private application token and read permissions for **Contacts objects. HubSpot**: A private application with a configured webhook. Beex**: An account with permissions to send templates. Beex**: A properly configured and approved template with an associated Queue ID. Customization Options Additional Filtering**: You can add a filter immediately after the webhook that receives the contact creation event to limit the sources from which you obtain new contacts (for example, contacts from a specific HubSpot form). Get Contact**: For this workflow, the contact's first name is used in the template. If your template requires additional associated values, you can retrieve more properties from the HubSpot node by adding them to the properties list. Contact Filtering**: Add filters to control which contacts should trigger the WhatsApp template based on your business logic. Set Fields**: Use this node to further customize and transform the data received from HubSpot. For example, you can standardize phone numbers by region or add custom logic for field mapping. Send Template**: The WhatsApp template is fully customizable within Beex. Refer to the template configuration section to ensure all associated values are properly mapped.
by Luis Acosta
🤖📝 Auto-Document Workflows with GPT-4o-mini Sticky Notes Skip the tedious part of writing documentation and turn your n8n workflows into clear, shareable blueprints — fully automated. This workflow takes any workflow JSON, parses its nodes, generates structured sticky notes (both per-node and a general overview), and arranges them neatly on your canvas. No more messy layouts or missing documentation — everything is handled in one click. It’s perfect if you want to publish to the n8n marketplace, onboard teammates quickly, or just keep your own automations easy to understand months later. 💡 What this workflow does ✅ Loads your existing workflow from a JSON file 🔍 Parses and unwraps real nodes (ignoring old stickies) 🤖 Uses AI to create concise sticky notes for each node 📝 Adds a general overview sticky with goals, flow, parameters, and gotchas 📐 Arranges all nodes + stickies (node above, sticky below, right-to-left) 💾 Saves a new documented workflow JSON, ready to reuse or share ⚙️ Step-by-step setup Prepare your workflow file Export your n8n workflow JSON or point to an existing file path. Configure the “Load Workflow” node Update the file selector to your JSON path, e.g. /workflows/myflow.json. Add your OpenAI credentials In the OpenAI API nodes (Node Sticky Notes + Overall Sticky Note), insert your API key. Run the workflow Trigger manually with the Execute Workflow node. The script will parse your nodes, generate stickies, and align them on the canvas. Save the result The “Save Documented Workflow” node writes a new file, e.g. /workflows/myflow-with-sticky.json. 🛠 Customization Sticky layout:** Adjust spacing, colors, and alignment in the Layout Blocks RTL node (tweak GAP_X, GAP_Y, or STICKY_COLOR). Word count & style:** Edit prompts inside the OpenAI nodes to make notes shorter, longer, or more technical. Overview focus:** Customize the Your Workflow Description node to pass context (e.g., project goals, intended audience). File outputs:** Save to a new path/version for version control of your documentation. ⚠️ Limitations / Gotchas Maximum of ~50 nodes are summarized in the overview for brevity. Old sticky notes are removed and replaced — you can’t preserve them unless you fork the workflow. Complex nodes (large Code / AI prompts) may require manual edits for clarity. Ensure n8n has read/write access to your workflow JSON paths. 🎯 Expected result After execution, you’ll get a fully documented workflow JSON where each node is paired with a clean sticky note, plus an overview note neatly placed on the canvas. You can open this new file in n8n, share it, or submit it directly to the marketplace. 📬 Contact & Feedback Need help customizing this? Have ideas for improvement? 📩 Luis.acosta@news2podcast.com 🐦 DM me on Twitter @guanchehacker If you’re working on advanced workflow documentation + AI, let’s talk — this template can be a foundation for more powerful tools.
by CustomJS
> ⚠️ Notice: > This workflow uses the CustomJS Invoice Generator node from customjs.space, which requires a self-hosted n8n instance and a CustomJS API key. Google Spreadsheet → Invoice Generation → Email Workflow This workflow demonstrates how to: Pull invoices ready to be sent from Airtable. Retrieve client details and invoice items from Airtable. Generate a professional invoice PDF using CustomJS Invoice Generator. Send the completed invoice via email to the client. Update the invoice status in Airtable automatically. Public Airtable Example Workflow Overview 1. Trigger Workflow Node:** When clicking ‘Execute workflow’ (Manual Trigger) Starts the workflow when executed manually in n8n. 2. Get Ready Invoices Node:** Get Ready Invoices (Airtable) Retrieves all invoices from Airtable where Status = 'Ready'. 3. Loop Over Items Node:** Loop Over Items (Split In Batches) Processes each invoice individually. 4. Get Clients Node:** Get Clients (Airtable) Fetches client details for the current invoice: Name Address Tax ID 5. Get Invoice Items Node:** Get Invoice Items (Airtable) Retrieves all items associated with the invoice and passes them for aggregation. 6. Map Fields Node:** Map Fields (Set) Maps the invoice items into a structured format for the invoice generator: Description Quantity / Hours Unit Price Invoice ID 7. Aggregate Node:** Aggregate Aggregates all invoice items into a single JSON array for the invoice. 8. Set Company Details Node:** Set Company Details (Set) Defines issuer and payment information: Company Name Address Tax ID Email & Phone Bank Details 9. Generate Invoice Node:** Generate Invoice (CustomJS Invoice Generator) Generates a PDF invoice using all collected data: Issuer / Company information Recipient / Client information Invoice items Billing information (Invoice number, date, currency, tax, notes) 10. Send Email With Attachment Node:** Send Email With Attachment (Email Send) Sends the generated invoice PDF to the client: From: {{ $json.InvoiceEmail }} To: info@yourcomp.org Subject: Your Invoice for Last Month Body Text: Hello, Please find attached your invoice for the last month. Thank you very much for your cooperation. Best regards, Henrik Uses SMTP credentials for sending emails. 11. Update Record Node:** Update record (Airtable) Marks the invoice as Sent in Airtable. Requirements Self-hosted n8n instance CustomJS API key SMTP credentials Airtable API key and base access
by PDF Vector
This workflow contains community nodes that are only compatible with the self-hosted version of n8n. Comprehensive Literature Review Automation Automate your literature review process by searching across multiple academic databases, parsing papers, and organizing findings into a structured review document. Features: Search multiple academic databases simultaneously (PubMed, ArXiv, Google Scholar, etc.) Parse and analyze top papers automatically Generate citation-ready summaries Export to various formats (Markdown, Word, PDF) Workflow Steps: Input: Research topic and parameters PDF Vector Search: Query multiple academic databases Filter & Rank: Select top relevant papers Parse Papers: Extract content from PDFs Synthesize: Create literature review sections Export: Generate final document Use Cases: PhD students conducting systematic reviews Researchers exploring new fields Grant writers needing background sections
by The O Suite
Google Dorks with SerpAPI How it Works: Accepts a domain from a web form Generates a list of Google dorks targeting that domain Scrapes Google search results for each dork using SerpAPI Filters out junk links (Google internal, non-http) Formats valid results as a markdown report Converts the report to PDF using PDF4me Emails the report to your inbox with Gmail How To Use: Step 1. Double Click the SerpAPI node and configure the API key Step 2. Double Click each PDF4me node and configure the API key Step 3. (Optional) Double Click and configure your OAuth credentials and gmail settings on the Gmail node. Step 4. Click 'Execute Workflow' and wait for your report to be generated.
by Fabian Perez
This workflow automates the process of scraping, analyzing, and storing real estate data from Zillow using Apify, OpenAI, and Google Sheets. It begins by running an Apify Actor that extracts live property details such as price, location, and key features. The data is then cleaned and processed before being analyzed by an AI model that assigns an investment potential score (1–10). To maintain reliable results, the AI only scores properties that include all required fields — for example, listings missing price or description data are automatically skipped. This ensures that only complete and accurate information is evaluated. Finally, all valid results are appended or updated in a Google Sheet, creating a central, always-up-to-date property database for future analysis. Ideal for real estate investors, analysts, and data-driven agencies, this template provides a fully automated loop for property collection, evaluation, and reporting — all in one flow. Tools used: Apify, OpenAI, Google Sheets, n8n
by AppUnits AI
Generate Invoices for Customers with Jotform and QuickBooks This workflow automates the entire process of receiving a product/service order, checking or creating a customer in QuickBooks Online (QBO), generating an invoice, and emailing it — all triggered by a form submission (via Jotform). How It Works Receive Submission Triggered when a user submits a form. Collects data like customer details, selected product/service, etc. Check If Customer Exists Searches QBO to determine if the customer already exists. If Customer Exists:* *Update** customer details (e.g., billing address). If Customer Doesn’t Exist:* *Create** a new customer in QBO. Get The Item Retrieves the selected product or service from QBO. Create The Invoice Generates a new invoice for the customer using the item selected. Send The Invoice Automatically sends the invoice via email to the customer. Who Can Benefit from This Workflow? Freelancers** Service Providers** Consultants & Coaches** Small Businesses** E-commerce or Custom Product Sellers** Requirements Jotform webhook setup, more info here QuickBooks Online credentials, more info here
by BHSoft
📌 Who is This For? IT Ops, HR, and Security teams automating employee offboarding. Zero manual work: Disable access to Redmine, GitLab, and more- right after their last day. Boost security, cut risks, and stay compliant. 📌 The Problem It Solves Offboarding is messy and slow: HR flags ending contracts. IT hunts down accounts manually (Redmine, GitLab, etc.). Misses happen, risks linger. This n8n workflow queries Odoo 18 daily, spots offboardees, and locks accounts automatically. 📌 What It Does Triggers** daily (e.g., 5 PM weekdays). Queries** Odoo 18 for employees ending today. Filters** active users needing offboarding. Checks & Locks** Redmine accounts via API. Checks & Revokes** GitLab access via API. Notifies** via Slack/Teams/email with summary. Handles Errors**: Retries failures, logs issues. 📌 Quick setup Odoo 18 API (read employee end dates/last shifts). Redmine Admin API key. GitLab Admin token (for locking users). Slack/Teams webhook or SMTP for alerts. Cron schedule (e.g., daily 5 PM weekdays, skip weekends). 📌 Customize It Add Systems**: Jira, Confluence, LDAP—easy toggles. Notification**: Full reports or alerts-only. Error Rules**: Retries, escalations. Audit Logs**: Save to DB, S3, Sheets, or dashboard. 📌 Results 100% automated: Accounts locked on exit day. No orphans, no workload, full compliance. 📌 Workflow in Action Schedule trigger fires. Pull Odoo offboardees. API checks & disables Redmine/GitLab. Logs + summary notification.
by WeblineIndia
Extract a key–value pair by index from JSON to fields in n8n This template takes a JSON object and a row index and returns exactly one key–value pair at that index. It’s a handy helper when you only need a single entry from a structured JSON payload (e.g., picking one form field for downstream logic). Who’s it for Makers who want a quick JSON picker without writing full parsing logic. Developers testing API payloads or building proofs of concept. Ops/analysts who need to pluck a single field for emails, documents or notifications. How it works Manual Trigger (When clicking ‘Test workflow’) starts the flow. Set → Input JSON Node holds your sample payload with: myData: an object of key → value pairs. rowIndex: a 0‑based index indicating which pair to extract. Code (Python) → Find Key‑Value Pair iterates myData and returns [key, value] at rowIndex as result. Set → Key maps result[0] to a field named result. Set → Value maps result[1] to a field named result[1]. The selected key and value are then available to any downstream nodes. How to set up Open the workflow and select Input JSON Node. Replace the sample with your own JSON: { "myData": { "name": "Alice", "age": "30", "city": "Paris" }, "rowIndex": "1" } Click Execute Workflow. Check the Key and Value nodes for the outputs. Requirements n8n running (cloud or self‑hosted). Code node (Python)** enabled in your n8n version. Input payload structure: myData: object with keys/values rowIndex: integer (0‑based) How to customize Pick by key name** (instead of index): adjust the Python code to look up a specific key. Handle nested objects/arrays**: walk or flatten the structure before selecting. Change output shape**: return { "key": ..., "value": ... } or write directly to next‑node fields. Validate inputs**: add checks for out‑of‑range rowIndex, non‑object myData, or empty objects. Add‑ons Webhook intake**: Replace Manual Trigger with a Webhook to accept live JSON. Schema guard**: Add an If/Function step to ensure myData is an object and rowIndex is numeric. Audit log**: Append the selected key/value to Google Sheets or a database. Use Case Examples Pull one field from a large API response to include in an email. Extract a specific answer from a form submission for conditional routing. Read a configuration pair from a settings object to control a downstream step. Common troubleshooting | Issue | Possible Cause | Solution | |---|---|---| | “Index out of range” | rowIndex is larger than the number of keys | Use a valid 0‑based index; add a guard in the Code node to clamp or default. | | Wrong key returned | Object key order differs from expectations | Object key order isn’t guaranteed across sources—prefer pick by key name for reliability. | | Empty/invalid output | myData is not an object or is empty | Ensure myData is a flat object with at least one key. | | Python errors | Code node’s Python runtime not available | Enable Python in the Code node or convert the snippet to JavaScript. | | Value type mismatch | Value isn’t a string | Cast as needed in the Set node or normalize types in the Code node. | Need Help? If you’d like this to pick by key, handle nested JSON, accept data via Webhook or fully customized to your needs, write to us and we’ll adapt the template to your exact use case.