by Lucas Perret
This workflow monitor G2 reviews URLS. When a new review is published, it will: trigger a Slack notification record the review in Google Sheets To install it, you'll need: access to Slack, Google Sheets and ScrapingBee Full guide here: https://lempire.notion.site/Scrape-G2-reviews-with-n8n-3f46e280e8f24a68b3797f98d2fba433?pvs=4
by Jonathan
This workflow takes Dialpad call information for an answered call and pushes it into Syncro as either a ticket or an update to an existing ticket. You will need to have a workflow for each technician at this time. It also saves call/ticket information to a Google Sheet to be queried by the dialpad_to_syncro_timer.json workflow. This will match to inbound and outbound calls, so if that's not desired you need to add in an IF to only proceed on either inbound or outbound calls. > This workflow is part of an MSP collection, The original can be found here: https://github.com/bionemesis/n8nsyncro
by Ranjan Dailata
Who this is for This workflow is designed for Finance teams, accounting professionals, and automation engineers. Use Case: Automates processing of invoice submissions received via JotForm. Core Function:** Extracts structured data such as: Invoice number Client information Totals and tax amounts Line items or services Key Benefit:** Eliminates manual data entry, saving time and reducing human error. Automation Goal:** Streamline document handling with AI-powered PDF parsing and structured output generation. Ideal users include: Accounting or finance teams handling form-based invoice uploads Automation specialists using n8n for document processing Developers integrating invoice data into Google Sheets or CRMs What problem this workflow solves Manually extracting structured data from invoice PDFs submitted through JotForm is time-consuming, error-prone, and repetitive. This workflow solves that by: Automatically receiving the PDF through JotForm’s webhook Extracting structured fields (invoice number, company, client, line items, totals, etc.) using GPT-4-mini Saving the extracted data directly to Google Sheets Writing structured JSON data to disk for archival or further processing What this workflow does Webhook Trigger (JotForm → n8n) JotForm submission sends invoice data and attachment link to n8n. Parse Submission & Extract Metadata Extracts submission metadata (form ID, user details, invoice number, file link, etc.) using the Information Extractor node. Download PDF Attachment Fetches the uploaded PDF from JotForm’s secure file URL via the HTTP Request node, authenticated using a JotForm API key. Store & Process File Saves the invoice to disk and prepares it for AI processing. Extract Invoice Text Content Uses the Extract from File node to parse text from the PDF document. AI-Powered Structured Extraction (OpenAI GPT-4.1-mini) Sends the extracted text to a LangChain LLM Chain with a Structured Output Parser, ensuring consistent JSON output aligned with a defined schema. Save Extracted Data Writes structured JSON to disk Appends parsed results to Google Sheets for easy reporting Setup Instructions Prerequisites A JotForm account with a form containing an invoice PDF upload field You may build the invoice Jotform by leveraging the Jotform Templates A Google Sheets account with a connected spreadsheet OpenAI** n8n running locally or on a server with public webhook access (e.g. via loca.lt, ngrok, or n8n.cloud) Make sure to get the Jotform API Key via the Jotform Account API Key Steps Import the provided JSON into n8n Go to n8n → Workflows → Import from File/Clipboard Paste the provided JSON definition Configure Webhook Copy the webhook URL from the Webhook node Paste it into your JotForm’s Settings → Integrations → Webhook URL Set API Keys & Credentials Ensure the Jotform API key has been setup to download the Jotform PDF document Ensure your Google Sheets and OpenAI credentials are connected Test Submission Submit your JotForm with an invoice PDF n8n workflow will trigger automatically Check Outputs Open your Google Sheet to see structured invoice entries Check the disk folder (e.g., C:\Invoices) for JSON exports How to customize this workflow Change AI Model** Use the OpenAI Chat Model for Structured Data node. → Replace gpt-4.1-mini with gemini-1.5-pro or any other LLM node of your choice. Adjust Output Schema** Modify the Structured Output Parser node. → Edit the JSON schema to match your desired output fields and format. Save to a Different Location** In the Write the Structured Invoice to Disk node, → Update the file path pattern (e.g. /data/invoices/{{invoiceId}}.json). Log to a Database Instead of Google Sheets** Replace the Append or Update Row in Sheet node → with a MySQL or PostgreSQL node for database logging. Add Notifications** Extend the workflow by adding Slack or Email nodes → to send alerts when a new invoice extraction is completed. Summary The Structured Invoice Data Extraction from JotForm PDFs via Google Gemini, Converts JotForm-uploaded invoice PDFs into structured financial data automatically. Key Features: No manual parsing fully automated Works with any invoice layout via AI Saves structured results to Google Sheets + JSON file Extensible for CRMs, QuickBooks, or ERP sync
by Tom
This workflow shows a low code approach to creating a HTML table based on Google Sheets data. It's similar to this workflow, but allows fully customizing the HTML output. To run the workflow: Make sure you have a Google Sheet with a header row and some data in it. Grab your sheet ID: Add it to the Google Sheets node: Activate the workflow or execute it manually Visit the URL provided by the webhook node in your browser (production URL if the workflow is active, test URL if the workflow is executed manually)
by Tom
This simple workflow demonstrates how to get an end user's browser to download a file. It makes use of the Content-Disposition header to set a filename and control the browser behaviour. A use case could be the download of a PDF file at the end of an application process or to export data from a database without replacing the current page content in the browser. With this approach, the current page remains open and the file is simply downloaded instead: The original idea was first present here by @dickhoning in the n8n community.
by Miquel Colomer
This workflow allows extracting data from multiple pages website. The workflow: 1) Starts in a country list at https://www.theswiftcodes.com/browse-by-country/. 2) Loads every country page (https://www.theswiftcodes.com/albania/) 3) Paginates every page in the country page. 4) Extracts data from the country page. 5) Saves data to MongoDB. 6) Paginates through all pages in all countries. It uses getWorkflowStaticData('global') method to recover the next page (saved from the previous page), and it goes ahead with all the pages. There is a first section where the countries list is recovered and extracted. Later, I try to read if a local cache page is available and I recover the cached page from the disk. Finally, I save data to MongoDB, and we paginate all the pages in the country and for all the countries. I have applied a cache system to save a visited page to n8n local disk. If I relaunch workflow, we check if a cache file exists to discard non-required requests to the webpage. If the data present in the website changes, you can apply a Cron node to check the website once per week. Finally, before inserting data in MongoDB, the best way to avoid duplicates is to check that swift_code (the primary value of the collection) doesn't exist. I recommend using a proxy for all requests to avoid IP blocks. A good solution for proxy plus IP rotation is scrapoxy.io. This workflow is perfect for small data requirements. If you need to scrape dynamic data, you can use a Headless browser or any other service. If you want to scrape huge lists of URIs, I recommend using Scrapy + Scrapoxy.
by Eduard
⚙️🛠️🚀🤖🦾 This template is a PoC of a ReAct AI Agent capable of fetching random pages (not only Wikipedia or Google search results). On the top part there's a manual chat node connected to a LangChain ReAct Agent. The agent has access to a workflow tool for getting page content. The page content extraction starts with converting query parameters into a JSON object. There are 3 pre-defined parameters: url** – an address of the page to fetch method** = full / simplified maxlimit** - maximum length for the final page. For longer pages an error message is returned back to the agent Page content fetching is a multistep process: An HTTP Request mode tries to get the page content. If the page content was successfuly retrieved, a series of post-processing begin: Extract HTML BODY; content Remove all unnecessary tags to recuce the page size Further eliminate external URLs and IMG scr values (based on the method query parameter) Remaining HTML is converted to Markdown, thus recuding the page lengh even more while preserving the basic page structure The remaining content is sent back to an Agent if it's not too long (maxlimit = 70000 by default, see CONFIG node). NB: You can isolate the HTTP Request part into a separate workflow. Check the Workflow Tool description, it guides the agent to provide a query string with several parameters instead of a JSON object. Please reach out to Eduard is you need further assistance with you n8n workflows and automations! Note that to use this template, you need to be on n8n version 1.19.4 or later.
by siyad
Workflow Description: This workflow automates the synchronization of product data from a Shopify store to a Google Sheets document, ensuring seamless management and tracking. It retrieves product details such as title, tags, description, and price from Shopify via GraphQL queries. The outcome is a comprehensive list of products neatly organized in Google Sheets for easy access and analysis. Key Features: Automated: Runs on a schedule you define (e.g., daily, hourly) to keep your product data fresh. Complete Product Details: Retrieves titles, descriptions, variants, images, inventory, and more. Cursor-Based Pagination: Efficiently handles large product sets by navigating pages without starting from scratch. Google Sheets Integration: Writes product data directly to your designated sheets. Set up Instructions: Set up GraphQL node with Header Authentication for Shopify: Create Google Sheet Credentials: Follow this guide to set up your Google Sheet credentials for n8n: https://docs.n8n.io/integrations/builtin/credentials/google/ Choose your Google Sheet: Select the sheet where you want product information written. For the setup, we need a document with two sheets: 1. for storing Shopify data 2. for storing cursor details. Google sheet template : https://docs.google.com/spreadsheets/d/1I6JnP8ugqmMD5ktJlNB84J1MlSkoCHhAEuCofSa3OSM Schedule and run: Decide how often you want the data refreshed (daily, hourly, etc.) and let n8n do its magic!
by Eduard
🚀 Supercharge Your Website Indexing with This Powerful n8n Workflow! 🌐 Google page indexing too slow? Tired of manually clicking through each page in the Google Search Console? 😴 Say goodbye to that tedious process and hello to automation with this n8n workflow! 🎉 **NB: this workflow was tested with sitemap.xml generated by Ghost CMS and WordPress. Reach out to Eduard if you need help adapting this workflow to your specific use-case!** ⚙️ How this automation works 📅 The workflow runs on a schedule or when you click "Test workflow". 🌐 It fetches the website's primary sitemap.xml and extracts all the content-specific sitemaps (this is a typical structure of the sitemap). 📑 Each content-specific sitemap is then parsed to retrieve the individual page data. 🔄 The extracted page data is converted to JSON format for easy manipulation. 🗃️ The lastmod (last modified date) and loc (page URL) fields are assigned to each page entry to ensure compliance with the Sitemap protocol. 🔀 The page entries are sorted by the lastmod field in descending order (newest to oldest). 🔁 The workflow then loops over each page entry and performs the following steps: 🔍 Checks the URL metadata in the Google Indexing API. ✅ If the page is new or has been updated since the last indexing request, it sends a request to the Google Indexing API to update the URL. ⏳ Wait a sec and move on with the next page. 🌟 Benefits ⏰ Save time by automating the indexing process. 🎯 Ensure all your website pages are consistently indexed by Google. 🚀 Improve your website's visibility and search engine rankings. 🛠️ Customize the workflow to fit your specific CMS and requirements. 🔧 Getting started To start using this powerful n8n workflow, follow these steps: ☑️ Make sure to verify the website ownership in the Google Search Console. 👨💻 Import the workflow JSON into your n8n instance. Edit the Get sitemap.xml node and update the URL with your website's valid sitemap.xml 🔑 Set up the necessary credentials for the Google Indexing API. 🎚️ Adjust the schedule trigger to run the workflow at your desired frequency. 🎉 Sit back and let the workflow handle the indexing process for you! Ready to take your website indexing to the next level? 🚀 Try this workflow now and see the difference it makes! 😊 ⚠️ IMPORTANT NOTE 1 Need help with connecting Google Cloud Platform to n8n? Check out our article on connecting Google Sheets to n8n. The process is mainly the same. When activating Google APIs, make sure to add Web Search Indexing API. Also, in the credential page of n8n, add the https://www.googleapis.com/auth/indexing scope: Check out Yulia's page for more n8n workflows! ⚠️ IMPORTANT NOTE 2 Free Google Cloud Platform account allows (re)indexing only 200 pages per day. If your website has more, then the workflow will automatically fail on quota limit ⛔. Next day it will skip the previously added items and continue with remaining pages. Example:* Assuming you have a free Google account, 500 pages on your website and they don't change for 3 days: On the first day 200 pages will be added for indexing and the workflow will fail due to quota limits. On the second day, the workflow will check 200 pages again and skip them (because the date of re-indexing is later then the page last modified date). The next 200 pages will be added to indexing. Workflow will fail again due to quota limits. On the third day 400 pages will be checked and skipped, the last 100 pages will be added for indexing and the workflow finishes successfully.
by ConvertAPI
Who is this for? For developers and organizations that need to convert image files to PDF. What problem is this workflow solving? The file format conversion problem. What this workflow does Downloads the JPG file from the web. Converts the JPG file to PDF. Stores the PDF file in the local file system. How to customize this workflow to your needs Open the HTTP Request node. Adjust the URL parameter (all endpoints can be found here). Add your secret to the Query Auth account parameter. Please create a ConvertAPI account to get an authentication secret. Optionally, additional Body Parameters can be added for the converter.
by Yaron Been
This workflow contains community nodes that are only compatible with the self-hosted version of n8n. This workflow automatically tracks local search trends and geographic-specific search patterns to optimize local SEO and marketing strategies. It saves you time by eliminating the need to manually research local search behavior and provides location-based insights for targeted marketing campaigns. Overview This workflow automatically scrapes local search results, geographic search trends, and location-based query data to understand regional search behavior and local market opportunities. It uses Bright Data to access location-specific search data and AI to intelligently analyze local trends and optimization opportunities. Tools Used n8n**: The automation platform that orchestrates the workflow Bright Data**: For scraping location-based search data without being blocked OpenAI**: AI agent for intelligent local search trend analysis Google Sheets**: For storing local search trend data and geographic insights How to Install Import the Workflow: Download the .json file and import it into your n8n instance Configure Bright Data: Add your Bright Data credentials to the MCP Client node Set Up OpenAI: Configure your OpenAI API credentials Configure Google Sheets: Connect your Google Sheets account and set up your local trends tracking spreadsheet Customize: Define target locations and local search monitoring parameters Use Cases Local SEO**: Optimize for location-specific search queries and trends Regional Marketing**: Tailor campaigns to local search behavior and preferences Multi-location Businesses**: Track search trends across different geographic markets Market Expansion**: Identify new geographic opportunities based on search trends Connect with Me Website**: https://www.nofluff.online YouTube**: https://www.youtube.com/@YaronBeen/videos LinkedIn**: https://www.linkedin.com/in/yaronbeen/ Get Bright Data**: https://get.brightdata.com/1tndi4600b25 (Using this link supports my free workflows with a small commission) #n8n #automation #localsearch #localseo #searchtrends #brightdata #webscraping #geographictrends #n8nworkflow #workflow #nocode #localmarketing #regionalseo #locationbased #localbusiness #searchgeography #localtrends #geoseo #localdata #regionalmarketing #localanalytics #geographicseo #localsearchdata #localoptimization #regionalsearch #locationmarketing #localsearchtrends #geomarketing #localinsights #regionalsearch
by Khairul Muhtadin
Automate Outreach Prospect automates finding, enriching, and messaging potential partners (like restaurants, malls, and bars) using Apify Google Maps scraping, Perplexity enrichment, OpenAI LLMs, Google Sheets, Pinecone knowledge, and WhatsApp sending via GOWA. It turns a manual, slow outreach funnel into a repeatable pipeline so your team spends time closing deals instead of copy-pasting contact details. ⚠️ Important Disclaimer This workflow uses community nodes for WhatsApp functionality: GOWA WhatsApp HTTP API 💡 Why Use Automate Outreach Prospect? Faster prospecting:** Scrape up to 150 leads per search (jumlah leads = 150) and queue them for outreach in minutes, cutting manual research time from days to hours. Fixes the busywork:** Automatically enrich missing contact data and only send messages to records with phone numbers, so you stop chasing dead leads. Measurable lift:** Enrich in batches (enrichment batch size = 20), improving outbound readiness and increasing contactable leads per campaign by dozens each run. Better conversions with context:** Use a searchable company knowledge base (Pinecone + LlamaIndex) so replies are handled with context — less robotic, more relevant. Yes, your bot can sound like a helpful human (minus the coffee breath). ⚡ Perfect For Sales Ops:** Teams that need to scale partner outreach without hiring a mini-empire of SDRs. Growth Marketers:** People who want repeatable local outreach campaigns (mall, restaurant, bar categories). Small Biz Owners:** Quick way to build partnership lists and automate first outreach without becoming a spreadsheet hermit. 🔧 How It Works ⏱ Trigger Manual scrape start or scheduled jobs: Daily Outbound Schedule, Schedule Outbound message, or Knowledge Base Updated Trigger. 📎 Process Apify Google Maps Scraper gathers business listings (location, phone, socials). Results are fetched and saved to Google Sheets (Raw Data). Unenriched records are split and enriched via Perplexity, then saved back. 🤖 Smart Logic OpenAI LLM creates personalized initial messages, and a Reply Handler AI Agent, uses Pinecone/knowledge embeddings to interpret replies and decide next actions (save PICs, request meeting, send proposal). 💌 Output Outbound messages are sent over WhatsApp using GOWA nodes (typing indicators, simulated typing delays, read receipts) and replies are handled & stored; qualified PIC contacts are appended to a Leads sheet. 🗂 Storage Google Sheets is the central datastore (Raw Data, Leads Collected). Knowledge base lives in Google Drive and Pinecone (n8n-recharge, namespace CompanyKnowledgeBased). Conversation memory stored in Postgres/Neon. 🔐 Quick Setup Import Workflow: Import JSON file to your n8n instances Add Credentials: Google Sheets OAuth2 Google Drive OAuth2 Apify API token OpenAI API Perplexity API Pinecone API Cohere API LlamaIndex Cloud key GOWA (WhatsApp) credentials WAHA webhook (optional) PostgreSQL/Neon Customize Parameters: Scraping parameters (Location Category, lokasi, jumlah leads, minimum Stars, Skip Closed Place) Message templates/time greetings Enrichment batch size Update Configuration: Google Drive doc ID Google Sheets ID Apify actor config Pinecone index name Pinecone namespaces LlamaIndex endpoints (if used) Test Setup: Run a manual scrape with a real location and send a single outbound message to verify WhatsApp delivery and reply handling. 🧩 Required Services Active n8n instances Google Sheets & Google Drive accounts (OAuth2) Apify account & actor access (Google Maps Scraper) OpenAI API key (for LLMs & embeddings) Perplexity API key (enrichment) Pinecone account (vector index n8n-recharge) Cohere API (reranker, optional) LlamaIndex Cloud (optional document parsing) GOWA / WA WhatsApp setup (or WAHA alternative) PostgreSQL/Neon for conversation memory 🧠 Workflow Nodes Triggers & Scheduling Incoming message Manual Trigger - Start Scraping Daily Outbound Schedule Schedule Outbound message Knowledge Base Updated Trigger Data Collection & Processing Configure Scraping Parameters Execute Google Maps Scraper Fetch Scraped Business Data Save Raw Business Leads Get Unenriched Records Limit Enrichment Batch Size Split Records for Processing Data Enrichment Business Data Enrichment Parse Enrichment Response Save Enriched Business Data Outbound Messaging Get Outbound Candidates Limit Outbound Batch Size Validate Phone Number Exists Prepare Outbound Session Data Outbound Message Generator Outbound Message LLM Format Outbound Message Data WhatsApp Communication Show Typing Indicator - Outbound Simulate Typing Delay - Outbound Send Outbound WhatsApp Message Mark as Contacted Extract WhatsApp Session Data Reply Handling Reply Handler AI Agent Reply Handler LLM Format Reply Message Data Show Typing Indicator - Reply Simulate Typing Delay - Reply Send WhatsApp Reply Save Lead Contact Information Knowledge Management Store Knowledge Embeddings Query Knowledge Base Reply Conversation Memory Outbound Conversation Memory Made by: Khaisa Studio Need custom work? Contact Me