Endpoints
| Method | Endpoint | Description |
|---|---|---|
GET | /triggers | List triggers for an agent |
GET | /triggers/:id | Get a specific trigger |
GET | /triggers/stats | Get trigger statistics |
GET | /triggers/templates | List trigger templates |
POST | /triggers | Create a new trigger |
PUT | /triggers/:id | Update a trigger |
DELETE | /triggers/:id | Delete a trigger |
POST | /triggers/:id/toggle | Toggle enabled state |
Widget Endpoints (Public)
| Method | Endpoint | Description |
|---|---|---|
GET | /triggers/widget/:agentId | Get active triggers for widget |
POST | /triggers/event | Record a trigger event |
GET | /triggers/form/:toolIdOrName | Get form schema for trigger |
List Triggers
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
agentId | string | Yes | The agent ID |
Response
Get Trigger
Get Trigger Stats
Response
| Field | Description |
|---|---|
firedCount | Number of times trigger was activated |
convertedCount | Number of times user engaged after trigger |
List Templates
Response
Create Trigger
Request Body
Parameters
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Display name for the trigger |
description | string | No | Description of what the trigger does |
triggerType | string | Yes | Type of trigger (see below) |
conditions | object | Yes | Conditions for activation |
actionType | string | Yes | Action to perform |
actionConfig | object | Yes | Action configuration |
triggerOnce | boolean | No | Only fire once per session (default: true) |
isEnabled | boolean | No | Whether trigger is active (default: true) |
priority | number | No | Execution order (lower = first) |
Trigger Types
| Type | Description | Conditions |
|---|---|---|
time_on_page | After user spends X seconds | timeOnPage: number |
scroll_depth | After scrolling X% of page | scrollDepth: number (0-100) |
exit_intent | When mouse leaves viewport | None |
page_view | When visiting specific page | page: string (glob pattern) |
custom_event | When custom event fires | event: string, eventData?: object |
Action Types
| Type | Description | Config |
|---|---|---|
open_chat | Opens the chat widget | message?: string (pre-filled) |
show_form | Displays a form | toolId: string |
show_bubble | Shows notification bubble | message: string, duration?: number |
Response
Update Trigger
Request Body
Only include fields you want to update:Response
Returns the updated trigger object.Delete Trigger
Response
Toggle Trigger
Response
Returns the updated trigger withisEnabled toggled.
Widget Endpoints
These public endpoints are used by the widget to fetch and record triggers.Get Widget Triggers
Record Trigger Event
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
agentId | string | Yes | Agent ID |
triggerId | string | No | Trigger ID (if known) |
triggerName | string | Yes | Trigger name |
triggerType | string | Yes | Trigger type |
actionType | string | Yes | Action type |
eventType | string | Yes | fired or converted |
sessionId | string | No | Session identifier |
pagePath | string | No | Current page path |
Rate Limits
- 100 events per minute per session/IP
- Returns
429when exceeded
Get Form for Trigger
show_form trigger fires.
Examples
Time-Based Welcome
Show a message after 10 seconds:Scroll-Triggered Form
Show lead form after 50% scroll:Exit Intent Offer
Open chat when user tries to leave:Page-Specific Trigger
Show help on pricing page:Custom Event Trigger
React to custom events from your code:Condition Patterns
Page Matching
Thepage condition supports glob patterns:
| Pattern | Matches |
|---|---|
/pricing | Exact match |
/pricing/* | /pricing/starter, /pricing/pro |
/blog/** | Any path under /blog/ |
/docs/**/api | /docs/v1/api, /docs/v2/guides/api |