Automations

Triggers

How an automation starts running — webhooks, schedules, manual runs, and platform events.

A trigger is what kicks off an automation. Triggers are nodes in the graph; the workflow starts at the trigger and follows edges forward.

The trigger nodes live in src/components/canvas/automation/triggers/. Today there are eight:

TriggerWhat fires it
WebhookAn external HTTP request to a unique URL
ScheduleAn interval or cron expression
HeartbeatA periodic platform tick
ManualA user clicking Run in the editor
P88 EventA Project88 platform event (record changes, conversation start)
WebSocketAn incoming WebSocket message
CampaignA campaign run (from the Campaigns mode)
Delegate (implicit)Another agent or automation calls this one via a Delegate node

All trigger nodes share TriggerNodeShell.jsx. The data passed in by the trigger lands in the trigger node's output, and any downstream node can reference it via the ƒ binding modal under Actions → [trigger] → output.

Webhook trigger

Drop a Webhook trigger node into an automation to expose a public URL that fires the workflow on request.

Inspector fields (from WebhookTriggerNode.jsx):

  • Path — URL fragment to listen on.
  • MethodPOST, GET, or PUT.

The full URL is shown in the inspector and copyable. POST a JSON body and the run starts immediately, with the body available downstream as {{Webhook.output}}.

Use webhooks for:

  • External services calling Project88 (Stripe, GitHub, Telnyx, custom apps).
  • External cron jobs that need a workflow run.
  • Custom UI events in your product wired to a Project88 flow.

Securing webhooks today is done inside the graph: an early Condition node can check headers, and a Code node can verify HMAC signatures before letting the rest of the workflow continue. A dedicated auth field on the trigger itself is a future addition.

Schedule trigger

The Schedule trigger runs an automation on a schedule. The inspector supports both interval-based ("every 5 minutes") and cron expression ("0 9 * * 1-5") modes.

The scheduled-email-send-worker Edge Function is the existing example of schedule-driven work; the schedule trigger gives you the same primitive in the visual editor.

Manual trigger

The simplest one: fires when a user clicks Run on the automation in the editor. Useful for one-off jobs and for testing a graph end-to-end before wiring it to a real trigger.

P88 Event trigger

Listens for Project88 platform events — record inserted/updated/deleted, conversation started, message sent, agent invoked, etc. The inspector lets you pick the event type and optional filters.

Heartbeat trigger

Fires on a fixed periodic tick managed by the platform. Lower granularity than Schedule, but useful for "every minute, check X" patterns that don't warrant a full cron expression.

WebSocket and Campaign triggers

Two more specialised triggers in the same folder — WebSocket for streaming inputs and Campaign for runs initiated by the Campaigns mode.

Delegate "trigger"

Any automation can be delegated to from an agent's pipeline (or from another automation) via the Delegate node. The delegating workflow chooses the target, passes inputs, and waits for the response. This isn't a trigger node per se — the entry point is still whatever trigger node sits at the top of the graph — but it's the canonical way to call an automation from another agent or workflow.

Where to next

On this page