Skip to content
FlowHubFluxonLab

HTTP Request workflows

97 results — all source-linked n8n references

CsheetsW
free

Audit Asana task hygiene with Google Sheets and Slack scorecards

Quick overview This workflow runs every Monday at 8am to audit open tasks in an Asana project for missing assignees and due dates (optionally missing sections and descriptions), appends each flagged task to Google Sheets, and posts a weekly hygiene scorecard with key counts and top offenders to Slack. How it works Runs every Monday at 8am on a schedule trigger. Fetches tasks from the specified Asana project via the Asana API and keeps only open (incomplete) tasks. Checks each open task for missing assignee and due date (and optionally missing section and empty description) and prepares one audit row per task that fails any enabled rule. Appends the flagged task rows (including reason codes and task permalink) to a Google Sheets tab for a running audit log. Calculates weekly completeness metrics across all open tasks and formats a Slack scorecard including category counts, percent fully fielded, and top offenders. Posts the scorecard message to the configured Slack channel. Setup Add an Asana API credential and set the target Asana project GID in the configuration values. Add a Google Sheets OAuth2 credential, select the target spreadsheet and sheet/tab, and ensure the header column

by Kevin Yu
CsheetsW
free

Repurpose blog posts into social content with Gemini, Google Sheets, and Slack

Quick Overview This workflow runs daily, reads your blog RSS feed, uses Google Gemini to repurpose the latest posts into Twitter/X and LinkedIn drafts in your brand voice, then appends the drafts to Google Sheets and posts them to a Slack channel for review. How it works Runs every day on a schedule and reads items from your blog’s RSS feed. Keeps only the three most recent posts to process. Builds a prompt that includes your brand voice, hashtags, and each post’s title, URL, and excerpt. Sends the prompt to the Google Gemini API to generate Twitter/X and LinkedIn copy formatted as JSON. Parses the Gemini response into separate twitter and linkedin draft fields. Appends the drafts to a Google Sheets worksheet and posts the formatted drafts to a Slack channel for review. Setup Add credentials for the Google Gemini (PaLM) API, Google Sheets OAuth2, and Slack OAuth2. Paste your blog RSS feed URL in the RSS reader step. Update the brand voice text and default hashtags to match your tone. Select the target Google Sheets spreadsheet and worksheet (for example, a “Social Drafts” tab) where drafts are appended. Choose the Slack channel where draft messages are posted.

by Oka Hironobu
CsheetsW
free

Monitor ad campaign health daily with Spendict, Google Sheets, and Slack

Quick overview This workflow runs every morning to read ad campaign metrics from Google Sheets, send each campaign to Spendict for performance diagnosis against benchmarks, log the verdicts back to Google Sheets, and post Slack alerts when a campaign needs attention. How it works Runs daily at 08:00 on a schedule trigger. Reads campaign metric rows from a Google Sheets spreadsheet. Builds a Spendict request per campaign by normalizing platform/objective fields and including only numeric metrics present in each row. Sends each campaign’s metrics to the Spendict analyze-performance API to get a verdict, score, bottleneck, and diagnosis. Routes results by verdict so healthy or insufficient-data campaigns are only logged, while fix_first and kill_or_rebuild campaigns are also prepared for alerting. Appends a dated health-check row for every campaign to a Google Sheets “health log” sheet. Posts a Slack Incoming Webhook message for fix_first and kill_or_rebuild campaigns including the score, primary bottleneck, and diagnosis. Setup Add Google Sheets credentials and select the document and sheet for both reading campaign metrics and appending to the health log. Ensure your metrics sheet h

by Spendict
sheetsW
free

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

by Dr. Firas
CsheetsW
free

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

by Sara Soleymani
CsheetsW
free

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

by Spendict
CsheetsW
free

Generate and score Google Maps leads with Gemini, Apify, and Google Sheets

Quick overview Youtube Video:https://youtu.be/NGruDecKxAg?si=ot9pj6IN4IoLstow This workflow takes a chat-based search request, scrapes matching businesses from Google Maps using Apify, scores and ranks them with Google Gemini, deduplicates against an existing Google Sheet by placeId, saves new leads to the sheet, and returns a formatted results message to the chat. How it works Receives a message from an n8n chat trigger containing the user’s Google Maps lead search request. Sends the request to Google Gemini to extract structured search parameters (business type, location, max results, and output mode). Calls an Apify Google Maps scraping actor with the extracted parameters and selects a clean set of lead fields from the results. Removes duplicate businesses based on Google Maps placeId and batches the remaining leads into a single list. Sends the lead list to Google Gemini to add a 0–100 score and short reason to each lead and returns them sorted by score. Checks the scored leads against existing rows in Google Sheets and filters out any placeId values that are already saved. Appends or updates the new leads in Google Sheets and returns a formatted ranked lead list back to the ch

by iamvaar
CsheetsW
free

Calculate court deadlines with Google Calendar, Outlook, and Clio

Quick overview This workflow receives a webhook with a trigger date and deadline rules, calculates court deadlines (skipping weekends and US federal holidays for business-day rules), then creates matching events in Google Calendar or Microsoft Outlook, creates high-priority tasks in Clio, logs each deadline to a Google Sheets audit sheet. How it works Receives a POST webhook request containing a matter ID, trigger date, optional rule set, and the target calendar platform. Validates the payload and stops early if the matter ID is missing or the trigger date is not in YYYY-MM-DD format. Calculates one deadline per rule using calendar-day or business-day offsets that skip weekends and US federal holidays. Creates a calendar entry for each deadline in Google Calendar (all-day) or Microsoft Outlook via Microsoft Graph (timed), depending on the requested platform. Creates a high-priority pending task in Clio for each deadline and links it to the provided Clio matter ID. Appends one audit row per deadline to the “Audit Log” tab in the OPS1 Compliance Log Google Sheet. Setup Configure the webhook URL in the system that triggers deadline creation and ensure it sends at least matter_id and t

by Dele Tosh @ Protomated
CsheetsW
free

Calculate Shopify variant prices from Google Sheets with Slack approvals

Quick overview Video Explanation: https://youtu.be/_geRatkc1kU?si=qALW_nrPrNB4THuO This workflow runs daily to calculate Shopify variant prices from Google Sheets COGS inputs, automatically updates qualifying prices in Shopify, and posts Slack alerts for changes that need manual approval; it also supports Slack-based approvals to apply a proposed price from a Slack thread. How it works Runs every day on a scheduled trigger. Reads product dependency/recipe data from Google Sheets and looks up the latest supplier prices in a second Google Sheets sheet. Calculates raw COGS, landed COGS (with hidden cost percentage), and a target-margin retail price for each Shopify variant. Checks the calculated price against thresholds and either updates the Shopify variant price via the Shopify Admin API or posts an approval-required alert to Slack. Posts a Slack confirmation message when a scheduled Shopify price update succeeds. Triggers on Slack reaction events, verifies an authorized Slack user approved the change, then fetches the Slack thread replies and extracts the variant ID and approved price. Updates the Shopify variant price with the extracted value and posts a final status message to Sl

by iamvaar
CsheetsW
free

Log nearby businesses from OpenStreetMap to Google Sheets by proximity

Quick overview This workflow collects a location and business search criteria via an n8n form, geocodes the location with OpenStreetMap Nominatim, finds nearby matching businesses using the Overpass API, and appends normalized results (including website availability) to a Google Sheets spreadsheet. How it works Receives a submission from an n8n form with a location, business category, search radius, and maximum results. Sends the location text to OpenStreetMap Nominatim to retrieve latitude and longitude coordinates. Stops if the location cannot be geocoded, preventing an invalid proximity search. Builds an Overpass QL query for the selected business category and radius around the geocoded coordinates. Calls the OpenStreetMap Overpass API to return matching nodes/ways and their tags (for example website, phone, and opening hours). Normalizes the returned elements into a consistent set of fields, flags whether a website is present, and appends the rows to Google Sheets. Setup Add a Google Sheets credential and select the target spreadsheet and sheet in the Google Sheets append step. Update the User-Agent value to include a real contact email to comply with OpenStreetMap usage policy

by Kevin Yu
CsheetsW
free

Track buyer query citation sources with GPT-4o and Google Sheets

Quick overview This workflow tracks which sources ChatGPT cites for buyer queries.vIt runs weekly to test buyer queries against OpenAI’s GPT-4o web search, extracts the cited URLs, and logs per-query citation counts and domain classifications to Google Sheets. How it works Runs every week on a schedule trigger. Reads a list of buyer queries (including brand and competitor context) from the queries tab in Google Sheets. Sends each query to OpenAI’s gpt-4o-mini-search-preview three times with web search enabled and extracts the url_citation annotations from each response. Aggregates citations per query and domain, calculating citation totals and a sample hit rate across the three runs. Sends the unique cited domains to OpenAI’s gpt-4o-mini to classify each domain into a source taxonomy (brand site, competitor site, review platform, community, publisher, or docs/other). Appends the aggregated rows with the domain classification and an example URL to the citations tab in Google Sheets. Setup Add an OpenAI API key as an HTTP Header Auth credential (Authorization: Bearer YOUR_KEY) for both OpenAI HTTP requests. Add a Google Sheets credential with access to the target spreadsheet. Create

by Sara Soleymani
CsheetsW
free

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

by Sara Soleymani
sheetsW
free

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

by Salman Mehboob
CsheetsW
free

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

by Sara Soleymani
CsheetsWtelegram
free

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

by Emel
CsheetsW
free

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

by Facundo Witt
CsheetsW
free

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

by Igor
CsheetsW
free

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”.

by Redowan Ahmed Farhan
CsheetsW
free

Scrape business emails from Google Maps to Google Sheets

Quick overview This workflow takes a list of Google Maps search queries, extracts candidate business website URLs from the search results, visits each site, scrapes email addresses from the page content, and appends cleaned, deduplicated emails to Google Sheets fully automated, no manual research needed. How it works A manual trigger fires with a pinned list of Google Maps search queries, each representing a location and business type combination. A query loop iterates through each query, launching a sub-workflow execution per query and applying a configurable wait between executions to reduce request bursts. The sub-workflow sends an HTTP GET to the Google Maps search results URL for that query and reads the raw HTML response. A code node extracts all URLs from the HTML using a regex pattern, after which a filter node removes known system domains such as Google, gstatic, schema.org, and Wix internals, and a deduplication node removes repeated URLs before visiting. A URL loop processes each candidate business website one at a time, fetching the page HTML and passing it into the email processing flow. A code node applies a regex to the fetched page content to extract email-shaped st

by Ravi Patel
CsheetsWpostgres
free

Check job apply URLs and deactivate dead links in Postgres and Google Sheets

Keep your job listings database clean without manual checks. Every three days, this workflow fetches all active jobs from your Postgres database, runs each application URL through a validation check, identifies dead links via HTTP status codes and soft-404 redirect detection, then marks failed entries as inactive in both Supabase and Google Sheets simultaneously. Who it's for Teams running a job aggregator, career platform, or internal hiring tracker who store job listings in Postgres and want stale or broken apply links removed automatically — without waiting for user reports. How it works A Schedule Trigger fires every 3 days All active jobs are fetched from your Postgres (Supabase) database via a SQL query A Prepare URLs node filters out any rows with missing, malformed, or non-HTTP URLs before they're checked An HTTP Request node sends a HEAD request to each apply_url A Find Dead Jobs code node analyzes each response and flags a job as dead if: Status code is 404 or 410 DNS resolution fails (ENOTFOUND) Connection is refused (ECONNREFUSED) A 301/302/307 redirect points to a different path — indicating the job was removed and the ATS is silently redirecting (soft-404 detection) I

by Panth1823
CsheetsWpostgres
free

Aggregate multi-source job boards into Supabase and Google Sheets

Stop manually checking dozens of career pages. This workflow runs every morning, hits the public APIs of 8+ ATS platforms and job boards, normalizes every listing into a single clean schema, and syncs everything to Supabase and Google Sheets deduplicated and ready to query. Who it's for Job seekers, recruiters, or career platforms that want a consolidated, up-to-date feed of openings from specific companies without scraping, without API keys, and without paying for a jobs aggregator. How it works A Schedule Trigger fires daily at 8 AM IST A Company List code node defines all sources grouped by ATS type (Greenhouse, Lever, Ashby, Workable, SmartRecruiters, RemoteOK, and board APIs like Remotive, Himalayas, Arbeitnow, Jobicy) A Prepare Request node builds the correct API URL and headers for each source, including multi-page pagination for SmartRecruiters (up to 500 jobs via offset) and Himalayas (up to 500 via page param) An HTTP Request node fetches all sources in batches of 5 A Parse + Enrich + Filter node normalizes all divergent JSON structures into a unified schema — resolving ISO country codes, Indian city detection, salary parsing across all formats, and domain-based filtering

by Panth1823
CsheetsW
free

Generate 7 new LinkedIn posts from top Apify posts using OpenAI and save to Google Sheets

This workflow helps you turn your best-performing LinkedIn posts into a repeatable content creation system. It pulls LinkedIn post data from Apify, normalizes and ranks the posts by impressions, identifies the strongest-performing content, and sends the top posts to OpenAI for pattern analysis. Based on those insights, it generates 7 new LinkedIn post ideas, then saves both the insights and generated posts to Google Sheets for easy review and planning. It is ideal for founders, creators, consultants, marketers, and social media teams who want to use real LinkedIn performance data to guide new content creation with a faster and more structured workflow.

by Jonas Frewert
CsheetsW
free

Send personalized LinkedIn connection requests with Google Sheets and Unipile

Send personalized LinkedIn connection requests automatically using n8n, Google Sheets, and Unipile — with built-in safety limits, duplicate prevention, and full invitation tracking. Scale your LinkedIn outreach without manually sending a single connection request. This workflow reads your leads from a Google Sheet, filters out already-contacted prospects, and sends each one a personalized connection note via LinkedIn — automatically, on a schedule, and safely within LinkedIn's limits. Built for founders, sales teams, and recruiters who want consistent LinkedIn outreach without repetitive manual work. Every request is tracked back to your sheet with its invitation ID and status, making follow-up workflows easy to build on top. Good to know Unipile pricing is based on the number of connected accounts, not per API call or per message sent. The base plan starts at €49/$55 per month and includes up to 10 linked accounts For this workflow, connecting one LinkedIn account counts as one account Unipile does not enforce usage limits — you can send as many requests as you need. However, LinkedIn itself applies its own rate limits and usage policies A 7-day free trial is available with all fe

by Salman Mehboob
CsheetsW
free

Make outbound sales calls from Google Sheets using a VAPI voice agent

This n8n workflow automates outbound phone calls to new leads using VAPI, with built-in timezone detection to ensure you're only calling during business hours. Use cases include appointment setting, lead qualification, follow-up surveys, payment reminders, and sales outreach—anywhere you need to scale phone conversations without scaling headcount. Good to know You'll need a VAPI phone number and configured voice agent before using this workflow. VAPI offers $10 free credit when you sign up (~70 minutes of calls). Create your account here. The timezone logic covers common country codes (UK, US, EU, Australia, India, UAE, Singapore, Japan). You can extend this in the Code node. How it works A new row in Google Sheets triggers the workflow (you can swap this for a webhook, form, or CRM trigger). The phone number is sanitised—stripping spaces, dashes, and brackets so it's in the correct format for dialling. The lead's timezone is determined from their country code, and the workflow checks whether it's between 8am-5pm local time. If not, it waits and retries. VAPI places the outbound call using your configured voice agent. The workflow polls VAPI's API until the call ends, then retrieve

by Marcus Taylor