by Vince V
This workflow automatically generates and delivers professional invoice PDFs whenever a Stripe checkout session completes. It fetches the line items from Stripe, formats them into a clean invoice with your company details, generates a branded PDF via TemplateFox, emails it to the customer, and saves a copy to Google Drive. Problem Solved Without this automation, invoicing after a Stripe payment requires: Monitoring your Stripe dashboard for completed checkouts Manually creating an invoice with the correct line items and totals Exporting as PDF and emailing it to the customer Saving the invoice to your file storage for bookkeeping Repeating this for every single payment This workflow handles all of that automatically for every Stripe checkout, including proper invoice numbering, due dates, and tax calculations. Who Can Benefit SaaS companies** billing customers through Stripe Checkout E-commerce stores** sending invoices after purchase Service providers** using Stripe for client payments Freelancers** who want automatic invoicing after payment Accountants** who need invoice PDFs archived in Google Drive Prerequisites TemplateFox account with an API key (free tier available) Stripe account with API access Gmail account with OAuth2 configured Google Drive account with OAuth2 configured Install the TemplateFox community node from Settings → Community Nodes Setting Up Your Template You need a TemplateFox invoice template for this workflow. You can: Start from an example — Browse invoice templates, pick one you like, and customize it in the visual editor to match your branding Create from scratch — Design your own invoice template in the TemplateFox editor Once your template is ready, select it from the dropdown in the TemplateFox node — no need to copy template IDs manually. Workflow Details Step 1: Stripe Trigger Fires on every completed checkout session (checkout.session.completed). This captures successful payments with full customer and product details. Step 2: Get Line Items An HTTP Request node calls the Stripe API to fetch the line items for the checkout session (product names, quantities, amounts). Stripe doesn't include line items in the webhook payload, so this separate call is required. Step 3: Format Invoice Data A Code node combines the Stripe session data and line items into a clean invoice structure: company details, client info (from Stripe customer), line items with prices, subtotal, tax, total, invoice number (auto-generated from date + session ID), and due date (Net 30). Step 4: TemplateFox — Generate Invoice Select your invoice template from the dropdown — the node automatically loads your template's fields. Map each field to the matching output from the Code node (e.g. client_company → {{ $json.client_company }}). TemplateFox generates a professional invoice PDF using your custom template. Step 5a: Email Invoice Sends the invoice PDF link to the customer via Gmail with invoice number, amount, and due date. Step 5b: Save to Google Drive Downloads the PDF and uploads it to a Google Drive folder for bookkeeping. Runs in parallel with the email step. Customization Guidance Company details:** Set your company name, address, logo, bank details, and VAT number directly in the template editor — they never change between invoices, so there's no reason to pass them from n8n. Invoice numbering:** Modify the invoiceNumber format in the Code node (default: INV-YYYY-MMDD-XXXXXX). Payment terms:** Change the due date calculation (default: Net 30). Drive folder:** Set your Google Drive folder ID in the "Save to Google Drive" node. Template:** Use any invoice template from your TemplateFox account — select it from the dropdown. Email body:** Customize the invoice email text in the "Email Invoice" node. Note: This template uses the TemplateFox community node. Install it from Settings → Community Nodes.
by Davide
This workflow automates the process of scraping real estate property listings from websites using ScrapeGraph AI, extracting structured data, and saving it to a Google Sheet. It is designed to handle paginated listing pages and can be adapted to any real estate site that uses URL parameters for pagination. NOTE: This workflow has been tested with Immobiliare.it, the #1 real estate website in Italy. However, it is designed to be adaptable by modifying the pagination parameter and the listing URL pattern, you can use it with any real estate website that structures its listings with URL-based pagination. Business Use Cases: Real estate market intelligence Lead generation for agencies Price trend analysis Property comparison dashboards CRM enrichment Competitor monitoring Key Advantages 1. ✅ Fully Automated Lead Collection Automatically collects real estate listings without manual browsing. 2. ✅ AI-Powered Extraction Uses AI instead of rigid selectors: More resilient to website layout changes Handles dynamic content better Reduces maintenance effort 3. ✅ Structured Data Output The defined JSON schema ensures: Clean database-ready data Standardized fields Easy integration with CRM or analytics tools 4. ✅ Pagination Scalability Can easily scale: Increase number of pages Change city Adapt to different portals 5. ✅ Duplicate Prevention Google Sheets uses URL matching to: Avoid duplicates Update existing records 6. ✅ Modular Architecture The workflow is modular and reusable: URL generation logic is independent Extraction schema is customizable Storage layer can be replaced (CRM, database, Airtable, etc.) 7. ✅ Cost & Time Efficiency Eliminates manual data entry Saves research time Enables automated market monitoring How it works The workflow is structured in two main phases: Listing URL Discovery The user provides a base URL, the maximum number of pages to scrape, and the pagination parameter name (e.g., pag for Immobiliare.it). A Code node generates a list of page URLs by appending the pagination parameter. Each page URL is processed through the ScrapegraphAI node, which extracts all individual listing URLs. An Information Extractor node (powered by Google Gemini) filters and validates the extracted URLs based on a defined structure. A Wait node introduces a delay between requests to avoid rate limiting. A Loop Over Items node ensures all generated page URLs are processed. Data Extraction & Storage All collected listing URLs are aggregated and split into individual items. A second loop processes each listing URL through another ScrapegraphAI node, which extracts detailed property data (title, description, price, area, bedrooms, bathrooms, floor, rooms, balcony, terrace, cellar, heating, air conditioning, image URLs) based on a JSON schema. The extracted data is then written to a Google Sheet using the Google Sheets node, with each listing stored in a new row and deduplicated based on the listing URL. The workflow is fully automated and can scale to handle multiple listing pages and hundreds of individual property URLs. Set up steps To use this workflow, follow these steps: Import the workflow into your n8n instance. Configure credentials: ScrapegraphAI: Add your API key for ScrapegraphAI. Google Gemini (PaLM): Add your Google Gemini API credentials. Google Sheets OAuth2: Authenticate with the Google account where you want to store the data. Prepare your target Google Sheet: Create a new Google Sheet (or clone this template). Note the Sheet ID (from the URL) and the sheet name (tab name) where data should be written. Customize the input parameters: In the Set params node, define: url: The base URL of the listing page (without pagination parameters). max_pages: The number of pages to scrape. page_format_value: The query parameter used for pagination (e.g., pag for Immobiliare.it). Adjust the listing URL structure (if needed): In the Extract individual URL node, update the system prompt to match the URL pattern of the target website (e.g., https://www.xxx.it/xxx/xxxx). Review the output schema: In the Extract data node, you can modify the JSON schema to match the fields you want to extract from each listing. Update the Google Sheet node: Set the correct Document ID and Sheet Name in the Update real estate listings node. Ensure the column mapping matches your sheet structure. Activate the workflow and click Execute Workflow to start scraping. 👉 Subscribe to my new YouTube channel. Here I’ll share videos and Shorts with practical tutorials and FREE templates for n8n. Need help customizing? Contact me for consulting and support or add me on Linkedin.
by Anas Ashfaq
Quick Overview This workflow collects tour details via an n8n form, analyzes your website’s brand voice with Anthropic Claude, researches real SEO keywords and Google “People Also Ask” questions with DataForSEO, then writes a structured long-form article, saves it as a Google Doc, and posts the doc link to Slack. How it works Receives tour and SEO targeting details from an n8n form submission. Uses Anthropic Claude to crawl your website and extract brand tone, style rules, banned phrases, and an ideal traveller profile. Uses Anthropic Claude to generate seed keywords, then calls DataForSEO to fetch keyword suggestions and search volumes and selects a primary keyword plus secondary keywords. Calls DataForSEO SERP API to pull top organic result titles and Google People Also Ask questions for the primary keyword. Uses Anthropic Claude to write eight article sections (title/meta, introduction, inclusions, itinerary, pricing, audience fit, best time, and an FAQ sourced from PAA questions) while enforcing accuracy rules from your form data. Compiles the sections into an HTML document, generates FAQPage JSON-LD from the FAQ answers, and uploads it as a formatted Google Doc in Google Drive. Sends a Slack message with the tour details, chosen keywords, and a direct link to the created Google Doc. Setup Add an Anthropic API credential for the Claude chat nodes used to analyze brand voice and write keywords/sections. Create a DataForSEO account and add an HTTP Basic Auth credential (email:password) for the keyword volume and SERP/PAA requests. Connect a Google Drive OAuth2 credential and ensure the Google Drive API is enabled so the workflow can create Google Docs. Connect a Slack credential and set your target channel ID in the configuration field slack_channel_id. Review and adjust the defaults in the configuration (tone, style rules, banned phrases, and data integrity rule) to match your requirements if the website analysis cannot be fetched.
by vinci-king-01
Certification Requirement Tracker with Rocket.Chat and GitLab ⚠️ COMMUNITY TEMPLATE DISCLAIMER: This is a community-contributed template that uses ScrapeGraphAI (a community node). Please ensure you have the ScrapeGraphAI community node installed in your n8n instance before using this template. This workflow automatically scrapes certification-issuing bodies once a year, detects any changes in certification or renewal requirements, creates a GitLab issue for the responsible team, and notifies the relevant channel in Rocket.Chat. It helps professionals and compliance teams stay ahead of changing industry requirements and never miss a renewal. Pre-conditions/Requirements Prerequisites An n8n instance (self-hosted or n8n.cloud) ScrapeGraphAI community node installed and activated Rocket.Chat workspace with Incoming Webhook or user credentials GitLab account with at least one repository and a Personal Access Token (PAT) Access URLs for all certification bodies or industry associations you want to monitor Required Credentials ScrapeGraphAI API Key** – Enables web scraping services Rocket.Chat Credentials** – Either: Webhook URL, or Username & Password / Personal Access Token GitLab Personal Access Token** – To create issues and comments via API Specific Setup Requirements | Service | Requirement | Example/Notes | | ------------- | ---------------------------------------------- | ---------------------------------------------------- | | Rocket.Chat | Incoming Webhook URL OR user credentials | https://chat.example.com/hooks/abc123… | | GitLab | Personal Access Token with api scope | Generate at Settings → Access Tokens | | ScrapeGraphAI | Domain whitelist (if running behind firewall) | Allow outbound HTTPS traffic to target sites | | Cron Schedule | Annual (default) or custom interval | 0 0 1 1 * for 1-Jan every year | How it works This workflow automatically scrapes certification-issuing bodies once a year, detects any changes in certification or renewal requirements, creates a GitLab issue for the responsible team, and notifies the relevant channel in Rocket.Chat. It helps professionals and compliance teams stay ahead of changing industry requirements and never miss a renewal. Key Steps: Scheduled Trigger**: Fires annually (or any chosen interval) to start the check. Set Node – URL List**: Stores an array of certification-body URLs to scrape. Split in Batches**: Iterates over each URL for parallel scraping. ScrapeGraphAI**: Extracts requirement text, effective dates, and renewal info. Code Node – Diff Checker**: Compares the newly scraped data with last year’s GitLab issue (if any) to detect changes. IF Node – Requirements Changed?**: Routes the flow based on change detection. GitLab – Create/Update Issue**: Opens a new issue or comments on an existing one with details of the change. Rocket.Chat – Notify Channel**: Sends a message summarizing any changes and linking to the GitLab issue. Merge Node**: Collects all branch results for a final summary report. Set up steps Setup Time: 15-25 minutes Install Community Node: In n8n, navigate to Settings → Community Nodes and install “ScrapeGraphAI”. Add Credentials: a. In Credentials, create “ScrapeGraphAI API”. b. Add your Rocket.Chat Webhook or PAT. c. Add your GitLab PAT with api scope. Import Workflow: Copy the JSON template into n8n (Workflows → Import). Configure URL List: Open the Set – URL List node and replace the sample array with real certification URLs. Adjust Cron Expression: Double-click the Schedule Trigger node and set your desired frequency. Customize Rocket.Chat Channel: In the Rocket.Chat – Notify node, set the channel or use an incoming webhook. Run Once for Testing: Execute the workflow manually to ensure issues and notifications are created as expected. Activate Workflow: Toggle Activate so the schedule starts running automatically. Node Descriptions Core Workflow Nodes: stickyNote – Workflow Notes**: Contains a high-level diagram and documentation inside the editor. Schedule Trigger** – Initiates the yearly check. Set (URL List)** – Holds certification body URLs and meta info. SplitInBatches** – Iterates through each URL in manageable chunks. ScrapeGraphAI** – Scrapes each certification page and returns structured JSON. Code (Diff Checker)** – Compares the current scrape with historical data. If – Requirements Changed?** – Switches path based on diff result. GitLab** – Creates or updates issues, attaches JSON diff, sets labels (certification, renewal). Rocket.Chat** – Posts a summary message with links to the GitLab issue(s). Merge** – Consolidates batch results for final logging. Set (Success)** – Formats a concise success payload. Data Flow: Schedule Trigger → Set (URL List) → SplitInBatches → ScrapeGraphAI → Code (Diff Checker) → If → GitLab / Rocket.Chat → Merge Customization Examples Add Additional Metadata to GitLab Issue // Inside the GitLab "Create Issue" node ↗️ { "title": Certification Update: ${$json.domain}, "description": What's Changed?\n${$json.diff}\n\n_Last checked: {{$now}}_, "labels": "certification,compliance," + $json.industry } Customize Rocket.Chat Message Formatting // Rocket.Chat node → JSON parameters { "text": :bell: Certification Update Detected\n>${$json.domain}\n>See the GitLab issue: ${$json.issueUrl} } Data Output Format The workflow outputs structured JSON data: { "domain": "example-cert-body.org", "scrapeDate": "2024-01-01T00:00:00Z", "oldRequirements": "Original text …", "newRequirements": "Updated text …", "diff": "- Continuous education hours increased from 20 to 24\n- Fee changed to $200", "issueUrl": "https://gitlab.com/org/compliance/-/issues/42", "notification": "sent" } Troubleshooting Common Issues No data returned from ScrapeGraphAI – Confirm the target site is publicly accessible and not blocking bots. Whitelist the domain or add proper headers via ScrapeGraphAI options. GitLab issue not created – Check that the PAT has api scope and the project ID is correct in the GitLab node. Rocket.Chat message fails – Verify webhook URL or credentials and ensure the channel exists. Performance Tips Limit the batch size in SplitInBatches to avoid API rate limits. Schedule the workflow during off-peak hours to minimize load. Pro Tips: Store last-year scrapes in a dedicated GitLab repository to create a complete change log history. Use n8n’s built-in Execution History Pruning to keep the database slim. Add an Error Trigger workflow to notify you if any step fails.
by vinci-king-01
How it works This workflow automatically scrapes commercial real estate listings from LoopNet and sends opportunity alerts to Telegram while logging data to Google Sheets. Key Steps Scheduled Trigger - Runs every 24 hours to collect fresh CRE market data AI-Powered Scraping - Uses ScrapeGraphAI to extract property information from LoopNet Market Analysis - Analyzes listings for opportunities and generates market insights Smart Notifications - Sends Telegram alerts only when investment opportunities are found Data Logging - Stores daily market metrics in Google Sheets for trend analysis Set up steps Setup time: 10-15 minutes Configure ScrapeGraphAI credentials - Add your ScrapeGraphAI API key for web scraping Set up Telegram connection - Connect your Telegram bot and specify the target channel Configure Google Sheets - Set up Google Sheets integration for data logging Customize the LoopNet URL - Update the URL to target specific CRE markets or property types Adjust schedule - Modify the trigger timing based on your market monitoring needs Keep detailed configuration notes in sticky notes inside your workflow
by Ian Kerins
Overview This n8n template automates the process of researching niche topics. It searches for a topic on Wikipedia, scrapes the relevant page using ScrapeOps, extracts the history or background section, and uses AI to generate a concise summary and timeline. The results are automatically saved to Google Sheets for easy content planning. Who is this for? Content Creators**: Quickly gather background info for videos or articles. Marketers**: Research niche markets and product histories. Educators/Students**: Generate timelines and summaries for study topics. Researchers**: Automate the initial data gathering phase. What problems it solves Time Consumption**: Manually reading and summarizing Wikipedia pages takes time. Blocking**: Scraping Wikipedia directly can sometimes lead to IP blocks; ScrapeOps handles this. Unstructured Data**: Raw HTML is hard to use; this workflow converts it into a clean, structured format (JSON/CSV). How it works Define Topic: You set a keyword in the workflow. Locate Page: The workflow queries the Wikipedia API to find the correct page URL. Smart Scraping: It uses the ScrapeOps Proxy API to fetch the page content reliably. Extraction: A code node intelligently parses the HTML to find "History", "Origins", or "Background" sections. AI Processing: GPT-4o-mini summarizes the text and extracts key dates for a timeline. Storage: The structured data is appended to a Google Sheet. Setup steps (~ 5-10 minutes) ScrapeOps Account: Register for a free API key at ScrapeOps. Configure the ScrapeOps Scraper node with your API key. OpenAI Account: Add your OpenAI credentials to the Message a model node. Google Sheets: Create a Google Sheet. You can duplicate this Template Sheet (copy the headers). Connect your Google account to the Append row in sheet node and select your new sheet. Pre-conditions An active ScrapeOps account. An OpenAI API key (or another LLM credential). A Google account for Sheets access. Disclaimer This template uses ScrapeOps as a community node. You are responsible for complying with Wikipedia's Terms of Use, robots directives, and applicable laws in your jurisdiction. Scraping targets may change at any time; adjust render/scroll/wait settings and parsers as needed. Use responsibly for legitimate business purposes.
by Kevin Meneses
What this workflow does This template extracts high-intent SEO keywords from any web page and turns them into a ranked keyword list you can use for content planning, landing pages, and SEO strategy. It runs in 3 phases: Scrape the target URL* with Decodo Decodo – Web Scraper for n8n Use AI to extract seed keywords* and understand the page topic Enrich each seed keyword with real Google SERP data via SerpApi* (related searches + questions + competitors), then apply a JavaScript scoring system to rank the best opportunities The final output is saved to Google Sheets as a clean table of ranked keywords. Who this workflow is for SEO consultants and agencies SaaS marketers and growth teams Founders validating positioning and messaging Content teams looking for “what people actually search for” This workflow is especially useful when you want keywords with commercial / solution intent, not generic single-word terms. Workflow overview Phase 1 — Scrape & clean page content Reads the URL from Google Sheets Scrapes the page via Decodo Cleans HTML into plain text (token-friendly) Phase 2 — AI keyword extraction AI returns a structured JSON with: brand / topic 5–10 mid-tail seed keywords intent + audience hints Phase 3 — SERP enrichment + scoring Uses SerpApi to fetch: related searches People Also Ask questions competitor domains Scores and ranks keywords based on: -- source type (related searches / PAA / organic) -- frequency across seeds -- modifiers (pricing, best, free, docs, etc.) -- mid-tail length preference Setup (step by step) 1) Google Sheets (input) Create a sheet with: Column name: urls One URL per row 2) Google Sheets (output) Create an output sheet with columns like: keyword score intent_hint source_type Tip: Clear the output sheet before each run if you want a clean export. 3) Decodo Add your Decodo credentials The URL is taken automatically from Google Sheets Decodo – Web Scraper for n8n 4) SerpApi Add your SerpApi key in the SerpApi node 5) AI Model Connect your preferred AI model (Gemini / OpenAI) The prompt is optimized to output valid JSON only Self-hosted disclaimer This is a community template. You must configure your own credentials (Google Sheets, Decodo, SerpApi, AI). Results depend on page accessibility and page content quality.
by koichi nagino
Overview This workflow, "Mood Graph Studio," offers a comprehensive solution to track and visualize your emotional well-being. By simply inputting a single sentence about your mood, this template uses AI to perform a sentiment analysis, generates a visual graph via Wolfram Alpha, provides personalized feedback, and logs everything to Google Sheets. It is designed for anyone interested in mindfulness, self-reflection, or quantified self-tracking. How It Works The workflow is divided into two main API functionalities and a manual trigger for easy testing. Analyze a Single Mood (/mood endpoint) An AI Agent (OpenAI) quantifies your mood text into valence (positivity) and energy (activity). A query is sent to Wolfram Alpha to generate a simple linear graph based on the score. A second AI Agent provides short, encouraging advice in Japanese. The complete entry is logged as a new row in Google Sheets. Returns a JSON response containing the full analysis and the graph image. Generate Mood History Graph (/history endpoint) Retrieves historical mood data for a specified user from Google Sheets. A Code node formats the data into a time-series plot query. Wolfram Alpha** generates a line graph visualizing the mood trend over time. The resulting graph is automatically posted to Slack. How to Set Up 1. Credentials You must add your own credentials for the following services in the respective nodes: OpenAI**: Used in both Chat Model nodes. Google Sheets**: Used in the "Log Mood" and "Get History" nodes. Slack**: Used in the "Send History" node. 2. Wolfram Alpha App ID This workflow uses the HTTP Request node to call the Wolfram Alpha API. Get a free App ID from the Wolfram|Alpha Developer Portal. Paste your App ID into the appid parameter value in both Generate...Graph nodes. 3. Google Sheet Configuration Create a new Google Sheet. Paste the Sheet ID into the Document ID field in both Google Sheets nodes. Crucially**, ensure the first row has the following headers exactly (case-sensitive): userId, moodText, valence, energy, createdAt, wolframQuery, feedback How to Use For Testing: Use the Manual Trigger. Modify the sample text in the "Set Test Data" node and click "Execute Workflow" on the canvas. For Production: Activate the workflow. Send POST requests to the Production URL of the Webhook nodes.
by Yaron Been
Description This workflow automatically extracts Amazon product reviews and identifies hidden friction signals that are costing you conversions. It helps ecommerce and product teams turn customer complaints into measurable revenue opportunities. Overview This workflow uses Bright Data's Web Scraper API to collect Amazon reviews, then scans them for friction signals like delivery issues, return complaints, sizing problems, and product defects. AI classifies each friction signal by revenue impact, scores severity, and prioritizes the most costly conversion leaks. Results are split into: Checkout Optimization List** Delivery & Returns Risk Report** Both are logged into Google Sheets for immediate action. Tools Used n8n**: Automation platform that orchestrates the workflow Bright Data**: Scrapes Amazon product reviews at scale without getting blocked OpenRouter**: AI-powered friction classification, revenue impact estimation, and prioritization Google Sheets**: Logs checkout optimization opportunities, delivery risks, and errors How to Install 1. Import the Workflow Download the .json file and import it into your n8n instance. 2. Configure Bright Data Add your Bright Data API credentials to all Bright Data nodes. 3. Configure OpenRouter Add your OpenRouter API key for AI friction analysis. 4. Set Up Google Sheets Create a spreadsheet following the "Google Sheets Setup" sticky note inside the workflow. Connect each Google Sheets node to your document. 5. Customize Edit the configuration node to define: Target Amazon product URL Review scope Analysis depth Use Cases Ecommerce Managers Find out exactly why customers are dropping off and fix the highest-impact issues first. Product Teams Identify recurring product defects or sizing issues from real customer feedback at scale. CX / Support Teams Spot delivery and returns patterns before they become widespread complaints. Conversion Rate Optimization Prioritize checkout and UX improvements based on actual revenue impact data. Competitive Analysis Analyze competitor product reviews to uncover weaknesses you can capitalize on. 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) Tags #n8n #automation #brightdata #webscraping #ecommerce #conversionrate #amazonreviews #customerfriction #productreviews #revenueoptimization #checkoutoptimization #deliveryissues #returnrates #cro #n8nworkflow #workflow #nocode #businessintelligence #customerexperience #productfeedback #reviewanalysis #ecommerceautomation #amazondata #sentimentanalysis #customerinsights
by Firecrawl
What this does Uses Firecrawl to scrape any company website and extract structured business signals from it. The enriched profile is automatically saved to Supabase. A self-hosted, free alternative to paid enrichment APIs like Apollo or Clay, powered by Firecrawl. How it works Webhook receives a POST request with a url field (bare domain or full URL) Verify URL node validates and normalizes the domain Firecrawl scrapes the target website and searches for additional company data AI Agent (OpenRouter) extracts structured business signals from the scraped content Structured Output Parser formats the result into a clean JSON profile Supabase checks for duplicates before inserting, then saves the enriched profile Respond to Webhook returns the enriched result (or a 422 error if the URL was invalid) Business signals extracted Company name, industry, pricing model, free trial availability, employee size signal, funding stage, tech stack and integrations detected, target customer profile, trust signals (certifications, reviews, customer count), hiring status and open roles count. Requirements Firecrawl API key OpenRouter API key (or swap for any OpenAI-compatible model) Supabase project (setup SQL provided below) Setup Create a Supabase project and run the following SQL in the SQL editor: CREATE TABLE lead_enrichment ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), created_at TIMESTAMPTZ DEFAULT now(), updated_at TIMESTAMPTZ DEFAULT now(), domain TEXT NOT NULL UNIQUE, company_name TEXT, industry TEXT, pricing_model TEXT, has_free_trial BOOLEAN, employee_signal TEXT, funding_stage TEXT, tech_stack TEXT[], integrations TEXT[], target_customer TEXT, trust_signals TEXT[], hiring BOOLEAN, open_roles_count INT, raw_scraped_text TEXT, enrichment_source TEXT DEFAULT 'firecrawl' ); CREATE OR REPLACE FUNCTION update_updated_at() RETURNS TRIGGER AS $$ BEGIN NEW.updated_at = now(); RETURN NEW; END; $$ LANGUAGE plpgsql; CREATE TRIGGER set_updated_at BEFORE UPDATE ON lead_enrichment FOR EACH ROW EXECUTE FUNCTION update_updated_at(); Add your Firecrawl API key as a credential in n8n Add your OpenRouter API key as a credential (or swap for any OpenAI-compatible provider) Add your Supabase credentials (project URL + service role key) Activate the workflow How to use Send a POST request to the webhook URL: curl -X POST https://your-n8n-instance/webhook/your-id \ -H "Content-Type: application/json" \ -d '{"url": "firecrawl.dev"}' `
by Wan Dinie
AI Website Analyzer to Product Ideas with FireCrawl and GPT-4.1 This n8n template demonstrates how to use AI to analyze any website and generate product ideas or summaries based on the website's content and purpose. Use cases are many: Try analyzing competitor websites, discovering product opportunities, understanding business models, or generating insights from landing pages! Good to know At time of writing, Firecrawl offers up to 500 free API calls. See Firecrawl Pricing for updated info. OpenAI API costs vary by model. GPT-3.5 is cheaper while GPT-4 and above offer deeper analysis but cost more per request. How it works We'll collect a website URL via a manual form trigger. The URL is sent to the Firecrawl API, which deeply crawls and analyzes the website content. Firecrawl returns the scraped data, including page structure, content, and metadata. The scraped data is then sent to OpenAI's API with a custom prompt. OpenAI generates an AI-powered summary analyzing what the website is doing, its purpose, and potential product ideas. The final output is displayed or can be stored for further use. How to use The manual trigger node is used as an example, but feel free to replace this with other triggers such as webhook or even a form. You can analyze multiple URLs by looping through a list, but of course, the processing will take longer and cost more. Requirements Firecrawl API key (get free 500 calls at https://firecrawl.dev) OpenAI API key for AI analysis Valid website URLs to analyze Customizing this workflow Change the output format from HTML to JSON, Markdown, or plain text by editing the Firecrawl parameters. Modify the AI prompt to focus on specific aspects like pricing strategy, target audience, or UX analysis. Upgrade to GPT-4.1, GPT-5.1, or GPT-5.2 for more advanced and detailed analysis. Add a webhook trigger to analyze websites automatically from other apps or services. Store results in a database like Supabase or Google Sheets for tracking competitor analysis over time.
by Daniel Shashko
How it Works This workflow automates competitive price intelligence using Bright Data's enterprise web scraping API. On a scheduled basis (default: daily at 9 AM), the system loops through configured competitor product URLs, triggers Bright Data's web scraper to extract real-time pricing data from each site, and intelligently compares competitor prices against your current pricing. The workflow handles the full scraping lifecycle: it sends scraping requests to Bright Data, waits for completion, fetches the scraped product data, and parses prices from various formats and website structures. All pricing data is automatically logged to Google Sheets for historical tracking and trend analysis. When a competitor's price drops below yours by more than the configured threshold (e.g., 10% cheaper), the system immediately sends detailed alerts via Slack and email to your pricing team with actionable intelligence. At the end of each monitoring run, the workflow generates a comprehensive daily summary report that aggregates all competitor data, calculates average price differences, identifies the lowest and highest competitors, and provides a complete competitive landscape view. This eliminates hours of manual competitor research and enables data-driven pricing decisions in real-time. Who is this for? E-commerce businesses and online retailers needing automated competitive price monitoring Product managers and pricing strategists requiring real-time competitive intelligence Revenue operations teams managing dynamic pricing strategies across multiple products Marketplaces competing in price-sensitive categories where margins matter Any business that needs to track competitor pricing without manual daily checks Setup Steps Setup time: Approx. 30-40 minutes (Bright Data configuration, credential setup, competitor URL configuration) Requirements: Bright Data account with Web Scraper API access Bright Data API token (from dashboard) Google account with a spreadsheet for price tracking Slack workspace with pricing channels SMTP email provider for alerts Sign up for Bright Data and create a web scraping dataset (use e-commerce template for product data) Obtain your Bright Data API token and dataset ID from the dashboard Configure these nodes: Schedule Daily Check: Set monitoring frequency using cron expression (default: 9 AM daily) Load Competitor URLs: Add competitor product URLs array, configure your current price, set alert threshold percentage Loop Through Competitors: Automatically handles multiple URLs (no configuration needed) Scrape with Bright Data: Add Bright Data