by Jan Oberhauser
When set as "Error Workflow" on other workflow which does fail will it send an Email with information about which workflow did fail and what went wrong.
by Intuz
This n8n template from Intuz provides a complete and automated solution to streamline your sales and accounting process. Simply add new transaction details to a designated Google Sheet, and this workflow takes over. Using specific status keywords in a column to trigger the process, it automatically creates new customer profiles and generates sales receipts in QuickBooks. This creates a complete, end-to-end system from a simple spreadsheet entry to a formal accounting record, eliminating manual data entry. How it works This workflow streamlines the process of recording sales from a Google Sheet into QuickBooks Online, intelligently handling both new and existing customers. 1. Trigger on New Row: The workflow starts automatically whenever a new row is added to your specified Google Sheet. 2. Check for Existing Customer: It takes the customer's name from the new row and searches your QuickBooks account to see if a customer with that DisplayName already exists. 3. Conditional Logic (IF Node): Based on the search result, the workflow splits into two paths: If Customer Exists (True Path): The workflow proceeds directly to create a Sales Receipt, linking it to the existing customer's ID found in the search. If Customer Does Not Exist (False Path): The workflow first creates a new customer in QuickBooks using the name and email from the sheet. It then uses the ID of this newly created customer to generate the corresponding Sales Receipt. How to Use: Quick Start Guide Prepare your Google Sheet: Make sure you have a Google Sheet with clear headers for your sales data. The template is configured for the following columns: CustomerName, Email, Amount, and Quantity. Import the Template: Click the "Use Template" button to import the workflow into your n8n instance. Configure Google Sheet Node: Enter the Spreadsheet ID from your Google Sheet's URL. Enter the Sheet Name where your sales data is located (e.g., Sheet1). Configure the QuickBooks Nodes: Select your QuickBooks Online credential or create a new one for the "Search for Customer", "Create Receipt for EXISTING Customer", "Create New Customer", and "Create Receipt for NEW Customer" nodes. Important: In both "Create Receipt" nodes, you must provide a valid Product/Service ID from your QuickBooks account. Find this in the node parameters under Line > Sales Item Line Detail > Item Ref > Value. Activate the Workflow: Save your changes and activate the workflow. Now, every new row you add to the Google Sheet will automatically create the necessary records in QuickBooks. Key Requirements to Use Template An active n8n instance. A Google account with a prepared Google Sheet. A QuickBooks Online account. A QuickBooks Developer account to obtain the API credentials needed to connect to n8n. At least one Product or Service item set up in your QuickBooks account to be referenced in the sales receipts. Connect with us Website: https://www.intuz.com/services Email: getstarted@intuz.com LinkedIn: https://www.linkedin.com/company/intuz Get Started: https://n8n.partnerlinks.io/intuz For Custom Worflow Automation Click here- Get Started
by Gregory
How it works This implementation aggregates incoming data into a Redis list from potentially concurrent workflow executions. It buffers the data for a set period before a single execution retrieves and processes the entire batch. Step-by-step Flow: Trigger: Data is received from a trigger (e.g., an external workflow execution). Lock Check: The system verifies that the queue is not currently locked; if it is, the process waits. Append: The received data is appended to a Redis list. Tagging: A unique execution identifier is generated and written to a specific Redis key (acting as a "last writer" marker). Wait: The execution pauses for a configured duration. Verification: After the wait, the execution checks if the Redis key still contains its specific identifier. Exit Condition: If the identifier has changed, it indicates a newer execution has arrived. The current execution terminates. Processing: If the identifier matches, this execution assumes responsibility for the batch. It locks the queue, retrieves all data, clears the Redis list, releases the lock, and forwards the aggregated data further. Setup Add your Redis instance credentials Configure the debounce period (2 seconds by default) Adjust this workflow's trigger and what it calls in the end
by Alexander Schnabl
Scan Confluence pages for inactive page owners This workflow scans selected Confluence spaces, resolves page ownership and filters pages with inactive owners, helping teams maintain clear ownership and prevent orphaned documentation. What it does Scans Confluence pages across selected spaces. Resolves page owners and checks their account status**. Filters pages where the owner is inactive** (owner.accountStatus !== active). Uses Confluence REST API v2 to fetch spaces, pages, and user data. Resolves page owners efficiently via the users-bulk API. Produces a consolidated report containing: Page title Owner email Owner account status Last updated date Direct page URL Useful for documentation governance, ownership audits, and cleanup initiatives. How it works A Set Variables node defines: Atlassian domain Space keys to scan Get Spaces (v2)** retrieves matching spaces and extracts their IDs. Get Pages (v2)** fetches all pages from the selected spaces. Unique page ownerIds are collected and resolved using Bulk User Lookup (v2). Page metadata is merged with user account data (ownerId ↔ accountId). Pages are filtered to include only those with inactive owners. Setup Configure the Set Variables node: atlassianDomain → your Confluence base URL spaceKeys → comma-separated list of space keys (e.g. ENG, HR) Create an HTTP Basic Auth credential: Atlassian email + API token Assign it to all HTTP Request nodes Optional enhancements: Add pagination if spaces contain many pages. Extend the workflow with email notifications, Slack alerts, or CSV export. Notes Requires permission to read Confluence spaces, pages, and users. Pages are flagged when owner.accountStatus !== active. Current page fetch limit is 50 items per request.
by Alexander Schnabl
Report stale pages in Confluence This workflow generates a stale page report for Confluence spaces, helping teams keep documentation accurate, relevant, and actively maintained. What it does Identifies Confluence pages not updated within a defined cutoff period (in days). Supports both: Confluence REST API v1 (CQL search), and Confluence REST API v2 (spaces + pages). Produces a clean, aggregated report including: Page title Page status Last updated date Days overdue Direct page URL Ideal for content audits, documentation hygiene, and ownership reviews. How it works The workflow starts via a Manual Trigger. A Set Variables node defines: Atlassian domain Space keys to scan Cutoff age (in days) API version toggle (v1 or v2) Two execution paths are supported: API v1: Uses CQL search to fetch outdated pages directly. API v2: Fetches spaces → pages → filters pages by last modified date. All pages are normalized into a consistent format. Results are aggregated into a single stalePages array for easy reuse in downstream steps. Setup Configure the Set Variables node: atlassianDomain → your Confluence base URL spaceKeys → comma-separated space keys (e.g. DOCS, ENG) cutoffDateDays → age threshold (e.g. 90) apiV2 → true (recommended) or false for legacy CQL Create an HTTP Basic Auth credential: Atlassian email + API token Assign it to all HTTP Request nodes Optional: Extend the workflow with email notifications, Slack alerts, or CSV exports. Notes API v2 is recommended** and future-proof; API v1 is included for legacy compatibility. Pagination limits are set to 50 items per request — increase if your spaces contain many pages. If no results are returned: Verify space keys Check cutoff logic Confirm API permissions for the token Tested against Confluence Cloud.
by Oriol Seguí
This template allows you to automatically fetch WHOIS data for any domain and display it in a clean, modern HTML card. It doesn’t just stop at showing raw registry data — it also uses a lightweight AI model to generate a short analysis or conclusion about the domain. It’s designed for SEO specialists, web developers, sysadmins, digital marketers, and cybersecurity enthusiasts who want quick and structured access to domain ownership and status details without wasting time on manual searches. What it does: Receives a domain name via webhook. Queries the WHOIS API through RapidAPI. Extracts and formats key details (registrar, creation date, expiry date, DNS, domain status, etc.). Uses AI (GPT-5-Nano) to generate a short descriptive insight about the domain. Returns everything in a responsive, styled HTML card (light + dark mode included). Requirements: A free account on RapidAPI.com. Use of the Bulk WHOIS API (includes up to 1,000 requests per month free, no credit card required). Who is it for? SEO professionals** who need to quickly check domain lifespans, expirations, and registrar info. Web developers** who want to integrate WHOIS checks into dashboards, apps, or chatbots. IT admins & security teams** who monitor domains for fraud, abuse, or expiry. Entrepreneurs & marketers** researching competitors’ domains. This template saves time, improves workflows, and makes WHOIS data both actionable and user-friendly.
by Guy
General principles This template automates the management of marketing campaign from a CRM based on Airtable, using Brevo for sending and tracking emails. It is based on two main steps: Sending emails to targeted companies in Airtable, creating an interaction record for each sent email. Real-time tracking of events (email delivered / opened / clicked, unsubscribe request) via a n8n webhook, updating the corresponding interaction or company record. This workflow provides precise tracking of marketing actions and facilitates the history of interactions with prospects or clients. Prerequisites Airtable with at least 3 tables: Company: Contains information about your clients or prospects. Interaction: Log of exchanges and events. Campaign: Information about the ongoing campaign. Brevo: A predefined email template, which can include a link to a form. API access for sending and tracking emails. Step-by-step description Part 1: Sending Emails Selecting targeted companies The workflow queries the Company table in Airtable, filtering on a tag or a specific field related to the campaign (e.g., Campaign = "1"). Preparing data for Brevo For each company, retrieves the necessary information: email address. Sending the email via Brevo Uses a Brevo Send Template node with a predefined template. Brevo returns a unique identifier for each email sent. Creating an interaction in Airtable A record is added to the Interaction table containing: Company Date and time of interaction Media = email Brevo email identifier Part 2: Tracking Events Receiving Brevo events Brevo triggers a webhook to n8n for each event: Delivered Opened Clicked Unsubscribed Matching with the interaction Based on the Brevo identifier received, the workflow finds the corresponding Interaction in Airtable. Updating the interaction The interaction status is updated based on the event (e.g., "Opened" with date and time). Managing unsubscribes In case of an unsubscribe: The workflow finds the Company associated via the interaction. A specific field in the Company table (e.g., Opt-in) is updated to "No" in order to exclude this company from future campaigns. ✅ Benefits of this template Automated sending and real-time tracking. Interaction history stored in the CRM. RGPD (European regulations) compliance through automatic unsubscribe management. Clear view of campaign effectiveness (open rates, clicks, etc.).
by Davide
This workflow automates the process of validating email addresses stored in a Google Sheets file by using the Anymail Finder API. Key Advantages ✅ Automated Lead Validation No need for manual copy-paste or bulk uploads emails are verified directly inside your existing Google Sheets. 🔎 Improved Data Quality Ensures your CRM or outreach campaigns only target valid and deliverable email addresses, reducing bounce rates. 🔄 Real-Time Updates Results are automatically updated in the spreadsheet, making it easy for your team to see which leads are safe to contact. 📈 Improves lead quality for outreach, reduces bounce rates Of course. Here is a description of the provided n8n workflow. Workflow Description: Verify Leads Email Address with Anymail Finder This workflow automates the process of checking the validity of email addresses from a Google Sheets list using the Anymail Finder API and writing the results back to the sheet. How It Works The workflow operates in a loop to process a list of leads from a Google Sheet one by one. Manual Trigger: The workflow is started manually by a user within n8n. Get Leads: The "Get Leads" node reads data from a specified Google Sheet. It is configured with a filter to only fetch rows where the "VERIFY" column is empty, ensuring it only processes new leads that haven't been checked yet. Loop Over Items: The "Split In Batches" node is used to iterate over each row (lead) retrieved from the Google Sheet. This sends each lead individually to the next node for processing. Check Email Status: For each lead, the "HTTP Request" node sends a POST request to the Anymail Finder API (/v5.1/verify-email). The email address from the current sheet row ($json["EMAIL "]) is sent in the request body. Update Email Status: The response from Anymail Finder (which contains the verification status) is received. The "Update email status" node then takes this result and writes it back to the "VERIFY" column of the original Google Sheet. It uses the row_number to identify the correct row to update, ensuring data is placed accurately. Set Up Steps To use this workflow, you need to configure the following credentials and nodes: Google Sheets Credentials: Create a credential named "Google Sheets account" of type OAuth2. Follow n8n's guide to authenticate with Google Sheets. This will give the workflow permission to read from and write to your spreadsheet. Anymail Finder Credentials: Create a credential named "Anymail Finder" of type HTTP Header Auth. In the "Name" field, enter Authorization (or the header name required by Anymail Finder's API documentation). In the "Value" field, enter your Anymail Finder API key (in the format YOUR_API_KEY). Configure Google Sheet: Ensure your Google Sheet has at least the following columns: COMPANY NAME, EMAIL (note the space), and VERIFY. The "VERIFY" column must be empty for rows you want to verify. The "Get Leads" node is filtered to only process rows where this column is blank. Activate and Execute: Once the credentials are set and the sheet ID is configured, activate the workflow. Click on the "Manual Trigger" node and execute the workflow. It will begin processing all leads with an empty "VERIFY" field. Need help customizing? Contact me for consulting and support or add me on Linkedin.
by Sk developer
An automated workflow that scrapes Shopify store information and product data using the Shopify Scraper API from RapidAPI, triggered by a user submitting a website URL, then logs data into Google Sheets for easy access and analysis. Node-by-Node Explanation On form submission** Triggers when a user submits a Shopify store website URL. Store Info Scrap Request** Sends a POST request to shopify-scraper4.p.rapidapi.com/shopinfo.php to fetch store metadata (name, location, domain, etc.). Products Scarp Request** Sends a POST request to shopify-scraper4.p.rapidapi.com/products.php to retrieve detailed product data (titles, prices, tags, etc.). Append Store Info Google Sheets** Appends store metadata into the "Shop Info" sheet in Google Sheets. Append Products Data In Google Sheets** Appends product data into the "Products" sheet in Google Sheets. Use Case Ideal for businesses or analysts who want to quickly gather Shopify store insights and product catalogs without manual data collection, enabling data-driven decision-making or competitive analysis. Benefits Automates Shopify data extraction with the powerful Shopify Scraper API on RapidAPI. Saves time by collecting and organizing data automatically into Google Sheets. Easily scalable and adaptable for multiple Shopify stores. 🔑 How to Get API Key from RapidAPI Shopify Scraper Follow these steps to get your API key and start using it in your workflow: Visit the API Page 👉 Click here to open Shopify Scraper API on RapidAPI Log in or Sign Up Use your Google, GitHub, or email account to sign in. If you're new, complete a quick sign-up. Subscribe to a Pricing Plan Go to the Pricing tab on the API page. Select a plan (free or paid, depending on your needs). Click Subscribe. Access Your API Key Navigate to the Endpoints tab. Look for the X-RapidAPI-Key under Request Headers. Copy the value shown — this is your API key. Use the Key in Your Workflow In your n8n workflow (HTTP Request node), replace: "x-rapidapi-key": "your key" with: "x-rapidapi-key": "YOUR_ACTUAL_API_KEY" `
by KlickTipp
Community Node Disclaimer: This workflow uses KlickTipp community nodes. Introduction This workflow creates a complete two-way synchronization between KlickTipp and Google Calendar. When a contact in KlickTipp is tagged, an event is automatically created in Google Calendar. If event status changes or if attendees respond, their RSVP status and event status are reflected in KlickTipp — keeping your contact database, campaigns, and event insights always up to date. Perfect for marketers, coaches, or event organizers who want to automatically send event invites and instantly capture participation status without manual updates. How it works Google Calendar → KlickTipp: This template keeps your KlickTipp list in sync with Google Calendar across the full event lifecycle. For every incoming event, the workflow follows these steps: Watch Google Calendar events Listens for: Event Created Event Updated Event Cancelled Iterate through attendees Each attendee is handled as a separate item. This ensures accurate contact updates and tagging even for large events or webinars. Filter attendees (optional) Attendees from internal or excluded email domains can be filtered out before any processing. Check if the attendee already exists in KlickTipp If the contact exists → update the contact. If the contact does not exist → subscribe the contact (with Single or Double Opt-In, depending on action). Transfer event data to KlickTipp Event details (summary, description, location, start and end time) are written into KlickTipp custom fields. Contacts always reflect the most recent event information. Route by attendee response status Attendees are routed based on their responseStatus: needsAction → contact was added to an event accepted → event confirmed declined → event declined tentative → event considered Apply tags in KlickTipp Based on event type and attendee status, the workflow applies the corresponding tags: Event created / updated Event canceled Event confirmed Event declined Event considered KlickTipp → Google Calendar: Watches for a tag like “Send an event invitation via Google Calendar”. Creates an event in Google Calendar using mapped KlickTipp fields. Setup Instructions KlickTipp Preparation Prepare custom fields Google Calendar | event summary, data type: "Single line" Google Calendar | event description, data type: "Single line" Google Calendar | event location, data type: "Single line" Google Calendar | event start datetime, data type: "Datetime" Google Calendar | event end datetime, data type: "Datetime" Prepare tags: Google Calendar | event created/updated Google Calendar | event canceled Google Calendar | event declined Google Calendar | event confirmed Google Calendar | event considered Send an event invitation via Google Calendar Prepare outbound: Activation tag: Send an event invitation via Google Calendar Activation URL: webhook URL from trigger Credential Configuration Connect your Google Calendar account using Client ID and Client Secret from the Google Cloud. Authenticate your KlickTipp connection with username/password credentials (API access required). Customization Recommended poll frequency: every 1–5 minutes for near real-time updates. Adjust to your local timezone if necessary. Each trigger works independently, allowing partial deployments if only certain event types are needed. Ensure End > Start in your data. If you prefer a fixed duration, compute End from Start + minutes in a Date & Time node. If you want a Meet link, enable “Add Google Meet video conferencing” in the Calendar node instead of pasting a Calendar URL into Location.
by Angel Menendez
This workflow enables seamless, privacy-first capture of meeting notes from your iPhone. It pairs with an iOS Shortcut that leverages Apple’s on-device transcription from the Voice Memos app and optionally passes the output to ChatGPT or a local AI model for summarization. Who it's for Anyone who wants fast, secure note capture on iOS Professionals (e.g., lawyers, therapists) who require on-device processing for privacy Obsidian users who want to sync mobile notes via Google Drive What it does You record a voice memo in the iOS Voice Memos app. The Shortcut transcribes it locally (no API or cloud involved). Optionally, a summarization step is done via ChatGPT or a replaceable local model. The data is sent to an n8n webhook, where it’s converted into a .md file. The Markdown file is uploaded to a Google Drive folder synced with your Obsidian vault. Key Benefits 🧠 Keeps your meeting notes private — no cloud APIs required 🗃️ Easily searchable in Obsidian as structured Markdown files 🛠️ Fully local if you swap out ChatGPT for a local model (can be less stable) Limitations Transcriptions longer than ~1 hour may fail or produce unstable results. Some setup required to replace ChatGPT with a local model in the Shortcut. Setup Install and configure the iOS Shortcut Replace the ChatGPT step in the Shortcut if you need full local-only processing Point the webhook in the Shortcut to your n8n instance Make sure your Obsidian vault is synced with the Google Drive folder used in the workflow Update any of the prompts in the iOS shortcut to ensure its personalized. > ⚡ Pro Tip: Use a Set node early on to clearly define the filename, title, and text so it's easier to modify this for other note types (e.g., journals, therapy sessions, etc.)
by CentralStationCRM
Workflow Overview This workflow benefits anyone who: wants to automate writing new contacts (with an associated 'Newsletter' tag) in CentralStationCRM to a Rapidmail list Tools in this workflow CentralStationCRM, the simple and intuitive CRM for small teams. Here is our API documentation if you want to modify the workflow. Slack, brings people and information together Rapidmail, the really good newsletter software Workflow Screenshot Workflow Description This workflow consists of: a schedule trigger (set to 5 pm/daily) three HTTP Requests to the CentralStationCRM API two if-Nodes as logic gates a Slack node a "Do nothing, end workflow" node The schedule trigger The schedule trigger is set to trigger at 5 pm, every day. The thinking here: If you added new contacts into CentralStationCRM during your workday, the workflow will collect them afterwards. You can of course set your own time. First HTTP Request: Get new people of the day This node talks to the CentralStationCRM API and gets every newly created person of the day. Included are the tags, adresses, associated companies, and emails of the person. First if-gate: Does the person have a "Newsletter" tag? If you tagged your person with "Newsletter" in CentralStationCRM after creating it, this if-node will see it. -> if true: go to last HTTP Request (Rapidmail list) -> if false: go to Slack node Slack node: ask if the person should get a "Newsletter" tag Pretty much what the title says. The slack user sees a private message with the question "Should <person> be on your newsletter list" and can click "yes" or "no". second if-gate: Did the user click the "Yes"-button? -> if false: end workflow (do nothing node) -> if true: go to second HTTP request node second HTTP request: give person a "Newsletter" tag in CentralStationCRM This node again talks to the CentralStationCRM API and creates a new tag for the person, called "Newsletter". This is so you know later that this person is also receiving your newsletter. last HTTP request node: write person's name and email on Rapidmail list This node uses the Rapidmail API and the Rapidmail list ID to write a person with the "Newsletter" tag on a pre-created Rapidmail list for your newsletter. Customization ideas With this workflow, you could change the interval the workflow triggers, i.e. to once per week. you'd have to change the JSON code in the second node to fetch all the new people per week instead of per day customize the slack approval message to include more information on the person than the name, i.e. the company the person works for take the beginning - give tag to person in CentralStationCRM, trigger workflow, check for tag, ask for approval in slack - and then do something else with the last node, i.e. write the person a mail in Gmail or write their info in a Google sheet or do a web research with ai on the person. Go experiment ab bit! Preconditions For this workflow, you need: a CentralStationCRM account with API access an n8n account with API access a Rapidmail account with API access a Rapidmail recipient list Have fun with our workflow!