StepflowStepflow

Triggers

Overview of Stepflow triggers

Triggers

Triggers are the entry points for your workflows. They listen for external events and initiate workflow executions.

Stepflow provides a variety of built-in triggers to handle different event sources:

  • HTTP: Trigger workflows via standard HTTP requests.
  • Webhook: Specialized HTTP trigger with provider presets (GitHub, Stripe, etc.) and signature verification.
  • Cron: Schedule workflows to run at specific times with leader election.
  • NATS: Trigger workflows from NATS messages.
  • Kafka: Trigger workflows from Kafka topics.
  • PostgreSQL: Trigger workflows on database changes using LISTEN/NOTIFY.
  • WebSocket: Trigger workflows from WebSocket messages.
  • Stream: Generic trigger for any async iterable.

Installation

Each trigger is available as a separate package. You can install the ones you need:

pnpm add @stepflowjs/trigger-http
pnpm add @stepflowjs/trigger-webhook
pnpm add @stepflowjs/trigger-cron
pnpm add @stepflowjs/trigger-nats
pnpm add @stepflowjs/trigger-kafka
pnpm add @stepflowjs/trigger-postgres
pnpm add @stepflowjs/trigger-websocket
pnpm add @stepflowjs/trigger-stream

Basic Usage

To use a trigger, register it with your Stepflow instance:

import { Stepflow } from "@stepflowjs/core";
import { HttpTrigger } from "@stepflowjs/trigger-http";

const stepflow = new Stepflow({
  storage: new MyStorageAdapter(),
});

const httpTrigger = new HttpTrigger({
  path: "/webhooks/order",
  method: "POST",
});

// Register the trigger and map it to a workflow
stepflow.registerTrigger(httpTrigger, async (event) => {
  await stepflow.trigger("process-order", event.data);
});

await stepflow.start();

On this page