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
| Field | Required | Description |
|---|---|---|
| Webhook URL | Yes | Endpoint to call (supports {{template}} syntax) |
| HTTP Method | Yes | GET, POST, PUT, PATCH, DELETE |
| Authentication | No | None, Header Auth, Bearer Token, Basic Auth |
| Request Headers | No | Custom headers as key-value pairs |
| Request Body | No | Raw JSON or Key-Value (for POST, PUT, PATCH) |
| Response Mode | Yes | Fire and Forget or Wait for Response |
| Response Builder Mode | Yes | No Response Needed, Define Custom Schema, Load from JSON Object |
| Response Name | Conditional | Name to reference this response in subsequent steps |
| Response Required | No | Whether 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
| Method | Use for |
|---|---|
| GET | Retrieve data |
| POST | Create resources or trigger actions |
| PUT | Replace a resource |
| PATCH | Partial update |
| DELETE | Remove a resource |
Authentication
None
No authentication headers added.
Header Auth
Add a custom authentication header.
| Field | Description |
|---|---|
| Header Name | The header key (for example, x-api-key) |
| Header Value | The header value (supports {{variable}} syntax) |
Bearer Token
Adds an Authorization: Bearer <token> header automatically.
| Field | Description |
|---|---|
| Bearer Token | Token value (supports {{variable}} syntax) |
Basic Auth
Adds an Authorization: Basic base64(username:password) header.
| Field | Description |
|---|---|
| Username | Username (supports {{variable}} syntax) |
| Password | Password (supports {{variable}} syntax) |
Request headers
Add custom headers for your request. Click + Add to add header rows.
| Field | Description |
|---|---|
| Key | Header name (for example, Content-Type) |
| Value | Header 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.
| Field | Description |
|---|---|
| Key | Field name |
| Value | Field 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.
| Field | Description |
|---|---|
| Field Key | Name to reference this field |
| Type | String, Number, Boolean, Object, Array |
| API Field | Path to the field in the response (for example, response.data.id) |
| Required | Whether 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
| Field | Description |
|---|---|
| Response Name | Alias to reference this response in subsequent steps (for example, webhookResponse) |
| Response Required | When enabled, the automation fails if the webhook fails |
Testing
- Fill in all required fields.
- Click Test Webhook.
- Review the response data.
- 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