Quick overview
This workflow reads company domains queued in Google Sheets and enriches them with verified decision-maker contact details using the Apify Decision Maker Finder Actor, then writes classified results to a Results sheet and an audit trail to a Run_Log sheet.
How it works
- Runs manually and loads configuration values such as spreadsheet ID, target persona, batch size, and Apify polling limits.
- Reads rows from a Google Sheets Inputs sheet, keeps only domains with a blank/READY status, normalizes and deduplicates them, and flags invalid rows.
- Marks valid input rows as IN_PROGRESS in Google Sheets to lock the batch before starting Apify.
- Starts the Apify Decision Maker Finder Actor with email verification enabled and a maximum run charge, then polls Apify until the run succeeds, fails, or reaches the polling limit.
- Downloads the Apify dataset when the run succeeds and classifies every requested domain (including missing/empty Apify results) into outcomes like VERIFIED_DM_REVIEW or NO_BILLABLE_RESULT.
- Upserts the per-domain contact output into the Google Sheets Results sheet and updates the original Inputs rows with the final classification, processed timestamp, and any error message.
- Upserts a batch-level summary into the Google Sheets Run_Log sheet, and on failures writes a failed run log, marks affected Inputs rows with the failure class, and stops with an error.
Setup
- Create a copy of the template Google Sheets spreadsheet (with Inputs, Results, and Run_Log sheets) and keep the column headers as expected by the workflow.
- Add Google Sheets OAuth credentials in n8n and select the same credential on all Google Sheets nodes.
- Add an Apify API token as an n8n Bearer Auth credential (httpBearerAuth) and select it on all Apify HTTP Request steps.
- Replace REPLACE_WITH_GOOGLE_SHEET_ID in the configuration step with your spreadsheet ID.
- In the Inputs sheet, add domains with country (optional) and status READY, and adjust persona, max domains per run, maxTotalChargeUsd, and polling settings as needed before activating.
Requirements
Customization
- Change persona (e.g. founder_ceo, sales_leader, finance_cfo)
- Change max_domains_per_run and max_total_charge_usd
- Change poll_interval_seconds / max_poll_count
- Rename sheet tabs in Set workflow configuration if needed
- Keep human review before outreach; contact data may be personal data
Additional info
Named contacts are written to the Results tab; Inputs only stores queue status (READY → final classification).
Actor start POST is never auto-retried (START_UNKNOWN means check Apify Console before resetting the batch).
Default batch size is 5 domains for safe first runs.