Daily UpLead company enrichment for your Google Sheet

By General Input

Every weekday at 7am, fill in company name, headcount, revenue, industry, and LinkedIn for every pending domain in your Google Sheet using UpLead.

Integrations

  • UpLead
  • Google Sheets

Type

Deterministic Code

Categories

  • Sales
  • Operations

Build me a code workflow that auto-enriches a Google Sheet of company domains with UpLead every weekday morning. Trigger: cron, every weekday (Mon to Fri) at 7am in my local timezone.

Inputs I want to configure on the workflow: the Google Sheets spreadsheet ID, the worksheet/tab name, the A1 range that covers my data including a header row, the column letter that holds the domain, the column letters where each enriched field should be written (company name, employee count, revenue range, industry, country, founded year, LinkedIn URL), the column letter for the status cell, and a per-run cap on how many rows to process (default 200).

Step 1. Use Google Sheets Get Values to read the configured range. Treat the first row as headers. For each data row, decide if it is pending: it has a domain, the enrichment columns are empty, and the status cell is not already set to enriched or not-found. Collect pending rows up to the per-run cap. If there are no pending rows, end the run cleanly.

Step 2. For each pending row, call UpLead Search Company by domain to look up that company. From the response, extract company name, employee count, revenue range, industry, country, founded year, and LinkedIn URL. Handle these cases: a successful match (set status to "enriched"), no company found (set status to "not-found" and leave the enrichment fields blank), and an API error (set status to a short error reason like "error: 401 unauthorized" or "error: timeout").

Step 3. Respect UpLead's 500 requests per minute rate limit. If a call returns HTTP 429, pause for the number of seconds in the Retry-After header before retrying. Add a small delay between calls so a big batch does not spike.

Step 4. Write the results back to the sheet with Google Sheets Batch Update Values so all updates for a row land together in one request and we minimize Sheets API calls. Use USER_ENTERED so the LinkedIn URL becomes a clickable link. Update only the columns mapped in the inputs plus the status cell. Do not touch any other columns.

Step 5. At the end of the run, log a short summary: how many rows were processed, how many were enriched, how many came back not-found, how many errored, and how many UpLead credits remain (the credit balance is returned on each UpLead response).

Important behaviors: idempotent and safe to re-run (already-enriched and not-found rows are always skipped). Deterministic, no LLM reasoning in the loop. If the sheet is empty or the configured columns do not exist, fail loudly with a clear error instead of writing to the wrong cells.

Related prompts

Explore more prompts
Call overdue Xero customers with an AI collections agentLocal listing health board for every location you manageLet support send one-off Loops emails without an engineerStop cold emails to anyone with a live deal in PipedriveiMessage campaign console with pre-flight checks and delivery boardLinkedIn Ads budget pacing dashboard for every client accountFront desk appointment confirmation board for the next 3 daysGive your team Looker numbers without buying more seatsBuild audience segments from product usage and push to LoopsTurn the people who engage with your posts into Pipedrive leads