Flow Triggers
A trigger is what starts a flow. Every flow has one trigger subscription, which tells Connect what to listen for and how to dispatch the event to the flow engine. Triggers come in two flavors: webhook and poll.
Webhook triggers
Webhook triggers register a subscription with the provider so the provider will POST events directly to Connect. The flow fires within seconds of the provider event, which makes webhooks the right choice for anything real-time — new leads, completed payments, new messages.
Webhook endpoint: POST /webhook/:providerType. Connect verifies the signature (when supported), looks up every active subscription matching (provider_type, trigger_name), and dispatches through the TriggerRouterService.
Poll triggers
Poll triggers run on a cron and periodically query the provider for new records. Use them when the provider doesn't support webhooks, or when you need to deduplicate on a cursor field. The router maintains last_cursor per subscription so records are only delivered to the flow engine once.
Scheduled triggers
Scheduled triggers run a flow on a recurring cron schedule, independent of any provider event. Use them for periodic batch jobs, daily reports, or timed data syncs.
A schedule is defined by a standard 5-field cron expression and a timezone. The system evaluates due schedules every minute. When a schedule fires, the flow receives trigger data containing the scheduled time and cron expression.
POST /connect/v1/flows/:flowId/schedules
Authorization: Bearer <jwt>
Content-Type: application/json
{
"cronExpression": "0 9 * * 1", // Every Monday at 9:00 AM
"timezone": "America/New_York"
}Common presets: * * * * * (every minute), 0 * * * * (hourly),0 9 * * * (daily at 9am), 0 9 * * 1 (weekly Monday 9am),0 9 1 * * (monthly 1st at 9am).
Manage schedules in the flow detail page under the Scheduled Triggerssection. Each schedule shows its cron expression, timezone, last run, and next run time. Schedules can be paused and resumed.
Subscribing a flow
POST /connect/v1/flows/:flowId/triggers
Authorization: Bearer <jwt>
Content-Type: application/json
{
"providerType": "hubspot",
"triggerName": "contact.created",
"kind": "webhook", // or "poll"
"connectionId": "uuid-of-connection",
"config": { "pollIntervalSeconds": 60 } // poll-only
}Managing subscriptions
The global /admin/triggers page lists every active subscription across your workspace with its last-fired timestamp. Drill into a flow to toggle or delete its trigger inline.
Permissions
triggers.view— list subscriptions and available trigger definitionstriggers.write— create, toggle, and delete subscriptions
Plan limits
Active trigger subscriptions are capped per plan: Free allows 2, Starter 10, Professional and above unlimited. Disabled subscriptions don't count against the limit.