These are the 53 events Oatmilk sends today, grouped by area. Pick one to see the exact delivery your endpoint would receive. The samples are built by the same code that sends real deliveries, with synthetic data.
Subscribe to an exact name such as invoice.paid, to a group with invoice.*, or to everything with *. New event types may be added: handle types you don't recognise by answering 200 and ignoring them.
Invoices
invoice.created invoice.updated invoice.review_requested invoice.approved invoice.issued invoice.sent invoice.payment_recorded invoice.payment_removed invoice.partially_paid invoice.paid invoice.overdue invoice.voided invoice.status_changed Accounts
party.created party.updated party.archived Signatures
signing.envelope.sent signing.envelope.viewed signing.envelope.signed signing.envelope.completed signing.envelope.declined signing.envelope.changes_requested signing.envelope.revised signing.envelope.voided signing.envelope.expired Compliance
compliance.item.created compliance.item.assigned compliance.item.due_soon compliance.item.overdue compliance.item.completed compliance.item.skipped compliance.item.snoozed compliance.item.reopened compliance.reminder.sent compliance.kickoff.started compliance.kickoff.completed Contractors
contractor.profile.submitted contractor.payment_profile.updated contractor.hours.submitted contractor.hours.approved contractor.payout.prepared contractor.payout.approved contractor.payout.sent contractor.payout.paid contractor.payout.failed contractor.payout.cancelled contractor.agreement.imported contractor.agreement.sent Receipts and mail
receipt.processed mail.received Suggestions
proposal.created proposal.decided Connectors
notion.sync.completed invoice.created An invoice was created as a draft.
Event HTTP delivery
Copy {
"id" : "bf4e5ff3-0d1e-4f2a-8b3c-4d5e6f7a8b9c" ,
"type" : "invoice.created" ,
"created" : 1790000000 ,
"organizationId" : "org_synthetic" ,
"subject" : {
"type" : "invoice" ,
"id" : "7f0f6c1e-1c1f-4b5e-9c8d-2f5e8e3c1a10"
},
"data" : {
"number" : null ,
"status" : "draft" ,
"partyId" : "0b7a5d5e-3c34-4b8e-9e6a-5f8d0a1c2b3d" ,
"currency" : "CAD" ,
"totalMinor" : "113000" ,
"amountPaidMinor" : "0" ,
"balanceMinor" : "113000" ,
"issueDate" : null ,
"dueDate" : "2026-10-01" ,
"scheduledSendDate" : null
}
} POST /webhooks/oatmilk HTTP/1.1
Host : example.com
Content-Type : application/json
User-Agent : Oatmilk-Webhooks/1.0
Oatmilk-Signature : t=1790000000, v1=a8de24f68ac5084e30739f7e9187823c3230e88862f0591f2df71eece282a930
Oatmilk-Event-Id : bf4e5ff3-0d1e-4f2a-8b3c-4d5e6f7a8b9c
Oatmilk-Event-Type : invoice.created
Oatmilk-Delivery-Id : 3c4d5e6f-7a8b-4c9d-8e0f-1a2b3c4d5e6f
Oatmilk-Delivery-Attempt : 1
{
"id" : "bf4e5ff3-0d1e-4f2a-8b3c-4d5e6f7a8b9c" ,
"type" : "invoice.created" ,
"created" : 1790000000,
"organizationId" : "org_synthetic" ,
"subject" : {
"type" : "invoice" ,
"id" : "7f0f6c1e-1c1f-4b5e-9c8d-2f5e8e3c1a10"
},
"data" : {
"number" : null,
"status" : "draft" ,
"partyId" : "0b7a5d5e-3c34-4b8e-9e6a-5f8d0a1c2b3d" ,
"currency" : "CAD" ,
"totalMinor" : "113000" ,
"amountPaidMinor" : "0" ,
"balanceMinor" : "113000" ,
"issueDate" : null,
"dueDate" : "2026-10-01" ,
"scheduledSendDate" : null
}
} The test event webhook.test is sent when you press Send a test event in Developers › Webhooks or call webhooks.test without an event type. It reaches every endpoint whatever its subscriptions, and has "test": true at the top level so you can tell it apart. A test of a catalog event has the same shape as the real one, with "test": true in its envelope and its data.