Webhooks
Receive funding, acquisition, and executive-move signals as they are confirmed.
Webhooks push new signals to your endpoint the moment they are confirmed and stable, so you don't have to poll. Available on the Growth and Scale plans.
How it works
You register an HTTPS endpoint and choose which event types you want. When a signal is confirmed, Datahyena sends a POST with a JSON body. A signal fires once, after it has settled, so you receive a complete record rather than a half-formed one. There is no .updated event, because the record is already matured when it fires, see the data lifecycle for why.
Next: Security covers signature verification and retries, and Filters covers narrowing what each endpoint receives.
Scope to a watchlist
Set Deliver for to a watchlist and the endpoint only fires for companies on that list, so you get alerts for your target accounts instead of every company. Leave it on All companies to receive everything. This is separate from filters, which narrow by event attributes like round or amount. The two combine: an endpoint scoped to a watchlist and filtered to Series A delivers Series A rounds for companies on the list.
Events
| Event | Fires when |
|---|---|
funding.created | A funding round is confirmed and stable. |
acquisition.created | An acquisition or merger is confirmed and stable. |
exec_move.created | An executive job change is confirmed and stable. |
Payload
Every delivery uses the same envelope. data is the exact single-record response from the REST API, so you can parse it with the same code.
{
"id": "018f...",
"event": "funding.created",
"createdAt": "2026-06-06T12:00:00.000Z",
"data": {
"success": true,
"data": {
"id": "018e...",
"company": { "name": "Acme AI", "domain": "acme.ai", "hqCountry": { "code": "US", "name": "United States" }, "industryGroup": "Software Development" },
"round": "series-a",
"amountUsdCents": 1200000000,
"investors": [{ "id": "018d...", "name": "Example Ventures" }],
"announcedAt": "2026-06-05"
},
"meta": { "endpoint": "funding_events.item" }
}
}Nullable fields
A signal can be delivered before every detail is resolved, so treat enrichment and extraction fields as optional. The full per-field contract (and which are nullable) is in the API reference.
Always present: the event id, company.name, discoveredAt, and at least one entry in sources.
May be null:
- Company firmographics until the company is resolved/enriched:
company.id,company.domain,company.linkedinHandle,company.hqCity,company.hqCountry,company.industryGroup,company.foundedYear,company.description,company.businessModel,company.employeeCountBucket. - Deal details when not stated in the source:
round,amountUsdCents/amountUsd,announcedAt. investorsmay be an empty array.
Don't assume a field is present. Code defensively against null for anything outside the "always present" set.