by iamvaar
Explanation video: https://youtu.be/QjbA-tFYCFE?si=--C36KlSgABzteoB Workflow Overview This automation handles what happens right after a customer makes a purchase on your online form. It automatically shares a document with them, records the sale in a spreadsheet, uses AI to write a personalized thank-you email, and then sends it to their inbox. Prerequisites Before you can use this workflow, you'll need to have a few things set up and ready: 1. A Configured JotForm You need an active JotForm account with a form that is set up to sell a product. The form must include: Required Fields:** Full Name, Email Address, and Phone Number. Product List:** An element where customers can select and pay for a product. Active Payment Integration:** A payment gateway (like Stripe or PayPal) must be connected and activated so the form can process live transactions. 2. A Google Sheet Create a blank Google Sheet to log your sales. It should have columns (headers) prepared to receive the customer data, such as: name email phone products amount of sale 3. A Digital Product in Google Drive The digital product you want to deliver to your customers (e.g., a PDF guide, a document, a link to a video) must be uploaded to your Google Drive. You'll need this file ready to be selected within the workflow. Here is the node by node explanation: 1. JotForm Trigger: "Wait for a New Order" Node:** JotForm Trigger This is the starting point. The workflow is constantly watching a specific JotForm you've set up. As soon as a customer fills out the form and submits their purchase, this node catches their information and kicks off the automation. It passes along all the customer's details—like their name, email, and what they bought—to the next step. 2. Google Drive: "Share a File" Node:** Share file Once an order comes in, this step automatically shares a specific file from your Google Drive with the customer. It takes the customer's email address from the form and instantly gives them "editor" access to a pre-selected document, like a welcome guide or a digital product. 3. Google Sheets: "Log the Sale" Node:** Append or update row in sheet Next, the workflow logs the purchase details in a Google Sheet. It neatly organizes the customer's name, email, and order information into a new row. This keeps your sales records automatically updated. If a customer with the same email buys again, the node is smart enough to just update their existing row instead of creating a duplicate entry. 4. AI Agent: "Write a Thank-You Email" Node:** AI Agent (using Google Gemini) This is the creative part of the workflow. This node acts like an AI assistant that writes a brand new, personalized thank-you email for each customer. It follows a specific set of instructions (a prompt) you've given it, which includes: Greeting the customer by their name. Mentioning the specific product they just purchased. Inviting them to join an exclusive online community (like Discord) with a clickable link. Signing off with your company's name. The AI is specially configured to generate a ready-to-send email, complete with a subject line and a professionally formatted HTML body. 5. Gmail: "Send the Email" Node:** Send a message This is the final step. The workflow takes the personalized email written by the AI and sends it directly to the customer from your Gmail account. It automatically fills in the "To" field with the customer's email, uses the AI-generated subject line, and adds the custom message body. After this step, the automation is complete for that customer.
by Kaden Reese
AI-Powered Mortgage Rate Updates with Client Messaging Keep your clients informed without the repetitive work. This workflow automatically pulls the latest mortgage rates, cleans the data, and uses AI to craft polished messages you can send directly to clients. Whether you want professional emails, quick SMS-style updates, or even CRM-ready messages, this setup saves time while making you look on top of the market. How it Works Daily Trigger – Runs on a schedule you choose (default: multiple times per day). Fetch Rates – Pulls the latest mortgage rates from Mortgage News Daily (you can swap to another source). Clean Data – Prepares and formats the raw rate data for messaging. AI Messaging – Uses Google AI Studio (Gemini) to generate text/email content that’s clear, professional, and client-ready. You can customize the prompt to adjust tone or style. Include variables (like client names or CRM fields) for personalized outreach. Send Updates – Delivers the AI-crafted message to Discord by default for you to copy and send to your clients or upload yto your bulk iMessage or email tool, but can be adapted for: Slack, Telegram, WhatsApp, or Gmail Why Use This Save hours** - No more copy-pasting rates into client messages. Look prepared** - Clients see you as proactive, not reactive. Customizable** - Use AI prompts to match your personal voice, include client-specific details, or change the delivery channel. Scalable** – Works for one agent or an entire brokerage team. With this workflow, by the time your client asks “what are rates today?”, they’ll already have a polished update waiting in their inbox or chat. 🚀
by Oneclick AI Squad
This automated n8n workflow reads patient data from Google Sheets daily at 8 AM, sends email and WhatsApp reports to doctors, alerts staff for critical patients, and logs activities back to sheets. Good to Know Runs daily at 8 AM via cron trigger. Filters active patients only. Requires Google service account, Gmail app password, and WhatsApp API token. Logs all sent reports in a dedicated sheet. How It Works Cron Trigger** - Schedules daily run at 8 AM. Google Sheets (Read)** - Fetches patient data from "Patients" sheet. Filter Node** - Selects active patients. Code Node** - Processes data, creates report content, checks for critical conditions. Email Send Node** - Sends reports to doctors via Gmail. HTTP Request Node** - Sends WhatsApp messages. Filter Critical** - Identifies critical patients. Critical Alert Email** - Notifies hospital staff. Google Sheets (Write)** - Logs reports to "Reports_Log" sheet. Google Sheet Structure Sheet 1: A: Patient ID | B: Patient Name | C: Age | D: Current Condition E: Temperature | F: Blood Pressure | G: Heart Rate | H: Current Medication I: Doctor Email | J: Doctor WhatsApp | K: Priority | L: Status | M: Last Updated Sample Data: P001 | John Doe | 45 | Stable | 98.6 | 120/80 | 72 | Aspirin | dr@hospital.com | +1234567890 | Normal | Active | 2024-01-15 P002 | Jane Smith | 32 | Fever | 101.8 | 130/85 | 88 | Tylenol | dr2@hospital.com | +1987654321 | Critical | Active | 2024-01-15 Sheet 2: A: Report Date | B: Patient ID | C: Patient Name | D: Status | E: Sent How to Use Import workflow JSON into n8n. Configure nodes with Google credentials, sheet ID, Gmail app password, WhatsApp token. Add patients to Google Sheet with "Active" status. Test manually, then activate for daily runs. Requirements Google Sheet with specified structure. Google Cloud service account JSON. Gmail with 2FA and app password. WhatsApp Business API token. n8n instance. Customizing This Workflow Adjust cron expression for different schedule. Modify Code Node for custom report formats or critical thresholds. Update email/WhatsApp nodes for additional recipients or templates. Extend filters for more patient statuses.
by Yang
Who is this for? This workflow is perfect for content creators, newsletter publishers, digital marketers, and virtual assistants who need a quick way to generate professional newsletters from trending news without manually curating and formatting articles. What problem is this workflow solving? Manually searching for news, summarizing articles, formatting them into a newsletter, and sending them by email is time-consuming and inconsistent. This workflow automates the process end-to-end: from capturing a keyword in Telegram to sending a ready-to-publish HTML newsletter by Gmail. What this workflow does The workflow begins when a keyword is received from Telegram. The keyword is expanded into trending suggestions using Dumpling AI Autocomplete, then passed to Dumpling AI Google News to fetch recent articles. The results are structured, split, and scraped for clean content. The combined content is sent to OpenAI to generate a professional HTML newsletter and subject line, which is finally delivered to a chosen inbox via Gmail. Nodes Overview Telegram Trigger – Start: Receive Keyword Listens for a keyword sent from Telegram to initiate the workflow. HTTP Request – Google Autocomplete via Dumpling AI Expands the keyword into trending search suggestions. HTTP Request – Search Google News via Dumpling AI Fetches recent news articles related to the autocomplete suggestions. Parser and Split Nodes – Process Articles Formats results into structured JSON and splits them into individual articles. HTTP Request – Scraper via Dumpling AI Scrapes and cleans each article to extract high-quality text. Aggregate – Combine Article Content Merges all cleaned articles into a single dataset for newsletter generation. OpenAI – Generate Newsletter Produces a ready-to-use HTML newsletter and subject line. Gmail – Send Newsletter Delivers the completed newsletter to the specified inbox. 📝 Notes You must connect Dumpling AI and OpenAI accounts with valid API keys before running. The Telegram trigger can be configured for private or group chats depending on your use case. Ensure Gmail is properly connected with send permissions enabled.
by Juan de Dios Estrella Sáez
✨ About this Template This n8n template automates the process of writing SEO guest post content using OpenAI, based on rules and topics provided in a Google Sheet. The generated articles are saved into a separate sheet for outreach or publishing. Use cases include: SEO guest post generation Content marketing automation for agencies Outreach planning and editorial automation 💡 Good to Know OpenAI API usage costs apply based on the selected model (e.g., GPT-4). This automation uses Google Sheets and OpenAI; credentials are required to connect your accounts. Status filtering ensures only content marked as “Start” is processed — making it safe to use in multi-user workflows. ⚙️ How It Works Trigger the workflow manually (can be changed to schedule/cron or webhook). Reads from a Google Sheet with guest post planning data. Merges the writing prompt, brand guidelines, and posting rules. Sends the merged data to OpenAI (via the AI Agent node) to generate a guest post in German. Saves the result into another Google Sheet. Updates the original row's status from “Start” to “Finished” to prevent duplicates. ▶️ How to Use You must connect your Google Sheets and OpenAI accounts. Customize the AI prompt, tone, or language by editing the input structure. You can modify the filter to run only on certain months or categories. The Gmail node is optional and only used to notify when no action was taken. 🧰 Requirements OpenAI account (API key for GPT-4 or GPT-3.5) Google account with access to the configured Sheets Basic knowledge of how n8n expressions work (optional) 🛠️ Customising This Workflow This guest post writer workflow can easily be adapted to other use cases: Write social media content from a spreadsheet Generate product descriptions from catalog data Automatically translate or rewrite articles in different tones/languages Create personalized outreach emails using AI 🎁 The workflow includes built-in explanations (sticky notes) to guide you through each part of the process.
by Paul Abraham
Mirai MailFlow – Gumroad Personalized Autoreply This n8n template automates post-purchase communication for Gumroad creators by sending AI-powered personalized thank-you emails and logging customer data into Notion. It helps creators engage buyers instantly while keeping a clean customer CRM — fully hands-free. Use cases Automatically send personalized thank-you emails after every Gumroad purchase Maintain a lightweight customer CRM in Notion Reduce manual email follow-ups for digital product sales Improve buyer experience and post-purchase engagement Build a foundation for creator support, upsells, or onboarding flows Good to know This workflow connects to a few external services, so credentials must be configured before running the template. It works on both n8n Cloud and self-hosted instances, and setup typically takes 5 minutes. Requirements n8n Cloud or self-hosted instance Gmail account (OAuth connected) to receive and send emails Notion account with a customer database Google Gemini API key for AI-generated email content Customising this workflow Replace Gmail with Slack, Telegram, or WhatsApp for message delivery Swap Google Gemini with OpenAI or Claude for different writing styles Add follow-up emails, upsells, or discount links Extend the Notion database into a full creator CRM Use it as a base for Gumroad analytics, support automation, or AI creator tools
by Sk developer
🚀 Automated Plagiarism Checker Using Rapid API & Google Sheet logging 📄 Description This powerful no-code workflow automates plagiarism detection using Plagiarism Checker AI Powered. Users submit text through Google Sheets. The system checks for duplication using the API, sends a detailed HTML report via email, and logs the results — all without human intervention. 🔧 How the Workflow Works | Node Name | Purpose | | -------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | | Trigger - New Row in Google Sheet | Watches for new rows added to a connected Google Sheet. | | Send Content to Plagiarism API | Sends the user-submitted content to the Plagiarism Checker AI Powered API via POST. | | Check API Response Success | Verifies if the API responded successfully and returned results. | | Extract Plagiarism Results | Extracts matched results (if any) from the API response. | | Generate HTML Plagiarism Report | Creates a styled HTML report with similarity scores, links, and matched content. | | Send Report to User via Email | Sends the plagiarism report to the user using SMTP. | | Mark Status: Success in Google Sheet | Updates the Google Sheet with a "Success" status once the email is sent. | | Send Failure Alert to IT | If the API check fails, sends an alert email to IT for investigation. | | Mark Status: Failed in Google Sheet | Updates the Google Sheet with a "Failed" status if the process doesn’t complete successfully. | 🧾 Google Sheet Configuration ✅ Required Columns: | Column Name | Description | | ----------- | -------------------------------------- | | Content | The text to be checked for plagiarism | | Status | Workflow result (Success / Failed) | Make sure these column headers exist in Row 1 of your Google Sheet. 📊 How to Connect Google Sheets to n8n Create a new Google Sheet. In n8n, use the Google Sheets Trigger node: Set your document ID (from the sheet’s URL). Specify the sheet name (e.g., Sheet1 or use gid=0). Use Google Sheets (service account) credential type for writing updates. 🔑 How to Get a RapidAPI Key for Plagiarism Checker AI Powered Go to Plagiarism Checker AI Powered API. Sign up or log in to RapidAPI. Subscribe to the free or paid plan. Copy your x-rapidapi-key and paste it into the Send Content to Plagiarism API node's header. 🧠 Use Cases Educators verifying student submissions Content marketers validating blog originality Academic institutions enforcing anti-plagiarism policies Editors reviewing freelance work ✅ Benefits ⚙️ 100% Automated: Set once, run forever 📨 Instant Reports: Plagiarism reports delivered via email 📋 Easy Tracking: Status updates in Google Sheet 🛡️ Alerts Built-in: Automatic error notification to IT 🔗 Uses Plagiarism Checker AI Powered API to ensure accuracy and scalability 📘 Bonus Tips Ensure you handle Google API scopes properly (Editor or Owner access). Always test with small content first before scaling up. Plagiarism Checker AI Powered API supports sentence-level matching and source URLs.
by Bhavy Shekhaliya
Overview This n8n workflow automatically generates weekly performance reports for completed email campaigns from ManyReach, converts them to Google Docs, and shares them via Slack. Workflow Trigger Schedule**: Runs every Monday (weekly) Automates the entire reporting process without manual intervention Process Flow 1. Data Collection Fetch All Campaigns**: Retrieves up to 100 campaigns from ManyReach API Split Out**: Breaks down the campaign list into individual items Filter**: Selects only campaigns that are both: Active (active = true) Completed (campStatus = "completed") 2. Campaign Processing Loop The workflow processes each filtered campaign individually: Fetch One Campaign: Retrieves detailed data for the specific campaign Campaign Report Agent: AI-powered analysis using GPT-4.1 that generates: Executive summary with key highlights Performance metrics (open rate, click rate, reply rate, conversion rate) Email content analysis Configuration insights Actionable recommendations Next steps 3. Report Generation Markdown → HTML**: Converts the AI-generated markdown report to HTML format Set Details**: Prepares document metadata (name, content) HTML → Magic 🪄**: Formats the HTML content for Google Drive upload with proper styling 4. Distribution Upload Doc**: Creates a new Google Doc in the connected Drive account Send a Doc Link**: Posts the document link to the #manyreach Slack channel with campaign name Key Features Automated Analysis**: AI evaluates campaign performance against industry benchmarks Comprehensive Metrics**: Tracks prospects, opens, clicks, replies, conversions, and interested leads Professional Reports**: Generated as formatted Google Docs for easy sharing Team Notifications**: Automatic Slack alerts keep the team informed Required Credentials ManyReach API (HTTP Query Auth) OpenAI API (for GPT-4.1) Google Drive OAuth2 Slack OAuth2 Output Each completed campaign receives a detailed performance report posted to Slack with a direct link to the Google Doc for review and collaboration.
by Rahul Joshi
📘 Description: This automation streamlines client review collection and sentiment summarization for Techdome using HighLevel CRM, Azure OpenAI GPT-4o, Gmail, Slack, and Google Sheets. It starts by pulling recently won deals from HighLevel, then generates and sends AI-written HTML review request emails with built-in Google Review and feedback form links. After waiting 24 hours, it fetches the client’s reply thread, summarizes the sentiment using GPT-4o, and posts a clean update to Slack for team visibility. Any failures—API errors, empty responses, or data validation issues—are logged automatically to Google Sheets for full transparency and QA. The result: a fully hands-free Client Appreciation + Feedback Intelligence Loop, improving brand perception and internal responsiveness. ⚙️ What This Workflow Does (Step-by-Step) ▶️ When Clicking ‘Execute Workflow’ (Manual Trigger) Allows on-demand execution or scheduled testing of the workflow. Initiates the fetch for all newly “Won” deals from HighLevel CRM. 🏆 Fetch All Won Deals from HighLevel Retrieves all opportunities labeled “won” in HighLevel, gathering essential client details such as name, email, and deal information to personalize outgoing emails. 🔍 Validate Deal Fetch Success (IF Node) Checks each record for a valid id field. ✅ True Path: Moves ahead to generate AI email content. ❌ False Path: Logs the event to Google Sheets under the error log sheet. 🧠 Configure GPT-4o Model (Azure OpenAI) Initializes the GPT-4o engine that powers all language-generation tasks in this workflow—ensuring precise tone, correct formatting, and safe structured HTML output. 💌 Generate Personalized Review Request Email (AI Agent) Uses GPT-4o to create a tailored, HTML-formatted email thanking the client for their business and requesting feedback. Includes two clickable CTA buttons: ⭐ Google Review Link: 📝 Internal Feedback Form: Google Form link for in-depth feedback Each email maintains Techdome’s friendly, brand-consistent voice with clean inline CSS styling. 📨 Send Review Request Email to Client (Gmail Node) Automatically sends the AI-generated email to the client’s registered address through Gmail. Ensures timely post-service communication without manual follow-ups. ⏳ Wait for 24 Hours Before Next Action Pauses the workflow for 24 hours to give clients time to read and respond to the review request. 📥 Retrieve Email Thread for Response (Gmail Node) After the waiting period, fetches the Gmail thread associated with the initial email to capture client replies or feedback messages. 🧠 Configure GPT-4o Model (Summarization Engine) Prepares another GPT-4o instance specialized for summarizing client replies into concise, sentiment-aware Slack messages. 💬 Summarize Client Feedback (AI Agent) Analyzes the Gmail thread and produces a short Slack-formatted summary using this structure: 🎉 New Client Review Received!Client: <Name> Feedback: <Message snippet> Sentiment: Positive / Neutral / Negative Focuses on tone clarity and quick readability for internal teams. 📢 Announce Review Summary in Slack Posts the AI-generated summary in a designated Slack channel, keeping success and support teams instantly informed of client sentiments and feedback trends. 📊 Log Errors in Google Sheets Appends all failures—including fetch issues, missing fields, or parsing errors—to the Google Sheets “error log sheet,” maintaining workflow reliability and accountability. 🧩 Prerequisites HighLevel CRM OAuth credentials (to fetch deals) Azure OpenAI GPT-4o access (for AI-driven writing and summarization) Gmail API connection (for sending & reading threads) Slack API integration (for posting summaries) Google Sheets access (for error logging) 💡 Key Benefits ✅ Automates personalized review outreach after project completion ✅ Waits intelligently before analyzing responses ✅ Uses GPT-4o to summarize client sentiment in human tone ✅ Sends instant Slack updates for real-time visibility ✅ Keeps audit logs of all errors for debugging 👥 Perfect For Client Success and Account Management Teams Agencies using HighLevel CRM for project delivery Teams aiming to collect consistent client feedback and reviews Businesses wanting AI-assisted sentiment insights in Slack
by Rahul Joshi
📊 Description Streamline and standardize your entire client onboarding process with a single end-to-end automation. 🚀📋 This workflow captures detailed client intake data via webhook, automatically creates a fully structured Asana onboarding project, generates a personalized service contract from a Google Docs template, emails the agreement to the client, and logs all information in Google Sheets. It also creates a dedicated Slack channel for internal collaboration, ensuring every new client is onboarded consistently, professionally, and without manual effort. Perfect for service businesses scaling operations while maintaining quality and clarity. ✨📄🤝 🔁 What This Template Does 1️⃣ Receives detailed client intake form data via webhook. 📥 2️⃣ Parses and normalizes 70+ client, business, and technical fields. 🧾 3️⃣ Creates a new client-specific onboarding project in Asana. 📋 4️⃣ Copies sections and tasks from a predefined Asana template project. 🔄 5️⃣ Assigns all tasks into the new project with proper structure. ✅ 6️⃣ Retrieves a Google Docs contract template. 📄 7️⃣ Replaces placeholders with client-specific details (name, fees, dates). ✍️ 8️⃣ Downloads the personalized contract as a PDF. 📑 9️⃣ Sends a welcome email to the client with the contract attached. 📧 🔟 Resets the contract template for the next onboarding. 🔁 1️⃣1️⃣ Logs all client data into Google Sheets for tracking and reporting. 📊 1️⃣2️⃣ Creates a dedicated Slack channel for internal client communication. 💬 ⭐ Key Benefits ✅ Eliminates manual onboarding setup and repetitive admin work ✅ Ensures consistent project structure for every client ✅ Generates error-free, personalized contracts automatically ✅ Improves client experience with instant, professional communication ✅ Centralizes client data for operations and reporting ✅ Scales onboarding without adding operational overhead 🧩 Features Webhook-based client intake form processing Advanced data parsing for large intake payloads Asana project creation with template-based sections and tasks Google Docs dynamic contract generation Automated PDF download and email delivery Google Sheets client tracking with append/update logic Automatic Slack channel creation for internal teams Clean reset logic for reusable document templates 🔐 Requirements Asana OAuth2 credentials Google Docs OAuth2 credentials Google Drive OAuth2 credentials Google Sheets OAuth2 credentials Gmail OAuth2 credentials Slack API credentials Asana template project ID Google Docs contract template ID Google Sheets tracking document ID 🎯 Target Audience Service-based businesses onboarding new clients Agencies managing multi-step client engagements Operations and delivery teams SaaS or healthcare service providers with complex intake forms Automation teams building scalable onboarding systems
by Habeeb Mohammed
AI Voice Appointment Booking with Vapi and Google Calendar Build an intelligent appointment booking system that lets customers schedule appointments through natural voice conversations. This workflow connects Vapi AI assistant with Google Calendar to check availability, create appointments, and send professional confirmation emails automatically. Who's It For Healthcare providers, consultants, service businesses, coaches, salons, or any business that schedules appointments and wants to automate booking through voice calls. What It Does This workflow creates two powerful tools for your Vapi voice assistant: Availability Checker: When customers ask about available time slots, the assistant calls this workflow which fetches busy times from Google Calendar, processes them through an AI agent, and returns open slots in natural language. Appointment Creator: Once the customer confirms their preferred time, the assistant triggers this workflow to create the calendar event and send a branded confirmation email with all appointment details. The entire booking process happens conversationally without requiring customers to navigate websites or apps. How It Works Availability Flow: Customer asks Vapi assistant to check availability for a specific date Vapi calls the first webhook with the requested date Workflow queries Google Calendar for busy slots that day JavaScript code formats the busy times into readable text AI agent analyzes the schedule and identifies available time windows Available slots are returned to Vapi in natural language Assistant presents options to the customer Booking Flow: Customer confirms their chosen appointment time and provides details Vapi calls the second webhook with name, email, date/time, and appointment type Workflow creates the calendar event in Google Calendar Professional HTML confirmation email is sent via Gmail Success confirmation is returned to Vapi Assistant confirms the booking to the customer Requirements Vapi account** with a configured voice assistant Google Calendar** for appointment management Gmail account** for sending confirmation emails Google Gemini API key** for availability analysis How to Set Up 1. Activate the Workflow Import this template and activate it to generate the two webhook URLs. 2. Configure Google Calendar In both calendar nodes, select your appointment calendar and set your timezone. 3. Connect Gmail Add your Gmail credentials to the email node and customize the confirmation email template with your branding. 4. Set Business Hours In the Availability Checker AI agent node, update the system message to reflect your operating hours. 5. Create Vapi Tools In your Vapi assistant dashboard, add two server tools: Tool 1: availability_checker Function name: availability_checker Description: "Checks available appointment slots for a specific date" Server URL: Your first webhook URL Parameters: date (string, required, ISO 8601 format) Tool 2: Creating_the_appointment_and_sending_the_confirmation_email Function name: Creating_the_appointment_and_sending_the_confirmation_email Description: "Creates appointment and sends confirmation email" Server URL: Your second webhook URL Parameters: Name, Email, date and time, Appointment type (all strings, all required) 6. Update Assistant Prompt Ensure your Vapi assistant knows when to call each tool based on customer requests. Vapi Configuration Download the complete Vapi assistant configuration: vapi-config.json 7. Test End-to-End Call your Vapi assistant and test the complete booking flow. How to Customize Appointment Duration: Change the 30-minute default in the "Create an event" node by modifying the .plus(30, 'mins') expression. Email Template: Edit the HTML in the "Send confirmation email" node to match your brand colors, logo, and messaging. Business Hours: Update the system message in the "Availability checker" AI agent node to reflect when you accept appointments. Timezone: Ensure both Google Calendar nodes use your correct timezone for accurate scheduling. Calendar Selection: Point both calendar nodes to the same Google Calendar to avoid double-bookings. Appointment Types: Customize the event description format in the "Create an event" node to include relevant details for your business. This workflow transforms appointment scheduling from a manual back-and-forth into an automated, professional experience that runs 24/7 through voice conversations.
by Baptiste Fort
📘 Workflow Documentation – Stock Market Daily Digest 👋 Introduction Wake up to a clean, analyst-style stock digest in your inbox—top gainers/losers, a readable performance table, 3–5 insights, and upcoming events—no spreadsheets, no manual scraping, no copy-paste. This article explains, step by step, how to build a robust, daily, end-to-end automation that collects market data (Bright Data), waits until scraping is done, aggregates results, asks an AI model (OpenAI) to draft a styled HTML email, logs everything to Airtable, and finally sends the report via Gmail. You’ll find a friendly but technical tour of every single node, so you can rebuild or adapt the same pipeline with confidence. 🎯 Who is this workflow for? Investors & traders** who want a quick, readable daily summary. Finance/Product teams** building data-driven alerts/digests. Consultants & agencies** sending recurring client updates. Automation builders** prototyping finance ops quickly. 🧰 Tools you’ll need Bright Data** — dataset triggers & snapshots for reliable web data. OpenAI (GPT)** — to generate a professional HTML digest. Airtable** — store daily rows for history, filters, dashboards. Example Airtable Table: Daily Stocks | Ticker | Company | Price | Change % | Sentiment | Date | |--------|--------------------------|---------|----------|-----------|---------------------| | AAPL | Apple Inc. | 225.80 | +1.4% | 🟢 Positive | 2025-09-18 09:00 | | MSFT | Microsoft Corporation | 415.20 | -0.7% | 🔴 Negative | 2025-09-18 09:00 | | NVDA | NVIDIA Corporation | 124.55 | +2.1% | 🟢 Positive | 2025-09-18 09:00 | | TSLA | Tesla Inc. | 260.00 | -3.0% | 🔴 Negative | 2025-09-18 09:00 | | META | Meta Platforms Inc. | 310.45 | +0.5% | 🟡 Neutral | 2025-09-18 09:00 | Gmail** — deliver the final HTML email to stakeholders. n8n** — the automation engine that orchestrates every step. > Keep API keys in n8n Credentials (never hard-code secrets). 🗺️ Architecture at a glance Schedule fires daily Seed list of tickers Split into one item per stock Prepare keyword for scraping Launch Bright Data job Poll progress with a wait-loop Fetch snapshot data Aggregate for the AI Generate HTML summary (GPT) Save rows to Airtable Send email via Gmail ⚙️ Step-by-step — Every node explained ⏰ Daily Run Trigger (Schedule Trigger) Purpose Start the automation at a precise time each day so nobody needs to push a button. Parameters (English) Trigger Type**: Time Interval or Cron Every X**: 1 Day (or your preferred cadence) Timezone**: UTC (or your own) Start Time**: optional (e.g., 09:00) 📝 Set Stock List (Set Node – SAMPLE DATA) Purpose Define the universe of stocks to monitor. This acts as the seed data for scraping. Parameters Values to Set**: Fixed JSON (array of objects) Keep Only Set**: true Fields per item**: ticker, name, market_cap (you may add sector, isin, etc.) 🔀 Split Stocks (Split Out) Purpose Turn the array into individual items so each ticker is processed independently (scraping, polling, results). Parameters Operation**: Split Out Items Field to Split**: the array defined in the previous Set node 🏷 Prepare Stock Keyword (Set Node) Purpose Create a keyword field (typically equal to ticker) for Bright Data discovery. Parameters Values to Set**: Add Field Field Name**: keyword Value**: use an expression referencing the current item’s ticker (e.g., ` {{ $json.ticker }} `) 🕸 Bright Data Scraper (HTTP Request) Purpose Trigger the Bright Data dataset to start collecting information for the keyword. Returns a snapshot_id to poll later. Parameters Method**: POST Endpoint**: https://api.brightdata.com/datasets/v1/trigger Authentication**: Authorization: Bearer <token> (header) Body Fields**: dataset_id: your Bright Data dataset ID discover_by: usually keyword keyword: the value prepared above > Add a retry/backoff policy on 429/5xx in node options. 🔄 Check Scraper Progress (HTTP Request) Purpose Poll Bright Data to see whether the snapshot is running or ready. Parameters Method**: GET Endpoint**: https://api.brightdata.com/datasets/v1/snapshots/{snapshot_id} Authentication**: Authorization: Bearer <token> Expected Output**: a status field (running, ready) ⏳ Wait for Data (Wait Node) Purpose Pause between progress checks to avoid rate limits and give Bright Data time to finish. Parameters Mode**: Wait a fixed amount of time Time**: e.g., 30 seconds (tune to your dataset size) 🔀 Scraper Status Switch (Switch Node) Purpose Route logic based on the polled status. Parameters Value to Check**: status Rules**: Equals running → go to Wait for Data (then re-check) Equals ready → proceed to Fetch Scraper Results > Loop pattern: Check → Wait → Check, until ready. 📥 Fetch Scraper Results (HTTP Request) Purpose Download the completed snapshot data once Bright Data marks it ready. Parameters Method**: GET Endpoint**: https://api.brightdata.com/datasets/v1/snapshots/{snapshot_id}/data Authentication**: Authorization: Bearer <token> Query**: format=json Output**: array of rows per ticker (price, change %, any fields your dataset yields) > Normalize fields with a Set/Code node if needed. 📊 Aggregate Stock Data (Aggregate Node) Purpose Combine all individual items into one consolidated object so the AI can analyze the entire market snapshot. Parameters Mode**: Aggregate (merge to a single item) Fields to Include**: ticker, name, price, change, sentiment (plus any extra fields captured) Output**: one JSON item containing an array/map of the day’s stocks 🤖 Generate Daily Summary (AI Node – OpenAI) Purpose Ask the model to convert raw data into a styled HTML email: headline, top movers, table, insights, and (optional) upcoming events. Parameters Model**: gpt-4.1 Input**: the aggregated JSON from the previous node Prompt guidelines**: Output HTML only with inline styles (email-safe) Include a table (Ticker, Company, % Change with ↑/↓ & color, Market Cap, Sentiment icon) Highlight top 2 gainers & 2 losers with short reasoning if present Provide 3–5 insights (sector rotation, volatility, outliers) Add upcoming events when available (earnings, launches, macro) Footer: “Generated automatically by your AI-powered stock monitor” Output field**: confirm the exact property that contains the HTML (e.g., output, message, text) 🗂 Save to Airtable (Airtable – Create Record) Purpose Log each item (or the roll-up) to Airtable for history, filtering, and dashboards. Parameters Operation**: Create Record Base ID**: from your Airtable URL Table**: e.g., Daily Stocks Field Mapping**: Ticker ← ` {{ $json.ticker }} ` Company ← ` {{ $json.name }} ` Price ← ` {{ $json.price }} ` Change % ← ` {{ $json.change }} ` Sentiment ← ` {{ $json.sentiment }} ` Date ← ` {{ $now.toISO() }} ` > Use a Single-Select for Sentiment (🟢 / 🟡 / 🔴) to build clean Airtable views. 📧 Send Report via Gmail (Gmail Node) Purpose Deliver the AI-generated HTML digest to your recipients. Parameters Operation**: Send Email Send To**: one or more recipients (e.g., investor@domain.com) Subject**: Daily Stock Market Digest – {{ $now.format("yyyy-MM-dd") }} Message (HTML)**: reference the AI node’s HTML property (e.g., ` {{ $('Generate Daily Summary').first().json.output }} `) Options: set **Append Attribution to false (keep the email clean) > Test in Gmail, Outlook, and mobile to validate inline CSS. 🧪 Error handling & reliability tips Backoff on Bright Data* — If scraping many tickers, increase *Wait** or batch requests. Guard against empty results** — If a snapshot returns 0 rows, branch to a fallback email (“No data today”). AI guardrails** — Enforce “HTML-only” and skip missing sections gracefully. Airtable normalization** — Strip %, cast numbers to float before insert. Observability* — Add a final Slack/Email *On Fail** node with run ID and error message. 🧩 Customization ideas Sector deep-dives**: add sector fields and a second AI paragraph on sector rotation. CSV attachment**: generate & attach a CSV for power users. Multiple lists**: run parallel branches for Tech, Healthcare, or regions. Other asset classes**: Crypto, ETFs, Indices, FX. Audience targeting**: different “To” lists and slightly different prompts per audience. ✅ Why this workflow is powerful Hands-off** — the report simply shows up every day. Analyst-grade** — clean HTML, top movers, tidy table, actionable insights. Auditable** — rows archived in Airtable for history and dashboards. Composable** — swap scrapers, LLMs, storage, or email service. Scalable** — start with 10 tickers, grow to many lists using the same loop. For advanced no-code & AI projects, see 0vni – Agence automatisation.