diff --git a/apps/docs/content/docs/blocks/meta.json b/apps/docs/content/docs/blocks/meta.json
index d2e8f50c01..b231fe1bd9 100644
--- a/apps/docs/content/docs/blocks/meta.json
+++ b/apps/docs/content/docs/blocks/meta.json
@@ -10,7 +10,6 @@
"parallel",
"response",
"router",
- "webhook_trigger",
"workflow"
]
}
diff --git a/apps/docs/content/docs/blocks/webhook_trigger.mdx b/apps/docs/content/docs/blocks/webhook_trigger.mdx
deleted file mode 100644
index 08f9922e51..0000000000
--- a/apps/docs/content/docs/blocks/webhook_trigger.mdx
+++ /dev/null
@@ -1,113 +0,0 @@
----
-title: Webhook Trigger
-description: Trigger workflow execution from external webhooks
----
-
-import { Callout } from 'fumadocs-ui/components/callout'
-import { Step, Steps } from 'fumadocs-ui/components/steps'
-import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
-import { Card, Cards } from 'fumadocs-ui/components/card'
-import { ThemeImage } from '@/components/ui/theme-image'
-
-The Webhook Trigger block allows external services to trigger your workflow execution through HTTP webhooks. Unlike starter blocks, webhook triggers are pure input sources that start workflows without requiring manual intervention.
-
-
-
-
- Webhook triggers cannot receive incoming connections and do not expose webhook data to the workflow. They serve as pure execution triggers.
-
-
-## Overview
-
-The Webhook Trigger block enables you to:
-
-
-
- Receive external triggers: Accept HTTP requests from external services
-
-
- Support multiple providers: Handle webhooks from Slack, Gmail, GitHub, and more
-
-
- Start workflows automatically: Execute workflows without manual intervention
-
-
- Provide secure endpoints: Generate unique webhook URLs for each trigger
-
-
-
-## How It Works
-
-The Webhook Trigger block operates as a pure input source:
-
-1. **Generate Endpoint** - Creates a unique webhook URL when configured
-2. **Receive Request** - Accepts HTTP POST requests from external services
-3. **Trigger Execution** - Starts the workflow when a valid request is received
-
-## Configuration Options
-
-### Webhook Provider
-
-Choose from supported service providers:
-
-
-
- Receive events from Slack apps and bots
-
-
- Handle email-based triggers and notifications
-
-
- Respond to database changes
-
-
- Process bot messages and updates
-
-
- Handle messaging events
-
-
- Process repository events and pull requests
-
-
- Respond to Discord server events
-
-
- Handle payment and subscription events
-
-
-
-### Generic Webhooks
-
-For custom integrations or services not listed above, use the **Generic** provider. This option accepts HTTP POST requests from any client and provides flexible authentication options:
-
-- **Optional Authentication** - Configure Bearer token or custom header authentication
-- **IP Restrictions** - Limit access to specific IP addresses
-- **Request Deduplication** - Automatic duplicate request detection using content hashing
-- **Flexible Headers** - Support for custom authentication header names
-
-The Generic provider is ideal for internal services, custom applications, or third-party tools that need to trigger workflows via standard HTTP requests.
-
-### Webhook Configuration
-
-Configure provider-specific settings:
-
-- **Webhook URL** - Automatically generated unique endpoint
-- **Provider Settings** - Authentication and validation options
-- **Security** - Built-in rate limiting and provider-specific authentication
-
-## Best Practices
-
-- **Use unique webhook URLs** for each integration to maintain security
-- **Configure proper authentication** when supported by the provider
-- **Keep workflows independent** of webhook payload structure
-- **Test webhook endpoints** before deploying to production
-- **Monitor webhook delivery** through provider dashboards
-
-
diff --git a/apps/docs/content/docs/execution/basics.mdx b/apps/docs/content/docs/execution/basics.mdx
index e7ff908fb8..c489d7fa3a 100644
--- a/apps/docs/content/docs/execution/basics.mdx
+++ b/apps/docs/content/docs/execution/basics.mdx
@@ -161,13 +161,9 @@ Run workflows on-demand through the Sim Studio interface by clicking the "Run" b
- One-off tasks
- Workflows that need human supervision
-
+
+
+
### Scheduled Execution
@@ -178,13 +174,9 @@ Configure workflows to run automatically on a specified schedule:
- Configure timezone settings
- Set minimum and maximum execution intervals
-
+
+
+
### API Endpoints
@@ -195,13 +187,19 @@ Each workflow can be exposed as an API endpoint:
- Send custom inputs via POST requests
- Receive execution results as JSON responses
-
+
+
+
+
+#### Viewing Deployed APIs
+
+Monitor your deployed workflow APIs and their current state:
+
+
+
+
+
+This shows how to view the deployed state and compare with the original deployed API configuration.
### Webhooks
@@ -212,13 +210,9 @@ Configure workflows to execute in response to external events:
- Configure webhook security settings
- Support for specialized webhooks (GitHub, Stripe, etc.)
-
+
+
+
The execution method you choose depends on your workflow's purpose. Manual execution is great for
diff --git a/apps/docs/content/docs/meta.json b/apps/docs/content/docs/meta.json
index e7dd44facd..3e4b1097c2 100644
--- a/apps/docs/content/docs/meta.json
+++ b/apps/docs/content/docs/meta.json
@@ -5,6 +5,7 @@
"./introduction/index",
"./getting-started/index",
"---Create---",
+ "triggers",
"blocks",
"tools",
"---Connections---",
diff --git a/apps/docs/content/docs/tools/exa.mdx b/apps/docs/content/docs/tools/exa.mdx
index 72eebe5b21..aa7dc62be8 100644
--- a/apps/docs/content/docs/tools/exa.mdx
+++ b/apps/docs/content/docs/tools/exa.mdx
@@ -142,6 +142,25 @@ Get an AI-generated answer to a question with citations from the web using Exa A
| `url` | string |
| `text` | string |
+### `exa_research`
+
+Perform comprehensive research using AI to generate detailed reports with citations
+
+#### Input
+
+| Parameter | Type | Required | Description |
+| --------- | ---- | -------- | ----------- |
+| `query` | string | Yes | Research query or topic |
+| `includeText` | boolean | No | Include full text content in results |
+| `apiKey` | string | Yes | Exa AI API Key |
+
+#### Output
+
+| Parameter | Type |
+| --------- | ---- |
+| `taskId` | string |
+| `research` | string |
+
## Block Configuration
@@ -162,6 +181,7 @@ Get an AI-generated answer to a question with citations from the web using Exa A
| `similarLinks` | json | similarLinks output from the block |
| `answer` | string | answer output from the block |
| `citations` | json | citations output from the block |
+| `research` | json | research output from the block |
## Notes
diff --git a/apps/docs/content/docs/tools/firecrawl.mdx b/apps/docs/content/docs/tools/firecrawl.mdx
index 94ea6caa6e..bfbddb66da 100644
--- a/apps/docs/content/docs/tools/firecrawl.mdx
+++ b/apps/docs/content/docs/tools/firecrawl.mdx
@@ -95,6 +95,28 @@ Search for information on the web using Firecrawl
| `data` | string |
| `warning` | string |
+### `firecrawl_crawl`
+
+Crawl entire websites and extract structured content from all accessible pages
+
+#### Input
+
+| Parameter | Type | Required | Description |
+| --------- | ---- | -------- | ----------- |
+| `url` | string | Yes | The website URL to crawl |
+| `limit` | number | No | Maximum number of pages to crawl \(default: 100\) |
+| `onlyMainContent` | boolean | No | Extract only main content from pages |
+| `apiKey` | string | Yes | Firecrawl API Key |
+
+#### Output
+
+| Parameter | Type |
+| --------- | ---- |
+| `jobId` | string |
+| `pages` | string |
+| `total` | string |
+| `creditsUsed` | string |
+
## Block Configuration
@@ -116,6 +138,9 @@ Search for information on the web using Firecrawl
| `metadata` | json | metadata output from the block |
| `data` | json | data output from the block |
| `warning` | any | warning output from the block |
+| `pages` | json | pages output from the block |
+| `total` | number | total output from the block |
+| `creditsUsed` | number | creditsUsed output from the block |
## Notes
diff --git a/apps/docs/content/docs/tools/meta.json b/apps/docs/content/docs/tools/meta.json
index 520b879c39..0999029ef2 100644
--- a/apps/docs/content/docs/tools/meta.json
+++ b/apps/docs/content/docs/tools/meta.json
@@ -37,6 +37,7 @@
"qdrant",
"reddit",
"s3",
+ "schedule",
"serper",
"slack",
"stagehand",
@@ -50,6 +51,7 @@
"typeform",
"vision",
"wealthbox",
+ "webhook",
"whatsapp",
"x",
"youtube"
diff --git a/apps/docs/content/docs/tools/notion.mdx b/apps/docs/content/docs/tools/notion.mdx
index 50eace34d3..3e08a870c6 100644
--- a/apps/docs/content/docs/tools/notion.mdx
+++ b/apps/docs/content/docs/tools/notion.mdx
@@ -62,6 +62,30 @@ Read content from a Notion page
| `createdTime` | string |
| `url` | string |
+### `notion_read_database`
+
+Read database information and structure from Notion
+
+#### Input
+
+| Parameter | Type | Required | Description |
+| --------- | ---- | -------- | ----------- |
+| `accessToken` | string | Yes | Notion OAuth access token |
+| `databaseId` | string | Yes | The ID of the Notion database to read |
+
+#### Output
+
+| Parameter | Type |
+| --------- | ---- |
+| `metadata` | string |
+| `url` | string |
+| `id` | string |
+| `createdTime` | string |
+| `lastEditedTime` | string |
+| `properties` | string |
+| `content` | string |
+| `title` | string |
+
### `notion_write`
Append content to a Notion page
@@ -89,10 +113,8 @@ Create a new page in Notion
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `accessToken` | string | Yes | Notion OAuth access token |
-| `parentType` | string | Yes | Type of parent: |
-| `parentId` | string | Yes | ID of the parent page or database |
-| `title` | string | No | Title of the page \(required for parent pages, not for databases\) |
-| `properties` | json | No | JSON object of properties for database pages |
+| `parentId` | string | Yes | ID of the parent page |
+| `title` | string | No | Title of the new page |
| `content` | string | No | Optional content to add to the page upon creation |
#### Output
@@ -101,6 +123,77 @@ Create a new page in Notion
| --------- | ---- |
| `content` | string |
+### `notion_query_database`
+
+Query and filter Notion database entries with advanced filtering
+
+#### Input
+
+| Parameter | Type | Required | Description |
+| --------- | ---- | -------- | ----------- |
+| `accessToken` | string | Yes | Notion OAuth access token |
+| `databaseId` | string | Yes | The ID of the database to query |
+| `filter` | string | No | Filter conditions as JSON \(optional\) |
+| `sorts` | string | No | Sort criteria as JSON array \(optional\) |
+| `pageSize` | number | No | Number of results to return \(default: 100, max: 100\) |
+
+#### Output
+
+| Parameter | Type |
+| --------- | ---- |
+| `content` | string |
+| `metadata` | string |
+| `hasMore` | string |
+| `nextCursor` | string |
+| `results` | string |
+
+### `notion_search`
+
+Search across all pages and databases in Notion workspace
+
+#### Input
+
+| Parameter | Type | Required | Description |
+| --------- | ---- | -------- | ----------- |
+| `accessToken` | string | Yes | Notion OAuth access token |
+| `query` | string | No | Search terms \(leave empty to get all pages\) |
+| `filterType` | string | No | Filter by object type: page, database, or leave empty for all |
+| `pageSize` | number | No | Number of results to return \(default: 100, max: 100\) |
+
+#### Output
+
+| Parameter | Type |
+| --------- | ---- |
+| `content` | string |
+| `metadata` | string |
+| `hasMore` | string |
+| `nextCursor` | string |
+| `results` | string |
+
+### `notion_create_database`
+
+Create a new database in Notion with custom properties
+
+#### Input
+
+| Parameter | Type | Required | Description |
+| --------- | ---- | -------- | ----------- |
+| `accessToken` | string | Yes | Notion OAuth access token |
+| `parentId` | string | Yes | ID of the parent page where the database will be created |
+| `title` | string | Yes | Title for the new database |
+| `properties` | string | No | Database properties as JSON object \(optional, will create a default |
+
+#### Output
+
+| Parameter | Type |
+| --------- | ---- |
+| `metadata` | string |
+| `url` | string |
+| `createdTime` | string |
+| `properties` | string |
+| `content` | string |
+| `title` | string |
+
## Block Configuration
diff --git a/apps/docs/content/docs/tools/qdrant.mdx b/apps/docs/content/docs/tools/qdrant.mdx
index fe72618780..dcadcb3398 100644
--- a/apps/docs/content/docs/tools/qdrant.mdx
+++ b/apps/docs/content/docs/tools/qdrant.mdx
@@ -10,7 +10,7 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
color="#1A223F"
icon={true}
iconSvg={``}
+/>
+
+## Usage Instructions
+
+Configure automated workflow execution with flexible timing options. Set up recurring workflows that run at specific intervals or times.
+
+
+
+
+
+## Block Configuration
+
+### Input
+
+| Parameter | Type | Required | Description |
+| --------- | ---- | -------- | ----------- |
+| `scheduleConfig` | schedule-config | Yes | Schedule Status |
+| `scheduleType` | dropdown | Yes | Frequency |
+
+
+
+### Outputs
+
+This block does not produce any outputs.
+
+## Notes
+
+- Category: `triggers`
+- Type: `schedule`
diff --git a/apps/docs/content/docs/tools/slack.mdx b/apps/docs/content/docs/tools/slack.mdx
index 77f35f65a8..5875a9158c 100644
--- a/apps/docs/content/docs/tools/slack.mdx
+++ b/apps/docs/content/docs/tools/slack.mdx
@@ -83,6 +83,52 @@ Send messages to Slack channels or users through the Slack API. Supports Slack m
| `ts` | string |
| `channel` | string |
+### `slack_canvas`
+
+Create and share Slack canvases in channels. Canvases are collaborative documents within Slack.
+
+#### Input
+
+| Parameter | Type | Required | Description |
+| --------- | ---- | -------- | ----------- |
+| `authMethod` | string | No | Authentication method: oauth or bot_token |
+| `botToken` | string | No | Bot token for Custom Bot |
+| `accessToken` | string | No | OAuth access token or bot token for Slack API |
+| `channel` | string | Yes | Target Slack channel \(e.g., #general\) |
+| `title` | string | Yes | Title of the canvas |
+| `content` | string | Yes | Canvas content in markdown format |
+| `document_content` | object | No | Structured canvas document content |
+
+#### Output
+
+| Parameter | Type |
+| --------- | ---- |
+| `canvas_id` | string |
+| `channel` | string |
+| `title` | string |
+
+### `slack_message_reader`
+
+Read the latest messages from Slack channels. Retrieve conversation history with filtering options.
+
+#### Input
+
+| Parameter | Type | Required | Description |
+| --------- | ---- | -------- | ----------- |
+| `authMethod` | string | No | Authentication method: oauth or bot_token |
+| `botToken` | string | No | Bot token for Custom Bot |
+| `accessToken` | string | No | OAuth access token or bot token for Slack API |
+| `channel` | string | Yes | Slack channel to read messages from \(e.g., #general\) |
+| `limit` | number | No | Number of messages to retrieve \(default: 10, max: 100\) |
+| `oldest` | string | No | Start of time range \(timestamp\) |
+| `latest` | string | No | End of time range \(timestamp\) |
+
+#### Output
+
+| Parameter | Type |
+| --------- | ---- |
+| `messages` | string |
+
## Block Configuration
@@ -101,6 +147,9 @@ Send messages to Slack channels or users through the Slack API. Supports Slack m
| ------ | ---- | ----------- |
| `ts` | string | ts output from the block |
| `channel` | string | channel output from the block |
+| `canvas_id` | string | canvas_id output from the block |
+| `title` | string | title output from the block |
+| `messages` | json | messages output from the block |
## Notes
diff --git a/apps/docs/content/docs/tools/supabase.mdx b/apps/docs/content/docs/tools/supabase.mdx
index 97cc3c189a..3c11ae87be 100644
--- a/apps/docs/content/docs/tools/supabase.mdx
+++ b/apps/docs/content/docs/tools/supabase.mdx
@@ -85,8 +85,10 @@ Query data from a Supabase table
| --------- | ---- | -------- | ----------- |
| `projectId` | string | Yes | Your Supabase project ID \(e.g., jdrkgepadsdopsntdlom\) |
| `table` | string | Yes | The name of the Supabase table to query |
-| `filter` | object | No | Filter to apply to the query |
-| `apiKey` | string | Yes | Your Supabase client anon key |
+| `filter` | string | No | PostgREST filter \(e.g., |
+| `orderBy` | string | No | Column to order by \(add DESC for descending\) |
+| `limit` | number | No | Maximum number of rows to return |
+| `apiKey` | string | Yes | Your Supabase service role secret key |
#### Output
@@ -106,7 +108,7 @@ Insert data into a Supabase table
| `projectId` | string | Yes | Your Supabase project ID \(e.g., jdrkgepadsdopsntdlom\) |
| `table` | string | Yes | The name of the Supabase table to insert data into |
| `data` | any | Yes | The data to insert |
-| `apiKey` | string | Yes | Your Supabase client anon key |
+| `apiKey` | string | Yes | Your Supabase service role secret key |
#### Output
@@ -115,6 +117,65 @@ Insert data into a Supabase table
| `message` | string |
| `results` | string |
+### `supabase_get_row`
+
+Get a single row from a Supabase table based on filter criteria
+
+#### Input
+
+| Parameter | Type | Required | Description |
+| --------- | ---- | -------- | ----------- |
+| `projectId` | string | Yes | Your Supabase project ID \(e.g., jdrkgepadsdopsntdlom\) |
+| `table` | string | Yes | The name of the Supabase table to query |
+| `filter` | string | Yes | PostgREST filter to find the specific row \(e.g., |
+| `apiKey` | string | Yes | Your Supabase service role secret key |
+
+#### Output
+
+| Parameter | Type |
+| --------- | ---- |
+| `message` | string |
+| `results` | string |
+
+### `supabase_update`
+
+Update rows in a Supabase table based on filter criteria
+
+#### Input
+
+| Parameter | Type | Required | Description |
+| --------- | ---- | -------- | ----------- |
+| `projectId` | string | Yes | Your Supabase project ID \(e.g., jdrkgepadsdopsntdlom\) |
+| `table` | string | Yes | The name of the Supabase table to update |
+| `filter` | string | Yes | PostgREST filter to identify rows to update \(e.g., |
+| `data` | object | Yes | Data to update in the matching rows |
+| `apiKey` | string | Yes | Your Supabase service role secret key |
+
+#### Output
+
+| Parameter | Type |
+| --------- | ---- |
+| `message` | string |
+
+### `supabase_delete`
+
+Delete rows from a Supabase table based on filter criteria
+
+#### Input
+
+| Parameter | Type | Required | Description |
+| --------- | ---- | -------- | ----------- |
+| `projectId` | string | Yes | Your Supabase project ID \(e.g., jdrkgepadsdopsntdlom\) |
+| `table` | string | Yes | The name of the Supabase table to delete from |
+| `filter` | string | Yes | PostgREST filter to identify rows to delete \(e.g., |
+| `apiKey` | string | Yes | Your Supabase service role secret key |
+
+#### Output
+
+| Parameter | Type |
+| --------- | ---- |
+| `message` | string |
+
## Block Configuration
diff --git a/apps/docs/content/docs/tools/typeform.mdx b/apps/docs/content/docs/tools/typeform.mdx
index 9bed721a42..a44d106b4f 100644
--- a/apps/docs/content/docs/tools/typeform.mdx
+++ b/apps/docs/content/docs/tools/typeform.mdx
@@ -11,15 +11,22 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
icon={true}
iconSvg={``}
/>
diff --git a/apps/docs/content/docs/tools/webhook.mdx b/apps/docs/content/docs/tools/webhook.mdx
new file mode 100644
index 0000000000..25fad519fc
--- /dev/null
+++ b/apps/docs/content/docs/tools/webhook.mdx
@@ -0,0 +1,46 @@
+---
+title: Webhook
+description: Trigger workflow execution from external webhooks
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+
+ `}
+/>
+
+
+
+
+
+## Block Configuration
+
+### Input
+
+| Parameter | Type | Required | Description |
+| --------- | ---- | -------- | ----------- |
+| `webhookProvider` | dropdown | Yes | Webhook Provider |
+
+
+
+### Outputs
+
+This block does not produce any outputs.
+
+## Notes
+
+- Category: `triggers`
+- Type: `webhook`
diff --git a/apps/docs/content/docs/triggers/meta.json b/apps/docs/content/docs/triggers/meta.json
new file mode 100644
index 0000000000..a9166ac41d
--- /dev/null
+++ b/apps/docs/content/docs/triggers/meta.json
@@ -0,0 +1,4 @@
+{
+ "title": "Triggers",
+ "pages": ["starter", "schedule", "webhook"]
+}
diff --git a/apps/docs/content/docs/triggers/schedule.mdx b/apps/docs/content/docs/triggers/schedule.mdx
new file mode 100644
index 0000000000..02c17caeb2
--- /dev/null
+++ b/apps/docs/content/docs/triggers/schedule.mdx
@@ -0,0 +1,69 @@
+---
+title: Schedule
+description: Automatically trigger workflows on a recurring schedule
+---
+
+import { Callout } from 'fumadocs-ui/components/callout'
+import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
+import { ThemeImage } from '@/components/ui/theme-image'
+
+The Schedule block automatically triggers workflow execution at specified intervals or times.
+
+
+
+## Schedule Options
+
+Configure when your workflow runs using the dropdown options:
+
+
+
+
+
Every few minutes: 5, 15, 30 minute intervals
+
Hourly: Every hour or every few hours
+
Daily: Once or multiple times per day
+
Weekly: Specific days of the week
+
Monthly: Specific days of the month
+
+
+
+
Use cron expressions for advanced scheduling:
+
+
0 9 * * 1-5 - Every weekday at 9 AM
+
*/15 * * * * - Every 15 minutes
+
0 0 1 * * - First day of each month
+
+
+
+
+## Configuring Schedules
+
+
+
+
+
+When a workflow is scheduled:
+- The schedule becomes **active** and shows the next execution time
+- Click the **"Scheduled"** button to deactivate the schedule
+- Schedules automatically deactivate after **3 consecutive failures**
+
+## Disabled Schedules
+
+
+
+Disabled schedules show when they were last active and can be re-enabled at any time.
+
+
+Schedule blocks cannot receive incoming connections and serve as pure workflow triggers.
+
\ No newline at end of file
diff --git a/apps/docs/content/docs/triggers/starter.mdx b/apps/docs/content/docs/triggers/starter.mdx
new file mode 100644
index 0000000000..345a1e3a8f
--- /dev/null
+++ b/apps/docs/content/docs/triggers/starter.mdx
@@ -0,0 +1,92 @@
+---
+title: Starter
+description: Manually initiate workflow execution with input parameters
+---
+
+import { Callout } from 'fumadocs-ui/components/callout'
+import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
+import { ThemeImage } from '@/components/ui/theme-image'
+
+The Starter block allows manual workflow execution with two input modes: structured parameters or conversational chat.
+
+
+
+## Execution Modes
+
+Choose your input method from the dropdown:
+
+
+
+
Form interface: Users fill out a form with predefined fields
+
API friendly: Perfect for programmatic execution
+
+
+
+
+
+
+
Configure input parameters that will be available when deploying as an API endpoint.
+
+
+
+
+
+
Natural language: Users type questions or requests
+
start.input variable: Captures all user input as ``
+
start.conversationId: Access conversation ID as ``
+
Conversational: Ideal for AI-powered workflows
+
+
+
+
+
+
+
Chat with your workflow and access both input text and conversation ID for context-aware responses.
+
+
+
+
+## Using Chat Variables
+
+In Chat mode, access user input and conversation context through special variables:
+
+```yaml
+# Reference the chat input and conversation ID in your workflow
+user_message: ""
+conversation_id: ""
+```
+
+- **``** - Contains the user's message text
+- **``** - Unique identifier for the conversation thread
+
+## API Execution
+
+
+
+ ```bash
+ curl -X POST "https://api.sim.dev/v1/workflows/{id}/start" \
+ -H "Authorization: Bearer {api-key}" \
+ -d '{"parameters": {"userId": "123", "action": "process"}}'
+ ```
+
+
+ ```bash
+ curl -X POST "https://api.sim.dev/v1/workflows/{id}/start" \
+ -H "Authorization: Bearer {api-key}" \
+ -d '{"input": "Analyze Q4 sales data"}'
+ ```
+
+
+
+
+Starter blocks are ideal for testing workflows and user-initiated tasks. For automated execution, use Schedule or Webhook triggers.
+
\ No newline at end of file
diff --git a/apps/docs/content/docs/triggers/webhook.mdx b/apps/docs/content/docs/triggers/webhook.mdx
new file mode 100644
index 0000000000..005345d1ba
--- /dev/null
+++ b/apps/docs/content/docs/triggers/webhook.mdx
@@ -0,0 +1,53 @@
+---
+title: Webhooks
+description: Trigger workflow execution from external webhooks
+---
+
+import { Callout } from 'fumadocs-ui/components/callout'
+import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
+import { ThemeImage } from '@/components/ui/theme-image'
+
+The Webhook block allows external services to automatically trigger your workflow execution through HTTP webhooks.
+
+
+
+
+
+## Supported Providers
+
+Choose from the dropdown to configure your webhook source:
+
+
+
+
+
**Slack** - Bot events and messages
+
**Gmail** - Email notifications
+
**GitHub** - Repository events
+
**Discord** - Server events
+
**Airtable** - Database changes
+
**Telegram** - Bot messages
+
**WhatsApp** - Messaging events
+
**Stripe** - Payment events
+
+
+
+
For custom integrations:
+
+
HTTP POST: Accepts requests from any client
+
Authentication: Bearer token or custom headers
+
Security: IP restrictions and rate limiting
+
Deduplication: Prevents duplicate requests
+
+
+
+
+## How It Works
+
+1. **Configure Provider** - Select from dropdown and set up authentication
+2. **Get Webhook URL** - Automatically generated unique endpoint
+3. **External Service** - Sends HTTP POST to your webhook URL
+4. **Workflow Triggers** - Automatically starts when webhook is received
+
+
+Webhooks cannot receive incoming connections and serve as pure workflow triggers.
+
\ No newline at end of file
diff --git a/apps/docs/content/docs/variables/index.mdx b/apps/docs/content/docs/variables/index.mdx
index 51289c3bc3..41f0007b16 100644
--- a/apps/docs/content/docs/variables/index.mdx
+++ b/apps/docs/content/docs/variables/index.mdx
@@ -10,13 +10,9 @@ import { ThemeImage } from '@/components/ui/theme-image'
Variables in Sim Studio act as a global store for data that can be accessed and modified by any block in your workflow. They provide a powerful way to share information between different parts of your workflow, maintain state, and create more dynamic applications.
-
+
+
+
Variables allow you to store and share data across your entire workflow, making it easy to
@@ -60,13 +56,9 @@ Variables can be accessed from any block in your workflow using the variable dro
2. Browse the dropdown menu to select from available variables
3. Select the variable you want to use
-
+
+
+
You can also drag the connection tag into a field to open the variable dropdown and access
diff --git a/apps/docs/public/api-deployment.mp4 b/apps/docs/public/api-deployment.mp4
new file mode 100644
index 0000000000..a04ec8028e
Binary files /dev/null and b/apps/docs/public/api-deployment.mp4 differ
diff --git a/apps/docs/public/api-redeployment.mp4 b/apps/docs/public/api-redeployment.mp4
new file mode 100644
index 0000000000..161e1f5990
Binary files /dev/null and b/apps/docs/public/api-redeployment.mp4 differ
diff --git a/apps/docs/public/chat-input.mp4 b/apps/docs/public/chat-input.mp4
new file mode 100644
index 0000000000..a89965ea01
Binary files /dev/null and b/apps/docs/public/chat-input.mp4 differ
diff --git a/apps/docs/public/configure-schedule.mp4 b/apps/docs/public/configure-schedule.mp4
new file mode 100644
index 0000000000..f9b8f4fcae
Binary files /dev/null and b/apps/docs/public/configure-schedule.mp4 differ
diff --git a/apps/docs/public/input-format.mp4 b/apps/docs/public/input-format.mp4
new file mode 100644
index 0000000000..de9e879adf
Binary files /dev/null and b/apps/docs/public/input-format.mp4 differ
diff --git a/apps/docs/public/static/dark/response-dark.png b/apps/docs/public/static/dark/response-dark.png
index 44369b879e..84bdbb3eff 100644
Binary files a/apps/docs/public/static/dark/response-dark.png and b/apps/docs/public/static/dark/response-dark.png differ
diff --git a/apps/docs/public/static/dark/schedule-dark.png b/apps/docs/public/static/dark/schedule-dark.png
new file mode 100644
index 0000000000..ee9dd1b082
Binary files /dev/null and b/apps/docs/public/static/dark/schedule-dark.png differ
diff --git a/apps/docs/public/static/dark/schedule-disabled-dark.png b/apps/docs/public/static/dark/schedule-disabled-dark.png
new file mode 100644
index 0000000000..a1524e5f66
Binary files /dev/null and b/apps/docs/public/static/dark/schedule-disabled-dark.png differ
diff --git a/apps/docs/public/static/dark/scheduled-dark.png b/apps/docs/public/static/dark/scheduled-dark.png
new file mode 100644
index 0000000000..d29626864f
Binary files /dev/null and b/apps/docs/public/static/dark/scheduled-dark.png differ
diff --git a/apps/docs/public/static/dark/starter-dark.png b/apps/docs/public/static/dark/starter-dark.png
new file mode 100644
index 0000000000..b12e2b08d9
Binary files /dev/null and b/apps/docs/public/static/dark/starter-dark.png differ
diff --git a/apps/docs/public/static/dark/webhook-dark.png b/apps/docs/public/static/dark/webhook-dark.png
new file mode 100644
index 0000000000..27501f7c9f
Binary files /dev/null and b/apps/docs/public/static/dark/webhook-dark.png differ
diff --git a/apps/docs/public/static/dark/webhooktrigger-dark.png b/apps/docs/public/static/dark/webhooktrigger-dark.png
deleted file mode 100644
index a8cceb5f3c..0000000000
Binary files a/apps/docs/public/static/dark/webhooktrigger-dark.png and /dev/null differ
diff --git a/apps/docs/public/static/light/response-light.png b/apps/docs/public/static/light/response-light.png
index 4c40825ab7..f3cae47179 100644
Binary files a/apps/docs/public/static/light/response-light.png and b/apps/docs/public/static/light/response-light.png differ
diff --git a/apps/docs/public/static/light/schedule-disabled-light.png b/apps/docs/public/static/light/schedule-disabled-light.png
new file mode 100644
index 0000000000..28a441accc
Binary files /dev/null and b/apps/docs/public/static/light/schedule-disabled-light.png differ
diff --git a/apps/docs/public/static/light/schedule-light.png b/apps/docs/public/static/light/schedule-light.png
new file mode 100644
index 0000000000..47dc7a4214
Binary files /dev/null and b/apps/docs/public/static/light/schedule-light.png differ
diff --git a/apps/docs/public/static/light/scheduled-light.png b/apps/docs/public/static/light/scheduled-light.png
new file mode 100644
index 0000000000..4b48a50a41
Binary files /dev/null and b/apps/docs/public/static/light/scheduled-light.png differ
diff --git a/apps/docs/public/static/light/starter-light.png b/apps/docs/public/static/light/starter-light.png
new file mode 100644
index 0000000000..5fa03752b3
Binary files /dev/null and b/apps/docs/public/static/light/starter-light.png differ
diff --git a/apps/docs/public/static/light/webhook-light.png b/apps/docs/public/static/light/webhook-light.png
new file mode 100644
index 0000000000..c1de543ee0
Binary files /dev/null and b/apps/docs/public/static/light/webhook-light.png differ
diff --git a/apps/docs/public/static/light/webhooktrigger-light.png b/apps/docs/public/static/light/webhooktrigger-light.png
deleted file mode 100644
index edd269a5ec..0000000000
Binary files a/apps/docs/public/static/light/webhooktrigger-light.png and /dev/null differ
diff --git a/apps/docs/public/variables-dropdown.mp4 b/apps/docs/public/variables-dropdown.mp4
new file mode 100644
index 0000000000..7c2f104834
Binary files /dev/null and b/apps/docs/public/variables-dropdown.mp4 differ
diff --git a/apps/docs/public/variables.mp4 b/apps/docs/public/variables.mp4
new file mode 100644
index 0000000000..437be1d551
Binary files /dev/null and b/apps/docs/public/variables.mp4 differ
diff --git a/apps/docs/public/webhooks.mp4 b/apps/docs/public/webhooks.mp4
new file mode 100644
index 0000000000..bba15d188f
Binary files /dev/null and b/apps/docs/public/webhooks.mp4 differ
diff --git a/apps/sim/components/icons.tsx b/apps/sim/components/icons.tsx
index 7a9a397ff9..987741b9c7 100644
--- a/apps/sim/components/icons.tsx
+++ b/apps/sim/components/icons.tsx
@@ -1853,15 +1853,22 @@ export function TypeformIcon(props: SVGProps) {
return (
)