Webhook Trigger
Receive data from external systems via HTTP requests
Webhook triggers start your workflow when an external system sends an HTTP request. Use them to integrate with any system that can make HTTP calls.
Getting Your Webhook URL
When you add a webhook trigger to your workflow:
- Select Webhook as the trigger type
- Click Generate URL
- Copy the unique URL:
https://steel.flint.com/workflows/triggers/webhook/{your-webhook-secret}This URL is unique to your workflow. Anyone with this URL can trigger your workflow.
Treat webhook URLs like passwords. Don't commit them to public repositories or share them in insecure channels.
Configuring the Trigger
Defining the Payload Schema
Tell Flint what data to expect by defining a schema:
- In the trigger configuration, click Define Schema
- Add fields with their types:
| Field Name | Type | Required |
|---|---|---|
customer_id | String | Yes |
order_total | Number | Yes |
items | Array | No |
Or paste a JSON example and Flint will infer the schema:
{
"customer_id": "cust_123",
"order_total": 99.99,
"items": [
{ "sku": "WIDGET-A", "qty": 2 }
]
}Validation Mode
Choose how to handle requests that don't match your schema:
| Mode | Behavior |
|---|---|
| Strict | Reject requests with wrong/missing fields |
| Lenient | Accept requests, use defaults for missing fields |
| None | Accept any payload without validation |
HTTP Methods
By default, webhooks accept POST requests. You can also enable:
PUT— For update operationsPATCH— For partial updates
GET is not supported as it cannot carry a request body.
Sending Requests to Your Webhook
Basic Request
curl -X POST "https://steel.flint.com/workflows/triggers/webhook/{your-webhook-secret}" \
-H "Content-Type: application/json" \
-d '{
"customer_id": "cust_123",
"order_total": 99.99
}'Security
The webhook URL includes a unique secret that authenticates requests. Anyone with the URL can trigger the workflow, so:
- Keep the URL private — Don't commit it to version control or share in public channels
- Regenerate if compromised — If the URL is exposed, generate a new webhook secret
- Use HTTPS only — All webhook URLs are HTTPS, ensuring encryption in transit
Accessing Webhook Data
In your workflow, access the payload via trigger:
{{trigger.customer_id}}
{{trigger.order_total}}
{{trigger.items[0].sku}}All fields from your webhook payload are accessible directly on the trigger object.
Response
When a webhook is received, Flint immediately returns a 200 OK response and begins processing the workflow asynchronously. The caller doesn't need to wait for workflow completion.
Testing Your Webhook
Using the Test Feature
- In the workflow editor, click Test Trigger
- Enter sample payload or use a saved example
- Click Send Test
- View the workflow run
Using External Tools
Test with curl, Postman, or your integration's test feature:
curl -X POST "https://steel.flint.com/workflows/triggers/webhook/{your-webhook-secret}" \
-H "Content-Type: application/json" \
-d '{"test": true, "data": "sample"}'Common Integration Patterns
Troubleshooting
| Issue | Cause | Solution |
|---|---|---|
| 400 Bad Request | Invalid JSON or schema mismatch | Validate JSON and check schema |
| 404 Not Found | Wrong URL | Verify webhook URL is correct |
| Workflow not running | Workflow disabled | Enable the workflow |
| Timeout | Workflow too slow | Use immediate response mode |