> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sixtyfour.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Building Workflows

> How to import, find, enrich, clean, and send data using the Sixtyfour Workflow Editor.

Workflows in Sixtyfour are linear pipelines that process data through a sequence of blocks. Each block performs a specific function — importing data, finding and enriching it, cleaning and organizing it, or sending results. Every workflow follows the same pattern:

```mermaid theme={null}
flowchart LR
  Import --> Find --> Enrich --> Clean --> Send
```

<Warning>
  Only Enterprise plan customers can use the Workflow Editor and Templates to create workflows in the Sixtyfour Platform. You can still create workflows programmatically using the [Workflows API](/api-reference/workflows/workflows-overview).
</Warning>

* Open the [Workflow Editor](https://app.sixtyfour.ai/workflows/new) to start building.
* For API-driven workflow management, see the [Workflows API reference](/api-reference/workflows/workflows-overview).
* For a pre-built starting point, browse the [Workflow Templates](/guides/workflow-templates) gallery.

## Source Blocks

<Tip>For a complete list of source blocks, see the [Workflow Blocks Reference](/api-reference/workflows/workflow-blocks).</Tip>

Every workflow starts with a source block. Pick one based on where your data lives.

| Block | Description |
| - | - |
| Search | Find people or companies from Sixtyfour's dataset using a natural language query. The most common starting point. |
| Read Notebook | Pull data from a previously saved Sixtyfour notebook. |
| Google Maps | Search for local businesses and places. |
| GitHub Find People | Discover developers from GitHub repositories (contributors, stargazers, watchers). |
| GitHub Search | Search GitHub for repositories, users, or code. |
| Kaggle | Pull competitors from Kaggle competition leaderboards. |
| Y Combinator | Fetch YC company data by batch, industry, or tags. |
| HubSpot Import | Import contacts or companies directly from HubSpot CRM. |
| X | Search X/Twitter for profiles (e.g., "AI researchers", "crypto founders in NYC"). |
| TikTok | Get the following list from TikTok profile URLs or handles. |
| Incoming Webhooks | Receive data from external systems via API call. |

<Note>Workflows starting with an Incoming Webhooks block can be [triggered via API](/api-reference/workflows/workflows-execution). Other source blocks run from the Workflow Editor.</Note>

## Enrichment Blocks

Enrichment blocks research and append new information to each row. The block you choose depends on whether you're working with **Lead** (people) or **Company** (organization) data.

### Core Enrichment

| Block | Input Type | Description |
| - | - | - |
| Enrich People | Lead | AI web research on people. Define custom return fields (job title, LinkedIn URL, skills, etc.) and the system researches each person. |
| Enrich Companies | Company | AI web research on companies. Define custom return fields (revenue, employee count, industry, etc.). Optionally discover people at each company. |

### Contact Finding

| Block | Input Type | Description |
| - | - | - |
| Email address | Lead | Find professional or personal email addresses. Returns a verification status (`OK`, `UNKNOWN`, `RISKY`, `NOT_FOUND`). |
| Phone | Lead | Find phone numbers. |
| Verify Email | Lead | Check if existing email addresses are valid and deliverable. |
| Verify Phone | Lead | Check if existing phone numbers are valid and match the lead. Requires a phone column and a full-name column; returns validity, activity score, line type, name match, and a contact grade. |

### Configure Verify Phone

Select the phone and full-name columns from the preceding blocks. If the editor suggests a replacement, apply it only if it matches your data. Save the mapping and rerun the workflow.

### Reverse Lookup

| Block | Input Type | Description |
| - | - | - |
| Reverse Email | Lead | Look up person and company info from an email address. |
| Reverse Phone | Lead | Look up person and company info from a phone number. |

### Specialized

| Block | Input Type | Description |
| - | - | - |
| Web Research Agent | Any | General-purpose AI agent that browses the internet to answer custom questions per row. Best for highly specialized queries. |
| Scrape Website | Any | Scrape web content from URLs in a column. Output as markdown or HTML; supports geo, JS rendering, and proxies. |
| Find Subdomains | Company | Find subdomains for a domain; supports time filters. |
| Backlinks | Company | Get referring domains for a target domain or URL; supports pagination. |

For the underlying APIs, see [People Intelligence](/api-reference/endpoint/people-intelligence), [Company Intelligence](/api-reference/endpoint/company-intelligence), [Find Email](/api-reference/endpoint/find-email), and [Find Phone](/api-reference/endpoint/find-phone).

## Transform Blocks

Transform blocks filter, deduplicate, reshape, and prepare data between enrichment and output.

| Block | Description |
| - | - |
| Filter | Keep or remove rows based on column conditions (e.g., only verified emails, companies with 100+ employees). |
| Deduplicate | Remove duplicate rows based on one or more columns. |
| Deduplicate with Notebook | Remove rows that already exist in a specified notebook. Prevents duplicates across recurring runs. |
| Generate Text | Generate custom text per row using a prompt template with column references. Use `{column_name}` for substitution. Useful for personalized messaging. |
| LLM Output | Generate structured or unstructured text per row using configurable LLM models. Use when you need typed output via a schema. |
| Remove Columns | Remove selected columns from the output, keeping all rows intact. |
| Group By | Group rows by column values with aggregation functions (sum, count, list, etc.). |
| Extract Leads | Extract people discovered during Company Enrichment into individual lead rows. Required before using any lead-only block on company-enriched data. |
| Leads to Company | Convert lead rows into company rows with nested lead arrays. |

### Data Type Conversion

Sixtyfour workflows operate on two data types: **Lead** (people) and **Company** (organizations). Some blocks require a specific type.

<Warning>If you run Enrich Companies with people discovery enabled, the output is still Company data. You must use the **Extract Leads** block to convert it to Lead data before using lead-only blocks like Find Email or Find Phone.</Warning>

## Output Blocks

Output blocks deliver your results. They are typically the final step in a workflow.

| Block | Description |
| - | - |
| Notebook | Save results to a Sixtyfour notebook. Create a new notebook or append to an existing one. |
| Slack | Send messages to a Slack channel. Use `{column}` for substitution and `{@column}` to tag users by email. |
| Outgoing Webhooks | POST workflow results to an external URL when the run completes. See [Outgoing Webhooks](/api-reference/webhooks/outgoing). |

## Common Workflow Patterns

### Find people and get their emails

```mermaid theme={null}
flowchart LR
  Search --> Find_Email[Email address] --> Append_to_Notebook[Notebook]
```

### Research companies, find decision-makers, get contact info

```mermaid theme={null}
flowchart LR
  Search[Search\nCompanies] --> Enrich_Companies[Enrich Companies] --> Extract_Leads[Extract Leads] --> Find_Email[Email address] --> Append_to_Notebook[Notebook]
```

### Enrich an existing list and save clean results

```mermaid theme={null}
flowchart LR
  Read_Notebook[Read Notebook] --> Enrich_People[Enrich People] --> Filter --> Deduplicate[Deduplicate] --> Append_to_Notebook[Notebook]
```

### Import from CRM, enrich, and notify your team

```mermaid theme={null}
flowchart LR
  HubSpot_Import[HubSpot Import] --> Enrich_People[Enrich People] --> Find_Email[Email address] --> Filter --> Slack
```

## Tips

* **Filter early.** Filtering before enrichment reduces rows processed, saving time and credits.
* **Deduplicate across runs.** Use Deduplicate with Notebook on recurring workflows to avoid saving the same results twice.
* **Request only what you need.** Define only the return fields you need in enrichment blocks to keep results focused and costs efficient.
* **Bridge company to lead data.** Use Extract Leads any time you need to go from company data to people data — it is the only way to cross that boundary.
* To skip the blank canvas, start from a [Workflow Template](/guides/workflow-templates).
* To build programmatic workflows, see [Programmatic Workflows](/guides/programmatic-workflows).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.