Workflows
Workflows automate repetitive tasks and business processes. Build visual automation rules that trigger actions based on events and conditions.
Overview
Section titled “Overview”The Workflow Builder lets you create automation rules using a visual drag-and-drop interface powered by React Flow. Workflows consist of interconnected nodes (trigger, condition, action, delay, branch) that execute asynchronously via a background job queue (pg-boss). Each workflow targets a specific module and supports versioning, execution logging, and status management.
Related Modules:
- Settings - Workflow configuration
- Tickets - Ticket automation with SLA triggers
- Deals - Deal stage automation
- Contacts - Contact lifecycle automation
Workflow Fields
Section titled “Workflow Fields”| Field | Description |
|---|---|
| Name | Workflow name |
| Description | What the workflow does |
| Status | Draft, Active, Paused, or Archived |
| Trigger Module | Which module this workflow triggers on |
| Current Version | Latest version number |
| Published Version | Version that is currently active |
| Created By | User who created the workflow |
Workflow Status
Section titled “Workflow Status”| Status | Description |
|---|---|
| Draft | Being built, not yet running |
| Active | Running and processing triggers |
| Paused | Temporarily stopped |
| Archived | No longer in use |
Node Types
Section titled “Node Types”Workflows are built from five node types:
| Node | Purpose | Description |
|---|---|---|
| Trigger | Start | What initiates the workflow |
| Condition | Decision | Branches based on field values |
| Action | Execute | What the workflow does |
| Delay | Wait | Pause before next step |
| Branch | Split | Fork into multiple paths (yes/no handles) |
Each node stores its position on the React Flow canvas and a JSON configuration object with type-specific settings.
Trigger Modules
Section titled “Trigger Modules”Workflows can target any of these modules:
| Module | Example Use Case |
|---|---|
| Contact | New contact follow-up, status change alerts |
| Deal | Stage change notifications, won/lost actions |
| Account | Account update tracking |
| Contact | Contact assignment workflows |
| Project | Project status change automation |
| Price Offer | Offer expiry alerts |
| Ticket | SLA breach escalation, status routing |
| Appointment | Appointment reminder automation |
| Request | Request approval routing |
| Schedule | Time-based scheduled workflows |
Trigger Types
Section titled “Trigger Types”| Trigger | Description |
|---|---|
| Record Created | New record created in the target module |
| Record Updated | Any field value changed on a record |
| Status Changed | Record status transitions |
| Field Changed | A specific field value changes |
| Time Based | Run at specific times or on a schedule |
Ticket-Specific Triggers
Section titled “Ticket-Specific Triggers”The ticket module supports additional event-based triggers:
| Trigger | When It Fires |
|---|---|
| ticket_created | New ticket created |
| ticket_updated | Ticket fields modified |
| ticket_status_changed | Ticket status transitions |
| sla_warning | SLA metric approaching deadline (15 min) |
| sla_breached | SLA metric deadline passed |
Condition Types
Section titled “Condition Types”Conditions branch workflow logic based on:
- Field equals value — exact match comparison
- Field contains text — substring match
- Field is empty / not empty — null checks
- Field greater than / less than — numeric comparisons
- Record type matches — entity type filter
- Record owner is user — ownership check
- Record in stage — pipeline stage filter
Conditions use source handles (“yes” or “no”) to route to different paths.
Action Types
Section titled “Action Types”| Action | Description |
|---|---|
| Update Field | Change field values on the triggering record |
| Assign Owner | Change record ownership |
| Send Email | Send email notification |
| Create Task | Create a follow-up task activity |
| Create Activity | Create any activity type |
| Add Tag | Add a tag to the record |
| Remove Tag | Remove a tag from the record |
| Webhook | Call an external URL with event data |
| Create Ticket | Create a new support ticket |
| Create Appointment | Schedule a new appointment |
| Create Request | Submit a new internal request |
| Update Appointment | Modify an existing appointment |
Ticket-Specific Actions
Section titled “Ticket-Specific Actions”| Action | Description |
|---|---|
| Update Ticket | Change ticket fields (status, priority, assignee) |
| Escalate Ticket | Escalate with priority bump, reassignment, and notification |
Building Workflows
Section titled “Building Workflows”Creating a Workflow
Section titled “Creating a Workflow”- Go to Settings > Workflows
- Click New Workflow
- Enter name and description
- Select the trigger module
- Add a Trigger node to the canvas
- Connect Condition, Action, and Delay nodes
- Configure each node
- Save and activate
Visual Builder
Section titled “Visual Builder”The workflow builder uses React Flow:
- Drag nodes from the panel to the canvas
- Connect nodes by dragging edges between handles
- Click nodes to open configuration panels
- Branch nodes have “yes” and “no” output handles
- Zoom and pan the canvas for complex workflows
- Auto-layout arranges nodes for readability
Node Configuration
Section titled “Node Configuration”Trigger Node:
- Event type (created, updated, status changed, field changed, time based)
- Module (contact, deal, ticket, etc.)
- Filter conditions
Condition Node:
- Field to check
- Operator (equals, contains, greater than, etc.)
- Value to compare
- Yes/No output paths
Action Node:
- Action type (update field, send email, create task, etc.)
- Target entity and field values
- Email template selection
Delay Node:
- Wait duration (minutes, hours, days)
- Wait until specific time
Workflow Execution
Section titled “Workflow Execution”How Workflows Run
Section titled “How Workflows Run”- A trigger event occurs (e.g., a contact is created)
- The system checks for active workflows matching the module and event
- A job is queued in pg-boss for async processing
- The workflow engine traverses nodes following edges
- Conditions evaluate and branch accordingly
- Actions execute in sequence
- Delays pause execution and resume later
- An execution log records the result
Execution Logging
Section titled “Execution Logging”Each workflow run creates an execution record:
| Field | Description |
|---|---|
| Trigger Type | What event started the run |
| Trigger Module | Which module triggered |
| Trigger Entity ID | The record that triggered execution |
| Trigger Data | JSON snapshot of the event data |
| Status | Running, Completed, Failed, or Cancelled |
| Error Message | Details if execution failed |
| Started At | When execution began |
| Completed At | When execution finished |
Execution Steps
Section titled “Execution Steps”Individual node executions within a run are tracked:
| Status | Description |
|---|---|
| Pending | Not yet reached |
| Running | Currently executing |
| Completed | Successfully finished |
| Failed | Error occurred |
| Skipped | Condition evaluated to false |
Version History
Section titled “Version History”Workflows support versioning:
- Each save creates a new version with a snapshot of all nodes and edges
- Current Version — the latest version being edited
- Published Version — the version that is actively processing triggers
- Revert — restore a previous version’s node/edge configuration
- Compare changes between versions
Workflow Management
Section titled “Workflow Management”Viewing Workflows
Section titled “Viewing Workflows”The workflow list shows:
- Workflow name and description
- Status (draft/active/paused/archived)
- Trigger module
- Created by and date
- Last execution time
Activating / Deactivating
Section titled “Activating / Deactivating”- Active — workflow runs on matching triggers
- Paused — workflow stops processing but retains configuration
- Archived — workflow is hidden from active list
Example Workflows
Section titled “Example Workflows”Contact Follow-up
Section titled “Contact Follow-up”Trigger: Contact Created (module: contact) ↓Action: Create Task "Follow up with contact" ↓Delay: 24 hours ↓Condition: Contact status still "New"? ├── Yes → Action: Send reminder email └── No → EndTicket SLA Escalation
Section titled “Ticket SLA Escalation”Trigger: SLA Breached (module: ticket) ↓Action: Escalate Ticket (bump priority, reassign to manager) ↓Action: Send Email to team leadDeal Won Notification
Section titled “Deal Won Notification”Trigger: Status Changed to "Won" (module: deal) ↓Action: Send Email to manager ↓Action: Create Task "Prepare onboarding" ↓Action: Add Tag "closed-won"Best Practices
Section titled “Best Practices”- Start simple — build basic workflows first, add complexity later
- Test before activating — verify logic in draft mode
- Use conditions — prevent unwanted actions with proper branching
- Add delays wisely — avoid spamming with immediate actions
- Monitor executions — check execution logs for errors
- Name clearly — use descriptive names for workflows and nodes
- Version carefully — publish only tested versions
See Also:
- Settings - Workflow configuration
- Tickets - Ticket automation and SLA triggers
- Contacts - Contact lifecycle automation
- Deals - Deal stage automation
- Notifications - Workflow error notifications