Google Sheets
185 results — all source-linked n8n references
Score draft content citability with GPT-4o-mini and Google Sheets
Quick overview This workflow manually scores draft content for AI citability using OpenAI GPT-4o-mini and logs detailed, evidence-backed results to Google Sheets, either from pasted draft text or by fetching and cleaning a provided page URL. How it works Starts when you run the workflow manually. The workflow reads drafts from the content tab of your Google Sheet (content_id, title, brand, target_query, draft_text). A Code node validates each row, computes word count, and builds the full judge payload. The complete anchored rubric lives in this node, so the entire scoring methodology is readable in one place. One HTTP call per draft sends the rubric and draft to gpt-4o-mini (temperature 0, JSON mode, retries with backoff). The rubric anchors describe what a 90, 70, 50, and 30 look like on each dimension, so the judge grades against fixed criteria. A second Code node parses the judge output, clamps each score to 0-100, computes the weighted composite (Answer Structure 40%, Entity Clarity 30%, Factual Density 30%), and assigns the verdict band: 80+ publish, 60-79 revise, below 60 rework. Results append to the scores tab with the run date, per-dimension scores, the top 3 fixes, the ju
Enrich Google Maps business leads with Scrapeer and Google Sheets
Quick Overview This workflow runs a saved Scrapeer Google Maps Leads flow on a daily schedule (or manually), enriches each business with detail-page data, and appends the normalized lead fields to a Google Sheets tab. How it works Runs either manually or every day at 08:00 using the schedule trigger. Sets the Google Maps search parameters (search query, location, max results) and the target spreadsheet name for the run. Calls Scrapeer to run a selected Google Maps Leads flow with those input variables and waits for the results. Attaches the original search context to the Scrapeer output for traceability. Parses and deduplicates the returned leads, normalizes fields like rating and review count, and formats phone numbers as sheet-safe text. Appends one row per lead to Google Sheets with columns such as name, category, rating, reviews, address, phone, website, and Google Maps URL. Setup Create (or choose) a Google Sheets spreadsheet with a “Leads” tab and columns: Scraped At, Search Query, Location, Name, Category, Rating, Reviews, Address, Phone, Website, and Google Maps URL. Add a Google Sheets Service Account credential in n8n and select the target spreadsheet and sheet tab in the
Extract business card contacts with LDX hub Gemini AnalyzeDoc and Google Sheets
Quick overview This workflow collects a business card photo/scan through an n8n form, uses LDX hub AnalyzeDoc (Gemini) to extract contact details as structured JSON, and appends the resulting fields as a new row in Google Sheets. How it works Receives a business card file upload (PDF/JPG/PNG) through an n8n form submission. Sends the uploaded file to LDX hub AnalyzeDoc using the Gemini model and a fixed schema prompt to extract contact fields as JSON. Parses the extracted JSON into individual fields like name, company, email, phone numbers, and address. Appends the extracted fields as a single new row in the selected Google Sheets worksheet. Setup Install the community node n8n-nodes-ldxhub and add an LDXhub API credential with your API key. Add a Google Sheets OAuth2 credential and select the target spreadsheet and worksheet in the append step. Create (or match) a header row in your sheet for full_name, job_title, company, department, email, phone, mobile, address, website, notes so the auto-mapping writes to the correct columns.
Enrich LinkedIn leads with Unipile and Google Sheets
Quick overview Automatically search LinkedIn for prospects using Unipile's API, enrich each profile with full details, and sync leads into a Google Sheet CRM — runs daily on a schedule with rate limiting, deduplication, and error logging built in. How it works A daily Schedule Trigger fires at 08:00 and loads your search config — Unipile DSN, LinkedIn account ID, target keywords, and daily safety limits — into all downstream nodes. Unipile's Search API (POST /api/v1/linkedin/search) runs a keyword search across Classic, Sales Navigator, or Recruiter LinkedIn and auto-paginates via cursor up to a configurable page limit. Search results are split into individual profile items, de-duplicated by LinkedIn profile ID to prevent processing the same person twice across pages. A Limit node caps total profiles per run to protect your daily LinkedIn quota — Unipile recommends staying under 100 profile look-ups per account per day. Each profile is enriched with full details via GET /api/v1/users/{id}?linkedin_sections=*, processed in batches of 5 with a 3-second pause between calls to respect rate limits. A Set node maps the Unipile response to 12 clean CRM columns — name, headline, title, com
Track brand visibility in ChatGPT results with OpenAI and Google Sheets
Quick overview This workflow runs weekly, reads buyer-style queries from Google Sheets, asks OpenAI Chat Completions (ChatGPT) each query three times, judges whether your brand is mentioned, and writes per-query visibility metrics and a 0–100 score back to a Google Sheets results tab. How it works Runs every week on a schedule trigger. Reads the query set (query, brand, and competitors) from a Google Sheets tab named queries. Duplicates each query into three sample runs to account for variation in OpenAI responses. Sends each sample query to OpenAI Chat Completions (gpt-4o-mini) to generate an answer at temperature 1. Sends the generated answer to a separate OpenAI Chat Completions judge call (gpt-4o-mini) at temperature 0 to extract structured JSON about brand mention, rank, sentiment, recommendation, and competitors mentioned. Aggregates the three judged samples per query to compute inclusion rate, average rank/sentiment, and a weighted 0–100 visibility score. Appends the per-query results (including the run date and metrics) to the results tab in Google Sheets. Setup Add an OpenAI credential for HTTP Header Auth using Authorization: Bearer . Add a Google Sheets credential with a
Route ecommerce review alerts from Gmail to Slack with OpenAI and Google Sheets
Quick Overview This workflow polls Gmail for unread ecommerce review notification emails, extracts key review details, checks Google Sheets to prevent duplicate processing, uses OpenAI to classify sentiment and urgency, posts routed alerts to Slack, and logs each processed review and its AI metadata back to Google Sheets. How it works Polls Gmail every minute for unread emails with the “Reviews” label. Extracts the message ID, received time, customer details, product name, star rating, and review text from the email content. Reads the existing review audit log from Google Sheets and skips processing if the message ID already exists or the review text is too short. Sends the review details to OpenAI to return a JSON classification with sentiment, urgency, themes, summary, suggested action, and a sentiment score. Routes the review based on sentiment and urgency, escalating low-star or high-urgency negative reviews and optionally notifying on positive reviews. Posts a formatted alert to the selected Slack channel when notification is enabled. Appends the review (including route, AI fields, and whether Slack was notified) to Google Sheets as an audit log. Setup Create a Gmail label (fo
Collect local business leads from Google Maps with ScraperAPI and Google Sheets
Quick Overview This workflow collects local business leads from Google Maps using ScraperAPI and stores them in Google Sheets, letting you submit a niche and location via an n8n form and automatically deduplicate and append new businesses to your leads spreadsheet. How it works Creates a new Google Sheets spreadsheet with a “Leads” tab when you run the manual setup trigger. Triggers when a user submits the “Find local business leads” n8n form with a niche, location, and optional max results. Builds a Google Maps search query from the form inputs and reads existing rows from the target Google Sheet for deduplication. Uses ScraperAPI’s Google Maps Search to fetch metadata for the query, then extracts the results-page URL and fetches the autoparsed Google Maps results. Parses the returned businesses into lead fields (for example name, phone, address, website, rating, coordinates, and a Google Maps link) and filters by the minimum rating setting. Removes businesses already present in the sheet (matched by name + address), caps the batch to the requested maximum, and appends the new leads to Google Sheets. Setup Add Google Sheets credentials in n8n and select the target Spreadsheet ID a
Transcribe audio to text via webhook with Smallest.ai speech-to-text
Quick Overview This workflow exposes a POST webhook endpoint that accepts a binary audio file, transcribes it to text using Smallest.ai speech-to-text, and returns the transcript in the same synchronous HTTP response. How it works Receives an HTTP POST request on the /transcribe-audio webhook endpoint containing an audio file as binary data. Sends the incoming binary audio (from the audio property) to Smallest.ai for speech-to-text transcription. Extracts the returned transcription and formats it into a transcript field. Responds to the original webhook request with the transcript payload. Setup Create and connect your Smallest.ai API credentials in the Smallest.ai transcription step. Activate the workflow to generate the production webhook URL and use it in your client application. Ensure your client sends the audio file as binary under the audio property when calling the webhook.
Extract purchase order line items from PDFs with easybits and Google Sheets
Quick overview This workflow collects purchase order PDFs through an n8n form, extracts header fields and line-item tables with easybits Extractor, appends one row per article to Google Sheets, and shows a completion summary highlighting any missing or incomplete extracted fields. How it works Receives a form submission with one or more uploaded purchase order PDF files. Splits the upload into one workflow item per PDF and processes the PDFs one at a time. Sends each PDF to easybits Extractor to extract purchase order header details and the articles table. Flattens the extracted articles into one row per line item, repeats the PO header fields on each row, and records per-document flags for missing header values or incomplete article fields. Appends the generated rows to a Google Sheets worksheet. After all PDFs are processed, builds a summary of any flagged documents and displays it on the n8n form completion screen. Setup Create an easybits Extractor account, generate an API key, add it as an easybits Extractor credential, and configure the extractor fields (mark_for, po_number, po_date, delivery_date, pr_number, reference_no, and an articles array with article/unit/quantity). Ad
Deploy Gainium DCA bot pairs with Telegram approval and Google Sheets logging
Quick overview This workflow runs daily, pulls top coins from the Gainium crypto screener, formats them into USDT trading pairs, and asks for Telegram approval before updating and starting a Gainium DCA bot, with optional deployment logging to Google Sheets and Telegram error alerts. How it works Runs every day at 08:00 on a schedule. Queries the Gainium screener for coins meeting the configured filters (market cap threshold, Binance listing, positive 24h change) and sorts them by 24h volume. Cleans the screener results and selects the top N unique SYMBOL_USDT pairs. Sends the proposed pairs to Telegram with Deploy/Skip buttons and pauses until you respond. If approved, replaces the Gainium DCA bot’s pairs, starts the bot, appends a deployment row to Google Sheets, and sends a Telegram confirmation. If skipped, leaves the bot unchanged and sends a Telegram message confirming the skip. Sends Telegram alerts if the Gainium screener call fails or if any other workflow node errors. Setup Install the community node n8n-nodes-gainium and add a Gainium API credential with permission to manage your bot. Create a Telegram bot, add a Telegram API credential in n8n, and set your telegram_chat
Enrich contact emails and phone numbers with Tomba and Google Sheets
Quick overview This workflow runs on a schedule to read “Pending” contacts from Google Sheets, uses Tomba to find email addresses and (when available) phone numbers, then writes the enriched results back to the same spreadsheet. How it works Runs on a scheduled trigger. Reads rows from a Google Sheets worksheet where the Status column equals “Pending”. Processes the contacts in batches and sends each contact’s name, company, and domain to Tomba to find an email address. If Tomba indicates phone data is available, looks up the phone number in Tomba using the found email address. Normalizes the output (email, phone, score, and enrichment status) and updates the matching row in Google Sheets with the results and Status set to “Done”. Setup Connect your Google Sheets OAuth credentials and set the target spreadsheet and worksheet that contains your contacts. Add a Tomba API credential. Ensure your Google Sheet includes the expected columns (First Name, Last Name, Company, Domain, Status) and output columns (Email, Phone, Score), with Status set to “Pending” for rows you want to enrich.
Enrich LinkedIn profiles into full contacts with Tomba and Google Sheets
Quick overview This workflow runs on a schedule to read “Pending” LinkedIn profile URLs from Google Sheets, uses Tomba to find and enrich contact details (email and phone), and writes the results back to the same sheet with updated status and scoring. How it works Runs on a schedule trigger. Reads rows from a Google Sheets worksheet where the Status column is set to “Pending”. Processes each LinkedIn URL in batches and calls Tomba’s LinkedIn Finder to retrieve the person’s email and phone details. Normalizes the returned contact data (including combining multiple phone numbers) and sets an enrichment status based on whether an email is found. Updates the corresponding row in Google Sheets with the enriched fields (Email, Phone, Score) and marks the Status as “Done”. Setup Connect your Google Sheets OAuth2 credentials and set the target spreadsheet and worksheet that contains LinkedIn URL, Status, and output columns. Add your Tomba API credentials and ensure the LinkedIn URL column contains valid LinkedIn profile links. Make sure your sheet includes a row_number field (used for matching updates) and uses “Pending” as the Status value for rows you want to process.
Route medical equipment form leads to Google Sheets and Slack
Quick overview Youtube Video: https://youtu.be/Zi872Mz4GnE?si=5yhYcMMH633Sqdd9 This workflow captures medical equipment enquiries via an n8n form, stores or updates each submission in Google Sheets, flags low-quality leads based on free email domains, and routes qualified enquiries to the right Slack channel depending on the stated purchase timeline. How it works Receives a submission from an n8n form collecting company, contact, and equipment interest details. Appends or updates the enquiry in Google Sheets, matching on the Work Email Address. Checks whether the email domain is a free provider (for example, gmail.com or outlook.com) and posts a “Low Quality Lead” alert to Slack when it is. For non-free domains, looks up the matching row in Google Sheets and continues only when a record is found. Routes qualified enquiries based on Purchase Timeline, sending “Immediate Need” submissions to a dedicated Slack channel and “Budgeting for Next Fiscal Year” submissions to a follow-up campaign Slack channel. Setup Set up the n8n Form Trigger and publish the form so users can submit enquiries. Add a Google Sheets Service Account credential, share the target spreadsheet with the service acc
Track and de-duplicate email leads in Google Sheets from Gmail
Quick overview This workflow polls Gmail for new unread emails with a specific label, extracts lead details from each message, checks Google Sheets for duplicates by email or message ID, and appends only new leads to a designated spreadsheet. How it works Polls Gmail every minute for unread messages matching the search query (for example, emails labeled “Leads”). Extracts sender name and email, subject, message text, phone number (if found), received timestamp, and the Gmail message ID. Reads existing rows from the target Google Sheets tab to compare against previously captured leads. Flags the incoming lead as a duplicate if an existing row matches either the sender email address or the message ID. Appends the lead as a new row in Google Sheets only when it is not flagged as a duplicate. Setup Connect your Gmail OAuth2 credentials and adjust the Gmail trigger query/label and read status filter to match your intake process. Connect your Google Sheets OAuth2 credentials. Update the Google Sheet ID and sheet tab name in the extraction step, and ensure the sheet has columns for Email, Name, Subject, Phone, Message, Received At, and Message ID. Requirements n8n Cloud or self-hosted n8n
Reply to Instagram comments with Groq, Telegram approval, and Google Sheets logging
Quick Overview This workflow monitors new Instagram comments, generates a draft reply with Groq (OpenAI-compatible chat completions), sends it to Telegram for YES/NO approval, and logs the decision in Google Sheets before optionally posting the approved reply back to Instagram. How it works Runs every 10 minutes, reads existing comment IDs from Google Sheets, then fetches your 10 most recent Instagram media items and their comments via the Instagram Graph API. Filters out comments made by your own Instagram account and limits processing to recent comments. Skips any comment already logged in Google Sheets, and sends new comments (with the post caption as context) to Groq to generate a short draft reply. Sends the draft reply to a Telegram chat for approval and appends a “pending_review” row to Google Sheets with the Telegram message ID for tracking. Runs every 3 minutes, polls the Telegram Bot API for new updates, and keeps an offset so only new messages are processed. For Telegram messages that are replies to an approval request, matches the replied-to message ID to the pending row in Google Sheets and routes the decision. If the reviewer replies YES, posts the draft as an Instagr
Capture and deduplicate inbound leads with webhooks and Google Sheets
Quick overview Capture inbound leads via webhook, validate and sanitize the data, deduplicate against Google Sheets, and store only clean leads ready to feed an AI-powered email/SMS nurture sequence. How it works Webhook receives the lead POST request from any form builder or landing page. Validation Missing email or phone returns a 400 and stops execution. Sanitize & normalize Trims whitespace, lowercases email, normalizes phone to international format, sets lead stage to 1, fills defaults for optional fields. Dedupe check Looks up the email in Google Sheets; flags duplicates safely even when the sheet returns zero rows. Duplicate → 200 "Already Registered", execution ends. New lead → appended to Sheets, 200 "Lead Accepted" returned. Setup Import all 4 workflows they share one Google Sheet. Create a sheet with these exact headers: Name, Email, Phone, Stage, Next Followup At, Has Replied, Lead Source, Service of Interest, SMS Consent Connect Google Sheets OAuth2 in the Lookup and Append nodes; paste your Sheet ID/tab into the 🔧 CONFIG nodes. Copy the webhook URL into your form builder. Map fields to: name, email, phone, lead_source, service_of_interest, sms_consent Requirements Go
Log Strava zone 2 and 5K test runs to Google Sheets
Quick overview This scheduled workflow pulls your latest running activities from Strava, classifies them as Zone 2 runs or 5K tests based on pace and distance, and writes the formatted results into specific cells in a Google Sheets training log while tracking processed activity IDs. How it works Runs on a daily schedule. Fetches recent activities from the Strava API for the authenticated athlete. Processes each activity to calculate pace (min/km) and routes it into “Zone 2” or “Test Run” based on sport type, duration, pace, and distance rules. Formats the selected activities into sheet-ready fields (date, pace string, moving time, and distance) and labels them as ZONA 2 or TEST 5KM. Reads the target Google Sheets range to find the next available slots and checks an “IDs Registrados” list to avoid reprocessing activities. Updates Google Sheets with the activity details in the appropriate cycle columns and appends new Strava activity IDs to the “IDs Registrados” cell. Setup Connect your Strava OAuth2 credentials and ensure the athlete has permission to read activities. Connect your Google Sheets OAuth2 credentials and update the spreadsheet URL/ID and sheet (tab) selection used for r
Enrich CRM contacts in Google Sheets with Tomba firmographic data
Quick overview This workflow watches a Google Sheets contacts list for new rows and enriches each contact using Tomba to find a likely email address, company firmographics, and a phone number, then writes the enriched fields back to the same spreadsheet. How it works Triggers when a new row is added to a specified Google Sheets worksheet (polled every minute). Processes new contacts one at a time to control throughput. Uses Tomba to find an email address for the contact based on the provided domain, company, and name. Uses Tomba to enrich the company with firmographic details such as industry, company size, revenue, and location. Uses Tomba to look up a company phone number from the contact’s domain. Combines the enrichment results into a single contact record and sets a status like “Enriched” or “Not Found.” Updates the matching row in Google Sheets with the enriched Email, Phone, Industry, Company Size, Revenue, Country, and Status fields. Setup Connect Google Sheets credentials and select the target spreadsheet and worksheet to monitor. Add Tomba API credentials to each Tomba step used for email, company, and phone enrichment. Ensure your Google Sheet includes the destination co
Track and notify lead callbacks with Tomba, Google Sheets, and Slack
Quick overview This workflow receives new lead details via a webhook, looks up a company phone number with Tomba using the lead’s domain, updates a Google Sheets lead tracker, and sends a formatted callback alert to a Slack channel. How it works Receives lead data in a POST webhook request. Processes incoming leads in batches to handle multiple items safely. Uses Tomba to find a phone number for each lead based on the provided company domain. Formats the lead details and enrichment results into tracker fields and a Slack-ready message. Updates the matching lead row in Google Sheets (matched by Domain) with the phone, status, and “Slack Notified” flag. Posts the callback alert message to a selected Slack channel and continues until all leads in the batch are handled. Setup Configure the source system to send lead payloads to the workflow’s webhook URL (path: /GHL) with fields like Full name, Email, Company name, and Company domain. Add your Tomba API credentials to enable phone lookup by domain. Connect your Google Sheets credentials and set the target spreadsheet and sheet, ensuring columns like Domain, Phone, Status, and Slack Notified exist. Connect your Slack credentials and cho
Build hospitality lead lists from Booking.com using Apify and Google Sheets
Quick Overview This workflow uses Apify and Google Sheets to find accommodation leads from Booking.com, enrich them with Google Maps contact details, discover official websites via Google Search, scrape additional contacts from those sites, and then append the finalized partner list to a Google Sheets spreadsheet. How it works Manually triggers and sets the destination, maximum number of results, and property type to search. Runs the Apify Booking Scraper actor for the configured destination and retrieves the Booking.com dataset results. Maps each Booking.com result into a normalized lead record, using Booking trader details (when available) for initial email and phone fields. Runs the Apify Google Maps with Contact Details actor for leads missing email and merges any найден emails, phones, websites, and social links into the lead records. For leads still missing both email and website, runs the Apify Google Search Scraper actor to find an “official website” candidate and assigns the best non-OTA domain. Scrapes those candidate websites with the Apify Contact Info Scraper actor to extract emails/phones/socials and merges the results into the final lead rows. Appends the finalized l
Verify emails and phone numbers in Google Sheets with ApexVerify
Quick overview This workflow watches a Google Sheets lead list and uses ApexVerify to verify new or changed email addresses and phone numbers, then writes the verification status back into the same sheet. How it works Triggers when a row is added or updated in a specified Google Sheets worksheet. Checks whether the Email cell already contains a verification marker ("|||"), and only proceeds if it has not been verified yet. Sends the email address to ApexVerify for email verification and formats the result as an icon status plus the original email (for example, "✅ ||| [email protected]"). Updates the originating Google Sheets row with the formatted email verification result. Checks whether the Phone Number cell already contains a verification marker ("|||"), and only proceeds if it has not been verified yet. Sends the phone number (with target country set to FR) to ApexVerify for phone verification and formats the result as an icon status plus the original number. Updates the originating Google Sheets row with the formatted phone verification result. Setup Connect Google Sheets OAuth credentials for both the Google Sheets Trigger and the Google Sheets update action, and select your sp
Enrich Google Maps business leads with Apify and Google Sheets
Quick overview This workflow runs on demand to scrape Google Maps business leads with Apify, optionally fetches each business website to extract an email address, and appends the enriched lead data to a Google Sheets spreadsheet. How it works Starts manually and loads the Apify API key, Google Maps search query, max results, and target Google Sheets spreadsheet ID. Launches the Apify Google Places scraper run for the provided search query and stores the returned run ID and dataset ID. Polls Apify until the actor run status is SUCCEEDED, waiting and retrying until results are ready. Downloads the scraped business items from the Apify dataset and processes them one business at a time. If a business has a website, requests the site HTML and extracts the first valid email address found; otherwise it keeps the email blank. Appends each enriched lead (name, email, phone, rating, address, review count, and website) as a new row in Google Sheets. Setup Add your Apify API token and replace the placeholder value in the configuration step. Connect Google Sheets credentials in n8n and set the target spreadsheet ID (and sheet name if not Sheet1). Update the Google Maps search query and max resu
Find and log high-quality domain contacts with Tomba and Google Sheets
Quick overview This workflow runs on a schedule, pulls “Pending” company domains from Google Sheets, uses Tomba to find email addresses for each domain, filters for high-scoring personal contacts, logs the results to an enrichment sheet, and marks each processed domain as Done. How it works Runs on a schedule to check a Google Sheets “Company domains” tab for rows where the status is set to “Pending”. Processes the pending rows one domain at a time to avoid handling the whole list in a single run. For each domain, queries the Tomba API to retrieve up to 50 email addresses associated with the company domain. Filters the returned results to keep only personal emails with a quality score of 90 or higher and extracts key contact fields (name, email, position, company, domain). Appends the filtered contacts to a Google Sheets “Enrichment” tab. Updates the original domain row in Google Sheets to set the status to “Done” and continues with the next pending domain. Setup Connect Google Sheets credentials and update the spreadsheet and sheet references for both the source “Company domains” tab and the destination “Enrichment” tab. Add your Tomba credentials and ensure the domain input maps
Monitor negative customer reviews with an HTTP API, Google Sheets and Slack
Quick Overview This workflow polls your review API every 6 hours, filters for reviews rated 3 stars or lower, and posts an alert to a Slack channel for each negative review. How it works Runs every 6 hours on a schedule. Fetches the latest reviews from a configured HTTP endpoint. Filters the returned items to keep only reviews with a rating of 3 or below. Checks whether any negative reviews were found and stops if none exist. Posts each negative review to a selected Slack channel with the rating, author, and review text. Setup Provide a reviews API endpoint (and any required authentication) in the HTTP Request node. Connect Slack using an OAuth2 credential. Select the target Slack channel and adjust the rating threshold in the filter logic if you want a stricter or looser definition of “negative”.