# Event catalog

> Every event Oatmilk sends, with a sample of each delivery.

Source: https://app.getoatmilk.com/docs/webhooks/events

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`

An invoice was created as a draft.

```json
{
  "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
  }
}
```

#### `invoice.updated`

Invoice details changed.

```json
{
  "id": "242a3bc2-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
  "type": "invoice.updated",
  "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
  }
}
```

#### `invoice.review_requested`

An automatically prepared invoice is waiting for an administrator's review.

```json
{
  "id": "05df9dfe-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
  "type": "invoice.review_requested",
  "created": 1790000000,
  "organizationId": "org_synthetic",
  "subject": {
    "type": "invoice",
    "id": "7f0f6c1e-1c1f-4b5e-9c8d-2f5e8e3c1a10"
  },
  "data": {
    "number": "INV-2026-012",
    "status": "awaiting_approval",
    "partyId": "0b7a5d5e-3c34-4b8e-9e6a-5f8d0a1c2b3d",
    "currency": "CAD",
    "totalMinor": "113000",
    "amountPaidMinor": "0",
    "balanceMinor": "113000",
    "issueDate": "2026-09-01",
    "dueDate": "2026-10-01",
    "scheduledSendDate": null
  }
}
```

#### `invoice.approved`

An administrator approved a prepared invoice for sending.

```json
{
  "id": "517c257c-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
  "type": "invoice.approved",
  "created": 1790000000,
  "organizationId": "org_synthetic",
  "subject": {
    "type": "invoice",
    "id": "7f0f6c1e-1c1f-4b5e-9c8d-2f5e8e3c1a10"
  },
  "data": {
    "number": "INV-2026-012",
    "status": "approved",
    "partyId": "0b7a5d5e-3c34-4b8e-9e6a-5f8d0a1c2b3d",
    "currency": "CAD",
    "totalMinor": "113000",
    "amountPaidMinor": "0",
    "balanceMinor": "113000",
    "issueDate": "2026-09-01",
    "dueDate": "2026-10-01",
    "scheduledSendDate": null
  }
}
```

#### `invoice.issued`

An invoice received its number and became final.

```json
{
  "id": "88423668-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
  "type": "invoice.issued",
  "created": 1790000000,
  "organizationId": "org_synthetic",
  "subject": {
    "type": "invoice",
    "id": "7f0f6c1e-1c1f-4b5e-9c8d-2f5e8e3c1a10"
  },
  "data": {
    "number": "INV-2026-012",
    "status": "approved",
    "partyId": "0b7a5d5e-3c34-4b8e-9e6a-5f8d0a1c2b3d",
    "currency": "CAD",
    "totalMinor": "113000",
    "amountPaidMinor": "0",
    "balanceMinor": "113000",
    "issueDate": "2026-09-01",
    "dueDate": "2026-10-01",
    "scheduledSendDate": null
  }
}
```

#### `invoice.sent`

An invoice was emailed to the customer or marked as sent.

```json
{
  "id": "5b5b1cd5-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
  "type": "invoice.sent",
  "created": 1790000000,
  "organizationId": "org_synthetic",
  "subject": {
    "type": "invoice",
    "id": "7f0f6c1e-1c1f-4b5e-9c8d-2f5e8e3c1a10"
  },
  "data": {
    "number": "INV-2026-012",
    "status": "sent",
    "partyId": "0b7a5d5e-3c34-4b8e-9e6a-5f8d0a1c2b3d",
    "currency": "CAD",
    "totalMinor": "113000",
    "amountPaidMinor": "0",
    "balanceMinor": "113000",
    "issueDate": "2026-09-01",
    "dueDate": "2026-10-01",
    "scheduledSendDate": null,
    "method": "email",
    "automatic": false
  }
}
```

#### `invoice.payment_recorded`

A payment was recorded against an invoice.

```json
{
  "id": "8947d320-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
  "type": "invoice.payment_recorded",
  "created": 1790000000,
  "organizationId": "org_synthetic",
  "subject": {
    "type": "invoice",
    "id": "7f0f6c1e-1c1f-4b5e-9c8d-2f5e8e3c1a10"
  },
  "data": {
    "number": "INV-2026-012",
    "status": "partially_paid",
    "partyId": "0b7a5d5e-3c34-4b8e-9e6a-5f8d0a1c2b3d",
    "currency": "CAD",
    "totalMinor": "113000",
    "amountPaidMinor": "50000",
    "balanceMinor": "63000",
    "issueDate": "2026-09-01",
    "dueDate": "2026-10-01",
    "scheduledSendDate": null,
    "paymentId": "3e4f5a6b-7c8d-4e9f-8a0b-1c2d3e4f5a6b",
    "paymentAmountMinor": "50000"
  }
}
```

#### `invoice.payment_removed`

A recorded payment was removed from an invoice.

```json
{
  "id": "4aaf716a-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
  "type": "invoice.payment_removed",
  "created": 1790000000,
  "organizationId": "org_synthetic",
  "subject": {
    "type": "invoice",
    "id": "7f0f6c1e-1c1f-4b5e-9c8d-2f5e8e3c1a10"
  },
  "data": {
    "number": "INV-2026-012",
    "status": "sent",
    "partyId": "0b7a5d5e-3c34-4b8e-9e6a-5f8d0a1c2b3d",
    "currency": "CAD",
    "totalMinor": "113000",
    "amountPaidMinor": "0",
    "balanceMinor": "113000",
    "issueDate": "2026-09-01",
    "dueDate": "2026-10-01",
    "scheduledSendDate": null,
    "paymentId": "3e4f5a6b-7c8d-4e9f-8a0b-1c2d3e4f5a6b",
    "paymentAmountMinor": "50000"
  }
}
```

#### `invoice.partially_paid`

An invoice is partly paid and a balance remains.

```json
{
  "id": "89abb6ea-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
  "type": "invoice.partially_paid",
  "created": 1790000000,
  "organizationId": "org_synthetic",
  "subject": {
    "type": "invoice",
    "id": "7f0f6c1e-1c1f-4b5e-9c8d-2f5e8e3c1a10"
  },
  "data": {
    "number": "INV-2026-012",
    "status": "partially_paid",
    "partyId": "0b7a5d5e-3c34-4b8e-9e6a-5f8d0a1c2b3d",
    "currency": "CAD",
    "totalMinor": "113000",
    "amountPaidMinor": "50000",
    "balanceMinor": "63000",
    "issueDate": "2026-09-01",
    "dueDate": "2026-10-01",
    "scheduledSendDate": null
  }
}
```

#### `invoice.paid`

An invoice is paid in full.

```json
{
  "id": "5b5965f9-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
  "type": "invoice.paid",
  "created": 1790000000,
  "organizationId": "org_synthetic",
  "subject": {
    "type": "invoice",
    "id": "7f0f6c1e-1c1f-4b5e-9c8d-2f5e8e3c1a10"
  },
  "data": {
    "number": "INV-2026-012",
    "status": "paid",
    "partyId": "0b7a5d5e-3c34-4b8e-9e6a-5f8d0a1c2b3d",
    "currency": "CAD",
    "totalMinor": "113000",
    "amountPaidMinor": "113000",
    "balanceMinor": "0",
    "issueDate": "2026-09-01",
    "dueDate": "2026-10-01",
    "scheduledSendDate": null
  }
}
```

#### `invoice.overdue`

An invoice passed its due date with a balance remaining.

```json
{
  "id": "6466ebf5-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
  "type": "invoice.overdue",
  "created": 1790000000,
  "organizationId": "org_synthetic",
  "subject": {
    "type": "invoice",
    "id": "7f0f6c1e-1c1f-4b5e-9c8d-2f5e8e3c1a10"
  },
  "data": {
    "number": "INV-2026-012",
    "status": "overdue",
    "partyId": "0b7a5d5e-3c34-4b8e-9e6a-5f8d0a1c2b3d",
    "currency": "CAD",
    "totalMinor": "113000",
    "amountPaidMinor": "0",
    "balanceMinor": "113000",
    "issueDate": "2026-09-01",
    "dueDate": "2026-10-01",
    "scheduledSendDate": null
  }
}
```

#### `invoice.voided`

An invoice was voided.

```json
{
  "id": "a6472076-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
  "type": "invoice.voided",
  "created": 1790000000,
  "organizationId": "org_synthetic",
  "subject": {
    "type": "invoice",
    "id": "7f0f6c1e-1c1f-4b5e-9c8d-2f5e8e3c1a10"
  },
  "data": {
    "number": "INV-2026-012",
    "status": "void",
    "partyId": "0b7a5d5e-3c34-4b8e-9e6a-5f8d0a1c2b3d",
    "currency": "CAD",
    "totalMinor": "113000",
    "amountPaidMinor": "0",
    "balanceMinor": "113000",
    "issueDate": "2026-09-01",
    "dueDate": "2026-10-01",
    "scheduledSendDate": null
  }
}
```

#### `invoice.status_changed`

An invoice moved to a different status. Sent with the more specific event for the new status.

```json
{
  "id": "64e730e8-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
  "type": "invoice.status_changed",
  "created": 1790000000,
  "organizationId": "org_synthetic",
  "subject": {
    "type": "invoice",
    "id": "7f0f6c1e-1c1f-4b5e-9c8d-2f5e8e3c1a10"
  },
  "data": {
    "number": "INV-2026-012",
    "status": "paid",
    "partyId": "0b7a5d5e-3c34-4b8e-9e6a-5f8d0a1c2b3d",
    "currency": "CAD",
    "totalMinor": "113000",
    "amountPaidMinor": "113000",
    "balanceMinor": "0",
    "issueDate": "2026-09-01",
    "dueDate": "2026-10-01",
    "scheduledSendDate": null
  }
}
```

### Accounts

#### `party.created`

A customer or vendor account was added.

```json
{
  "id": "d68f1ad6-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
  "type": "party.created",
  "created": 1790000000,
  "organizationId": "org_synthetic",
  "subject": {
    "type": "party",
    "id": "7f0f6c1e-1c1f-4b5e-9c8d-2f5e8e3c1a10"
  },
  "data": {
    "name": "Synthetic Ventures Inc.",
    "kind": "customer",
    "jurisdiction": "CA-ON",
    "currency": "CAD",
    "archived": false
  }
}
```

#### `party.updated`

Account details changed.

```json
{
  "id": "3b6af6a5-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
  "type": "party.updated",
  "created": 1790000000,
  "organizationId": "org_synthetic",
  "subject": {
    "type": "party",
    "id": "7f0f6c1e-1c1f-4b5e-9c8d-2f5e8e3c1a10"
  },
  "data": {
    "name": "Synthetic Ventures Inc.",
    "kind": "customer",
    "jurisdiction": "CA-ON",
    "currency": "CAD",
    "archived": false
  }
}
```

#### `party.archived`

An account was archived.

```json
{
  "id": "cbbd66c4-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
  "type": "party.archived",
  "created": 1790000000,
  "organizationId": "org_synthetic",
  "subject": {
    "type": "party",
    "id": "7f0f6c1e-1c1f-4b5e-9c8d-2f5e8e3c1a10"
  },
  "data": {
    "name": "Synthetic Ventures Inc.",
    "kind": "customer",
    "jurisdiction": "CA-ON",
    "currency": "CAD",
    "archived": true
  }
}
```

### Signatures

#### `signing.envelope.sent`

A document was sent for signature. The subject is the envelope; subjectType and subjectId name the record it belongs to.

```json
{
  "id": "075b4f43-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
  "type": "signing.envelope.sent",
  "created": 1790000000,
  "organizationId": "org_synthetic",
  "subject": {
    "type": "envelope",
    "id": "7f0f6c1e-1c1f-4b5e-9c8d-2f5e8e3c1a10"
  },
  "data": {
    "title": "Synthetic services agreement",
    "subjectType": "contractor",
    "subjectId": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
    "signers": 2
  }
}
```

#### `signing.envelope.viewed`

A signer opened the document.

```json
{
  "id": "52af32ad-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
  "type": "signing.envelope.viewed",
  "created": 1790000000,
  "organizationId": "org_synthetic",
  "subject": {
    "type": "envelope",
    "id": "7f0f6c1e-1c1f-4b5e-9c8d-2f5e8e3c1a10"
  },
  "data": {
    "recipientId": "5d4c3b2a-1f0e-4d9c-8b7a-6e5f4d3c2b1a"
  }
}
```

#### `signing.envelope.signed`

A signer finished signing.

```json
{
  "id": "4bb0ab43-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
  "type": "signing.envelope.signed",
  "created": 1790000000,
  "organizationId": "org_synthetic",
  "subject": {
    "type": "envelope",
    "id": "7f0f6c1e-1c1f-4b5e-9c8d-2f5e8e3c1a10"
  },
  "data": {
    "recipientId": "5d4c3b2a-1f0e-4d9c-8b7a-6e5f4d3c2b1a",
    "completed": false
  }
}
```

#### `signing.envelope.completed`

Everyone signed and the completed PDF is ready.

```json
{
  "id": "60666626-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
  "type": "signing.envelope.completed",
  "created": 1790000000,
  "organizationId": "org_synthetic",
  "subject": {
    "type": "envelope",
    "id": "7f0f6c1e-1c1f-4b5e-9c8d-2f5e8e3c1a10"
  },
  "data": {
    "title": "Synthetic services agreement",
    "subjectType": "contractor",
    "subjectId": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
    "finalSha256": "9f2b5c1d7e3a4b6c8d0e2f4a6b8c0d2e4f6a8b0c2d4e6f8a0b2c4d6e8f0a2b4c"
  }
}
```

#### `signing.envelope.declined`

A signer declined to sign.

```json
{
  "id": "e54db1c1-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
  "type": "signing.envelope.declined",
  "created": 1790000000,
  "organizationId": "org_synthetic",
  "subject": {
    "type": "envelope",
    "id": "7f0f6c1e-1c1f-4b5e-9c8d-2f5e8e3c1a10"
  },
  "data": {
    "recipientId": "5d4c3b2a-1f0e-4d9c-8b7a-6e5f4d3c2b1a"
  }
}
```

#### `signing.envelope.changes_requested`

A signer suggested changes before signing. Signing waits until the sender sends a revised version or keeps the document as it is.

```json
{
  "id": "4fac8213-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
  "type": "signing.envelope.changes_requested",
  "created": 1790000000,
  "organizationId": "org_synthetic",
  "subject": {
    "type": "envelope",
    "id": "7f0f6c1e-1c1f-4b5e-9c8d-2f5e8e3c1a10"
  },
  "data": {
    "recipientId": "5d4c3b2a-1f0e-4d9c-8b7a-6e5f4d3c2b1a",
    "requestId": "6a7b8c9d-0e1f-4a2b-8c3d-4e5f6a7b8c9d",
    "changes": 2,
    "comments": 1
  }
}
```

#### `signing.envelope.revised`

The sender answered suggested changes with a revised version. The subject is the old envelope, which is cancelled as replaced; revisedEnvelopeId is the new one sent for signature.

```json
{
  "id": "6c84221b-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
  "type": "signing.envelope.revised",
  "created": 1790000000,
  "organizationId": "org_synthetic",
  "subject": {
    "type": "envelope",
    "id": "7f0f6c1e-1c1f-4b5e-9c8d-2f5e8e3c1a10"
  },
  "data": {
    "title": "Synthetic services agreement",
    "subjectType": "contractor",
    "subjectId": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
    "revisedEnvelopeId": "7b8c9d0e-1f2a-4b3c-8d4e-5f6a7b8c9d0e",
    "revision": 2,
    "accepted": 2,
    "rejected": 1
  }
}
```

#### `signing.envelope.voided`

The sender voided the document.

```json
{
  "id": "531da664-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
  "type": "signing.envelope.voided",
  "created": 1790000000,
  "organizationId": "org_synthetic",
  "subject": {
    "type": "envelope",
    "id": "7f0f6c1e-1c1f-4b5e-9c8d-2f5e8e3c1a10"
  },
  "data": {
    "title": "Synthetic services agreement",
    "subjectType": "contractor",
    "subjectId": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d"
  }
}
```

#### `signing.envelope.expired`

The signing window ended before everyone signed.

```json
{
  "id": "afb478fa-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
  "type": "signing.envelope.expired",
  "created": 1790000000,
  "organizationId": "org_synthetic",
  "subject": {
    "type": "envelope",
    "id": "7f0f6c1e-1c1f-4b5e-9c8d-2f5e8e3c1a10"
  },
  "data": {
    "title": "Synthetic services agreement",
    "subjectType": "contractor",
    "subjectId": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d"
  }
}
```

### Compliance

#### `compliance.item.created`

A checklist item was added.

```json
{
  "id": "e49d1e1e-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
  "type": "compliance.item.created",
  "created": 1790000000,
  "organizationId": "org_synthetic",
  "subject": {
    "type": "compliance_item",
    "id": "7f0f6c1e-1c1f-4b5e-9c8d-2f5e8e3c1a10"
  },
  "data": {
    "ruleKey": "gst_hst_return",
    "title": "GST/HST return",
    "dueDate": "2026-10-31",
    "status": "upcoming",
    "category": "sales_tax"
  }
}
```

#### `compliance.item.assigned`

A checklist item's owner changed.

```json
{
  "id": "0de97794-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
  "type": "compliance.item.assigned",
  "created": 1790000000,
  "organizationId": "org_synthetic",
  "subject": {
    "type": "compliance_item",
    "id": "7f0f6c1e-1c1f-4b5e-9c8d-2f5e8e3c1a10"
  },
  "data": {
    "ruleKey": "gst_hst_return",
    "title": "GST/HST return",
    "dueDate": "2026-10-31",
    "status": "upcoming",
    "assigneeUserId": "user_synthetic"
  }
}
```

#### `compliance.item.due_soon`

A checklist item was included in a reminder before its due date.

```json
{
  "id": "4b4cdc02-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
  "type": "compliance.item.due_soon",
  "created": 1790000000,
  "organizationId": "org_synthetic",
  "subject": {
    "type": "compliance_item",
    "id": "7f0f6c1e-1c1f-4b5e-9c8d-2f5e8e3c1a10"
  },
  "data": {
    "ruleKey": "gst_hst_return",
    "title": "GST/HST return",
    "dueDate": "2026-10-31",
    "daysUntil": 14,
    "digestKey": "gst_hst_return:2026-10-31"
  }
}
```

#### `compliance.item.overdue`

A checklist item passed its due date.

```json
{
  "id": "89b5aa20-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
  "type": "compliance.item.overdue",
  "created": 1790000000,
  "organizationId": "org_synthetic",
  "subject": {
    "type": "compliance_item",
    "id": "7f0f6c1e-1c1f-4b5e-9c8d-2f5e8e3c1a10"
  },
  "data": {
    "ruleKey": "gst_hst_return",
    "title": "GST/HST return",
    "dueDate": "2026-10-31",
    "daysUntil": -2,
    "digestKey": "gst_hst_return:2026-10-31"
  }
}
```

#### `compliance.item.completed`

A checklist item was marked done.

```json
{
  "id": "45d673e3-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
  "type": "compliance.item.completed",
  "created": 1790000000,
  "organizationId": "org_synthetic",
  "subject": {
    "type": "compliance_item",
    "id": "7f0f6c1e-1c1f-4b5e-9c8d-2f5e8e3c1a10"
  },
  "data": {
    "ruleKey": "gst_hst_return",
    "title": "GST/HST return",
    "dueDate": "2026-10-31",
    "status": "done"
  }
}
```

#### `compliance.item.skipped`

A checklist item was marked not applicable.

```json
{
  "id": "a43d5876-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
  "type": "compliance.item.skipped",
  "created": 1790000000,
  "organizationId": "org_synthetic",
  "subject": {
    "type": "compliance_item",
    "id": "7f0f6c1e-1c1f-4b5e-9c8d-2f5e8e3c1a10"
  },
  "data": {
    "ruleKey": "gst_hst_return",
    "title": "GST/HST return",
    "dueDate": "2026-10-31",
    "status": "skipped"
  }
}
```

#### `compliance.item.snoozed`

A checklist item was snoozed.

```json
{
  "id": "aba90388-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
  "type": "compliance.item.snoozed",
  "created": 1790000000,
  "organizationId": "org_synthetic",
  "subject": {
    "type": "compliance_item",
    "id": "7f0f6c1e-1c1f-4b5e-9c8d-2f5e8e3c1a10"
  },
  "data": {
    "ruleKey": "gst_hst_return",
    "title": "GST/HST return",
    "dueDate": "2026-10-31",
    "status": "upcoming",
    "snoozedUntil": "2026-10-15"
  }
}
```

#### `compliance.item.reopened`

A completed checklist item was reopened.

```json
{
  "id": "7fc23838-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
  "type": "compliance.item.reopened",
  "created": 1790000000,
  "organizationId": "org_synthetic",
  "subject": {
    "type": "compliance_item",
    "id": "7f0f6c1e-1c1f-4b5e-9c8d-2f5e8e3c1a10"
  },
  "data": {
    "ruleKey": "gst_hst_return",
    "title": "GST/HST return",
    "dueDate": "2026-10-31",
    "status": "upcoming"
  }
}
```

#### `compliance.reminder.sent`

A reminder email was queued for administrators.

```json
{
  "id": "bc71c767-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
  "type": "compliance.reminder.sent",
  "created": 1790000000,
  "organizationId": "org_synthetic",
  "subject": {
    "type": "compliance_digest",
    "id": "gst_hst_return:2026-10-31"
  },
  "data": {
    "groupKey": "gst_hst_return:2026-10-31",
    "itemIds": [
      "c1d2e3f4-a5b6-4c7d-8e9f-0a1b2c3d4e5f"
    ],
    "recipientCount": 2,
    "trigger": "schedule",
    "emailId": "4b5c6d7e-8f9a-4b0c-8d1e-2f3a4b5c6d7e"
  }
}
```

#### `compliance.kickoff.started`

Tax preparation started automatically.

```json
{
  "id": "6031a16b-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
  "type": "compliance.kickoff.started",
  "created": 1790000000,
  "organizationId": "org_synthetic",
  "subject": {
    "type": "compliance_item",
    "id": "7f0f6c1e-1c1f-4b5e-9c8d-2f5e8e3c1a10"
  },
  "data": {
    "kind": "corporate",
    "from": "2025-10-01",
    "to": "2026-09-30",
    "runId": "3c4d5e6f-7a8b-4c9d-8e0f-1a2b3c4d5e6f",
    "trigger": "schedule"
  }
}
```

#### `compliance.kickoff.completed`

The tax preparation workspace is ready.

```json
{
  "id": "e48f84f1-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
  "type": "compliance.kickoff.completed",
  "created": 1790000000,
  "organizationId": "org_synthetic",
  "subject": {
    "type": "compliance_item",
    "id": "7f0f6c1e-1c1f-4b5e-9c8d-2f5e8e3c1a10"
  },
  "data": {
    "kind": "corporate",
    "from": "2025-10-01",
    "to": "2026-09-30",
    "runId": "3c4d5e6f-7a8b-4c9d-8e0f-1a2b3c4d5e6f",
    "followUps": 3,
    "emailQueued": true
  }
}
```

### Contractors

#### `contractor.profile.submitted`

A contractor submitted their profile.

```json
{
  "id": "bf2c169d-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
  "type": "contractor.profile.submitted",
  "created": 1790000000,
  "organizationId": "org_synthetic",
  "subject": {
    "type": "contractor",
    "id": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d"
  },
  "data": {
    "contractorId": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d"
  }
}
```

#### `contractor.payment_profile.updated`

A contractor's payment method changed. Account details aren't included.

```json
{
  "id": "dbabbb50-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
  "type": "contractor.payment_profile.updated",
  "created": 1790000000,
  "organizationId": "org_synthetic",
  "subject": {
    "type": "contractor",
    "id": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d"
  },
  "data": {
    "contractorId": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
    "method": "wise_email",
    "currency": "CAD",
    "source": "contractor"
  }
}
```

#### `contractor.hours.submitted`

A contractor submitted hours for approval.

```json
{
  "id": "af7232fd-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
  "type": "contractor.hours.submitted",
  "created": 1790000000,
  "organizationId": "org_synthetic",
  "subject": {
    "type": "contractor",
    "id": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d"
  },
  "data": {
    "contractorId": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
    "periodId": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
    "periodStart": "2026-09-01",
    "periodEnd": "2026-09-15",
    "submittedMinutes": 2250
  }
}
```

#### `contractor.hours.approved`

Submitted hours were approved.

```json
{
  "id": "abbba00d-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
  "type": "contractor.hours.approved",
  "created": 1790000000,
  "organizationId": "org_synthetic",
  "subject": {
    "type": "contractor",
    "id": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d"
  },
  "data": {
    "contractorId": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
    "periodId": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
    "approvedEntries": 5,
    "status": "approved"
  }
}
```

#### `contractor.payout.prepared`

A payout was prepared from approved hours and is waiting for approval.

```json
{
  "id": "1704c2d0-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
  "type": "contractor.payout.prepared",
  "created": 1790000000,
  "organizationId": "org_synthetic",
  "subject": {
    "type": "contractor_payout",
    "id": "2b3c4d5e-6f7a-4b8c-9d0e-1f2a3b4c5d6e"
  },
  "data": {
    "contractorId": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
    "payoutId": "2b3c4d5e-6f7a-4b8c-9d0e-1f2a3b4c5d6e",
    "periodId": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
    "totalMinor": "450000",
    "currency": "CAD",
    "status": "pending_approval"
  }
}
```

#### `contractor.payout.approved`

An administrator approved a payout.

```json
{
  "id": "bf097e5e-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
  "type": "contractor.payout.approved",
  "created": 1790000000,
  "organizationId": "org_synthetic",
  "subject": {
    "type": "contractor_payout",
    "id": "2b3c4d5e-6f7a-4b8c-9d0e-1f2a3b4c5d6e"
  },
  "data": {
    "contractorId": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
    "payoutId": "2b3c4d5e-6f7a-4b8c-9d0e-1f2a3b4c5d6e",
    "periodId": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
    "totalMinor": "450000",
    "currency": "CAD",
    "status": "approved"
  }
}
```

#### `contractor.payout.sent`

A payout was sent through the payment provider.

```json
{
  "id": "2dab54b7-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
  "type": "contractor.payout.sent",
  "created": 1790000000,
  "organizationId": "org_synthetic",
  "subject": {
    "type": "contractor_payout",
    "id": "2b3c4d5e-6f7a-4b8c-9d0e-1f2a3b4c5d6e"
  },
  "data": {
    "contractorId": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
    "payoutId": "2b3c4d5e-6f7a-4b8c-9d0e-1f2a3b4c5d6e",
    "periodId": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
    "totalMinor": "450000",
    "currency": "CAD",
    "status": "sent",
    "environment": "production"
  }
}
```

#### `contractor.payout.paid`

A payout was marked as paid.

```json
{
  "id": "2da99ddb-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
  "type": "contractor.payout.paid",
  "created": 1790000000,
  "organizationId": "org_synthetic",
  "subject": {
    "type": "contractor_payout",
    "id": "2b3c4d5e-6f7a-4b8c-9d0e-1f2a3b4c5d6e"
  },
  "data": {
    "contractorId": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
    "payoutId": "2b3c4d5e-6f7a-4b8c-9d0e-1f2a3b4c5d6e",
    "periodId": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
    "totalMinor": "450000",
    "currency": "CAD",
    "status": "paid_manually"
  }
}
```

#### `contractor.payout.failed`

A payout could not be completed.

```json
{
  "id": "273519c2-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
  "type": "contractor.payout.failed",
  "created": 1790000000,
  "organizationId": "org_synthetic",
  "subject": {
    "type": "contractor_payout",
    "id": "2b3c4d5e-6f7a-4b8c-9d0e-1f2a3b4c5d6e"
  },
  "data": {
    "contractorId": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
    "payoutId": "2b3c4d5e-6f7a-4b8c-9d0e-1f2a3b4c5d6e",
    "errorCode": "WISE_TRANSFER_RETURNED",
    "totalMinor": "450000",
    "currency": "CAD"
  }
}
```

#### `contractor.payout.cancelled`

A payout was cancelled.

```json
{
  "id": "f3aa8578-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
  "type": "contractor.payout.cancelled",
  "created": 1790000000,
  "organizationId": "org_synthetic",
  "subject": {
    "type": "contractor_payout",
    "id": "2b3c4d5e-6f7a-4b8c-9d0e-1f2a3b4c5d6e"
  },
  "data": {
    "contractorId": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
    "payoutId": "2b3c4d5e-6f7a-4b8c-9d0e-1f2a3b4c5d6e",
    "periodId": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
    "totalMinor": "450000",
    "currency": "CAD",
    "status": "cancelled"
  }
}
```

#### `contractor.agreement.imported`

A signed contractor agreement was uploaded.

```json
{
  "id": "d83680d7-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
  "type": "contractor.agreement.imported",
  "created": 1790000000,
  "organizationId": "org_synthetic",
  "subject": {
    "type": "contractor",
    "id": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d"
  },
  "data": {
    "contractorId": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
    "envelopeId": "5d4c3b2a-1f0e-4d9c-8b7a-6e5f4d3c2b1a",
    "executedOn": "2026-09-01"
  }
}
```

#### `contractor.agreement.sent`

A contractor agreement was prepared or sent for signature.

```json
{
  "id": "c719384d-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
  "type": "contractor.agreement.sent",
  "created": 1790000000,
  "organizationId": "org_synthetic",
  "subject": {
    "type": "contractor",
    "id": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d"
  },
  "data": {
    "contractorId": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
    "envelopeId": "5d4c3b2a-1f0e-4d9c-8b7a-6e5f4d3c2b1a",
    "sent": true
  }
}
```

### Receipts and mail

#### `receipt.processed`

A receipt finished processing and is ready for review.

```json
{
  "id": "55e6b5c2-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
  "type": "receipt.processed",
  "created": 1790000000,
  "organizationId": "org_synthetic",
  "subject": {
    "type": "submission",
    "id": "4d5e6f7a-8b9c-4d0e-8f1a-2b3c4d5e6f7a"
  },
  "data": {
    "submissionId": "4d5e6f7a-8b9c-4d0e-8f1a-2b3c4d5e6f7a",
    "entries": [
      {
        "merchant": "Synthetic Office Supply",
        "date": "2026-09-18",
        "currency": "CAD",
        "amountMinor": "4520",
        "categoryId": "5e6f7a8b-9c0d-4e1f-8a2b-3c4d5e6f7a8b",
        "splits": []
      }
    ],
    "flags": []
  }
}
```

#### `mail.received`

An email to one of your Oatmilk addresses passed screening and reached the company inbox. Sender, subject, and content aren't included.

```json
{
  "id": "2fde0a18-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
  "type": "mail.received",
  "created": 1790000000,
  "organizationId": "org_synthetic",
  "subject": {
    "type": "mail",
    "id": "6f7a8b9c-0d1e-4f2a-8b3c-4d5e6f7a8b9c"
  },
  "data": {
    "messageId": "6f7a8b9c-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
    "purpose": "financial",
    "mailbox": "invoices"
  }
}
```

### Suggestions

#### `proposal.created`

A suggested change is waiting for review.

```json
{
  "id": "9008d816-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
  "type": "proposal.created",
  "created": 1790000000,
  "organizationId": "org_synthetic",
  "subject": {
    "type": "invoice",
    "id": "7f0f6c1e-1c1f-4b5e-9c8d-2f5e8e3c1a10"
  },
  "data": {
    "proposalId": "8b9c0d1e-2f3a-4b4c-8d5e-6f7a8b9c0d1e",
    "subjectType": "invoice",
    "subjectId": "7f0f6c1e-1c1f-4b5e-9c8d-2f5e8e3c1a10",
    "field": "status",
    "proposedValue": {
      "status": "paid"
    },
    "source": "rule",
    "confidence": "high"
  }
}
```

#### `proposal.decided`

A person approved or declined a suggested change.

```json
{
  "id": "be8ff2a0-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
  "type": "proposal.decided",
  "created": 1790000000,
  "organizationId": "org_synthetic",
  "subject": {
    "type": "invoice",
    "id": "7f0f6c1e-1c1f-4b5e-9c8d-2f5e8e3c1a10"
  },
  "data": {
    "proposalId": "8b9c0d1e-2f3a-4b4c-8d5e-6f7a8b9c0d1e",
    "subjectType": "invoice",
    "subjectId": "7f0f6c1e-1c1f-4b5e-9c8d-2f5e8e3c1a10",
    "field": "status",
    "decision": "approve",
    "status": "applied"
  }
}
```

### Connectors

#### `notion.sync.completed`

A Notion sync finished.

```json
{
  "id": "2c2c186d-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
  "type": "notion.sync.completed",
  "created": 1790000000,
  "organizationId": "org_synthetic",
  "subject": {
    "type": "connector",
    "id": "notion"
  },
  "data": {
    "runId": "9c0d1e2f-3a4b-4c5d-8e6f-7a8b9c0d1e2f",
    "direction": "both",
    "read": 4,
    "compared": 3,
    "pushed": 3,
    "created": 1,
    "unchanged": 0,
    "proposals": 1,
    "suggestedLinks": 0,
    "errors": 0,
    "queued": 0
  }
}
```

## 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`.
