Skip to main content
All webhook payloads follow a consistent top-level structure with event-specific data nested within the data object.
type
string
required
The event type (e.g. post.approval.requested).
data
object
required
Event-specific payload for this webhook.
createdAt
string
required
ISO 8601 timestamp when the webhook event was created.
{
  "type": "post.approval.requested",
  "data": {
    "approval": {
      "post": {
        "id": "550e8400-e29b-41d4-a716-446655440001",
        "title": "Q4 Product Launch Announcement",
        "url": "https://app.tryordinal.com/acme/posts/550e8400-e29b-41d4-a716-446655440001"
      },
      "campaign": {
        "id": "550e8400-e29b-41d4-a716-446655440003",
        "name": "Launch 2025",
        "startDate": "2025-01-01",
        "endDate": "2025-12-31"
      },
      "workspace": {
        "id": "550e8400-e29b-41d4-a716-446655440000",
        "slug": "acme",
        "name": "Acme Inc"
      },
      "createdApprovals": [
        {
          "id": "550e8400-e29b-41d4-a716-446655440700",
          "isBlocking": true,
          "message": "Please review before we publish.",
          "dueDate": "2025-02-28T17:00:00.000Z",
          "createdAt": "2025-02-26T14:00:00.000Z",
          "status": "Requested",
          "user": {
            "id": "550e8400-e29b-41d4-a716-446655440020",
            "firstName": "Alex",
            "lastName": "Rivera",
            "email": "alex@example.com"
          },
          "requestedBy": {
            "id": "550e8400-e29b-41d4-a716-446655440010",
            "firstName": "Jane",
            "lastName": "Doe",
            "email": "jane@example.com"
          }
        }
      ],
      "existingApprovals": []
    }
  },
  "createdAt": "2025-02-26T14:00:00.000Z"
}