Triggers define which webhook events your MiniApp can react to. They appear in the Automation Builder as available trigger nodes. When a matching webhook arrives, automations that use the corresponding trigger are executed.
triggers: [
{
type: 'miniapps:my-service', // Must be "miniapps:{ns}"
event: 'order.created', // Event identifier
img: 'automation3.svg', // Icon image filename
icon: 'shopping-cart', // Lucide icon name
label: 'My Service Order Created', // Display label in Automation Builder
description: 'Triggered when a new order is placed in My Service.',
isCustom: false,
},
{
type: 'miniapps:my-service',
event: 'customer.updated',
img: 'automation4.svg',
icon: 'users-alt',
label: 'My Service Customer Updated',
description: 'Triggered when a customer record is updated.',
isCustom: false,
},
]Trigger fields:
| Field | Type | Required | Description |
|---|---|---|---|
type | string | ✅ | Must follow the pattern miniapps:{ns} |
event | string | ✅ | The exact event string from your provider |
img | string | ✅ | Automation builder icon filename |
icon | string | ✅ | Lucide React icon name |
label | string | ✅ | Human-readable label |
description | string | ✅ | Help text explaining when this trigger fires |
isCustom | boolean | ✅ | Set to false for standard triggers |
Event name convention: Use the exact event string your provider sends in webhooks. The platform matches the extracted event name (from webhook.eventExtraction) against trigger event values directly — no mapping layer.
Composite events: If your provider uses a combination of fields to identify an event (e.g., GitHub uses the X-GitHub-Event header + the action body field), use the compositeStrategy in webhook.eventExtraction (see §8.1) and name your trigger events accordingly:
// GitHub: header "push" + body action "received"
{ event: 'push.received' }
// GitHub: header "pull_request" + body action "opened"
{ event: 'pull_request.opened' }
// Slack: body event.type "message" + event.subtype "bot_message"
{ event: 'message.bot_message' }