by Jan Oberhauser
Read data from Postgres Converting it to XLS Save it to disk
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 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 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 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.
by WeblineIndia
Auto-Generate GitHub Release Notes and Notify via Slack (n8n Workflow) This n8n workflow automates the process of: Generating structured GitHub release notes from merged pull requests since the last tag. Creating a draft GitHub release using the latest tag and PR info. Sending a formatted summary to a Slack channel. All of this is triggered manually via a form, where the user inputs the repository, owner and target branch. Who's It For This flow is perfect for: Open-source maintainers** looking to automate changelog management. DevOps engineers** handling release cycles. Engineering teams** maintaining structured, consistent GitHub releases. Technical writers** who prepare release notes. How It Works Node Summary: | Node No | Node Name | Description | |---------|------------------------------------|---------------------------------------------------------------| | 1 | GitHub Release Input Form | Takes user inputs (owner, repo, branch). | | 2 | Config | Extracts input and defines PR label grouping config. | | 3 | Get Latest Git Tag | Fetches latest Git tag (used as reference point). | | 4 | Get Commit Date of Latest Tag | Gets the exact timestamp of the latest tag's commit. | | 5 | Fetch All Merged PRs Since Last Tag | Queries GitHub for PRs merged after that timestamp. | | 6 | Group PRs & Generate Release Notes | Organizes PRs by label and generates markdown notes. | | 7 | GitHub Pre-release | Creates a draft GitHub release with those notes. | | 8 | Send Message to Slack | Sends the final release summary to Slack. | How to Set Up Clone or import this workflow into your n8n instance. Configure the following credentials: GitHub OAuth or PAT (Personal Access Token) Slack Webhook URL or OAuth credentials Open the form node and fill in: owner: GitHub username/org repo: GitHub repository name branch: Base branch (e.g., main) Run the workflow manually and observe the release note being: Created as a draft on GitHub Sent to Slack Requirements | Requirement | Description | |-----------------|-----------------------------------------------------| | n8n version | Cloud or Self-Hosted | | GitHub Access | A token with repo and write:repo_hook permissions | | Slack Access | Webhook URL or Slack OAuth app | | Git Tags | Semantic versioning tags pushed to the repo | | Labels | PRs should be labeled (e.g., feature, bug, other) for grouping | How to Customize | Feature | How to Customize | |---------------------|---------------------------------------------------------------| | Label Grouping | Modify the config map in the Config node (step 2). | | PR Filtering | Adjust the search query in node 5 to fit your repo's conventions. | | Markdown Template | Tweak markdown generation logic in node 6. | | Slack Message Format| Customize the Slack text in node 8. | | Tag Format | Switch from semantic versioning if needed in node 3 logic. | | Release Type | Change draft: true to false in node 7 for immediate publishing. | Add‑ons You can extend the flow by: Adding a cron scheduler for periodic releases. Sending release notes via email (use the Email node). Publishing directly to Jira or Confluence. Posting GitHub release links to Discord. Use Case Examples | Scenario | Description | |---------------------------|---------------------------------------------------------------| | OSS Team Weekly Releases | Automatically publish weekly release notes summarizing merged PRs. | | Sprint Review Reports | Use it at the end of each sprint to generate change summaries. | | CI/CD Pipelines | Integrate with GitHub Actions or Jenkins for automated tagging + release. | Common Troubleshooting | Issue | Possible Cause | Solution | |----------------------------------------|-------------------------------------------|----------------------------------------------------------------------| | No data found for item-index: "1" | GitHub Search returned no PRs | Ensure PRs were merged after the last tag and branch name is correct | | Cannot access $node in code | Wrong script execution context | Ensure JavaScript is selected and variables are accessed properly | | draft must be boolean | Draft field passed as string | Use true (not "true") in JSON input of HTTP node | | PR labels not grouped | PRs have no matching labels | Update your label config map or ensure labels exist on PRs | | Empty Slack message | Slack node not receiving data | Ensure $json.release_notes is being passed correctly | Need Help? Need help setting this up for your team or extending it for more features (e.g., JIRA, auto-tagging, changelog export)? We're here to help you customize, debug and scale this flow. Feel free to reach out WeblineIndia if you need: One-on-one setup assistance. Custom n8n nodes or scripts. Advanced GitHub/Slack integrations.
by System Admin
Tagged with: , , , ,
by System Admin
Tagged with: , , , ,
by System Admin
Tagged with: , , , ,