diff --git a/docs/docs.json b/docs/docs.json
index 470f51539..41a82b8f0 100644
--- a/docs/docs.json
+++ b/docs/docs.json
@@ -78,6 +78,16 @@
"/core/agent-skills"
]
},
+ {
+ "group": "Triggers",
+ "icon": "bolt",
+ "pages": [
+ "/triggers/main",
+ "/triggers/schedule",
+ "/triggers/slack",
+ "/triggers/webhook"
+ ]
+ },
{
"group": "Troubleshooting",
"icon": "question-circle",
diff --git a/docs/images/triggers/execution_logs.png b/docs/images/triggers/execution_logs.png
new file mode 100644
index 000000000..e8e1fd8a5
Binary files /dev/null and b/docs/images/triggers/execution_logs.png differ
diff --git a/docs/images/triggers/schedule/Screenshot 2026-03-05 054330.png b/docs/images/triggers/schedule/Screenshot 2026-03-05 054330.png
new file mode 100644
index 000000000..36dc13056
Binary files /dev/null and b/docs/images/triggers/schedule/Screenshot 2026-03-05 054330.png differ
diff --git a/docs/images/triggers/schedule/Screenshot 2026-03-05 054354.png b/docs/images/triggers/schedule/Screenshot 2026-03-05 054354.png
new file mode 100644
index 000000000..9f74e4465
Binary files /dev/null and b/docs/images/triggers/schedule/Screenshot 2026-03-05 054354.png differ
diff --git a/docs/images/triggers/schedule/Screenshot 2026-03-05 054418.png b/docs/images/triggers/schedule/Screenshot 2026-03-05 054418.png
new file mode 100644
index 000000000..c0e8d04aa
Binary files /dev/null and b/docs/images/triggers/schedule/Screenshot 2026-03-05 054418.png differ
diff --git a/docs/images/triggers/schedule/Screenshot 2026-03-05 054441.png b/docs/images/triggers/schedule/Screenshot 2026-03-05 054441.png
new file mode 100644
index 000000000..ccb684bf2
Binary files /dev/null and b/docs/images/triggers/schedule/Screenshot 2026-03-05 054441.png differ
diff --git a/docs/images/triggers/slack/10_activate_trigger.png b/docs/images/triggers/slack/10_activate_trigger.png
new file mode 100644
index 000000000..23d960839
Binary files /dev/null and b/docs/images/triggers/slack/10_activate_trigger.png differ
diff --git a/docs/images/triggers/slack/11_activate_trigger_click_copy.png b/docs/images/triggers/slack/11_activate_trigger_click_copy.png
new file mode 100644
index 000000000..4908bbefd
Binary files /dev/null and b/docs/images/triggers/slack/11_activate_trigger_click_copy.png differ
diff --git a/docs/images/triggers/slack/12_enable_url.png b/docs/images/triggers/slack/12_enable_url.png
new file mode 100644
index 000000000..eb9b1ba7e
Binary files /dev/null and b/docs/images/triggers/slack/12_enable_url.png differ
diff --git a/docs/images/triggers/slack/13_paste_url.png b/docs/images/triggers/slack/13_paste_url.png
new file mode 100644
index 000000000..f471ef58b
Binary files /dev/null and b/docs/images/triggers/slack/13_paste_url.png differ
diff --git a/docs/images/triggers/slack/14_listen_events_slack.png b/docs/images/triggers/slack/14_listen_events_slack.png
new file mode 100644
index 000000000..d038d167b
Binary files /dev/null and b/docs/images/triggers/slack/14_listen_events_slack.png differ
diff --git a/docs/images/triggers/slack/15_invite_bot.png b/docs/images/triggers/slack/15_invite_bot.png
new file mode 100644
index 000000000..c7e34b2b1
Binary files /dev/null and b/docs/images/triggers/slack/15_invite_bot.png differ
diff --git a/docs/images/triggers/slack/16_send_chat.png b/docs/images/triggers/slack/16_send_chat.png
new file mode 100644
index 000000000..a79ca8040
Binary files /dev/null and b/docs/images/triggers/slack/16_send_chat.png differ
diff --git a/docs/images/triggers/slack/1_create_app.png b/docs/images/triggers/slack/1_create_app.png
new file mode 100644
index 000000000..452caa14a
Binary files /dev/null and b/docs/images/triggers/slack/1_create_app.png differ
diff --git a/docs/images/triggers/slack/2_basic_info.png b/docs/images/triggers/slack/2_basic_info.png
new file mode 100644
index 000000000..e2ef2b382
Binary files /dev/null and b/docs/images/triggers/slack/2_basic_info.png differ
diff --git a/docs/images/triggers/slack/3_oauth_scopes.png b/docs/images/triggers/slack/3_oauth_scopes.png
new file mode 100644
index 000000000..a54a7ef7b
Binary files /dev/null and b/docs/images/triggers/slack/3_oauth_scopes.png differ
diff --git a/docs/images/triggers/slack/4_install_app.png b/docs/images/triggers/slack/4_install_app.png
new file mode 100644
index 000000000..84ad50499
Binary files /dev/null and b/docs/images/triggers/slack/4_install_app.png differ
diff --git a/docs/images/triggers/slack/5_install_app_process.png b/docs/images/triggers/slack/5_install_app_process.png
new file mode 100644
index 000000000..4d1b796ff
Binary files /dev/null and b/docs/images/triggers/slack/5_install_app_process.png differ
diff --git a/docs/images/triggers/slack/6_get_bottoken.png b/docs/images/triggers/slack/6_get_bottoken.png
new file mode 100644
index 000000000..45510961d
Binary files /dev/null and b/docs/images/triggers/slack/6_get_bottoken.png differ
diff --git a/docs/images/triggers/slack/7_select_slack.png b/docs/images/triggers/slack/7_select_slack.png
new file mode 100644
index 000000000..7f3881497
Binary files /dev/null and b/docs/images/triggers/slack/7_select_slack.png differ
diff --git a/docs/images/triggers/slack/8_enter_creds.png b/docs/images/triggers/slack/8_enter_creds.png
new file mode 100644
index 000000000..891ccb242
Binary files /dev/null and b/docs/images/triggers/slack/8_enter_creds.png differ
diff --git a/docs/images/triggers/slack/9_listen_events.png b/docs/images/triggers/slack/9_listen_events.png
new file mode 100644
index 000000000..7e91854e3
Binary files /dev/null and b/docs/images/triggers/slack/9_listen_events.png differ
diff --git a/docs/images/triggers/task_queue.png b/docs/images/triggers/task_queue.png
new file mode 100644
index 000000000..f897268d5
Binary files /dev/null and b/docs/images/triggers/task_queue.png differ
diff --git a/docs/images/triggers/webhook/1_select_webhook.png b/docs/images/triggers/webhook/1_select_webhook.png
new file mode 100644
index 000000000..baf56ff04
Binary files /dev/null and b/docs/images/triggers/webhook/1_select_webhook.png differ
diff --git a/docs/images/triggers/webhook/2_request_types.png b/docs/images/triggers/webhook/2_request_types.png
new file mode 100644
index 000000000..67945d4f2
Binary files /dev/null and b/docs/images/triggers/webhook/2_request_types.png differ
diff --git a/docs/images/triggers/webhook/3_webhook_config.png b/docs/images/triggers/webhook/3_webhook_config.png
new file mode 100644
index 000000000..3db139363
Binary files /dev/null and b/docs/images/triggers/webhook/3_webhook_config.png differ
diff --git a/docs/images/triggers/webhook/4_common_app_settings.png b/docs/images/triggers/webhook/4_common_app_settings.png
new file mode 100644
index 000000000..65160eeb5
Binary files /dev/null and b/docs/images/triggers/webhook/4_common_app_settings.png differ
diff --git a/docs/images/triggers/webhook/5_webhook_created.png b/docs/images/triggers/webhook/5_webhook_created.png
new file mode 100644
index 000000000..5771d5ed3
Binary files /dev/null and b/docs/images/triggers/webhook/5_webhook_created.png differ
diff --git a/docs/images/triggers/webhook/6_trigger_webhook.png b/docs/images/triggers/webhook/6_trigger_webhook.png
new file mode 100644
index 000000000..61b1c63c8
Binary files /dev/null and b/docs/images/triggers/webhook/6_trigger_webhook.png differ
diff --git a/docs/images/triggers/webhook/7_task_running.png b/docs/images/triggers/webhook/7_task_running.png
new file mode 100644
index 000000000..31f3fb7a4
Binary files /dev/null and b/docs/images/triggers/webhook/7_task_running.png differ
diff --git a/docs/triggers/main.md b/docs/triggers/main.md
new file mode 100644
index 000000000..166f06278
--- /dev/null
+++ b/docs/triggers/main.md
@@ -0,0 +1,59 @@
+---
+title: Triggers Overview
+description: Learn how to automate your workflows with different trigger types in Eigent.
+icon: bolt
+---
+
+Triggers are events that automatically start your workflows. Instead of manually initiating tasks, you can configure triggers to run workflows based on schedules, external events, or incoming data.
+
+## How Triggers Work
+
+When a trigger fires, it creates a task that enters the task queue. Workers then pick up and execute these tasks according to their configured capabilities and availability.
+
+
+
+### Key Concepts
+
+- **Trigger**: An event source that initiates workflows
+- **Task**: A unit of work created when a trigger fires
+- **Execution**: The actual running of a task by a worker
+- **Queue**: Tasks waiting to be processed
+
+## Execution Monitoring
+
+Once a trigger fires and creates a task, you can monitor its execution through the logs. Each execution is tracked with timestamps, status, and duration.
+
+
+
+The execution logs display:
+
+- Total number of runs
+- Success rate percentage
+- Individual execution status (in progress, completed, cancelled)
+- Execution timestamps
+- Duration of each run
+
+## Trigger Types
+
+Eigent supports multiple trigger types to integrate with your existing tools and workflows:
+
+
+
+ Run workflows at specific times or intervals. Supports one-time, daily, weekly, and monthly schedules with customizable time settings.
+
+
+ Trigger workflows from Slack messages, app mentions, and direct messages. Perfect for team collaboration and support workflows.
+
+
+ Receive HTTP requests from external services via unique URLs. Integrate with any service that supports webhooks.
+
+
+
+## Best Practices
+
+- **Schedule triggers**: Use for recurring tasks like daily reports, periodic data sync, or routine maintenance
+- **Slack triggers**: Ideal for team collaboration, customer support, and human-in-the-loop workflows
+- **Webhook triggers**: Perfect for integrating with external systems, CI/CD pipelines, and third-party services
+- Monitor execution logs regularly to ensure triggers are firing correctly
+- Set appropriate max failure counts to prevent runaway triggers
+- Use filters and validation to ensure only relevant events trigger your workflows
diff --git a/docs/triggers/schedule.md b/docs/triggers/schedule.md
new file mode 100644
index 000000000..591985f96
--- /dev/null
+++ b/docs/triggers/schedule.md
@@ -0,0 +1,97 @@
+---
+title: Schedule Trigger
+description: Automate recurring workflows with flexible scheduling options including one-time, daily, weekly, and monthly schedules.
+icon: clock
+---
+
+Schedule triggers allow you to run workflows automatically at specified times or intervals. This is ideal for recurring tasks like daily reports, periodic data synchronization, or routine maintenance.
+
+## Setting Up a Schedule Trigger
+
+### Step 1: Select Schedule Trigger Type
+
+Create a new trigger and select "Schedule" from the trigger type options. You'll see two main tabs: "Schedule" and "App Trigger" - make sure Schedule is selected.
+
+
+
+### Step 2: Choose Schedule Frequency
+
+Select your desired frequency from the available options:
+
+- **One Time**: Run once at a specific date and time
+- **Daily**: Run every day at the specified time
+- **Weekly**: Run on specific days of the week
+- **Monthly**: Run on a specific day of each month
+
+### Step 3: Configure Date and Time
+
+Set the specific date, hour, and minute for your trigger:
+
+- **Date**: Select the start date (format: mm/dd/yyyy)
+- **Hour**: Choose the hour (00-23)
+- **Minute**: Choose the minute (00-59)
+
+You can also set an optional **Expiration Date** if you want the trigger to stop running after a specific date.
+
+### Step 4: Preview Scheduled Times
+
+Before creating the trigger, expand the "Preview Scheduled Times" section to see exactly when your trigger will run in the upcoming days.
+
+
+
+This helps verify your schedule is configured correctly.
+
+### Step 5: Set Failure Threshold
+
+Configure the **Max Failure Count** (default: 5) - this is the number of consecutive failures before the trigger is automatically disabled. This safety feature prevents problematic triggers from running indefinitely.
+
+## Schedule Types
+
+### One Time
+
+Run the workflow once at a specific date and time. Perfect for scheduled maintenance or one-off tasks.
+
+### Daily
+
+Run the workflow every day at the same time. Configure:
+
+- Date: When to start
+- Hour and Minute: What time to run
+
+### Weekly
+
+Run the workflow on specific days of the week. Configure:
+
+- Select multiple days (Sun, Mon, Tue, Wed, Thur, Fri, Sat)
+- Set the time (Hour and Minute)
+
+
+
+### Monthly
+
+Run the workflow on a specific day of each month. Configure:
+
+- Day of Month: Select from 1st to 31st
+- Set the time (Hour and Minute)
+
+
+
+
+If the selected day doesn't exist in that month (e.g., the 31st), the task will be skipped for that month.
+
+
+## Use Cases
+
+- **Daily Reports**: Generate and send daily analytics summaries at 9 AM
+- **Data Sync**: Synchronize data between systems every hour
+- **Weekly Maintenance**: Run cleanup tasks every Sunday at midnight
+- **Monthly Billing**: Process invoices on the 1st of each month
+- **Periodic Monitoring**: Check system health every 15 minutes
+
+## Best Practices
+
+- Always check the "Preview Scheduled Times" to verify your schedule
+- Set an expiration date for temporary or test triggers
+- Use appropriate max failure counts (5 is usually sufficient)
+- Consider timezone differences when scheduling for global teams
+- Monitor execution logs regularly to ensure triggers run as expected
diff --git a/docs/triggers/slack.md b/docs/triggers/slack.md
new file mode 100644
index 000000000..d8dfe8fad
--- /dev/null
+++ b/docs/triggers/slack.md
@@ -0,0 +1,150 @@
+---
+title: Slack Trigger
+description: Trigger workflows from Slack messages, app mentions, and direct messages.
+icon: slack
+---
+
+Slack triggers enable your workflows to respond to events in Slack, such as messages in channels, mentions of your bot, or direct messages. This creates seamless integration between your team communication and automated processes.
+
+## Prerequisites
+
+Before setting up a Slack trigger, you need to create a Slack app and obtain the necessary credentials from the [Slack API](https://api.slack.com/apps).
+
+### Step 1: Create a Slack App
+
+Go to Slack API Apps and click "Create New App". Choose "From scratch" and provide:
+
+- **App Name**: A name for your app (e.g., "Demo")
+- **Workspace**: Select the workspace where you want to install the app
+
+
+
+### Step 2: View App Credentials
+
+After creating the app, navigate to **Basic Information** to view your app credentials including App ID, Client ID, Client Secret, and Signing Secret.
+
+
+
+### Step 3: Configure OAuth Scopes
+
+Navigate to **OAuth & Permissions** and add the necessary bot token scopes. Click "Add an OAuth Scope" and add:
+
+- `app_mentions:read` - View messages that directly mention your app
+- `im:history` - View messages in direct messages
+
+
+
+### Step 4: Install App to Workspace
+
+Scroll down to the **OAuth Tokens** section and click "Install to Workspace" to generate your Bot User OAuth Token.
+
+
+
+Review the permissions and click "Allow" to authorize the app.
+
+
+
+### Step 5: Copy Bot Token
+
+After installation, copy the **Bot User OAuth Token** (starts with `xoxb-`) - you'll need this for Eigent.
+
+
+
+## Configuring the Slack Trigger in Eigent
+
+### Step 1: Select Slack as Trigger Type
+
+In Eigent, create a new trigger and select "App Trigger" tab, then choose "Slack" from the available apps.
+
+
+
+### Step 2: Enter Slack Credentials
+
+Enter your Slack Bot Token and optionally the Slack Signing Secret (from Basic Information page) to verify requests.
+
+
+
+### Step 3: Configure Event Types
+
+Select which Slack events should trigger your workflow:
+
+- **message** - Any message in channels the bot is in
+- **app_mention** - When the bot is @mentioned
+
+You can also configure:
+
+- **Message Filter (Regex)**: Filter messages using regex patterns
+- **Ignore Users**: Exclude specific Slack user IDs from triggering workflows
+
+
+
+### Step 4: Activate the Trigger
+
+Save the trigger and toggle it to enabled. The trigger will show a warning icon until properly configured with Slack.
+
+
+
+### Step 5: Configure Event Subscriptions in Slack
+
+For real-time events, you need to enable Event Subscriptions in your Slack app:
+
+First, edit the trigger in Eigent and copy the webhook URL:
+
+
+
+In your Slack app settings, navigate to **Event Subscriptions** and enable events:
+
+
+
+Paste the webhook URL in the **Request URL** field. Slack will verify the URL automatically.
+
+
+
+### Step 6: Subscribe to Bot Events
+
+Expand "Subscribe to bot events" and add the events you want to receive:
+
+- `app_mention` - Subscribe to messages that mention your app
+- `message.im` - Subscribe to direct messages
+
+
+
+Click "Save Changes" to apply your configuration.
+
+### Step 7: Invite Bot to Channel
+
+In Slack, invite your bot to the channels where you want it to listen by typing `/invite @YourBotName`.
+
+
+
+## Testing Your Integration
+
+Send a message in the configured channel or mention the bot to trigger your workflow.
+
+
+
+## Available Event Types
+
+| Event | Description | Required Scope |
+| ------------------ | ------------------------------ | ----------------- |
+| `app_mention` | Bot is @mentioned in a channel | app_mentions:read |
+| `message.im` | New direct message to the bot | im:history |
+| `message.channels` | Message in public channel | channels:history |
+| `message.groups` | Message in private channel | groups:history |
+
+## Use Cases
+
+- **Customer Support**: Auto-respond to support requests in #help channels
+- **DevOps**: Trigger deployments from Slack commands
+- **HR**: Process time-off requests via Slack messages
+- **Sales**: Log leads from sales channel conversations
+- **IT Helpdesk**: Create tickets from IT support requests
+
+## Best Practices
+
+- Use specific channels rather than monitoring all channels
+- Set up regex filters to avoid triggering on irrelevant messages
+- Add ignore users to prevent bot loops
+- Include the bot's response format in your workforce instructions
+- Test thoroughly before enabling in production channels
+- Use app mentions for actions requiring human confirmation
diff --git a/docs/triggers/temp.md b/docs/triggers/temp.md
new file mode 100644
index 000000000..e9aaf101a
--- /dev/null
+++ b/docs/triggers/temp.md
@@ -0,0 +1,305 @@
+# Image Analysis for Triggers Documentation
+
+## Main/Overview Images
+
+### task_queue.png
+
+- Shows: "1 Queued Tasks" with a task labeled "say hi"
+- UI element: "Splitting Tasks" button with gear icon
+- Content: Shows how triggered tasks appear in the task queue
+- Caption: "When a trigger fires, it creates a task that enters the task queue"
+
+### execution_logs.png
+
+- Shows: Execution logs for "my webhook" trigger
+- Statistics: 1 Total Runs, 100% Success Rate
+- Log entries with timestamps and status:
+ - 05:50:27 - Execution in progress...
+ - 05:50:14 - Execution was cancelled (2.5s)
+ - 05:50:08 - Execution completed successfully (9.3s)
+ - 05:49:47 - Execution completed successfully (12.0s)
+ - 05:49:34 - Execution completed successfully (11.3s)
+ - 05:48:33 - Execution completed successfully (29.0s)
+- Caption: "Monitor trigger executions with detailed logs showing status, timestamps, and duration"
+
+## Schedule Trigger Images
+
+### schedule/Screenshot 2026-03-05 054330.png
+
+- Shows: "Automate task with trigger" modal, Schedule tab selected
+- Trigger Type: Schedule (selected) vs App Trigger
+- Options: One Time, Daily, Weekly, Monthly tabs
+- Fields visible:
+ - Date: 03/05/2026
+ - Hour: 05 (dropdown)
+ - Minute: 41 (dropdown)
+ - Max Failure Count: 5 (optional, description: "Number of consecutive failures before the trigger is automatically disabled")
+- Caption: "Configure a schedule trigger by selecting the schedule type and frequency"
+
+### schedule/Screenshot 2026-03-05 054354.png
+
+- Shows: Same modal scrolled down
+- Additional fields:
+ - Expiration Date: mm/dd/yyyy (optional)
+ - Max Failure Count: 5
+ - Preview Scheduled Times (expandable):
+ - March 6, 2026 at 5:41 AM GMT+3
+ - March 7, 2026 at 5:41 AM GMT+3
+ - March 8, 2026 at 5:41 AM GMT+3
+ - March 9, 2026 at 5:41 AM GMT+3
+ - March 10, 2026 at 5:41 AM GMT+3
+- Caption: "View a preview of upcoming scheduled execution times before creating the trigger"
+
+### schedule/Screenshot 2026-03-05 054418.png
+
+- Shows: Days of Week selector
+- Days: Sun, Mon, Tue, Wed, Thur, Fri, Sat
+- Mon is selected (white background, others gray)
+- Caption: "Select specific days of the week for weekly recurring triggers"
+
+### schedule/Screenshot 2026-03-05 054441.png
+
+- Shows: Monthly scheduling options
+- Selected: "Monthly" tab
+- Field: Day of Month (dropdown showing "1st")
+- Help text: "If the selected day doesn't exist in that month (e.g., the 31st), the task will be skipped."
+- Caption: "Configure monthly triggers by selecting the day of the month"
+
+## Slack Trigger Images
+
+### slack/1_create_app.png
+
+- Shows: Slack API "Your Apps" page with modal open
+- Modal title: "Name app & choose workspace"
+- Fields:
+ - App Name: "Demo"
+ - Workspace dropdown: "MY FIRST WORKSPACE"
+- Note: "By creating a Web API Application, you agree to the Slack API Terms of Service"
+- Buttons: Cancel, Create App (green)
+- Caption: "Create a new Slack app from the Slack API dashboard"
+
+### slack/2_basic_info.png
+
+- Shows: Slack app "Basic Information" page
+- Section: "App Credentials"
+- Fields displayed:
+ - App ID
+ - Date of App Creation: March 4, 2026
+ - Client ID
+ - Client Secret (hidden)
+ - Signing Secret
+- Left sidebar shows various settings and features
+- Caption: "View your app's basic information and credentials in the Slack API dashboard"
+
+### slack/3_oauth_scopes.png
+
+- Shows: OAuth & Permissions - Scopes section
+- Bot Token Scopes:
+ - app_mentions:read - "View messages that directly mention @Demo in conversations that the app is in"
+ - im:history - "View messages and other content in direct messages that 'Demo' has been added to"
+- Button: "Add an OAuth Scope"
+- Caption: "Add necessary OAuth scopes for your bot to read messages and mentions"
+
+### slack/4_install_app.png
+
+- Shows: OAuth & Permissions page
+- Section: "Advanced token security via token rotation"
+- Warning: "At least one redirect URL needs to be set below before this app can be opted into token rotation"
+- OAuth Tokens section
+- Button: "Install to MY FIRST WORKSPACE" (green)
+- Caption: "Install your Slack app to your workspace to generate OAuth tokens"
+
+### slack/5_install_app_process.png
+
+- Shows: Permission approval page
+- Title: "Allow the 'Demo' app to access Slack"
+- Workspace: MY FIRST WORKSPACE
+- Review app permissions section
+- Information visible: "Content and info about channels & conversations"
+- Buttons: Cancel, Allow (green)
+- Caption: "Review and approve the permissions requested by your Slack app"
+
+### slack/6_get_bottoken.png
+
+- Shows: OAuth & Permissions page after installation
+- Success banner: "You've changed the permission scopes your app uses. Please reinstall your app..."
+- OAuth Tokens section showing:
+ - Bot User OAuth Token: xoxb-... (with Copy button)
+ - Access Level: Workspace
+- Button: "Reinstall to MY FIRST WORKSPACE"
+- Caption: "Copy the Bot User OAuth Token after installing the app to your workspace"
+
+### slack/7_select_slack.png
+
+- Shows: Eigent "Automate task with trigger" modal
+- Trigger Type: Schedule | App Trigger (App Trigger selected)
+- Select App section with grid:
+ - Slack (logo)
+ - Webhook (selected, highlighted)
+ - Lark (Coming Soon)
+ - Telegram (Coming Soon)
+- Execution Settings section (collapsed)
+- Caption: "Select Slack as the trigger app in Eigent's trigger configuration"
+
+### slack/8_enter_creds.png
+
+- Shows: "Slack Configuration" section in trigger modal
+- Info box: "You can find your webhook URL in the trigger details after creation."
+- Credentials section:
+ - Slack Bot Token (password field with show/hide, Update button)
+ - Help: "Your Slack Bot User OAuth Token (starts with xoxb-)"
+ - Slack Signing Secret (password field with show/hide, Update button)
+ - Help: "Your Slack app's signing secret used to verify requests"
+- Success message: "✓ Credentials configured successfully"
+- Caption: "Enter your Slack Bot Token and Signing Secret to authenticate the trigger"
+
+### slack/9_listen_events.png
+
+- Shows: Lower section of trigger configuration modal
+- Fields:
+ - Message Filter (Regex): "Enter regex pattern to filter messages..."
+ - Event Types: "2 selected" (dropdown)
+ - Selected tags: message, app_mention
+ - Ignore Users: "Enter Slack user IDs (e.g., U1234567890)..."
+ - Behavior Settings (collapsed section)
+- Caption: "Configure which Slack events should trigger your workflow"
+
+### slack/10_activate_trigger.png
+
+- Shows: Eigent Triggers page
+- Created trigger: "slack trigger" with warning icon
+- Description: "search for me the weather"
+- Type badge: "Slack"
+- Toggle switch: Enabled (green)
+- Caption: "Activate your Slack trigger from the triggers list"
+
+### slack/11_activate_trigger_click_copy.png
+
+- Shows: "Edit Trigger Agent" modal
+- Trigger Type: App Trigger selected
+- Slack Configuration section
+- Webhook URL displayed: https://dev.eigent.ai/api/webhook/trigger/98d2a1c8-859a-4e9b-9257-74911f56156a
+- Warning: "Pending Verification. A valid event message is required for Trigger Activation or disable trigger Authentication."
+- Copy button next to URL
+- Caption: "Copy the webhook URL to configure in your Slack app's Event Subscriptions"
+
+### slack/12_enable_url.png
+
+- Shows: Slack API Event Subscriptions page
+- Toggle: "Enable Events" - currently Off
+- Description: "Your app can subscribe to be notified of events in Slack... at a URL you choose."
+- Caption: "Enable Event Subscriptions in your Slack app settings"
+
+### slack/13_paste_url.png
+
+- Shows: Slack API Event Subscriptions page with Events enabled
+- Toggle: "Enable Events" - On (green)
+- Request URL field showing: https://dev.eigent.ai/api/webhook/trigger/98d2a1c8-859a-4e9b-9257-74...
+- Status: Verified ✓
+- Additional options:
+ - Delayed Events toggle (Off)
+ - Subscribe to bot events (collapsed section)
+- Caption: "Paste the webhook URL and verify it with Slack"
+
+### slack/14_listen_events_slack.png
+
+- Shows: Slack Event Subscriptions page - "Subscribe to bot events" section expanded
+- Events subscribed:
+ - app_mention - Subscribe to only the message events that mention your app or bot - Required Scope: app_mentions:read
+ - message.im - A message was posted in a direct message channel - Required Scope: im:history
+- Button: "Add Bot User Event"
+- Another collapsed section: "Subscribe to events on behalf of users"
+- Caption: "Subscribe to specific bot events that will trigger your workflow"
+
+### slack/15_invite_bot.png
+
+- Shows: Slack workspace channel view
+- Channel: demo-ch
+- Message input showing: "/invite @Demo"
+- Bot status: "Not in channel" with "Enter" button
+- Top shows onboarding cards for the channel
+- Caption: "Invite your bot to the channel where you want it to listen for messages"
+
+### slack/16_send_chat.png
+
+- Shows: Slack channel after bot invitation
+- System message: "Ahmed joined demo-ch. Also, Demo joined via invite."
+- User message: "Ahmed: Hi there @Demo, what can you do?"
+- Message input ready for typing
+- Caption: "Test your integration by mentioning the bot in the channel"
+
+## Webhook Trigger Images
+
+### webhook/1_select_webhook.png
+
+- Shows: Eigent "Automate task with trigger" modal
+- Trigger Type: Schedule | App Trigger (App Trigger selected)
+- Select App grid:
+ - Slack
+ - Webhook (selected, highlighted with border)
+ - Lark (Coming Soon)
+ - Telegram (Coming Soon)
+- Caption: "Select Webhook as the trigger type"
+
+### webhook/2_request_types.png
+
+- Shows: Request Method dropdown
+- Currently selected: POST
+- Dropdown options: GET, POST (checkmark)
+- Caption: "Choose the HTTP method (GET or POST) for your webhook"
+
+### webhook/3_webhook_config.png
+
+- Shows: "Extra Settings" section expanded
+- Fields:
+ - Max Failure Count: 5 ("Number of consecutive failures before the trigger is automatically disabled")
+ - Message Filter (Regex): "Enter regex pattern to filter messages..."
+ - Body Contains: "Enter text that must be in request body..." ("Only trigger if the request body contains this string")
+ - Required Headers: "Enter header names (e.g., Content-Type, Authorization)..." (with + button)
+- Caption: "Configure webhook filters and validation rules"
+
+### webhook/4_common_app_settings.png
+
+- Shows: Execution Settings section expanded
+- Fields:
+ - Max Per Hour: 0
+ - Max Per Day: 0
+- Caption: "Set rate limiting options to control webhook execution frequency"
+
+### webhook/5_webhook_created.png
+
+- Shows: "Webhook Created Successfully" modal
+- Icon: Green lightning bolt in circle
+- Webhook name: "my webhook"
+- Method badge: GET
+- Your Webhook URL: https://dev.eigent.ai/api/webhook/trigger/f9b48cef-7fbb-411f-aa19-b959e3a58ef2
+- Copy button next to URL
+- Button: "Got it"
+- Caption: "Copy your unique webhook URL after creation"
+
+### webhook/6_trigger_webhook.png
+
+- Shows: Browser view of webhook URL
+- URL: https://dev.eigent.ai/api/webhook/trigger/f9b48cef-7fbb-411f-aa19-b959e3a58ef2
+- JSON response:
+
+```json
+{
+ "success": true,
+ "execution_id": "c9a49dd7-7125-44dc-9374-b3a9f13ab7bd",
+ "message": "Webhook trigger delivered to client",
+ "delivered": true,
+ "session_id": "b9ed7788-58b0-46ee-bb0d-01bb8e906f56"
+}
+```
+
+- Caption: "Trigger the webhook by visiting the URL or sending an HTTP request"
+
+### webhook/7_task_running.png
+
+- Shows: Eigent interface with Triggers page
+- Created trigger: "my webhook" with description "say hi"
+- Toggle: Enabled (green)
+- Left sidebar shows Chat with tasks loading
+- Notification toast: "Queued: my webhook - Task has been added to the project queue"
+- Caption: "View your webhook trigger in the triggers list and monitor task execution"
diff --git a/docs/triggers/webhook.md b/docs/triggers/webhook.md
new file mode 100644
index 000000000..d5773bade
--- /dev/null
+++ b/docs/triggers/webhook.md
@@ -0,0 +1,141 @@
+---
+title: Webhook Trigger
+description: Trigger workflows via HTTP requests from external services using unique webhook URLs.
+icon: webhook
+---
+
+Webhook triggers allow external services to initiate workflows by sending HTTP requests to a unique URL. This enables integration with virtually any service that supports webhooks, including GitHub, Stripe, Zapier, and custom applications.
+
+## Setting Up a Webhook Trigger
+
+### Step 1: Select Webhook Trigger
+
+Create a new trigger and select "App Trigger" tab, then choose "Webhook" from the available options.
+
+
+
+### Step 2: Configure Request Method
+
+Choose the HTTP method your webhook should accept:
+
+- **GET**: For simple requests and testing
+- **POST**: For sending data payloads (most common)
+
+
+
+### Step 3: Configure Extra Settings
+
+Set up validation and filtering rules for your webhook:
+
+- **Max Failure Count**: Number of consecutive failures before the trigger is automatically disabled (default: 5)
+- **Message Filter (Regex)**: Use regex patterns to filter which requests trigger the workflow
+- **Body Contains**: Only trigger if the request body contains specific text
+- **Required Headers**: Specify required HTTP headers (e.g., Content-Type, Authorization)
+
+
+
+### Step 4: Set Execution Limits
+
+Configure rate limiting to prevent abuse:
+
+- **Max Per Hour**: Maximum number of executions per hour (0 = unlimited)
+- **Max Per Day**: Maximum number of executions per day (0 = unlimited)
+
+
+
+### Step 5: Create and Copy Webhook URL
+
+After configuring, click "Create" to generate your unique webhook URL.
+
+
+
+**Important**: Copy this URL - you'll need to configure it in your external service.
+
+## Using Your Webhook
+
+### Step 1: Configure External Service
+
+Paste the webhook URL into your external service's webhook settings. Examples:
+
+- **GitHub**: Repository Settings → Webhooks → Add webhook
+- **Stripe**: Dashboard → Developers → Webhooks → Add endpoint
+- **Zapier**: Create Zap → Webhooks by Zapier
+- **Custom apps**: Use the URL in your API calls
+
+### Step 2: Trigger the Webhook
+
+Test the webhook by visiting the URL in your browser (for GET requests) or sending an HTTP request.
+
+
+
+The response includes:
+
+- `success`: Boolean indicating if the trigger was accepted
+- `execution_id`: Unique ID for this execution
+- `message`: Status message
+- `delivered`: Whether the trigger was successfully delivered
+- `session_id`: Session identifier
+
+### Step 3: Monitor Execution
+
+When the webhook fires, Eigent creates a task and adds it to the project queue.
+
+
+
+View execution logs to see the payload and processing results.
+
+## Security Best Practices
+
+### Rate Limiting
+
+Always set appropriate Max Per Hour/Day limits to prevent abuse:
+
+- **Development**: 100/hour, 1000/day
+- **Production**: Depends on expected volume
+
+### Request Validation
+
+Use these methods to secure your webhooks:
+
+1. **Required Headers**: Enforce Content-Type, Authorization, or custom headers
+2. **Body Contains**: Verify specific strings in the request body
+3. **Regex Filtering**: Use complex patterns to validate request structure
+
+### Authentication
+
+While Eigent webhooks use unique URLs (which act as tokens), you can add additional security:
+
+- Add an `Authorization` header requirement
+- Include a secret token in the request body
+- Use IP whitelisting on your external service
+
+## Use Cases
+
+- **CI/CD Pipelines**: Trigger deployments from GitHub/GitLab webhooks
+- **E-commerce**: Process orders from Stripe/PayPal payment webhooks
+- **Monitoring**: Handle alerts from PagerDuty/Datadog
+- **CRM Integration**: Sync customer data from Salesforce/HubSpot
+- **Form Submissions**: Process Typeform/Google Forms submissions
+- **IoT Devices**: Respond to device events and sensor data
+
+## Troubleshooting
+
+### Webhook Not Firing
+
+1. Verify the URL is correctly entered in the external service
+2. Check if the external service shows successful delivery attempts
+3. Ensure the webhook is toggled ON in Eigent
+4. Review execution logs for any errors
+
+### Payload Not Received
+
+1. Check the Content-Type header (should be application/json for JSON payloads)
+2. Verify the payload matches your "Body Contains" filter if configured
+3. Ensure required headers are present
+4. Check if regex filter is too restrictive
+
+### Too Many Requests
+
+1. Check Max Per Hour/Day limits
+2. Verify the external service isn't sending duplicate requests
+3. Consider adding deduplication logic in your workflow