π’ Company Decision Maker Discovery
Configured with Filter, Google Sheets, Google Sheets Trigger, HTTP Request, and additional nodes. Review the connections and setup before adapting this template.
Node categories in this workflow
- Trigger
- Web / API
- Code
- Routing
- Data store
- AI & models
- Messaging
- Transform
Icons describe general node roles, inferred from node types. Inspect the parameters for the configured action.
Drag to pan; use + and β to zoom. Reconstructed from the exported node positions; nothing runs here. Dashed lines represent non-main connections. Full node names and notes appear below.
How it works
The exported workflow contains the following configured nodes. Their connections are shown above; inspect the JSON for the complete logic, expressions, and external actions.
| Node | Category | Type | Operation |
|---|---|---|---|
| Google Sheets Trigger | Trigger | Google Sheets Trigger | See node parameters |
| Apollo Organization Enrichment | Web / API | HTTP Request | See node parameters |
| Create Apollo People Search URL | Code | Code | See node parameters |
| Loop Over Items (1000 per Batch) | Routing | Loop Over Items | See node parameters |
| Apollo Find Decision Makers | Web / API | HTTP Request | POST |
| Add Contacts | Data store | Google Sheets | appendOrUpdate |
| Apollo Enrich Decision Makers | Web / API | HTTP Request | POST |
| Create Apollo People Enrichment Payload | Code | Code | See node parameters |
| Enrich Contacts | Data store | Google Sheets | appendOrUpdate |
| Loop Over Items For Bulk Enrichment (10 per batch) | Routing | Loop Over Items | See node parameters |
| Determine Contact's Department | AI & models | Open Ai | See node parameters |
| Apollo Organization Search | Web / API | HTTP Request | POST |
| Add Company Website | Data store | Google Sheets | appendOrUpdate |
| Approve Company Website | Messaging | Slack | sendAndWait |
| Add Company Details | Data store | Google Sheets | appendOrUpdate |
| Select Unprocessed Companies | Routing | Filter | See node parameters |
| Is Domain Already Provided? | Routing | If | See node parameters |
| Summarize Core Business | AI & models | Open Ai | See node parameters |
| Split Out Batched Decision Maker Response | Transform | Split Out | See node parameters |
| Split Out Batched Enrichment Response | Transform | Split Out | See node parameters |
| Send Weekly Report | Messaging | Slack | See node parameters |
| Retrieve Verified Leads | Data store | Google Sheets | See node parameters |
| Derive Past Week's Lead Gen. Metrics | Code | Code | See node parameters |
| Weekly Report Trigger | Trigger | Schedule Trigger | See node parameters |
| Merge Rows Which Now All Contain Domains | Transform | Merge | See node parameters |
Setup
- Download the JSON and import it into an isolated n8n instance. Leave the workflow inactive.
- Connect your own credentials through n8nβs credential store. Replace
REPLACE_WITH_*values with your resource identifiers. - Inspect API destinations, Code nodes, database queries, file paths, and outbound actions.
- Run with synthetic data and harmless destinations. Enable triggers only after checking the actual outputs.
Requirements
An n8n instance with the listed node types and compatible versions. Service-connected workflows may require accounts, credentials, or paid APIs.
Credential types declared in the source
None declared. HTTP requests and Code nodes may still need configuration.
Workflow notes
π’ Company Decision Maker Discovery
π’ Company Decision Maker Discovery
This workflow processes a list of companies (optionally with their websites to improve search accuracy) and outputs a curated list of decision-makers (e.g., CEO, COO, CTO, VP, Director) along with their contact information (LinkedIn, email, phone) into a structured leads database. It also sends out a weekly report to a Slack channel, specifying the number of verified leads generated over the past week.β
Here's the Google Sheet template for this workflow.
You can explore the Apps Script code in the sheet via Extensions > App Script
βοΈ Workflow Trigger π
βοΈ Workflow Trigger π
The main workflow is triggered by adding or updating a row in the Companies tab of a Google Sheet. You can provide the company's name and website (the domain will be extracted automatically in the spreadsheet). Alternatively, you may provide only the company name, allowing the Apollo Organization Search API to retrieve the website.
π Status Management βοΈ
π Status Management βοΈ
To avoid unintentional duplicate lead extraction from companies, we use a filter to retrieve only companies where the value of the Status column isn't "Processed". Note that if the website of a "Processed" company is edited, the status changes back to "Pending" as configured via an Apps Script function.
π’ Company Enrichment βοΈ
π’ Company Enrichment βοΈ
With company domains present in the spreadsheet, we utilize the Apollo Organization Enrichment endpoint to extract details about the companies. Subsequently, we generate a one-line summary of each company's core business via an LLM and populate the Companies tab of the spreadsheet, setting the Status to "Processed".
π₯ Decision Maker Discovery βοΈ
π₯ Decision Maker Discovery βοΈ
We employ the Apollo People Search endpoint to find decision-makers at the companies. A crucial query parameter is q_organization_domains_list[], which accepts up to 1,000 domains in a single request. To accommodate scenarios with over 1,000 companies, we batch the API calls (1,000 per batch) and dynamically construct the full search URL for each batch using a Code node.
π§ Data Processing and Upsertion π
π§ Data Processing and Upsertion π
A Split Out node enables handling the batched API response. We generate each decision maker's department based on their job title using an LLM call and upsert the results into the Contacts tab of the spreadsheet.
π§ Contact Enrichment βοΈ
π§ Contact Enrichment βοΈ
Since the Apollo People Search endpoint doesn't retrieve email addresses and phone numbers, we make additional calls to the Bulk People Enrichment endpoint to enrich data for up to 10 people with a single API call. Using a Code node, we construct the dynamic endpoint URL for each batch of 10 people, split the batched enrichment response data, and upsert the Contacts tab again.
β Verified Contacts Filtering
β Verified Contacts Filtering
At this stage, the Contacts tab may contain both verified and unverified email addresses. We filter and select only contacts with verified email addresses using the following spreadsheet formula in cell A2 of the Contacts (Verified) tab:β
=FILTER(Contacts!A2:M, Contacts!L2:L = "Yes")
π Weekly Report βοΈ
π Weekly Report βοΈ
This step is configured to automatically send out a summary message every week, reporting the number of new verified leads discovered over the past 7 days.
π§βπΌ Human-in-the-Loop Verification π
π§βπΌ Human-in-the-Loop Verification π
Since the retrieved website may not always be accurate, a human-in-the-loop step (via Slack) is required to verify the returned websites in the spreadsheet, make corrections if needed, and approve.
π’ Company Decision Maker Discovery
π’ Company Decision Maker Discovery
Purpose and structure
This folder contains the π’ Company Decision Maker Discovery workflow. Its executable nodes use code, filter, googleSheets, googleSheetsTrigger, httpRequest, if, merge, openAi, scheduleTrigger, slack, splitInBatches, splitOut. The table and connection map below are derived from the JSON, not an inferred guarantee of behavior.
Setup
Import inactive. Configure your own credentials and replace REPLACE_WITH_* values. Review external destinations and Code nodes before running.
Entry points
Google Sheets Trigger, Weekly Report Trigger
Verification
Sanitized source candidate; not runtime-tested. This overview is generated from node metadata. Read the folder README for the connection map, credential types, and license.
Attribution
https://github.com/Zie619/n8n-workflows/blob/94007c1445d9258a7da116646b79473e7c7c3282/workflows/Splitout/0902_Splitout_Code_Create_Scheduled.json MIT; preserve source notices.