Create workflow trigger
createWorkflowTriggerCreate a workflow trigger for a recipient. Two kinds: (1) SCHEDULED — Temporal cron or one_time_fire_at in absolute UTC (default); (2) WEBHOOK — Composio inbound CRM event, no cron. Always set name, ≤100-char description (never copy the prompt), prompt, channels, scope (USER|WORKSPACE), and draft metadata.preview per channel. For WORKSPACE also set activation_mode: WORKSPACE_MANDATORY (runs for everyone in the audience; no per-user opt-in) or WORKSPACE_OPT_IN (shared template teammates enable individually). For WEBHOOK also set trigger_kind=WEBHOOK and metadata.supported_events (or pass template_id from an admin WEBHOOK trigger_template so the backend inherits kind + supported_events). For SCHEDULED provide exactly one of cron or one_time_fire_at. When creating from an admin template seed, copy template_id, trigger_kind, and metadata.supported_events verbatim from the seed JSON — never invent event slugs.
Use when: Use for a new reminder/schedule OR a new event-driven HubSpot/Salesforce notification, OR to opt-in/activate an existing WORKSPACE_OPT_IN catalog template for the requesting user (pass catalog_id from create/list — that creates a USER activation; do not use updateWorkflowTrigger for first-time opt-in). Ask scope=USER vs WORKSPACE before free-form creates. If WORKSPACE, ask whether it must run for everyone with no opt-in (activation_mode=WORKSPACE_MANDATORY, workspace admin) or be a template teammates enable (WORKSPACE_OPT_IN). If the conversation seed includes a workflow_trigger_template_context JSON block, this is a template create: pass template_id + trigger_kind + metadata from that block, put template instructions into prompt (customize with the user), omit cron for WEBHOOK, and do not invent supported_events. If there is no seed but the user wants an admin template, call listTriggerTemplates first and copy id → template_id. Call list_workflow_triggers first to avoid duplicates. Always draft metadata.preview for the channel(s) in use.
workspace_id / user_id are injected from request headers.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| cron | No | ||
| name | No | ||
| plan | No | ||
| scope | No | ||
| prompt | No | ||
| channels | No | ||
| metadata | No | ||
| catalog_id | No | ||
| description | No | ||
| template_id | No | ||
| trigger_kind | No | ||
| _triggered_by | No | REQUIRED. Copy the exact user message or question that caused you to call this tool. Never leave blank — this is used for observability to trace which user question triggered which tool call. | |
| audience_type | No | ||
| activation_mode | No | ||
| agent_thread_id | No | ||
| audience_filter | No | ||
| channel_metadata | No | ||
| one_time_fire_at | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||