Setup
Webhooks let external tools — form builders, automation platforms (Zapier, Make), notification systems, or custom scripts — create cards in your board via a simple HTTP request. To enable the feature, go to Board tools > Integrations and click on Webhooks > Setup:

In the dialog that opens, enable the feature and give your webhook a name. A unique slug is generated automatically — this slug is part of your webhook URL. You can regenerate it or customize it if you prefer:

Once enabled, your webhook URL is displayed and ready to use. It looks like this:
https://yourproject.klaro.cards/w/your-slug-here
Copy it using the copy button, or grab one of the ready-made code snippets shown below the URL.
Sending data to your webhook
Send a POST request with a JSON body to your webhook URL. Keep the URL private — the slug acts as its secret.
Here's a curl example:
curl -X POST 'https://yourproject.klaro.cards/w/your-slug-here' \
-H 'Content-Type: application/json' \
-d '{
"title": "My card title"
}'
Most automation platforms (Zapier, Make, n8n, etc.) have built-in HTTP/webhook actions — just paste your URL there and configure the JSON body.
You can send any JSON structure — the payload is transformed into a card using the Elo expression you configure in the Processing tab.
Setting dimension values (Processing)
The Processing tab lets you write an Elo expression that transforms the incoming JSON payload into a card. The expression receives the payload as _ and must return a Tuple whose keys are your dimension codes, and whose values are dimension values.

Simple example
If your external system sends { "name": "Bug report", "body": "Login is broken" }, you can map it to card fields like this:
{
title: _.name,
specification: _.body
}
Using logic
You can include conditions to auto-categorize cards. For example, if you have a Priority dimension:
{
title: _.name,
specification: _.body,
priority: if contains(_.name, 'urgent') then 'High' else 'Normal'
}
Creating multiple cards
Your Elo expression can also return an array to create several cards from a single webhook call:
[
{ title: _.primary, specification: _.details },
{ title: concat('Follow-up: ', _.primary) }
]
Finding dimension codes
For the keys of your Elo tuple, use the dimension and value codes as shown in each dimension's configuration screen:


Going further with Elo
Elo supports date handling, string manipulation, and much more. See the full Elo language reference for all available functions and features.
Board filters
As usual in Klaro Cards, board filters provide default values for new cards. If your board has filters set (for example, a specific Kind or Language), cards created by webhooks will inherit those values automatically — no extra configuration needed.
Frequently asked questions
-
What happens if my webhook is disabled?
Requests are silently ignored. Re-enable the webhook in the configuration dialog to resume processing.
-
What if my Elo expression has an error?
The card won't be created. Check your Elo syntax and test with a simple expression like
{ title: _.title }first. -
Can I create cards on multiple boards?
Yes — set up a separate webhook on each board. Each board has its own slug and Elo expression.