Webhooks¶
Webhooks let external systems receive real-time notifications when data changes in Stackify. When a subscribed event occurs, Stackify sends an HTTP POST request to your endpoint.
Supported events¶
| Event | Triggered when |
|---|---|
record.created | A new record is added to a card |
record.updated | A record's fields are changed |
record.deleted | A record is deleted |
card.created | A new card is created in the workspace |
card.updated | A card's name or description is changed |
collaborator.added | A new collaborator is added to a card |
Create a webhook subscription¶
curl -X POST https://app.stackify.se/api/v1/workspaces/{wid}/webhooks \
-H "Authorization: Bearer tvk_live_..." \
-H "Content-Type: application/json" \
-d '{
"target_url": "https://your-server.example.com/hook",
"events": ["record.created", "record.updated"],
"card_id": "01HZ..."
}'
Omit card_id to subscribe to events from all cards in the workspace.
- Go to Settings → Integrations → Webhooks.
- Click Add webhook.
- Enter your target URL and select the events you want.
- Click Save.
Webhook payload¶
{
"event": "record.created",
"timestamp": "2025-05-30T10:00:00Z",
"workspace_id": "01HX...",
"card_id": "01HY...",
"record_id": "01HZ...",
"data": {
"FIELD_ID_1": "New value",
"FIELD_ID_2": 42
}
}
Verifying webhook signatures¶
Every request includes an X-Stackify-Signature header containing an HMAC-SHA256 signature of the raw request body, signed with your webhook secret.
Verify the signature in your handler:
Your webhook secret is shown once when you create the subscription. Store it securely.
Retries¶
If your endpoint returns a non-2xx response or times out, Stackify retries delivery with exponential backoff. After 4 failed attempts, the subscription owner is notified by email and the subscription is paused.