# Workflows

> Automate multi-step AI workflows that chain skills, triggers, and actions together.

Source: https://docs.graph8.com/ai-features/workflows/

Workflows let you automate multi-step processes by chaining triggers, skills, and actions together. Build once, run automatically.

## How It Works

1. Go to **Agents → Workflows**
2. Click **Create Workflow**
3. Define a trigger (e.g., new contact added, form submitted, deal stage changed)
4. Add steps — each step uses a skill or performs an action
5. Activate the workflow

## Workflow Structure

Every workflow follows the same pattern: a **trigger** starts it, **steps** process the data, and **actions** produce an output.

| Component | Role | Examples |
|-----------|------|----------|
| **Trigger** | Starts the workflow when an event occurs | New website visitor, form submitted, new intent signal, webhook, manual run |
| **Steps** | Process, transform, or decide on data | Run an AI action, check a condition, loop over a list, wait for human approval |
| **Actions** | Produce an output or side effect | Send email, add to list, add to sequence, send Slack DM, hand off to agent |

The visual builder lets you connect these as nodes on a canvas. Drag nodes from the palette, connect them with edges, and configure each one in the side panel.

### Builder Modes

You can build workflows in three ways:

- **Visual** — drag-and-drop node canvas (recommended for complex logic)
- **Simple** — linear step list (best for straightforward chains)
- **Code** — raw JSON editor (for advanced users)

Switching between modes converts the workflow automatically.

### Available Nodes

| Category | Nodes |
|----------|-------|
| **Core** | Start, End, Trigger, Webhook |
| **Actions** | Action (LLM / API / Script), Agent, Built-in Tool (web search, knowledge search) |
| **Control Flow** | If/Else (conditional branching), Loop (for-each, while, times), Human Approval |
| **Data** | Transform (map, filter, extract, format), Set Variable |
| **Multi-Agent** | Handoff (transfer to another agent with context) |
| **Integrations** | Add to List, Add to Sequence, Send Email, Send Slack Notification, Send Roam Notification |

## Workflow Actions

Actions are the nodes that do work. Each action has an **input mapping** that pulls data from previous steps using variables.

### Variables

Use `${input.field_name}` to reference workflow inputs and `${step1.result}` to reference output from earlier steps. Variables are available in any text field inside a node configuration.

For example, a "Draft Outreach Email" step might map:
- `company_info` → `${step1.result}`
- `recipient_name` → `${input.contact_name}`

### Integration Actions

| Action | What It Does |
|--------|-------------|
| **Send Email** | Send or draft an email through a connected mailbox. Configure to, subject, content, CC/BCC |
| **Add to List** | Add a contact to a CDP list by mapping input fields |
| **Add to Sequence** | Enroll a contact in a sequence with optional list association |
| **Send Slack Notification** | Send a message to a Slack channel or DM a user. Choose **channel** or **dm** mode, select the target, and write the message using variables |
| **Send Roam Notification** | Send a notification to a team member via ro.am |
| **Round-Robin Assignment** | Distribute the workflow's current contact across a pool of reps (sales managers, AEs, SDRs). Configure the pool, weighting, and skip-rules in the node panel |
| **Visitor Enrichment** | Enrich a visitor or contact with multiple fields in a single call. Pick the fields you want filled (work email, phone, job title, company size, etc.) — the node returns them all together so downstream steps can branch on any of them |

### Error Handling

Each action node has an error strategy:
- **Stop** — halt the workflow on failure
- **Continue** — skip the failed step and move on
- **Retry** — retry with configurable attempts, delay, and backoff (fixed or exponential)
- **Fallback** — route to a different node on failure

## Using Skills in Workflows

Skills are reusable AI action definitions with a fixed prompt, input schema, and output format. Inside a workflow, skills appear as **Action** nodes with `runtime_type: llm`.

To use a skill in a workflow:

1. Add an **Action** node to the canvas
2. Select an existing skill from the action picker — or create one from a template
3. Map the skill's inputs to data from the trigger or previous steps
4. The skill's output becomes available to downstream nodes as `${stepN.result}`

graph8 includes pre-built skill templates across categories: Sales (lead qualification, company research), Marketing (content summarization, social post generation), Support (ticket analysis, knowledge search), and Research (competitive analysis, meeting prep).

## Templates

Click **Use Template** when creating a workflow to start from a pre-configured example:

| Template | Category | What It Does |
|----------|----------|-------------|
| **Lead Qualification** | Sales | Research company → qualify lead → draft outreach email |
| **Content to Social Media** | Marketing | Summarize content → generate LinkedIn post → generate Twitter thread |
| **Contact Data Enrichment** | Data Processing | Enrich company data → validate email → generate contact summary |
| **Customer Support** | Support | Analyze ticket → search knowledge base → draft response |
| **Meeting Preparation** | Productivity | Research attendees → generate agenda → prepare discussion points |
| **Competitive Intelligence** | Research | Research competitor → analyze features → generate comparison report |

Templates are starting points — customize triggers, add steps, or swap actions to fit your process.

## Execution & Monitoring

After activating a workflow, you can monitor runs from the workflow detail page:

- Each execution shows status (**running**, **completed**, **failed**, **paused**)
- Click into a run to see per-node results, duration, and any errors
- Workflows with a **Human Approval** node pause until someone approves or rejects

## Best Practices

- Start with a template and modify it rather than building from scratch
- Use **If/Else** nodes to handle edge cases — e.g., skip outreach if the lead score is too low
- Set **stop on failure** for critical workflows where partial execution causes problems
- Add a **Human Approval** node before irreversible actions like sending emails or enrolling in sequences
- Keep workflows focused — one workflow per outcome. Chain workflows via webhooks for complex pipelines

> **Tip:**
> Test workflows with the **Test Execution** dialog before activating. It runs the workflow with sample data and shows results for each step without triggering real actions.

## Related

- [Skills →](https://docs.graph8.com/ai-features/skills/) — The building blocks workflows use
- [Agents →](https://docs.graph8.com/ai-features/overview/) — AI agents that execute workflow steps
