Daily UpLead company enrichment for your Google Sheet
Every weekday at 7am, fill in company name, headcount, revenue, industry, and LinkedIn for every pending domain in your Google Sheet using UpLead.
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.
Additional information
What does this prompt do?
- Reads your Google Sheet of company domains every weekday morning and finds the rows that still need enrichment.
- Looks each domain up in UpLead and writes back the company name, employee count, revenue range, industry, country, founded year, and LinkedIn URL.
- Stamps a status column with enriched, not-found, or the error reason so you can see at a glance what happened on each row.
- Caps the run at a configurable number of rows so a big paste does not burn through your UpLead credit budget in one morning.
What do I need to use this?
- A Google account with edit access to the sheet you want enriched.
- An UpLead account on a plan that includes API access, plus an API key from your UpLead profile.
- A sheet with at least a domain column and empty columns reserved for the enriched fields and a status cell.
How can I customize it?
- Change the schedule, for example from weekday mornings to once a week, or run it twice a day if you paste new domains often.
- Adjust the per-run cap up or down to match how many UpLead credits you want to spend per morning.
- Pick which firmographic fields land in the sheet and in what column order, or add and remove fields like founded year or LinkedIn URL.
Frequently asked questions
Will it re-enrich rows I have already filled in?
What happens if UpLead cannot find a domain?
How does it avoid burning through my UpLead credits?
What fields get filled in for each company?
Can I run this on demand instead of on a schedule?
Open your sheet to a fully enriched account list every morning.
Connect Google Sheets and UpLead once, and Geni quietly fills in the firmographics every weekday before you sit down.