# POST /automations/:id/triggers

**Resource:** [Automations](./automations.md)  
**Scopes:** `automations:write`  
**Write operation:** yes

Add a trigger to an automation. source_type auto-populates from the parent automation trigger_type when omitted -- you only need to pass source_type to override the default. For stage_changed automations, use update_automation with stage_id instead -- adding a trigger row for stage_changed is rejected with a 400.

## Parameters

| Name | In | Type | Required | Description |
|------|----|------|----------|-------------|
| `id` | path | uuid | yes | Automation ID |
| `source_type` | body | string | no | Trigger source type. Optional -- auto-populates from the parent automation trigger_type. Canonical defaults: deal_created/contact_*/customer_*/api/trustpager_signup -> "any"; form_completed/form_sent -> "form_template"; sms_received -> "sms"; email_received/email_bounced -> "email"; call_* -> "voice_agent"; document_sent -> "document_template"; signature_* -> "signature_template"; webhook/zapier/typeform/generic_webhook -> "webhook"; xero_*/zoom_*/calcom_*/facebook_lead_ad/booking_* -> "platform_integration". |
| `source_id` | body | string | no | Trigger source ID (optional). For form_completed: form_template UUID. For sms_received: phone_number UUID. For call_*: voice_agent ID. Omit to match any source of that type. |
| `config` | body | object | no | Trigger configuration (varies by type). For form_completed: { form_template_id }. For sms_received/email_received: no config needed. |

---
Base URL: `https://api.trustpager.com/functions/v1/api/v1` — Auth: `Authorization: Bearer YOUR_API_KEY`