Make sure your webhook endpoint is accessible
SDK Integration
Quick Setup
Create a webhook channel and subscribe to events in one call:
await client.notification.setupForWorkflow({
workflowId: 'your-workflow-id',
events: ['workflow_data_change'],
channels: {
WEBHOOK: {
name: 'api-integration',
url: 'https://api.example.com/webhooks/kadoa',
httpMethod: 'POST'
}
}
});
Channel Management
For more control over webhook channels, use the channel management methods:
// Create webhook channel
const channel = await client.notification.channels.createChannel({
channelType: 'WEBHOOK',
name: 'api-integration',
config: {
webhookUrl: 'https://api.example.com/webhooks/kadoa',
httpMethod: 'POST'
}
});
// List all channels
const channels = await client.notification.channels.listChannels({});
// Delete a channel
await client.notification.channels.deleteChannel('channel-id');
For API configuration, see the API reference.
UI Configuration
For non-technical users who prefer a visual interface:
- Add a webhook channel via the notifications tab in the left sidebar or notifications tab in a workflow
- Subscribe to events by selecting the webhook channel in workspace settings or workflow-specific settings
Event Payload Examples
Kadoa sends a POST request to your webhook URL with different payload structures depending on the event type:
workflow_data_change
workflow_finished
workflow_failed
Triggered when data changes are detected in monitored workflows:{
"eventType": "workflow_data_change",
"timestamp": "2025-01-01T00:00:00.000Z",
"data": {
"id": "change-id",
"workflowId": "workflow-id",
"data": [...],
"differences": [...],
"url": "https://monitored-page.com",
"createdAt": "2025-01-09T10:00:00Z",
"metadata": {
"workflowName": "My Workflow",
"tags": ["tag1", "tag2"]
}
}
}
Triggered when a workflow completes successfully:{
"eventType": "workflow_finished",
"timestamp": "2025-01-01T01:00:00.000Z",
"data": {
"workflowId": "workflow-123",
"jobId": "job-456",
"state": "FINISHED",
"startedAt": "2025-01-01T00:00:00.000Z",
"finishedAt": "2025-01-01T01:00:00.000Z",
"runTimeInSeconds": 3600,
"dataUrl": "https://api.kadoa.com/v4/workflows/workflow-123/data",
"records": 100
}
}
Triggered when a workflow fails during execution:{
"eventType": "workflow_failed",
"timestamp": "2025-01-15T10:30:00Z",
"data": {
"workflowId": "wf_123",
"runId": "run_456",
"errors": [{
"errorCode": "ANTIBOT_DETECTION",
"severity": "CRITICAL",
"message": "Access blocked by bot protection",
"timestamp": "2025-01-15T10:30:00Z",
"context": {
"url": "https://example.com/page",
"httpStatus": 403
}
}]
}
}