Marketplace
İndirebileceğin 3.557 hazır workflow dosyası, artı 10.661 kaynağa bağlı n8n referansı.
Analyze YouTube comments with OpenAI, Google Sheets, and Gmail
Quick overview This workflow monitors a Google Sheets list of YouTube video IDs, fetches video details and top comments from the YouTube Data API, analyzes the comments with OpenAI into structured sentiment and themes, emails an HTML report via Gmail, and writes the results back to Google Sheets. How it works Triggers every minute when a row in Google Sheets is added or updated. Reads the video ID and status from the row and continues only if the status is set to “Pending”. Calls the YouTube Data API to fetch the video’s metadata and the top comment threads for that video. Flattens the comment threads, calculates basic stats (comment count and average likes), and compiles a limited comment text block for analysis. If comments exist, sends the compiled comments and video title to OpenAI to generate a structured analysis (sentiment score, sentiment breakdown, themes, questions, feedback, insights, and summary). Builds an HTML email report from the structured results, sends it to the configured recipient with Gmail, and updates the Google Sheet row with the analysis fields; if no comments exist, marks the row as “No comments”. Setup Create or duplicate a Google Sheet with at least “Vi
Audit landing page CRO and log results with OpenAI and Data Tables
Quick overview This workflow collects a landing page URL, scrapes its HTML, and uses OpenAI to generate a structured conversion-rate-optimization (CRO) audit with scores and prioritized tips, then renders a styled report in the browser and logs each audit to an n8n Data Table. How it works Presents an n8n Form where the user submits a landing page URL. Fetches the landing page HTML via an HTTP request with retries, and routes to an error page if the URL can’t be retrieved. Sends the scraped HTML and URL to OpenAI to produce a CRO audit including an overall score, category scores, a written roast, and a ranked list of optimization tips. Uses a structured output parser with an OpenAI “fixer” model to validate and auto-correct the AI response into the required JSON schema. Builds a styled HTML report from the structured audit results. Logs the audit metadata (URL, score, verdict, summary, language, timestamp) to an n8n Data Table and displays the report back in the user’s browser. Setup Add an OpenAI API credential and select it for both the main OpenAI model and the output-fixer model. Create or select an n8n Data Table (for example, “CRO Audit Log”) and map the columns used for url,
Enrich LinkedIn profiles in Google Sheets with Apify
Quick overview This workflow reads LinkedIn profile URLs from Google Sheets, calls the Apify LinkedIn scraper to fetch profile details, and writes enriched fields (name, headline, job title, company, location, skills, positions, education, certifications, and follower data) back to the same rows. How it works Runs when you manually execute the workflow. Loads configuration values such as the LinkedIn URL column name, apify actor ID, contact-finding toggle, and batch size. Reads rows from the selected Google Sheets tab to get the LinkedIn profile URLs to enrich. Processes the sheet rows in batches to control throughput and respect Apify rate limits. For each row, sends the LinkedIn URL to apify and retrieves the scraped LinkedIn profile data. Updates the matching Google Sheets row (by row_number) with the returned profile fields, including skills, positions, education, and other metadata. Setup Add a Google Sheets OAuth2 credential and select the target spreadsheet and sheet tab in the read and update steps. Add an apify API token as HTTP Header Auth (Authorization: Bearer YOUR_APIFY_TOKEN) for the Apify request. Ensure your Google Sheet includes a column containing LinkedIn profile
Monitor brand visibility in AI search with ChatGPT, Perplexity, Gemini, Claude, and Supabase
Quick Overview This workflow asks buyer-intent questions to ChatGPT Search (OpenAI), Perplexity, Google Gemini Search, and Anthropic Claude, scores whether your brand is cited or mentioned in each answer, logs every check to Supabase, and outputs an overall and per-engine visibility scorecard. How it works Starts when you run the workflow manually. Sets your brand name/domain and a list of buyer questions, then creates one item per question. Sends each question to Anthropic Claude, OpenAI Chat Completions (gpt-4o-search-preview), Perplexity (sonar), and Google Gemini with Google Search enabled. Parses each engine’s response to detect whether your brand domain is cited or your brand name is mentioned, and assigns a score (1 for cited, 0.5 for mentioned, 0 for absent). Writes each scored check (brand, engine, question, score, cited, mentioned) as a row into a Supabase table. Aggregates the results into a per-engine percentage and an overall panel score, then prints a console scorecard with top “not cited” targets. Setup Add environment variables in n8n for ANTHROPIC_API_KEY, OPENAI_API_KEY, PERPLEXITY_API_KEY, and GEMINI_API_KEY. Create a Supabase table named ai_visibility_log with c
Enrich company records with social media links using GPT-4o and Supabase
Quick overview This workflow is manually triggered to pull company names and websites from Supabase, crawl each site with an OpenAI-powered agent to extract social media profile URLs, and write the enriched results to a separate Supabase table. How it works Runs when you manually execute the workflow. Reads all rows from the Supabase companies_input table and keeps the name and website fields for processing. Uses an OpenAI (GPT-4o) agent to crawl the company website, following discovered links and extracting social media profile URLs. Forces the agent output into a structured JSON schema and maps the extracted links into a social_media array. Merges the original company name and website with the extracted social media data. Inserts the enriched record into the Supabase companies_output table. Setup Add a Supabase credential and set the correct project details for both reading from companies_input and writing to companies_output. Add an OpenAI API credential for the GPT-4o chat model used by the crawling agent. Ensure your input table has name and website fields or update the field selection and mapping to match your schema. Confirm the output table accepts the mapped fields (for ex
Answer WooCommerce order and DHL tracking questions with GPT-4 chat
Quick overview This workflow serves a demo web page with an n8n chat widget and runs an OpenAI-powered support agent that looks up WooCommerce orders and DHL tracking details by calling the same workflow as a tool. How it works Serves a demo HTML page via a webhook that embeds the n8n Chat widget configured to start a chat session. Triggers a new conversation when the chat widget connects and provides a customer email (mocked in this template) as session metadata. Uses an OpenAI (GPT-4) chat model with short-term memory to answer order-related questions and decide when to fetch live order data. Calls the same workflow as a tool with the customer email (and optional comma-separated order IDs) to retrieve matching WooCommerce orders. Looks up the WooCommerce customer by email, fetches their orders, and extracts shipment tracking metadata from each order. For orders with DHL tracking numbers, queries the DHL API for current shipment status, then merges tracking results back into the order data. Returns a JSON response containing the customer’s orders and any available DHL tracking details to the agent for use in the chat reply. Setup Add a WooCommerce API credential and update the sto
Summarize Zoom meetings and create follow-ups with OpenAI, ClickUp, and Outlook
Quick overview This workflow pulls the transcript and participant list from a recent Zoom meeting, uses OpenAI to generate formal meeting minutes, emails the summary via SMTP, and runs an AI agent that creates ClickUp tasks and (when details exist) schedules a follow-up meeting in Microsoft Outlook Calendar. How it works Starts when you manually run the workflow. Fetches your scheduled Zoom meetings and keeps only those that started within the last 24 hours. Requests the meeting recording files from Zoom, stops with an error if no transcript is available, then extracts the transcript download URL. Downloads the Zoom transcript file, extracts its text, and reformats it into clean, readable dialogue. Pulls the Zoom meeting participant list (including emails) and sends the transcript and participants to OpenAI to generate structured meeting minutes. Formats the minutes into an HTML email and sends the summary via SMTP to a participant email address. Uses an OpenAI-powered agent to extract action items and follow-up details from the same transcript, then creates tasks in ClickUp and creates a follow-up event in Microsoft Outlook Calendar when scheduling information is present. Setup Ad
Qualify voicemail leads with Twilio, Google Gemini, Gmail and Google Sheets
Quick overview When a buyer or seller leaves a voicemail, this workflow transcribes it automatically, qualifies their intent using Gemini AI, sends an instant SMS acknowledgment, and alerts the agent for Hot leads — turning every missed call into a qualified lead within seconds. How it works Receives a POST webhook from Twilio when a voicemail recording and transcription are completed. Validates the voicemail by checking that the recording is completed, the transcription is completed, and the call duration is longer than 5 seconds. Extracts the transcript, caller phone number, call SID, duration, and recording URL, then sends the transcript to Google Gemini to return structured lead details, a Hot/Warm/Cold score, and draft SMS/email replies. Parses and sanitizes the Gemini JSON output, applies fallbacks if parsing fails, optionally appends a Google Calendar booking link for Hot leads, and builds an agent-ready HTML summary including the transcript and recording link. Sends an acknowledgment SMS to the caller via Twilio, and sends an acknowledgment email via Gmail only when a caller email address is available. Appends the lead details, transcript, and messaging status to a Google S
Send weekly blended ad performance reports with Meta Ads, Google Ads, GA4 and OpenAI
Quick overview This workflow runs every Monday at 8am, pulls last-7-days performance data from the Meta Ads API, Google Ads API, and Google Analytics 4, calculates blended KPIs, uses OpenAI to generate a client-friendly insight summary, and delivers an HTML report by Gmail while posting status update to Slack. How it works Runs every Monday at 8am on a schedule trigger. Fetches the last 7 days of spend and engagement metrics from the Meta Ads Insights endpoint. Fetches the last 7 days of campaign cost, clicks, and conversions from the Google Ads API using a streamed search query. Fetches the last 7 days of conversions and revenue by default channel group from the Google Analytics 4 Data API. Combines the three datasets and calculates blended totals for spend, conversions, revenue, and ROAS. Sends the blended metrics to OpenAI to generate a 3–4 sentence plain-language weekly performance summary. Builds a simple HTML report and sends it to the client via Gmail while posting a short “report sent” summary to a Slack channel. If the workflow execution fails, posts the error message to an ops Slack channel. Setup Add credentials and replace the placeholders for your Meta Ads token and ad
Recommend supplier consolidation with Google Sheets, Groq, Slack and Gmail
Quick overview This workflow runs weekly to read supplier spend data from Google Sheets, detect overlapping suppliers across departments, estimate potential consolidation savings, and use Groq-hosted LLM analysis to assess risk and produce recommendations that are sent to Slack and emailed via Gmail. How it works Runs every week on a scheduled trigger. Reads supplier records from a Google Sheets spreadsheet and keeps key fields like supplier name, department, spend, risk rating, and stakeholder email. Groups and normalizes supplier names to find suppliers used by multiple departments and calculates estimated savings and an opportunity level. Sends each consolidation opportunity to a Groq chat model to evaluate risk versus savings and return a JSON decision and recommendation. Parses the AI JSON output, merges it with the calculated savings data, and formats a final recommendation record. Posts the recommendation to a Slack channel and emails a formatted report to the supplier stakeholder email address. Setup Connect your Google Sheets OAuth account and update the spreadsheet ID and sheet/tab to match your supplier records. Add a Groq API credential for the chat model used to evalua
Score and triage inbound leads with Groq, Slack, Google Sheets, and Google Tasks
Quick Overview This workflow captures leads via an n8n form, stores them in an n8n Data Table, uses a Groq Llama 3.3 chat model to score and categorize each lead and draft a reply, optionally alerts in Slack and creates a Google Task, and writes the results back to the Data Table. How it works Receives a new lead submission through an n8n Form trigger (name, email, company, source, and message). Saves the submitted lead into an n8n Data Table and keeps only the fields needed for scoring. Sends the lead details to a Groq Chat Model via an AI Agent to generate a JSON response with a score (1–100), tier (Hot/Warm/Cold), and a suggested reply. Uses the AI Agent’s tool actions to post an alert to Slack and create a task in Google Tasks only when the lead’s score is above the defined threshold. Parses the AI Agent output as JSON and updates the original Data Table row with the generated score, tier, and reply. Setup Configure the n8n Form trigger and embed or share its URL where you collect leads. Create or select an n8n Data Table for leads and ensure it includes columns for score, tier, reply, and an id used to match rows during updates. Add a Groq API credential and select the Groq ch
Extract and validate invoice data from Google Drive using OCR.Space, Gemini, and Google Sheets
Quick overview This workflow monitors a Google Drive folder for newly uploaded invoice files, extracts text with OCR.Space, uses Google Gemini to convert the OCR text into structured invoice fields, validates required values, then stores results in Google Sheets and sends Gmail notifications for success or manual review. How it works Triggers when a new file is created in a specified Google Drive folder. Downloads the uploaded invoice file from Google Drive and checks that the MIME type is PDF, JPG, JPEG, or PNG. Sends the file to the OCR.Space API to extract the invoice text and stops if OCR reports a processing error. Uses Google Gemini to convert the OCR text into structured JSON containing supplier, invoice metadata, amounts, currency, and line items. Validates and normalizes the extracted fields, flags missing required values, and marks the record for manual review when needed. If manual review is required, sends a Gmail alert listing missing fields; otherwise, appends key invoice fields to Google Sheets and sends a Gmail confirmation email. Setup Connect Google Drive OAuth2 credentials and set the folder ID to watch for invoice uploads. Provide an OCR.Space API key and ensure
Route supplier risk alerts from Gmail to Slack with Gemini and Google Sheets
Quick overview This workflow monitors incoming Gmail messages from suppliers, uses Google Gemini to analyze sentiment and relationship risk, generates an engagement strategy for risky emails, sends an alert to Slack, and logs the analysis and recommended response to Google Sheets. How it works Triggers every minute by checking Gmail for new incoming emails. Filters out irrelevant messages (for example newsletters, unsubscribe emails, no-reply senders, and auto-replies) and keeps only valid supplier emails. Extracts the sender, subject, and email snippet into a single text block and waits briefly to buffer processing. Sends the email text to Google Gemini to return a structured JSON analysis with sentiment score/label, intent, urgency, key concern, and deterioration risk, then normalizes these fields and derives a trend. Flags the interaction as high risk based on the deterioration risk value or a low sentiment score and waits briefly before continuing. Uses Google Gemini to generate a concise engagement strategy (recommended action, draft opening message, and follow-up timeline), then parses it and formats a Slack-ready alert. Sends the alert to a selected Slack user and appends th
Route insurance quote leads with OpenAI, Airtable, Sheets, Teams, Slack and Twilio
Quick overview This workflow receives insurance quote submissions via a webhook, normalizes and deduplicates them against Airtable and/or Google Sheets, uses OpenAI to score and classify the lead, then routes hot/warm leads to Microsoft Teams and/or Slack (plus Twilio SMS for hot leads) and logs the quote. How it works Receives an insurance quote request through a webhook endpoint. Applies configurable settings (log destination, notification channels, thresholds) and normalizes the incoming form payload into a standard quote format. Checks Airtable and/or Google Sheets for recent matching email/phone/hash entries to detect duplicate submissions. If the quote is new and has contact details, sends the quote data to OpenAI to generate a lead score, priority, underwriting flags, missing info, and recommended next steps. Routes the quote as hot, warm, or cold based on the score/priority and prepares formatted alert messages for Microsoft Teams and Slack. Posts hot/warm alerts to Microsoft Teams and/or Slack, and sends a Twilio SMS to an agent for hot leads. Creates a quote log record in Airtable and/or appends a row to Google Sheets, then returns a JSON response with logging and notific
Schedule weekly focus-time blocks with Google Calendar, OpenAI, and Slack
Quick overview This workflow runs every Sunday at 18:00 to scan your Google Calendar for next week, find free gaps of at least two hours within your working hours, auto-book them as “🧘 Focus Time” events, and then DM you a personalized deep-work plan in Slack using OpenAI. How it works Runs every Sunday at 18:00 on a schedule. Loads your working-hour preferences and fetches all events from your Google Calendar. Calculates weekday-only free gaps within your working hours and keeps only gaps that meet the minimum block length. If no qualifying gap exists, sends you a Slack DM warning that next week is too fragmented for a focus block. If gaps exist, limits the number of blocks for the week and creates “🧘 Focus Time (protected by n8n)” events in Google Calendar for each selected slot. Uses OpenAI to generate a short, personal Slack message that lists the protected blocks and suggests what kind of work fits each. Sends the generated deep-work plan to you as a Slack DM. Setup Add Google Calendar credentials, select the calendar to read from and the calendar to create “🧘 Focus Time” events in. Add Slack credentials and set your target Slack username in both the plan DM and warning mes
Audit YouTube video metadata changes with Google Sheets and Slack
Quick Overview This workflow runs daily to fetch all videos from a YouTube channel, compare key metadata fields against a prior snapshot stored in Google Sheets, log any differences, and optionally post a summary to Slack. How it works Runs every day at 08:00 on a schedule. Reads your YouTube channel’s uploads playlist and retrieves each video’s current title, description, tags, privacy status, and category. Loads the previous snapshot from Google Sheets and compares the tracked fields to detect added, removed/hidden, or changed metadata. When changes are found, appends each changed field (old value vs new value) to a Google Sheets change log. Clears and rewrites the snapshot in Google Sheets with the latest metadata so the next run compares against today’s baseline. Posts a summary to a Slack channel when changes are detected (or when alwaysNotify is enabled). Setup Add a YouTube (Google) OAuth2 credential and set your target channel ID in the audit options. Add a Google Sheets credential, set the spreadsheet ID, and ensure your spreadsheet has a Snapshot tab and a Change Log tab mapped in the Google Sheets steps. Add a Slack credential and set the target Slack channel ID for the
Normalize YouTube video tags using Google Sheets vocabulary rules
Quick Overview This workflow loads a tag vocabulary from Google Sheets, scans your YouTube channel’s recent videos, normalizes each video’s tags to match alias/banned/required rules, and updates only the videos whose tag set changes. How it works Runs manually to start the tag normalization process. Reads controlled-vocabulary rules from Google Sheets, including alias mappings, banned tags, and required baseline tags. Lists up to 50 videos from the specified YouTube channel and fetches each video’s snippet details, including tags, title, and category. Normalizes tags by lowercasing and cleaning them, converting aliases to canonical tags, removing banned tags, deduplicating, adding required tags, and truncating to YouTube’s tag character limit. Compares the normalized tag set to the current tags and keeps only videos where the tags changed. Updates the tags on the changed videos in YouTube while preserving the existing title and category. Setup Add a YouTube (Google) OAuth2 credential for the YouTube nodes and ensure it has permission to update videos on your channel. Add a Google Sheets credential, set the spreadsheet ID and sheet/tab to the vocabulary document, and ensure it is ac
Create daily webpage PDF reports with PDFBolt, Slack and Google Drive
Quick overview This workflow creates a daily PDF report from a webpage URL with PDFBolt, posts it to Slack, and archives the same PDF in Google Drive. How it works Runs every day at 08:00 on a scheduled trigger. Sets the report date, webpage URL, report title, Slack message, and a dated PDF filename. Converts the configured webpage URL into an A4 PDF with PDFBolt, using Network Idle so charts, images, and async content can finish loading. Uploads the generated PDF to Slack with a title, filename, and initial comment. Uploads the same PDF file to a selected Google Drive folder for storage. Setup Add your PDFBolt API key from https://app.pdfbolt.com/api-keys in n8n. Add a Slack OAuth2 connection and replace the Slack channel ID with your target channel. Add a Google Drive OAuth2 connection and choose the destination Drive and folder for archived reports. Update the report URL and report name values in the report settings code so they match the page you want to capture. Requirements PDFBolt account and API key Slack account connected in n8n Google Drive account connected in n8n Customization Change the report URL, report name, and PDF filename Choose a different Slack channel Choose a
Audit page schema and AI citation signals with GPT-4o-mini and Google Sheets
Quick overview This workflow reads page URLs from Google Sheets, fetches each page to extract schema and SEO freshness signals, uses OpenAI GPT-4o-mini to assess entity consistency and generate recommended JSON-LD, then writes an audit row with scores and prioritized gaps back to Google Sheets. How it works Runs manually to start an audit of all rows in the Google Sheets pages tab. Fetches each page_url over HTTP and parses the HTML to extract JSON-LD schema types, dates, author signals, canonical/robots tags, title/H1 query match, and a short content excerpt. Sends the extracted signals and excerpt to OpenAI (gpt-4o-mini) to score entity consistency, rank the biggest citation-impact gaps, and (when needed) generate a paste-ready JSON-LD block using placeholders for unknown values. Combines a deterministic technical checklist score with the OpenAI entity score into a weighted overall audit score and formats the top gaps and issues. Appends the full audit result (including scores, gaps, and recommended JSON-LD) to the Google Sheets audit tab with the run date. Setup Create an OpenAI HTTP Header Auth credential with Authorization: Bearer for calls to the Chat Completions API. Add a G
Extract Twilio voice donation details with Groq, Gemini, and Google Sheets
Quick overview This workflow receives Twilio call recording callbacks, transcribes the audio with Groq Whisper, uses Google Gemini/Groq LLMs to extract structured donation details, and appends the results (with transcript and review flag) to Google Sheets. How it works Receives a Twilio Recording Status Callback webhook and immediately responds with TwiML (``). Captures call metadata (CallSid, caller number, recording URL/SID, and duration) and continues only if the recording exists and is at least 2 seconds long. Waits briefly for Twilio to finalize the media, then downloads the recording MP3 using Twilio HTTP Basic Auth. Sends the audio file to Groq’s Whisper transcription endpoint to generate a text transcript. Uses a LangChain prompt with Google Gemini and Groq chat models to extract donation amount, fee (if mentioned), beneficiary name, currency, a needs-review flag, and a short summary from the transcript. Parses the model output as JSON and falls back to an error summary with needs_review=yes if parsing fails. Checks Google Sheets for an existing row matching the CallSid/RecordingUrl and, if not found, appends a new row with the extracted fields, transcript, and call details
Generate and vet ad creative with OpenAI, Spendict, Google Sheets, and Slack
Quick overview This workflow collects a product brief via an n8n form, uses OpenAI to generate ad variants, gates each one with Spendict run/fix/kill scoring, auto-rewrites fixable ads, logs approved results to Google Sheets, and posts an approval count to Slack. How it works Receives a product brief from an n8n form submission with product, platform, audience, and desired variant count. Sends the brief to OpenAI Chat Completions to generate multiple ad variants (headline + primary text) in JSON. Splits the OpenAI response into individual variants and submits each one to Spendict’s /assess endpoint for a launch recommendation and score. Routes variants by Spendict verdict: “run” is accepted, “fix_first” is rewritten with the prioritized fixes and re-scored by Spendict, and “kill” is collected as rejected output. Combines accepted and auto-fixed variants and appends them as rows in Google Sheets with status, copy, platform, verdict, and score. Aggregates the logged approved variants and posts a summary message to Slack via an incoming webhook. Setup Add HTTP Header Auth credentials for OpenAI (Authorization: Bearer ) in both OpenAI HTTP Request steps. Add HTTP Header Auth credential
Run a voice-enabled AI assistant on Telegram with OpenAI, Gmail and Notion
Quick overview This workflow turns a Telegram bot into a personal assistant that handles text and voice messages using OpenAI, can read Gmail and Google Calendar, looks up tasks and contacts in Notion, and can draft and send emails with a required approval step in Telegram. How it works Triggers when a new Telegram message is received by your bot. Detects whether the message is a voice note or text, and if it is voice, downloads it from Telegram and transcribes it with OpenAI. Sends the resulting user text to an OpenAI-powered agent that keeps a short conversation memory per chat. When needed, the agent fetches recent emails from Gmail, lists upcoming events from Google Calendar, and pulls tasks or contacts from Notion to answer the request. If the agent decides to send an email, it asks for approval in Telegram and only proceeds after you approve within the time limit. Sends the assistant’s final response back to the same Telegram chat. Setup Create a Telegram bot with @BotFather, add the Telegram credentials in n8n, and use the workflow’s Telegram trigger to connect the bot. Add an OpenAI API credential for both chat responses and voice transcription, and set your preferred model
Generate daily auto-service AI videos and post them with OpenAI, Perplexity, AtlasCloud, and Blotato
Quick overview This workflow runs daily (or manually) to research an auto-service topic with Perplexity, generate a caption and text-to-video prompt with OpenAI, render an AI video via AtlasCloud, then publish it to TikTok, YouTube, Instagram, and Facebook through Blotato while sending a Telegram preview. How it works Runs every morning on a schedule (or starts via a manual trigger). Loads your business settings (name, topic, language, video format, and CTA) from a central configuration. Uses Perplexity web research plus an OpenAI chat model to produce a structured caption, hashtags, and a cinematic text-to-video prompt. Sends the prompt to AtlasCloud to generate a short vertical video and waits before polling AtlasCloud for the render status. Repeats the wait-and-check loop until AtlasCloud reports the video render as completed. Prepares the final caption and video URL, then publishes the video to TikTok, YouTube, Instagram Reels, and Facebook Reels via Blotato and sends a Telegram message with the post preview and video link. Setup Add credentials for OpenAI, Perplexity, AtlasCloud (HTTP Header Auth), Blotato, and Telegram. Update the Configuration values (business name, topic, C
Send Google review request and reminder emails with Gmail and Google Sheets
Quick overview This workflow runs daily and reads a Google Sheets job ledger to send Google review request and reminder emails via Gmail, then updates the sheet with sent dates to prevent duplicate messages. How it works Runs every day at 9am on a schedule. Loads your email templates and timing settings, then reads all rows from the selected Google Sheets document. Keeps only rows with status set to open, a valid job_date, and a customer email, and decides whether a first request (2+ days after the job) or a reminder (7+ days after the request) is due. Personalizes the subject and body with the customer details and your Google review link. Sends the appropriate plain-text email to each customer through Gmail. Updates the matching row in Google Sheets (by job_id) to stamp request_sent or reminder_sent with today’s date so the workflow never sends the same email twice. Setup Connect Google Sheets credentials and select the target spreadsheet and sheet in both Google Sheets nodes. Connect Gmail credentials for the mailbox you want to send from. Ensure your sheet has headers job_id, customer_name, customer_email, job_description, job_date, status, request_sent, reminder_sent and uses s