These docs cover the S6S workflow engine — the developer playground layer underneath the product. For the main AI Visibility product (brand monitoring, the unified Report, fix actions), start at /docs/ai-visibility.

Triggers

Every workflow needs exactly one trigger that determines how it starts. S6S supports three trigger types: webhook, schedule, and manual.

Webhook Triggers

Webhook triggers start a workflow when an HTTP request hits a specific URL path. This is ideal for integrating with third-party services that send webhooks (Stripe, GitHub, Shopify, etc.) or for building custom API endpoints.

Recipe configuration

Recipe trigger config
{
  "name": "Handle New Lead",
  "trigger": {
    "type": "webhook",
    "config": {
      "path": "/new-lead",
      "method": "POST"
    }
  },
  "steps": [ ... ],
  "flow": [ ... ]
}
FieldTypeDefaultDescription
pathstring/my-webhookURL path for the webhook endpoint
methodstringPOSTHTTP method to accept (GET, POST, PUT, etc.)

Deploy response

When you deploy a workflow with a webhook trigger, the response includes the invoke URL and a secret token for authentication:

Deploy response
{
  "workflowId": "wf_abc123",
  "versionId": "v_xyz789",
  "webhookTrigger": {
    "path": "/new-lead",
    "invokeUrl": "https://s6s.ai/api/webhooks/new-lead?token=whsec_...",
    "secret": "whsec_..."
  }
}

Invoke URL format

https://s6s.ai/api/webhooks/{path}?token={secret}

The token query parameter authenticates the request. Keep your webhook secret safe — anyone with the token can trigger your workflow.

Example: triggering a webhook

curl
curl -X POST "https://s6s.ai/api/webhooks/new-lead?token=whsec_abc123" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Jane Smith",
    "email": "[email protected]",
    "source": "landing_page"
  }'

Accessing webhook data

Use expressions to access the incoming request data in your workflow steps:

ExpressionDescription
{{trigger.output.body}}The full parsed JSON body
{{trigger.output.body.name}}A specific field from the body
{{trigger.output.headers}}All request headers
{{trigger.output.query}}Query string parameters
{{trigger.output.method}}HTTP method (GET, POST, etc.)

Authentication

Webhook endpoints are authenticated via the secret token in the token query parameter. S6S validates the token before starting the workflow. Requests with an invalid or missing token receive a 401 Unauthorized response.

Schedule Triggers

Schedule triggers run a workflow automatically on a recurring basis using standard cron expressions. Use these for periodic data syncs, report generation, monitoring, cleanup jobs, and more.

Recipe configuration

Recipe trigger config
{
  "name": "Daily Report",
  "trigger": {
    "type": "schedule",
    "config": {
      "cron": "0 9 * * *",
      "timezone": "America/New_York"
    }
  },
  "steps": [ ... ],
  "flow": [ ... ]
}
FieldTypeDefaultDescription
cronstring0 * * * *Cron expression: minute hour day month weekday
timezonestringUTCIANA timezone name (e.g. America/New_York, Europe/London)

Common cron patterns

PatternDescription
*/5 * * * *Every 5 minutes
0 * * * *Every hour (on the hour)
0 9 * * *Daily at 9:00 AM
0 9 * * 1-5Weekdays at 9:00 AM
0 0 * * *Daily at midnight
0 0 1 * *First day of every month at midnight
0 */4 * * *Every 4 hours
30 8 * * 1Every Monday at 8:30 AM

Cron expressions use 5 fields: minute hour day-of-month month day-of-week

Timezone handling

Schedules use IANA timezone names. If no timezone is specified, the schedule runs in UTC. Common timezones:

UTCAmerica/New_YorkAmerica/ChicagoAmerica/DenverAmerica/Los_AngelesEurope/LondonEurope/BerlinAsia/TokyoAsia/ShanghaiAustralia/Sydney

Accessing schedule data

The trigger output includes information about when the schedule fired:

ExpressionDescription
{{trigger.output.fired_at}}ISO timestamp of when the schedule fired
{{trigger.output.timezone}}The configured timezone

Rate limits

The minimum schedule interval depends on your plan. Schedules are checked every 60 seconds by the worker daemon and are minute-aligned for consistency.

Manual Triggers

Manual triggers start a workflow on demand — either from the S6S UI "Run" button or via the API. This is the simplest trigger type and requires no configuration.

Recipe configuration

Recipe trigger config
{
  "name": "Process Data",
  "trigger": { "type": "manual" },
  "steps": [ ... ],
  "flow": [ ... ]
}

How to trigger

Via the UI

Open your workflow in the S6S dashboard and click the "Run" button in the toolbar.

Via the API

Send a POST request to the run endpoint with optional input data.

Triggering via API

POST /api/v1/workflows/:id/run
curl -X POST https://s6s.ai/api/v1/workflows/wf_abc123/run \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "input": {
      "name": "test",
      "count": 42,
      "items": ["a", "b", "c"]
    }
  }'

The input field is optional. If provided, it becomes available as {{trigger.output.payload}} in your workflow steps.

Accessing trigger data

ExpressionDescription
{{trigger.output.payload}}The full input object passed in the run request
{{trigger.output.payload.name}}A specific field from the input
{{trigger.output.triggeredAt}}ISO timestamp of when the run was created
{{trigger.output.triggeredBy}}"api" or "ui"

Full example

Manual trigger with input
{
  "name": "Greet User",
  "trigger": { "type": "manual" },
  "steps": [
    {
      "ref": "greet",
      "action": "transform",
      "config": {
        "template": {
          "message": "Hello, {{trigger.output.payload.name}}!",
          "time": "{{trigger.output.triggeredAt}}"
        }
      }
    }
  ],
  "flow": ["greet"]
}
Run it
curl -X POST https://s6s.ai/api/v1/workflows/wf_abc123/run \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "input": { "name": "Ahmad" } }'

# Output: { "message": "Hello, Ahmad!", "time": "2026-03-08T..." }

Trigger Comparison

FeatureWebhookScheduleManual
Starts whenHTTP request receivedCron schedule firesUI click or API call
Config neededpath, methodcron, timezoneNone
Input dataHTTP body, headers, queryscheduledTime, timezoneOptional input object
Use caseExternal integrations, APIsPeriodic jobs, reportsTesting, ad-hoc runs

Ready to trigger your first workflow?

Deploy a workflow with any trigger type in under a minute.