Webhook Triggers

Execute workflows automatically when external systems send HTTP requests to a unique webhook URL. Perfect for integrating with third-party services, processing real-time events, and building event-driven automation.

Overview

Webhook triggers create a secure HTTP endpoint that external systems can call to start your workflow. When the webhook receives a request, it automatically creates a new workflow run with the request data as input.

Key Features:

  • Unique, secure webhook URL for each trigger

  • Multiple authentication methods (None, Basic, Bearer)

  • Configurable HTTP methods (GET, POST, PUT, DELETE)

  • Custom response codes

  • Immediate response with workflow run tracking

  • Full event history and logging

How Webhook Triggers Work

Execution Flow

External System β†’ HTTP Request β†’ Webhook URL β†’ Trigger Validation β†’
β†’ Workflow Run Created β†’ Immediate Response β†’ Workflow Executes
  1. External system sends HTTP request to webhook URL

  2. Platform validates authentication and HTTP method

  3. Trigger creates new workflow run with request data

  4. Immediate response returned with run ID and status

  5. Workflow executes asynchronously in background

  6. Event logged with full request/response details

Response Behavior

Webhooks use immediate response mode:

  • HTTP response returned within milliseconds

  • Response includes workflow run ID

  • Workflow continues executing asynchronously

  • External system doesn't wait for workflow completion

Example webhook response:

Understanding Webhook Input Data

CRITICAL CONCEPT: The webhook request body is passed directly as your workflow's input. Understanding how to configure your input schema and access webhook data is essential for successful integration.

How Webhook Data Becomes Workflow Input

When a webhook receives a request, the entire request body is automatically passed as the workflow's input data.

The flow:

  1. External system sends JSON data to webhook URL

  2. Platform receives the request body

  3. Request body becomes workflow input

  4. Fields defined in your input schema are accessible using {{field_name}}

Configuring Workflow Input Schema for Webhooks

Your workflow's input schema defines what data the workflow expects. For webhook triggers, you must define each field you want to access in your workflow.

Supported field types:

  • string - Text data

  • number - Numeric values

  • boolean - True/false values

  • array - Lists of items

  • object - Nested objects (accepts any structure)

Important: Object Type Limitation

You must define each top-level field, but object fields accept any internal structure:

  • βœ… You must list each field in properties

  • βœ… You can specify a field is type object

  • ❌ You cannot define the internal structure/properties of an object field

  • βœ… All nested data within object fields is accessible via dot notation

Input Schema Examples

Example 1: Simple Fields

Webhook payload:

Workflow input schema (you must define all fields):

Access in workflow:

Example 2: Object Fields (No Internal Schema Needed)

Webhook payload:

Workflow input schema:

Key point:

  • We must define customer as a field in properties

  • We specify customer is type object

  • We don't need to define its internal properties (id, name, email, address)

  • The system automatically accepts any structure inside the customer object

Access nested data with dot notation:

Even though we didn't define id, name, email, or address in the schema, we can still access them because customer is type object!

Example 3: Array Fields

Webhook payload:

Workflow input schema:

Access in workflow:

Strategy: Define Top-Level Fields You Need

Best Practice: Define each top-level field from the webhook payload that your workflow will access. Use type object for complex nested structures.

Example - Stripe webhook:

Webhook sends this payload:

Your workflow input schema (define what you'll use):

Even though we only defined id, type, and data (as object), you can still access all nested data:

The data field is defined as type object, so all its nested content is automatically accessible!

Accessing Webhook Data in Workflow Nodes

Once your input schema is configured, reference webhook data using parameter substitution syntax: {{field_name}}

Simple Fields

Nested Fields (Dot Notation)

Array Elements

Use in Node Configurations

Email node example:

API call node example:

Processing Complex Data with JavaScript

For complex transformations or accessing deeply nested data, use JavaScript nodes:

JavaScript node example:

Real-World Integration Examples

Example 1: Stripe Payment Webhook

Stripe payload structure:

Your workflow input schema:

Workflow logic:

  1. Node 1 - Validate event type:

  2. Node 2 - Send confirmation email:

  3. Node 3 - Update database with order status:

Example 2: GitHub Pull Request Webhook

GitHub payload:

Your workflow input schema:

Access data in workflow:

Example workflow:

  1. Node 1 - Post PR comment:

  2. Node 2 - Notify team on Slack:

Example 3: Form Submission

Form payload:

Your workflow input schema:

Use in workflow:

Example workflow:

  1. Node 1 - Send auto-reply:

  2. Node 2 - Create CRM lead:

  3. Node 3 - Notify sales team:

Common Mistakes and Solutions

Mistake 1: Trying to Define Object Properties

Problem (❌ This doesn't work):

Solution (βœ… Correct):

You can still access {{customer.name}} and {{customer.email}} - you just don't define them in the schema!

Mistake 2: Not Defining a Field at All

Problem:

Solution (βœ… Define all top-level fields):

Mistake 3: Field Name Mismatch

Problem:

Solution: Match field names exactly:

Mistake 4: Case Sensitivity

Problem:

Solution: Field names are case-sensitive:

Use in workflow:

Mistake 5: Wrong Data Type

Problem:

Solution: Match the actual type the webhook sends:

Then convert in workflow if needed:

Testing Your Webhook Integration

Step 1: Identify Webhook Payload Structure

Before creating your input schema, understand what data the webhook will send:

  1. Check third-party documentation (Stripe, GitHub, etc.)

  2. Capture a test webhook using tools like:

    • webhook.site

    • RequestBin

    • ngrok

  3. Note all top-level field names

  4. Identify which fields are objects, arrays, or primitives

Step 2: Create Input Schema

Based on the payload structure, create your input schema:

Step 3: Send Test Request

Step 4: Check Trigger Event Log

  1. Workflow β†’ Triggers β†’ Your webhook β†’ Events tab

  2. Find your test request

  3. Inspect request_body

  4. Verify all fields are present

Step 5: Verify Workflow Execution

  1. Click workflow_run_id from event

  2. Check workflow run "Input Data"

  3. Confirm fields are accessible

  4. Review node execution logs

Step 6: Add Debug Node

Add a JavaScript node to test field access:

Creating a Webhook Trigger

Step 1: Navigate to Triggers

  1. Open your workflow

  2. Click "Triggers" tab

  3. Click "Create Trigger"

  4. Select "Webhook" type

Step 2: Configure Basic Settings

Name (required):

Description (optional):

Step 3: Configure HTTP Settings

HTTP Method:

  • POST (recommended) - Data in request body

  • GET - Data in query parameters

  • PUT - Update operations

  • DELETE - Delete operations

Response Code:

  • 200 - Standard success (default)

  • 201 - Resource created

  • 202 - Accepted for processing

  • 204 - Success, no content

Response Mode:

  • Immediate - Returns response immediately with workflow run ID

Step 4: Configure Authentication

Bearer Token (Recommended for production):

Callers must include:

Basic Authentication:

Callers must include:

No Authentication (Testing only):

⚠️ Not recommended for production.

Step 5: Save and Get Webhook URL

  1. Click "Create Trigger"

  2. Copy generated webhook URL:

  3. Configure URL in external system

  4. Webhook is immediately active

Using Your Webhook

Making Requests

Basic POST request:

Response:

Security Best Practices

  1. Always use authentication in production (Bearer token recommended)

  2. Use strong, random tokens (32+ characters minimum)

  3. Rotate credentials regularly (every 90 days)

  4. Monitor webhook events for suspicious activity

  5. Validate input data in workflow nodes

  6. Use HTTPS (enforced automatically)

  7. Never commit tokens to version control

Managing Webhooks

Enable/Disable:

  • Active: Accepts requests, creates workflow runs

  • Inactive: Returns 404, doesn't execute

Update:

  • Change name, description

  • Update authentication credentials

  • Modify HTTP method or response code

  • Toggle active status

Delete:

  • Permanent action - cannot be undone

  • Webhook URL becomes invalid immediately

  • External systems will receive 404 errors

Webhook Events

Every webhook request is logged with complete details:

Event information:

  • Timestamp of request

  • HTTP method, URL, headers

  • Full request body

  • Response status code and body

  • Execution status (success/failed)

  • Workflow run ID (if created)

  • Error messages (if any)

View events: Workflow β†’ Triggers β†’ Select webhook β†’ Events tab

Use event logs for:

  • Debugging integration issues

  • Monitoring webhook activity

  • Auditing workflow executions

  • Investigating failed requests

Troubleshooting

Field Returns Undefined

Check:

  1. Is the field defined in input schema properties?

  2. Does the field name match exactly (case-sensitive)?

  3. Is the webhook actually sending that field?

  4. Check trigger event logs to see actual payload received

Nested Data Not Accessible

Problem: Can't access {{customer.email}}

Check:

  1. Is customer defined as type object in schema?

  2. Are you using correct dot notation?

  3. Did webhook actually send nested data?

Type Mismatch Errors

Solution: Ensure schema type matches what webhook sends:

  • If webhook sends "123" (string), use type: "string"

  • If webhook sends 123 (number), use type: "number"

  • Convert types in JavaScript node if needed

API Reference

Create Webhook Trigger

Request:

Response:



Ready to integrate external systems? Create your first webhook trigger and configure your workflow inputs to match your webhook payload structure.

Last updated

Was this helpful?