Workflow Triggers
Define when and how workflows start executing
Triggers are the entry points of workflows. They define what event causes the workflow to start. Every workflow must have exactly one trigger node.
Trigger Types
ticket_created
Fires when a new ticket is created. Access full ticket data, customer profile, and initial message.
Use cases: Auto-assign, send acknowledgment, route to queues
message_received
Fires when a new inbound message is added to a ticket.
Use cases: Auto-respond, detect urgent keywords, update status on reply
schedule
Fires on a recurring schedule using cron expressions.
Use cases: Daily SLA reports, weekly cleanup, nightly sync
Common patterns:
| Expression | Meaning |
|---|---|
0 * * * * | Every hour |
0 9 * * * | Daily at 9 AM |
0 9 * * 1 | Weekly Monday 9 AM |
0 0 1 * * | Monthly on the 1st |
webhook
Fires when an external system calls the workflow's unique webhook URL.
Use cases: Third-party integrations, custom event sources, external monitoring
Webhook URL format: POST /api/webhooks/workflow/<endpoint-path> — send the endpoint's secret in an X-Webhook-Secret header and a UUID in an Idempotency-Key header. If the workflow's steps act on a ticket, the JSON body must include ticketId (the ticket's ID).
manual
Fires only when explicitly triggered by a user or API call.
Use cases: One-off operations, testing, admin-initiated processes
Configuring Triggers
- Click the trigger node
- Select trigger type from dropdown
- Configure type-specific options (cron expression, etc.)
- Set a descriptive label
Multiple Workflows
Multiple workflows can share the same trigger type. They execute in parallel independently.
Rate Limiting
- Webhook: No enforceable request-rate guarantee yet across all valid-looking pre-authentication traffic. Local source applies a separate fail-closed 300-request/60-second bucket to the SHA-256 hash of one valid opaque endpoint ID before database or body work. Missing/failed Redis returns
503; a limited bucket returns429withRetry-After. This does not stop valid-looking random-ID rotation, provide per-source fairness or trusted IP attribution, prove WAF/DDoS or configured Redis, or establish deployed/live workflow behavior. The seven other selected API-key, widget, and intake limiter calls are also fail-closed at their route-specific boundaries; this is not universal or deployed enforcement. - Schedule: Minimum 1-minute interval
- Events: Deduplicated within 1-second window
Debugging
Execution History
View recent executions in the workflow detail page under the Executions tab.
Testing
- Set trigger to
manualduring development - Run manually with test data
- Switch to desired trigger for production
Best Practices
- Be specific: Use
message_receivedwith conditions instead of a broad trigger when you only care about part of a ticket's lifecycle - Add conditions early: Filter non-matching tickets right after trigger
- Consider timing: Schedule triggers for off-peak hours
- Test first: Use manual trigger before enabling event-based triggers
Next Steps
- Action Types - What to do when triggered
- Conditions - Filter which triggers proceed
- Templates - Pre-configured trigger patterns