Triggers
A connected integration is not just a place the agent can read from on demand. It is also a source of live events. When someone sends you an email, edits a Notion page, or charges a card on Stripe, OpenHuman receives that event in near-real-time and can decide whether to do something about it.
What a trigger is
A trigger is an external event published by an integration you've connected:
| Integration | Example trigger |
|---|---|
| Gmail | GMAIL_NEW_GMAIL_MESSAGE |
| Slack | SLACK_NEW_MESSAGE |
| Notion | NOTION_PAGE_UPDATED |
| GitHub | GITHUB_ISSUE_OPENED, GITHUB_PULL_REQUEST_OPENED |
| Stripe | STRIPE_CHARGE_SUCCEEDED |
| Calendar | GOOGLE_CALENDAR_EVENT_CREATED |
Trigger pipeline
third-party API → webhook → OpenHuman backend → Rust core
↓
Trigger Triage
↓
┌─────────────┬─────────────┬────────────┐
↓ ↓ ↓ ↓
drop acknowledge react escalate
Triage decisions
| Decision | What happens |
|---|---|
| drop | Nothing. Silently logged and discarded. |
| acknowledge | A short memory note is persisted. |
| react | Trigger Reactor runs with 1-2 tool calls. |
| escalate | Full orchestrator agent takes over with planning. |
Configuration
- On by default. Once an integration is connected, its triggers feed into the pipeline automatically.
- Opt-out. Set
OPENHUMAN_TRIGGER_TRIAGE_DISABLEDto disable agent classification. - Audit log. Every trigger is written to trigger history so you can see what arrived and what the classifier decided.
Privacy
- The third-party token lives on the backend, never on your laptop.
- Webhook is HMAC-verified by the backend before reaching your machine.
- Trigger payloads are processed by your local core.
See also
- Third-party Integrations - The catalog of services triggers come from.
- Auto-fetch - The polling counterpart for periodic data ingest.