Webhooks
There are two directions — don't mix them up:
| Direction | How |
|---|---|
| Liza → your URL (outbound) | REST hooks via /v1/zapier/hooks — see Zapier. Zapier and n8n use the same mechanics. |
| Your service → Liza (inbound) | Signature-verified receivers under /v1/integrations/webhook/*. They are not called by hand but set up when you connect an integration. |
Outbound: Liza → your URL
Subscribe to one of the trigger events and receive a POST with JSON on every matching event:
| Event | Fires when … |
|---|---|
list_item.created | a task was created |
block.created | a chat block/message was created |
notification.created | a notification was created |
curl -X POST https://api.eu.liza.app/api/v1/zapier/hooks \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"event":"block.created","target_url":"https://example.com/liza-hook"}'The body is an array containing one record. Respond with 2xx. On 410 Gone Liza removes the subscription automatically; other errors are not retried.
The currently valid event list comes from GET /v1/zapier/events.
Inbound: your service → Liza
For native providers (GitHub, Stripe, Sentry, AppSignal, Salesforce, Zapier, n8n, custom webhook) Liza provides a dedicated receiving URL per subscription and verifies the provider's signature. This is set up when connecting the integration in the client — the receiver paths are not a developer endpoint.
For services without a native provider there is Custom webhook: you get a URL whose payload lands as a block in the chat of a list or an item.