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
FieldDescription
NameWorkflow name
DescriptionWhat the workflow does
StatusDraft, Active, Paused, or Archived
Trigger ModuleWhich module this workflow triggers on
Current VersionLatest version number
Published VersionVersion that is currently active
Created ByUser who created the workflow
StatusDescription
DraftBeing built, not yet running
ActiveRunning and processing triggers
PausedTemporarily stopped
ArchivedNo longer in use

Workflows are built from five node types:

NodePurposeDescription
TriggerStartWhat initiates the workflow
ConditionDecisionBranches based on field values
ActionExecuteWhat the workflow does
DelayWaitPause before next step
BranchSplitFork 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:

ModuleExample Use Case
ContactNew contact follow-up, status change alerts
DealStage change notifications, won/lost actions
AccountAccount update tracking
ContactContact assignment workflows
ProjectProject status change automation
Price OfferOffer expiry alerts
TicketSLA breach escalation, status routing
AppointmentAppointment reminder automation
RequestRequest approval routing
ScheduleTime-based scheduled workflows
TriggerDescription
Record CreatedNew record created in the target module
Record UpdatedAny field value changed on a record
Status ChangedRecord status transitions
Field ChangedA specific field value changes
Time BasedRun at specific times or on a schedule

The ticket module supports additional event-based triggers:

TriggerWhen It Fires
ticket_createdNew ticket created
ticket_updatedTicket fields modified
ticket_status_changedTicket status transitions
sla_warningSLA metric approaching deadline (15 min)
sla_breachedSLA 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.

ActionDescription
Update FieldChange field values on the triggering record
Assign OwnerChange record ownership
Send EmailSend email notification
Create TaskCreate a follow-up task activity
Create ActivityCreate any activity type
Add TagAdd a tag to the record
Remove TagRemove a tag from the record
WebhookCall an external URL with event data
Create TicketCreate a new support ticket
Create AppointmentSchedule a new appointment
Create RequestSubmit a new internal request
Update AppointmentModify an existing appointment
ActionDescription
Update TicketChange ticket fields (status, priority, assignee)
Escalate TicketEscalate 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:

FieldDescription
Trigger TypeWhat event started the run
Trigger ModuleWhich module triggered
Trigger Entity IDThe record that triggered execution
Trigger DataJSON snapshot of the event data
StatusRunning, Completed, Failed, or Cancelled
Error MessageDetails if execution failed
Started AtWhen execution began
Completed AtWhen execution finished

Individual node executions within a run are tracked:

StatusDescription
PendingNot yet reached
RunningCurrently executing
CompletedSuccessfully finished
FailedError occurred
SkippedCondition 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: