Skip to main content

Webhook

Send HTTP requests to external APIs and services. Use the Webhook action to trigger workflows, sync data, or integrate with third-party platforms. Open any automation in Automation from the top navigation and click Add Condition, Record or Action to add a webhook.

Configuration

FieldRequiredDescription
Webhook URLYesEndpoint to call (supports {{template}} syntax)
HTTP MethodYesGET, POST, PUT, PATCH, DELETE
AuthenticationNoNone, Header Auth, Bearer Token, Basic Auth
Request HeadersNoCustom headers as key-value pairs
Request BodyNoRaw JSON or Key-Value (for POST, PUT, PATCH)
Response ModeYesFire and Forget or Wait for Response
Response Builder ModeYesNo Response Needed, Define Custom Schema, Load from JSON Object
Response NameConditionalName to reference this response in subsequent steps
Response RequiredNoWhether the automation should fail if webhook fails

Webhook URL

Enter the endpoint URL. Click the + icon to insert variables from:

  • Variables — Defined automation variables
  • Collections — Fields from available collections
  • Webhook Responses — Data from previous webhook responses
https://api.example.com/webhook/{{trigger.id}}

HTTP methods

MethodUse for
GETRetrieve data
POSTCreate resources or trigger actions
PUTReplace a resource
PATCHPartial update
DELETERemove a resource

Authentication

None

No authentication headers added.

Header Auth

Add a custom authentication header.

FieldDescription
Header NameThe header key (for example, x-api-key)
Header ValueThe header value (supports {{variable}} syntax)

Bearer Token

Adds an Authorization: Bearer <token> header automatically.

FieldDescription
Bearer TokenToken value (supports {{variable}} syntax)

Basic Auth

Adds an Authorization: Basic base64(username:password) header.

FieldDescription
UsernameUsername (supports {{variable}} syntax)
PasswordPassword (supports {{variable}} syntax)

Request headers

Add custom headers for your request. Click + Add to add header rows.

FieldDescription
KeyHeader name (for example, Content-Type)
ValueHeader value (supports {{template}} syntax)

Request body

Available for POST, PUT, and PATCH methods. Choose between two formats:

Raw JSON

Enter JSON directly with variable interpolation:

{
"userId": "{{trigger.userId}}",
"amount": 1000
}

Key-Value

Add key-value pairs using the form panel. Click + Add to add rows.

FieldDescription
KeyField name
ValueField value (supports {{template}} syntax)

Response mode

Choose how the webhook handles responses.

Fire and Forget

The webhook triggers without waiting for or processing the response. Use this for:

  • Sending notifications
  • Logging events
  • Actions where you don't need the response data

Wait for Response

The automation waits for the API response before continuing. Use this when you need to:

  • Use response data in subsequent actions
  • Validate the external service responded successfully
  • Chain API calls together

Response builder mode

This setting controls how the response is processed and made available.

No Response Needed

The webhook executes without capturing or processing any response data. Best for fire-and-forget scenarios.

Define Custom Schema

Manually define the response structure with field mapping.

FieldDescription
Field KeyName to reference this field
TypeString, Number, Boolean, Object, Array
API FieldPath to the field in the response (for example, response.data.id)
RequiredWhether this field must exist in the response

Click + Add Field to define additional fields.

Load from JSON Object

Use a pre-defined JSON object structure as your response schema. Select from available JSON objects in your project.

Response settings

FieldDescription
Response NameAlias to reference this response in subsequent steps (for example, webhookResponse)
Response RequiredWhen enabled, the automation fails if the webhook fails

Testing

  1. Fill in all required fields.
  2. Click Test Webhook.
  3. Review the response data.
  4. Use test results to build your response schema.

Examples

Sync with external CRM

Trigger: When customer created (alias: customer)
Action: Webhook
URL: https://crm.example.com/api/contacts
Method: POST
Authentication: Bearer Token
Request Body (Raw JSON):
{
"name": "{{customer.name}}",
"email": "{{customer.email}}",
"source": "hyper"
}
Response Mode: Wait for Response
Response Builder Mode: Define Custom Schema
Response Name: crmResponse

Fire and forget notification

Trigger: When order completed (alias: order)
Action: Webhook
URL: https://slack.example.com/webhooks/orders
Method: POST
Authentication: Header Auth
Header Name: x-api-key
Header Value: {{secrets.slackKey}}
Request Body (Key-Value):
orderId: {{order.id}}
total: {{order.total}}
Response Mode: Fire and Forget
Response Builder Mode: No Response Needed

Using response data

Trigger: When user signs up (alias: user)
Action: Webhook
URL: https://api.geocoding.com/lookup?address={{user.address}}
Method: GET
Authentication: Bearer Token
Response Mode: Wait for Response
Response Builder Mode: Define Custom Schema
Field: latitude (Number) → response.data.lat
Field: longitude (Number) → response.data.lng
Response Name: geoData

Next Action: Mutation (Update Record)
Set user.latitude = {{geoData.latitude}}
Set user.longitude = {{geoData.longitude}}

Use cases

  • CRM sync — Push contacts to Salesforce, HubSpot
  • Notifications — Send to Slack, Discord, Teams
  • Data enrichment — Fetch additional data from APIs

Best practices

  • Use HTTPS — Secure your webhook calls
  • Store secrets in variables — Don't hardcode API keys
  • Test with Logger first — Verify payload before calling external APIs
  • Choose response mode wisely — Fire and Forget for notifications, Wait for Response when you need data
  • Handle failures — Enable Response Required for critical integrations
  • Logger — Debug and inspect payloads
  • Mutations — Update records with webhook response data
  • Variables — Store API keys and dynamic values