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.
Tags
Related workflows
See all Google Sheets→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
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
Classify documents and extract invoice data with LDXhub AnalyzeDoc and Google Sheets
Quick overview This workflow collects uploaded PDFs or images, classifies each document type using LDXhub AnalyzeDoc, and routes it accordingly; invoices get high-detail field extraction and are appended as a new row in Google Sheets. How it works Receives a file upload through an n8n form for a PDF, JPG, or PNG business document. Sends the file to LDXhub AnalyzeDoc (low-detail) to classify it as invoice, receipt, business_card, contract, blank, or other. Parses the returned JSON and routes the execution based on the detected document_type. For invoices, reattaches the original uploaded file and runs LDXhub AnalyzeDoc (high-detail) to extract key invoice fields in structured JSON. Flattens the extracted fields and appends them as a new row in a selected Google Sheets worksheet. For receipts, business cards, and other types, sends the item to placeholder routes where you can add your own processing. Setup Create an LDXhub account, generate an API key, and configure an LDXhub API credential in n8n for both AnalyzeDoc steps. Connect a Google Sheets OAuth2 credential and select the target spreadsheet and worksheet in the append step. Ensure the first row of your sheet contains headers