mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-07-24 16:25:09 +00:00
* feat: adopt directory-based docs versioning with Edge channel Switch docs.crewai.com from navigation-only versioning (every version selector entry rendered the same docs/<lang>/* source files) to Mintlify's directory-based versioning so each version selector entry renders its own snapshot. Add an "Edge" channel under docs/edge/<lang>/* that always reflects main HEAD for unreleased work, eliminating pre-release leakage onto frozen release labels. External links to canonical /<lang>/* URLs are preserved via wildcard redirects that always land on the current default version. Layout: - docs/edge/<lang>/* rolling source (you edit here) - docs/edge/enterprise-api.*.yaml - docs/v<X.Y.Z>/<lang>/* frozen, immutable snapshots - docs/v<X.Y.Z>/enterprise-api.*.yaml - docs/images/ shared, append-only - docs/docs.json nav + redirects URLs follow the Mintlify-idiomatic shape: /edge/<lang>/<page> for Edge, /v<X.Y.Z>/<lang>/<page> for every frozen snapshot. The wildcard redirects /<lang>/:slug* -> /<default>/<lang>/:slug* keep stale links working, and every freeze rewrites them (plus all per-section/per-page redirects) so destinations always resolve to the current default without depending on a second redirect hop. Release flow integration (devtools release): - New module crewai_devtools.docs_versioning.freeze() materialises docs/v<X.Y.Z>/ from docs/edge/, rewrites openapi: refs inside the snapshot, inserts the version into every language block in docs.json, and refreshes all redirect destinations. - _update_docs_and_create_pr() in cli.py now calls that freeze during Phase 2 of devtools release. Edge changelogs are updated first (so the snapshot freeze picks them up), then the snapshot is staged alongside docs.json, branched as docs/freeze-v<X.Y.Z>, and the PR is titled [docs-freeze] docs: snapshot and changelog for v<X.Y.Z> — the title prefix the new CI guard reads. - The PR still gates tag, GitHub release, PyPI publish, and the enterprise release as before; no new PRs are added. - Pre-releases (1.X.YaN, 1.X.YbN, ...) skip the snapshot — they ride Edge — and the docs PR title omits the [docs-freeze] prefix. - docs_check (AI-generated docs scaffolding) writes to docs/edge/<lang>/* so newly-generated unreleased docs land in Edge and never accidentally touch a frozen snapshot. Migration scripts (one-shot): - scripts/docs/freeze_historical_versions.py reconstructs all 16 historical snapshots (v1.10.0 .. v1.14.7) from git tags via git archive | tar, rewriting openapi: MDX refs so each snapshot reads its own enterprise-api YAML rather than the live one. - scripts/docs/prefix_version_paths.py one-shot-migrates docs.json: rewrites every page path in 16 versioned blocks to point under docs/v<X.Y.Z>/, inserts a new Edge entry per language, tags v1.14.7 as Latest (default), prunes pages whose target file doesn't exist in the snapshot (e.g. docs/ar/ didn't exist before v1.12.0), and writes the wildcard + per-section redirects. - scripts/docs/freeze_current_edge.py is now a thin CLI wrapper around docs_versioning.freeze for manual one-off freezes (e.g. retroactively snapshotting a forgotten release). CI guards (.github/workflows/docs-snapshots.yml): - Frozen snapshots under docs/v[0-9]*/ are immutable; only PRs whose title contains [docs-freeze] (i.e. release-cut PRs generated by devtools release or the manual wrapper) may modify them. - Images under docs/images/ are append-only since snapshots share a single image directory. Deleting or renaming an image breaks every historical snapshot that still references it. Restored docs/images/crewai-otel-export.png from PR #3673; it was deleted in PR #4908 but v1.10.0 / v1.10.1 snapshots still reference it. Restoring instead of editing the snapshots preserves historical rendering fidelity and validates the new append-only rule retroactively. Tests: - lib/devtools/tests/test_docs_versioning.py covers the freeze: file copy, openapi rewrite, version insertion, default demotion, redirect upserts, per-section redirect rewriting, idempotency, and invalid inputs. Verified locally with mintlify broken-links: 0 broken links across the full site (Edge + 16 frozen versions, 4 locales). AGENTS.md (repo root) is the contributor guide for the new model; RELEASING.md is the release-cut runbook; README's Contribution section links to both. Co-authored-by: Cursor <cursoragent@cursor.com> * style: resolve linter issues --------- Co-authored-by: Cursor <cursoragent@cursor.com>
323 lines
10 KiB
Plaintext
323 lines
10 KiB
Plaintext
---
|
|
title: "Triggers Overview"
|
|
description: "Understand how CrewAI AMP triggers work, how to manage them, and where to find integration-specific playbooks"
|
|
icon: "face-smile"
|
|
mode: "wide"
|
|
---
|
|
|
|
CrewAI AMP triggers connect your automations to real-time events across the tools your teams already use. Instead of polling systems or relying on manual kickoffs, triggers listen for changes—new emails, calendar updates, CRM status changes—and immediately launch the crew or flow you specify.
|
|
|
|
<Frame>
|
|

|
|
</Frame>
|
|
|
|
### Integration Playbooks
|
|
|
|
Deep-dive guides walk through setup and sample workflows for each integration:
|
|
|
|
<CardGroup cols={2}>
|
|
<Card title="Gmail Trigger" icon="envelope">
|
|
<a href="/en/enterprise/guides/gmail-trigger">Enable crews when emails arrive or threads update.</a>
|
|
</Card>
|
|
|
|
{" "}
|
|
<Card title="Google Calendar Trigger" icon="calendar-days">
|
|
<a href="/en/enterprise/guides/google-calendar-trigger">
|
|
React to calendar events as they are created, updated, or cancelled.
|
|
</a>
|
|
</Card>
|
|
|
|
{" "}
|
|
<Card title="Google Drive Trigger" icon="folder-open">
|
|
<a href="/en/enterprise/guides/google-drive-trigger">
|
|
Handle Drive file uploads, edits, and deletions.
|
|
</a>
|
|
</Card>
|
|
|
|
{" "}
|
|
<Card title="Outlook Trigger" icon="envelope-open">
|
|
<a href="/en/enterprise/guides/outlook-trigger">
|
|
Automate responses to new Outlook messages and calendar updates.
|
|
</a>
|
|
</Card>
|
|
|
|
{" "}
|
|
<Card title="OneDrive Trigger" icon="cloud">
|
|
<a href="/en/enterprise/guides/onedrive-trigger">
|
|
Audit file activity and sharing changes in OneDrive.
|
|
</a>
|
|
</Card>
|
|
|
|
{" "}
|
|
<Card title="Microsoft Teams Trigger" icon="comments">
|
|
<a href="/en/enterprise/guides/microsoft-teams-trigger">
|
|
Kick off workflows when new Teams chats start.
|
|
</a>
|
|
</Card>
|
|
|
|
{" "}
|
|
<Card title="HubSpot Trigger" icon="hubspot">
|
|
<a href="/en/enterprise/guides/hubspot-trigger">
|
|
Launch automations from HubSpot workflows and lifecycle events.
|
|
</a>
|
|
</Card>
|
|
|
|
{" "}
|
|
<Card title="Salesforce Trigger" icon="salesforce">
|
|
<a href="/en/enterprise/guides/salesforce-trigger">
|
|
Connect Salesforce processes to CrewAI for CRM automation.
|
|
</a>
|
|
</Card>
|
|
|
|
{" "}
|
|
<Card title="Slack Trigger" icon="slack">
|
|
<a href="/en/enterprise/guides/slack-trigger">
|
|
Start crews directly from Slack slash commands.
|
|
</a>
|
|
</Card>
|
|
|
|
<Card title="Zapier Trigger" icon="bolt">
|
|
<a href="/en/enterprise/guides/zapier-trigger">Bridge CrewAI with thousands of Zapier-supported apps.</a>
|
|
</Card>
|
|
</CardGroup>
|
|
|
|
## Trigger Capabilities
|
|
|
|
With triggers, you can:
|
|
|
|
- **Respond to real-time events** - Automatically execute workflows when specific conditions are met
|
|
- **Integrate with external systems** - Connect with platforms like Gmail, Outlook, OneDrive, JIRA, Slack, Stripe and more
|
|
- **Scale your automation** - Handle high-volume events without manual intervention
|
|
- **Maintain context** - Access trigger data within your crews and flows
|
|
|
|
## Managing Triggers
|
|
|
|
### Viewing Available Triggers
|
|
|
|
To access and manage your automation triggers:
|
|
|
|
1. Navigate to your deployment in the CrewAI dashboard
|
|
2. Click on the **Triggers** tab to view all available trigger integrations
|
|
|
|
<Frame caption="Example of available automation triggers for a Gmail deployment">
|
|
<img
|
|
src="/images/enterprise/list-available-triggers.png"
|
|
alt="List of available automation triggers"
|
|
/>
|
|
</Frame>
|
|
|
|
This view shows all the trigger integrations available for your deployment, along with their current connection status.
|
|
|
|
### Enabling and Disabling Triggers
|
|
|
|
Each trigger can be easily enabled or disabled using the toggle switch:
|
|
|
|
<Frame caption="Enable or disable triggers with toggle">
|
|
<img
|
|
src="/images/enterprise/trigger-selected.png"
|
|
alt="Enable or disable triggers with toggle"
|
|
/>
|
|
</Frame>
|
|
|
|
- **Enabled (blue toggle)**: The trigger is active and will automatically execute your deployment when the specified events occur
|
|
- **Disabled (gray toggle)**: The trigger is inactive and will not respond to events
|
|
|
|
Simply click the toggle to change the trigger state. Changes take effect immediately.
|
|
|
|
### Monitoring Trigger Executions
|
|
|
|
Track the performance and history of your triggered executions:
|
|
|
|
<Frame caption="List of executions triggered by automation">
|
|
<img
|
|
src="/images/enterprise/list-executions.png"
|
|
alt="List of executions triggered by automation"
|
|
/>
|
|
</Frame>
|
|
|
|
## Building Trigger-Driven Automations
|
|
|
|
Before building your automation, it's helpful to understand the structure of trigger payloads that your crews and flows will receive.
|
|
|
|
### Trigger Setup Checklist
|
|
|
|
Before wiring a trigger into production, make sure you:
|
|
|
|
- Connect the integration under **Tools & Integrations** and complete any OAuth or API key steps
|
|
- Enable the trigger toggle on the deployment that should respond to events
|
|
- Provide any required environment variables (API tokens, tenant IDs, shared secrets)
|
|
- Create or update tasks that can parse the incoming payload within the first crew task or flow step
|
|
- Decide whether to pass trigger context automatically using `allow_crewai_trigger_context`
|
|
- Set up monitoring—webhook logs, CrewAI execution history, and optional external alerting
|
|
|
|
### Testing Triggers Locally with CLI
|
|
|
|
The CrewAI CLI provides powerful commands to help you develop and test trigger-driven automations without deploying to production.
|
|
|
|
#### List Available Triggers
|
|
|
|
View all available triggers for your connected integrations:
|
|
|
|
```bash
|
|
crewai triggers list
|
|
```
|
|
|
|
This command displays all triggers available based on your connected integrations, showing:
|
|
|
|
- Integration name and connection status
|
|
- Available trigger types
|
|
- Trigger names and descriptions
|
|
|
|
#### Simulate Trigger Execution
|
|
|
|
Test your crew with realistic trigger payloads before deployment:
|
|
|
|
```bash
|
|
crewai triggers run <trigger_name>
|
|
```
|
|
|
|
For example:
|
|
|
|
```bash
|
|
crewai triggers run microsoft_onedrive/file_changed
|
|
```
|
|
|
|
This command:
|
|
|
|
- Executes your crew locally
|
|
- Passes a complete, realistic trigger payload
|
|
- Simulates exactly how your crew will be called in production
|
|
|
|
<Warning>
|
|
**Important Development Notes:**
|
|
- Use `crewai triggers run <trigger>` to simulate trigger execution during development
|
|
- Using `crewai run` will NOT simulate trigger calls and won't pass the trigger payload
|
|
- After deployment, your crew will be executed with the actual trigger payload
|
|
- If your crew expects parameters that aren't in the trigger payload, execution may fail
|
|
</Warning>
|
|
|
|
### Triggers with Crew
|
|
|
|
Your existing crew definitions work seamlessly with triggers, you just need to have a task to parse the received payload:
|
|
|
|
```python
|
|
@CrewBase
|
|
class MyAutomatedCrew:
|
|
@agent
|
|
def researcher(self) -> Agent:
|
|
return Agent(
|
|
config=self.agents_config['researcher'],
|
|
)
|
|
|
|
@task
|
|
def parse_trigger_payload(self) -> Task:
|
|
return Task(
|
|
config=self.tasks_config['parse_trigger_payload'],
|
|
agent=self.researcher(),
|
|
)
|
|
|
|
@task
|
|
def analyze_trigger_content(self) -> Task:
|
|
return Task(
|
|
config=self.tasks_config['analyze_trigger_data'],
|
|
agent=self.researcher(),
|
|
)
|
|
```
|
|
|
|
The crew will automatically receive and can access the trigger payload through the standard CrewAI context mechanisms.
|
|
|
|
<Note>
|
|
Crew and Flow inputs can include `crewai_trigger_payload`. CrewAI
|
|
automatically injects this payload: - Tasks: appended to the first task's
|
|
description by default ("Trigger Payload: {crewai_trigger_payload}") - Control
|
|
via `allow_crewai_trigger_context`: set `True` to always inject, `False` to
|
|
never inject - Flows: any `@start()` method that accepts a
|
|
`crewai_trigger_payload` parameter will receive it
|
|
</Note>
|
|
|
|
### Integration with Flows
|
|
|
|
For flows, you have more control over how trigger data is handled:
|
|
|
|
#### Accessing Trigger Payload
|
|
|
|
All `@start()` methods in your flows will accept an additional parameter called `crewai_trigger_payload`:
|
|
|
|
```python
|
|
from crewai.flow import Flow, start, listen
|
|
|
|
class MyAutomatedFlow(Flow):
|
|
@start()
|
|
def handle_trigger(self, crewai_trigger_payload: dict = None):
|
|
"""
|
|
This start method can receive trigger data
|
|
"""
|
|
if crewai_trigger_payload:
|
|
# Process the trigger data
|
|
trigger_id = crewai_trigger_payload.get('id')
|
|
event_data = crewai_trigger_payload.get('payload', {})
|
|
|
|
# Store in flow state for use by other methods
|
|
self.state.trigger_id = trigger_id
|
|
self.state.trigger_type = event_data
|
|
|
|
return event_data
|
|
|
|
# Handle manual execution
|
|
return None
|
|
|
|
@listen(handle_trigger)
|
|
def process_data(self, trigger_data):
|
|
"""
|
|
Process the data from the trigger
|
|
"""
|
|
# ... process the trigger
|
|
```
|
|
|
|
#### Triggering Crews from Flows
|
|
|
|
When kicking off a crew within a flow that was triggered, pass the trigger payload as it:
|
|
|
|
```python
|
|
@start()
|
|
def delegate_to_crew(self, crewai_trigger_payload: dict = None):
|
|
"""
|
|
Delegate processing to a specialized crew
|
|
"""
|
|
crew = MySpecializedCrew()
|
|
|
|
# Pass the trigger payload to the crew
|
|
result = crew.crew().kickoff(
|
|
inputs={
|
|
'a_custom_parameter': "custom_value",
|
|
'crewai_trigger_payload': crewai_trigger_payload
|
|
},
|
|
)
|
|
|
|
return result
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
**Trigger not firing:**
|
|
|
|
- Verify the trigger is enabled in your deployment's Triggers tab
|
|
- Check integration connection status under Tools & Integrations
|
|
- Ensure all required environment variables are properly configured
|
|
|
|
**Execution failures:**
|
|
|
|
- Check the execution logs for error details
|
|
- Use `crewai triggers run <trigger_name>` to test locally and see the exact payload structure
|
|
- Verify your crew can handle the `crewai_trigger_payload` parameter
|
|
- Ensure your crew doesn't expect parameters that aren't included in the trigger payload
|
|
|
|
**Development issues:**
|
|
|
|
- Always test with `crewai triggers run <trigger>` before deploying to see the complete payload
|
|
- Remember that `crewai run` does NOT simulate trigger calls—use `crewai triggers run` instead
|
|
- Use `crewai triggers list` to verify which triggers are available for your connected integrations
|
|
- After deployment, your crew will receive the actual trigger payload, so test thoroughly locally first
|
|
|
|
Automation triggers transform your CrewAI deployments into responsive, event-driven systems that can seamlessly integrate with your existing business processes and tools.
|