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:
| Trigger | What fires it |
|---|---|
| Webhook | An external HTTP request to a unique URL |
| Schedule | An interval or cron expression |
| Heartbeat | A periodic platform tick |
| Manual | A user clicking Run in the editor |
| P88 Event | A Project88 platform event (record changes, conversation start) |
| WebSocket | An incoming WebSocket message |
| Campaign | A 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.
- Method —
POST,GET, orPUT.
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.