Skip to content

Workflows

Workflows automate repetitive tasks and business processes. Build visual automation rules that trigger actions based on events and conditions.

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
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
Status Description
Draft Being built, not yet running
Active Running and processing triggers
Paused Temporarily stopped
Archived No longer in use

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.

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 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

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

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 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
Action Description
Update Ticket Change ticket fields (status, priority, assignee)
Escalate Ticket Escalate with priority bump, reassignment, and notification
  1. Go to Settings > Workflows
  2. Click New Workflow
  3. Enter name and description
  4. Select the trigger module
  5. Add a Trigger node to the canvas
  6. Connect Condition, Action, and Delay nodes
  7. Configure each node
  8. Save and activate

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

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
  1. A trigger event occurs (e.g., a contact is created)
  2. The system checks for active workflows matching the module and event
  3. A job is queued in pg-boss for async processing
  4. The workflow engine traverses nodes following edges
  5. Conditions evaluate and branch accordingly
  6. Actions execute in sequence
  7. Delays pause execution and resume later
  8. An execution log records the result

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

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

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

The workflow list shows:

  • Workflow name and description
  • Status (draft/active/paused/archived)
  • Trigger module
  • Created by and date
  • Last execution time
  • Active — workflow runs on matching triggers
  • Paused — workflow stops processing but retains configuration
  • Archived — workflow is hidden from active list
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 → End
Trigger: SLA Breached (module: ticket)
Action: Escalate Ticket (bump priority, reassign to manager)
Action: Send Email to team lead
Trigger: Status Changed to "Won" (module: deal)
Action: Send Email to manager
Action: Create Task "Prepare onboarding"
Action: Add Tag "closed-won"
  1. Start simple — build basic workflows first, add complexity later
  2. Test before activating — verify logic in draft mode
  3. Use conditions — prevent unwanted actions with proper branching
  4. Add delays wisely — avoid spamming with immediate actions
  5. Monitor executions — check execution logs for errors
  6. Name clearly — use descriptive names for workflows and nodes
  7. Version carefully — publish only tested versions

See Also: