Intermediate30 minModule 4 of 6

Triggers & Webhooks

Configure Manual, Webhook, and Schedule triggers. Call workflows from external systems via authenticated webhooks.

What you'll be able to do after this module

  • Choose the right trigger type for your use case
  • Set up a Webhook trigger with schema validation and mock requests
  • Create Orchestrator API keys and authenticate webhook calls
  • Call a workflow from cURL, JavaScript, and Python
  • Configure a Schedule trigger with cron expressions

The Three Trigger Types

Every workflow starts with exactly one trigger. The trigger type determines how the workflow fires.

Triggers Workflow Execution ManualClick Run in editor WebhookHTTP POST from external system ScheduleCron-based timer
TypeWhen to useOutput
ManualDevelopment, testing, ad-hoc runs{} (empty unless input provided)
WebhookExternal integrations, production automationThe full JSON request body
ScheduleRecurring tasks (daily reports, hourly checks)Execution timestamp

To change the trigger type, click the trigger node → select a new type from the dropdown in the config panel.


Manual Trigger

Manual is the default. Click Run in the toolbar and the workflow executes immediately.

Best used for:

  • Building and testing workflows during development
  • One-off tasks (e.g., "run this report now")
  • QA testing before switching to Webhook

Webhook Trigger

A Webhook trigger gives your workflow a public HTTP endpoint that external systems can call.

Webhook URL format

POST https://orchestrator.skytells.ai/api/workflows/{workflowId}/webhook

The workflowId is visible in your browser's address bar when editing the workflow.

Authentication

Webhook calls require an Orchestrator API key in the Authorization header:

Authorization: Bearer wfb_aB3cD4eF5gH6iJ7kL8mN9oP0q

Creating an API Key

Open API Keys panel

Click your user avatar → API Keys.

Create a new key

Click Create API Key, give it a name (e.g., production-webhook), and click Create.

Copy and store immediately

The full key is shown only once. Copy it and store it in a secure location (e.g., environment variable, secrets manager). It cannot be retrieved again.

Calling the Webhook

curl -X POST \
  https://orchestrator.skytells.ai/api/workflows/YOUR_WORKFLOW_ID/webhook \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer wfb_YOUR_API_KEY" \
  -d '{
    "customer_id": "cust_123",
    "action": "onboard"
  }'

Response

{
  "executionId": "exec_abc123",
  "status": "running"
}

Webhook execution is asynchronous. The response returns immediately with a running status. Poll the execution status endpoint to track progress:

GET /api/workflows/executions/{executionId}/status

Error Codes

StatusMeaning
200Workflow execution started
400Trigger type mismatch (workflow doesn't use Webhook trigger)
401Missing or invalid API key
403Key owner doesn't match workflow owner
404Workflow not found
500Runtime error during execution

Webhook Schema (Optional)

You can define an expected payload schema in the trigger config using the Schema Builder. This is for documentation purposes — it helps you and your team understand the expected structure, and you can use it with the mock request feature.

Mock Requests

For testing without an actual HTTP call:

  1. Enter test JSON in the Mock Request field on the Webhook trigger
  2. Click Run — the workflow executes with the mock payload as trigger output
  3. Inspect results in the Runs panel

This lets you iterate on webhook workflows without needing an external caller.

CORS

The webhook endpoint returns the following CORS headers, enabling direct calls from browser-based applications:

Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST, OPTIONS
Access-Control-Allow-Headers: Content-Type, Authorization

Schedule Trigger

A Schedule trigger fires on a cron-based timer.

Configuration

FieldDescriptionExample
Cron ExpressionStandard 5-field cron0 9 * * * (9am daily)
TimezoneIANA timezone nameAmerica/New_York

Cron syntax reference

┌─────── minute (0-59)
│ ┌───── hour (0-23)
│ │ ┌─── day of month (1-31)
│ │ │ ┌─ month (1-12)
│ │ │ │ ┌ day of week (0-6, 0=Sunday)
│ │ │ │ │
* * * * *
ExpressionMeaning
0 9 * * *Every day at 9:00 AM
0 */2 * * *Every 2 hours
30 8 * * 1-5Weekdays at 8:30 AM
0 0 1 * *First day of every month at midnight
*/15 * * * *Every 15 minutes

Choosing a Trigger Type

ScenarioRecommended Trigger
Building and testing a new workflowManual
Reacting to events from another service (Stripe payment, GitHub push, form submission)Webhook
Daily report, hourly data sync, periodic cleanupSchedule
API endpoint for your frontend or backend to callWebhook
One-time data migration or batch jobManual

What you now understand

ConceptWhat it means
Manual triggerClick Run — for development and ad-hoc use
Webhook triggerHTTP POST endpoint for external callers
Schedule triggerCron-based timer for periodic execution
Orchestrator API keywfb_ prefixed key for webhook authentication
Mock requestTest webhook payloads without an actual HTTP call
Asynchronous executionWebhook returns immediately; poll for status

Up next: API & Automation — use the REST API, export code, and generate workflows with AI.

On this page