Skip to main content

Triggers

AudienceAutomation Builders, Administrators
CoversManual, Schedule, Webhook
Reading Time8 minutes

What are triggers?

A trigger determines when a workflow starts. Every workflow execution begins with a trigger.

Triggers are attached to a published workflow version. The workflow must be published before any trigger can fire it. Triggers can be enabled or disabled independently without changing the workflow itself.

Trigger types

TypeUse caseInitiated by
ManualOn-demand runs initiated by a personUser clicking Run in Studio or in the Hub dashboard
ScheduleTime-based recurring automationThe Hub, when a cron expression matches the current time
WebhookExternal-system events and application integrationAny system that can send an authenticated HTTPS POST

Choosing the right trigger

ScenarioTrigger
Run a workflow every night at 02:00Schedule
Run a workflow when a CRM record is updatedWebhook
Run a workflow from your own internal applicationWebhook
Run a workflow once to test a changeManual
Run a workflow once for an ad-hoc taskManual

How a trigger reaches a Runner

Regardless of which trigger fires, the path from trigger to result is the same. The Hub queues the execution, a Runner is assigned, the workflow runs, and the result is reported back.

01

Trigger fires

A Manual, Schedule, or Webhook trigger requests an execution.

02

Execution created

The Hub records a new execution in the database with status QUEUED.

03

Queued

The execution enters the BullMQ queue, ready to be assigned.

04

Runner assigned

A queue worker selects an available Runner and the execution moves to ASSIGNED.

05

Workflow runs

The Runner picks up the execution and runs the workflow graph node by node.

06

Result reported

The Runner reports the final status (COMPLETED, FAILED, or STOPPED) back to the Hub.

Manual triggers

Manual triggers fire on demand. A user clicks Run in Exekra Studio (during workflow authoring) or in the Hub dashboard (against a published workflow). No additional configuration is required.

Manual triggers are useful for testing during authoring, for ad-hoc runs, and for processes that need a human checkpoint before they start.

Schedule triggers

How they work

Schedule triggers fire on a cron expression. The Hub evaluates all enabled schedule triggers in-process and creates a queued execution each time a schedule matches the current time. The execution then follows the same path as any other trigger.

The Hub re-reads each trigger from the database at fire time, so disabling a schedule from the dashboard or via the API stops it firing immediately on the next evaluation.

Cron examples

Business requirementCron expression
Every weekday at 09:000 9 * * 1-5
Every 15 minutes*/15 * * * *
Daily at midnight0 0 * * *
First day of every month at 00:000 0 1 * *
Every Sunday at 06:000 6 * * 0
Top of every hour0 * * * *

Timezone behavior

Tip

Schedule triggers fire in the Hub server's local timezone. Set the Hub server's timezone to the business timezone you want schedules to follow, or write cron expressions in the server's timezone.

If the Hub server runs in UTC and you want a workflow to fire at 09:00 in a different business timezone, convert the time to UTC when writing the cron expression. If the Hub runs in your business timezone, write the cron expression in that timezone directly.

Webhook triggers

How they work

A webhook trigger exposes an HTTPS endpoint on the Hub. External systems start the workflow by sending an authenticated POST request.

01

Create the trigger

Create a webhook trigger on the published workflow version.

02

Hub issues URL and secret

The Hub generates a unique webhook URL and a 32-byte random secret at creation. The secret is shown once; copy it into the external system.

03

External system sends a POST

The external system sends an HTTPS POST to the webhook URL with the X-Webhook-Secret header.

04

Workflow execution starts

The Hub verifies the secret, creates an execution, and returns the execution ID in the response.

Example request

POST https://hub.example.com/webhook/trg_8b91c3f4e2a04d7
Content-Type: application/json
X-Webhook-Secret: 0c9f4e7d3a8b2f5c1e6d4a9b7c3f8e2a5d1b6f4e9c2a8d3b7e5f1a4c6d9b2e8f

{
  "customerId": 123
}

Successful response:

HTTP/1.1 200 OK
Content-Type: application/json

{ "success": true, "executionId": "exe_4d2e1a6b8c..." }

Authentication

Every webhook trigger has a secret. The Hub generates a fresh 32-byte cryptographically random secret at creation and stores it. Incoming requests must include the secret in the X-Webhook-Secret header.

ConditionResponse
Valid secret, enabled trigger200 with the new execution ID
Missing or invalid secret401 Unauthorized
Disabled trigger or unknown trigger ID400 Bad Request

The Hub uses a timing-safe comparison to prevent secret discovery via response-time analysis.

Security guidance

Webhook hardening

  • Treat the webhook secret as a credential. Store it in a secret manager on the calling side, not in source control.
  • Use the Hub's HTTPS port. Webhook traffic must be encrypted in transit.
  • Rotate the secret if it may have been exposed. Recreate the trigger to generate a fresh secret and update the caller.
  • Restrict access at the network layer where you can. The Hub's HTTPS port should not be exposed to the public internet unless that is a deliberate architecture decision.
  • Disable unused triggers. A disabled trigger rejects every request and does not consume execution capacity.

Starting workflows from your own applications

Applications that start workflows programmatically use a webhook trigger. The same POST /webhook/<id> endpoint with the secret header is the supported API path; this is how the platform exposes "API trigger" semantics.

For richer programmatic control (creating triggers, listing executions, fetching results), use the Hub REST API with a user JWT.

Trigger limits

Per-organization trigger count

Soft limit only. Practical limits come from Hub resources rather than a configured cap.

Webhook request size

Bounded by the Hub's HTTP body-size limit (default 1 MB). Larger payloads should be referenced (file ID, URL) rather than embedded.

Webhook request rate

Each webhook trigger creates one execution per accepted request. The configured per-cap execution license enforces the upstream limit on concurrent executions; bursty webhook traffic queues normally.

Trigger permissions

Only users with the Developer role (or higher) can create, edit, or delete triggers. Operators can fire enabled Manual triggers but cannot create new ones.

What to read next

  • Execution lifecycle: what happens after a trigger fires, including queueing, assignment, retries, and stale-execution handling
  • Security model: RBAC, credentials, and audit posture for everything the trigger fires
  • Studio guide: authoring the workflows that triggers run

Was this page helpful?

A quick signal helps us prioritise improvements.