Your agent picks up the phone when the world calls.
Wire any agent to an inbound HTTP webhook or to a connected app. No polling script, no relay service, no cron job: the agent wakes the instant an event fires and leaves a full audit trail behind.
Watch a payload pass, or get dropped.
Every inbound event runs through your filter rules before the agent wakes. Pick a payload and see exactly what the filter decides.
Five stops from webhook to completed run.
Every inbound event moves through a deterministic lifecycle. Watch it pulse through the stages below.
Stop polling. Start reacting.
A trigger is the configuration that connects an external event source to an agent. Every time a matching event arrives, Actionist hands the event data to your agent along with a natural-language task, and the agent runs.
The old way
With triggers
Two ways the world can call your agent.
The creation dialog offers two source buttons, and they set up differently. Select below to see what each involves.
Changing a saved trigger from one source type to the other is not something to rely on. If you need to switch, delete the trigger and create a fresh one.
App triggers need the app connected first. Gmail and other Google services are reached through here rather than through a source of their own. If the provider connection is revoked, save will fail until you reconnect.
Create a trigger.
Open your agent in the studio, select the Triggers tab, and click Create trigger. An HTTP webhook shows five numbered sections. An App trigger shows four, because it has no webhook authentication step of its own.
- HTTP webhook
- App trigger
Basics — name and source
Task — what the agent should do
{{payload.fieldName}} to embed live values from the webhook body, for example:Filter — scope the events that matter (optional)
Webhook — authentication
Authorization header on every call, so producers send it the way they would send any bearer token.When this trigger fires: where the result goes
Save
Shape what the agent sees.
The Task section controls three things: what the agent should do, which payload values to embed in the instruction, and which event fields to pass alongside it.
Task description
Task description
Event details are automatically appended to what the agent receives. You do not need to describe the payload schema in the task description itself. Use the task description for the goal, not the data.
Payload templating with the double-brace syntax
Payload templating with the double-brace syntax
{{payload.fieldName}} tokens. When the trigger fires, each token is replaced with the matching field from the incoming event before the agent sees it.{{payload.customer.email}}.Event data picker
Event data picker
Leave it as “All fields” unless context window size is a concern. When no explicit selection is made, all fields are forwarded and new fields added to the event schema in the future are automatically included. An explicit selection is frozen. New fields require re-saving the trigger to include.For HTTP triggers without a sample payload: toggle Send the full payload to the agent on to forward every field from the webhook body. Only top-level fields can be individually selected; nested objects are always sent wholesale.
Only wake the agent when it matters.
High-volume event sources like webhooks can fire hundreds of events per day. The filter layer lets the agent sleep through the noise and act only on the events you care about.
Toggle Filter incoming events on to add rules. The toggle hint describes the default: “Off = run on every event. On = only run on matching payloads.” Choose All conditions (AND (every rule must match) or Any condition (OR) any rule is enough).
equals / does not equal
contains
greater than / less than
exists
Verify before you go live.
Two testing tools, two different guarantees. Use both before sending real traffic.
Preview with sample payload
The Preview with sample payload panel renders the exact instruction and evaluates every filter rule against any JSON you paste. It makes no model call and saves no event, so you can run it as often as you like.
Open the trigger detail
Paste a sample payload
Click Preview
{{payload.x}} tokens resolved), and the filter result:-
Pass, would dispatch
- Fail, event would be filtered (the agent would not run)
- No filter configured (filter is off)
Run live test: a real end-to-end run
Once the preview looks right, fire a real end-to-end test with Run live test. Unlike the preview, this creates a real event and actually runs the agent.
Enable the agent
Click Run live test
Follow the run
Every event leaves a trace.
The Recent events tab on each trigger keeps a full log of every inbound event: its status, the rendered payload, the filter outcome, and a direct link to the agent run transcript.
The table auto-refreshes every 5 seconds so you can watch a live test progress in real time. Click any row to open the Event detail drawer.
What the event detail drawer shows
What the event detail drawer shows
- Payload: the raw event body, with sensitive keys automatically redacted
- Filter result: which rule passed or dropped the event
- Dispatch info: the agent, model, and run metadata
- Open chat session: a direct link to the full agent run transcript for completed or failed events
Reading the status badges
Reading the status badges
Diagnosing a trigger that fires but nothing happens
Diagnosing a trigger that fires but nothing happens
Keeping triggers healthy.
Rotate the webhook URL
Rotate the URL when a secret is compromised or when you want to revoke access from a specific producer. The old URL stops accepting requests the moment you confirm.
Select the trigger row
Click Rotate URL
Confirm
Limits and defaults.
Trigger states and silent failures.
A trigger can be live and still appear to do nothing. Work through these in order rather than recreating the trigger.
Why a save fails on an app trigger
Why a save fails on an app trigger
Filtered is not broken
Filtered is not broken
Best practices.
Paste a real payload before adding filter rules (HTTP)
Paste a real payload before adding filter rules (HTTP)
Leave Event Data as 'All fields' unless token count is a concern
Leave Event Data as 'All fields' unless token count is a concern
undefined in the data model) auto-includes fields added to the event catalog later. An explicit selection is frozen. Any new fields the provider adds require you to re-save the trigger to include them. Prefer all-fields for low-stakes triggers; use an explicit selection only when the payload is large enough to cause context window issues.Preview before connecting real traffic
Preview before connecting real traffic
Use Bearer Secret authentication for any sensitive webhook
Use Bearer Secret authentication for any sensitive webhook
Authorization header on every call. Public (no auth) is fine for low-stakes event buses; anything involving PII or financial data should always use bearer secret.Rotate the URL only when a secret is compromised
Rotate the URL only when a secret is compromised
Template the double-brace syntax sparingly
Template the double-brace syntax sparingly
Watch the 'Filtered' badge before assuming a trigger is broken
Watch the 'Filtered' badge before assuming a trigger is broken
Watch app connections, not just triggers
Watch app connections, not just triggers
The business moves while you are elsewhere.
Three event-driven triggers that close the gap between something happening and your team knowing about it.
You were in a two-hour meeting. Three things happened in the world. Your agents dealt with all of them.
illustrative · Triggers · Actionist docsTurn your agent into an autonomous responder.
Pick a source, write a task, and let the world wake your agent instead of you.
Event-driven, not polling-based, with no infrastructure to host or monitor.
Filter before dispatch · Full audit trail · Works in the web app.