Workflow Triggers
Every workflow starts with a trigger. The trigger defines when and how the workflow executes. VelaFlows supports seven trigger types, each suited to different automation scenarios.
Trigger Types
Manual
Triggered on demand via the API or a UI button in the dashboard. Useful for one-off operations, testing, and user-initiated processes.
When to use: Admin actions, data migrations, manual approvals, testing workflows during development.
Configuration:
- No additional configuration required
- Execute via
POST /api/v1/workflows/:id/executeor the “Run” button in the builder
Variables available: Only the manually provided input data.
Event
Fires automatically when a specific platform event occurs. This is the most common trigger type for reactive automations.
When to use: Auto-assign new conversations, notify teams on lead stage changes, enrich new customers.
Configuration:
- Event type — Select from available platform events
- Filter conditions (optional) — Only trigger when event data matches criteria
Common events:
| Event | Description |
|---|---|
inbox.conversation.created | New conversation started |
inbox.conversation.assigned | Conversation assigned to agent |
inbox.message.received | New incoming message |
crm.lead.created | New lead added to pipeline |
crm.lead.stage_changed | Lead moved to a different stage |
customer.created | New customer record created |
customer.merged | Two customer records merged |
channels.message.status_changed | Message delivery status updated |
Variables available: The full event payload is available as {{trigger.data}}.
Webhook
Fires when an external system sends an HTTP POST to the workflow’s unique webhook URL. Ideal for connecting third-party tools that support outgoing webhooks.
When to use: Receive Stripe payment events, Typeform submissions, GitHub push notifications, custom integrations.
Configuration:
- A unique webhook URL is generated automatically:
https://api.velaflows.com/api/v1/workflows/webhook/:webhookId - Optional secret for HMAC-SHA256 signature verification
- Optional headers whitelist
Variables available: The full request body is available as {{trigger.body}}, headers as {{trigger.headers}}.
Scheduled
Runs on a recurring schedule defined by a CRON expression. Useful for periodic tasks like daily reports, weekly cleanups, and batch processing.
When to use: Daily report generation, weekly data cleanup, periodic sync operations, scheduled broadcasts.
Configuration:
- CRON expression — Standard 5-field CRON syntax (e.g.,
0 9 * * 1for every Monday at 9 AM) - Timezone — IANA timezone string (e.g.,
America/New_York)
CRON examples:
| Expression | Description |
|---|---|
*/15 * * * * | Every 15 minutes |
0 9 * * * | Every day at 9:00 AM |
0 9 * * 1 | Every Monday at 9:00 AM |
0 0 1 * * | First day of every month at midnight |
0 */2 * * * | Every 2 hours |
Variables available: {{trigger.scheduledAt}} with the scheduled execution time.
Conversation Idle
Fires when a conversation has been inactive (no new messages) for a specified duration. Perfect for SLA enforcement and follow-up reminders.
When to use: SLA breach warnings, follow-up reminders, auto-close stale conversations, escalation workflows.
Configuration:
- Idle duration — Time in minutes before triggering (e.g., 30 minutes)
- Conversation filter (optional) — Only monitor specific conversations (by status, channel, etc.)
Variables available: The conversation object as {{trigger.conversation}} including last message time and assignment info.
Date Field
Fires when a date field on a lead or customer reaches a specific threshold relative to now. Useful for deadline-based automations.
When to use: Contract renewal reminders, trial expiration notices, birthday messages, follow-up scheduling.
Configuration:
- Entity type — Lead or Customer
- Date field — The field to monitor (e.g.,
trialExpiresAt, a custom property date field) - Offset — How far before or after the date to trigger (e.g., “3 days before”, “1 day after”)
Variables available: The entity (lead or customer) as {{trigger.entity}} and the date field value as {{trigger.dateValue}}.
One-Shot
Fires once at a specific date and time, then automatically disables itself. Useful for scheduled one-time events.
When to use: Product launch announcements, one-time promotions, scheduled maintenance notifications.
Configuration:
- Execute at — ISO 8601 date-time (e.g.,
2026-04-01T09:00:00Z) - Timezone — IANA timezone string
Variables available: {{trigger.scheduledAt}} with the configured execution time.
Trigger Data in Nodes
All trigger data is accessible in downstream nodes using the template syntax:
{{trigger.data.conversationId}}
{{trigger.body.customer.email}}
{{trigger.scheduledAt}}Different trigger types provide different variable shapes. Use the Test button in the workflow builder to see a sample payload for your chosen trigger.
Combining Triggers
Each workflow has exactly one trigger. If you need to react to multiple events, create separate workflows or use the Event trigger with a broad event pattern and add a Condition node to filter.