Beta

Webhooks

Events that arrive on time.

Donum sends a signed event for every moment worth knowing. Delivery sent, approval granted, run failed. Your services pick it up, act on it, and move on.

Settings · Webhooks

https://realm.xyz/hooks/donum

7 events subscribed · last 2m ago

ok

https://ops.realm.xyz/slack-bridge

3 events subscribed · last 1h ago

ok

https://staging.realm.xyz/webhooks

7 events subscribed · last retrying

retry

Live stream

Six events per workflow run.

StreamLive
  1. 08:00:00schedule.triggerwf_monthly_investor · March runScheduler
  2. 08:00:02source.refreshstripe · hubspot · ga4System
  3. 08:02:14run.draftedrep_9f2c · draft v3Donum AI
  4. 08:02:16approval.requestedAva ChenNotifier
  5. 08:14:22approval.grantedAva Chen approvedAva Chen
  6. 08:14:24delivery.sent10 recipients · PDF 1.4 MBNotifier

Verify in four lines

HMAC in one minute.

verify.ts · sign checkts
import { createHmac, timingSafeEqual } from 'node:crypto'

export function verifyDonumSignature(raw: string, sig: string, secret: string) {
  const expected = createHmac('sha256', secret).update(raw).digest('hex')
  return timingSafeEqual(Buffer.from(sig, 'hex'), Buffer.from(expected, 'hex'))
}
Donum-Signature

Every payload ships with this header. No library required, just hmac-sha256.

raw

Always verify against the raw body. Parsing first will fail the check.

timingSafeEqual

Guards against timing attacks. The one detail every signing verifier gets wrong.

Event catalog

Six events, named honestly.

delivery.sentFires the moment a report reaches an inbox or a channel.
delivery.failedA bounce, a rejection, a misconfigured SMTP. Carries the reason.
run.completedA workflow run finished. Includes the metrics snapshot.
approval.requestedA run paused for review. Hook it to paging or a Slack bot.
approval.decidedApproved or rejected. Includes actor, timestamp, and reason.
connection.expiredA data source token expired. Notify a human to reconnect.

Webhooks are the quiet way to connect Donum to the rest of your stack. They trigger your onboarding flow when a report is delivered. They page someone when a connection expires. They write a row in your data warehouse.

Audit log
TimeEventObjectActor
08:14:22approval.grantedMarch Investor UpdateAva · owner
08:12:06ai.generatedraft v3Donum AI · model v4
08:08:44edit.blockhighlights narrativeLiam · editor
08:00:01schedule.triggerworkflow wf_investor_monthlyScheduler
07:59:57source.refreshstripe · hubspot · ga4System
07:42:11delivery.sentrecipient ava@acme.vcNotifier

Questions

Two sentences each.

Are webhooks available on all plans?+

Yes. Pro has up to five endpoints. Agency has unlimited endpoints and higher retry budgets.

How do I verify a signature?+

Every payload includes a Donum-Signature header. Sample code exists in TypeScript and Python in the docs.

Can I test from localhost?+

Yes. Use a tunnel like ngrok, or replay events from the console to your local endpoint.

What about event order?+

Events may arrive out of order but each one carries a monotonic sequence id per object.

Events that do the reminding.