Documentation Index
Fetch the complete documentation index at: https://docs.tryordinal.com/llms.txt
Use this file to discover all available pages before exploring further.
Use webhooks to get real-time notifications on events happening across your Ordinal workspace. With Ordinal webhooks, you can build custom integrations, such as:
- Syncing post data to your CRM when content goes live
- Auto-create Linear tickets based on changes in a post’s status
- Sync approval workflows with your company’s existing compliance tooling
- Trigger onboarding sequences in your own systems when new teammates accept invites
- Feed campaign activity into custom executive dashboards
- Building internal dashboards that track publishing activity across your team
In this guide, we’ll show you how to configure webhooks and document the available events you can listen to.
Managing webhooks
You can manage webhooks via the dashboard or the API.
Dashboard: Navigate to Settings → Integrations → Webhooks to create, view, edit, and delete webhooks.
API: The webhooks API supports full CRUD operations. All endpoints require API key authentication.
| Operation | Method | Endpoint | Description |
|---|
| List | GET | /webhooks | List all webhooks for the workspace |
| Create | POST | /webhooks | Create a new webhook |
| Get | GET | /webhooks/{id} | Get a webhook by ID |
| Update | PATCH | /webhooks/{id} | Update an existing webhook |
| Delete | DELETE | /webhooks/{id} | Delete a webhook |
List webhooks
curl -X GET "https://app.tryordinal.com/api/v1/webhooks" \
-H "Authorization: Bearer your_api_key"
Response:
[
{
"id": "550e8400-e29b-41d4-a716-446655440900",
"name": "CRM Sync",
"url": "https://example.com/webhooks/ordinal",
"description": "Sync published posts to our CRM",
"headers": { "X-Custom-Header": "value" },
"topics": ["post.published", "post.archived"],
"createdAt": "2026-01-15T10:00:00.000Z",
"createdBy": {
"id": "550e8400-e29b-41d4-a716-446655440010",
"email": "john@acme.com",
"firstName": "John",
"lastName": "Doe"
}
}
]
Create webhook
curl -X POST "https://app.tryordinal.com/api/v1/webhooks" \
-H "Authorization: Bearer your_api_key" \
-H "Content-Type: application/json" \
-d '{
"name": "CRM Sync",
"url": "https://example.com/webhooks/ordinal",
"description": "Sync published posts to our CRM",
"topics": ["post.published", "post.archived"],
"headers": { "X-Custom-Header": "value" }
}'
Response:
{
"id": "550e8400-e29b-41d4-a716-446655440900",
"name": "CRM Sync",
"url": "https://example.com/webhooks/ordinal",
"topics": ["post.published", "post.archived"],
"createdAt": "2026-01-15T10:00:00.000Z"
}
(Note: Create response omits description, headers, and createdBy; use Get for the full webhook object.)
Get webhook
curl -X GET "https://app.tryordinal.com/api/v1/webhooks/550e8400-e29b-41d4-a716-446655440900" \
-H "Authorization: Bearer your_api_key"
Update webhook
Send only the fields you want to change. All request body fields are optional.
curl -X PATCH "https://app.tryordinal.com/api/v1/webhooks/550e8400-e29b-41d4-a716-446655440900" \
-H "Authorization: Bearer your_api_key" \
-H "Content-Type: application/json" \
-d '{
"name": "Updated CRM Sync",
"topics": ["post.published", "post.archived", "post.content.edited"]
}'
Delete webhook
curl -X DELETE "https://app.tryordinal.com/api/v1/webhooks/550e8400-e29b-41d4-a716-446655440900" \
-H "Authorization: Bearer your_api_key"
Response:
See the Webhooks API reference for full request/response schemas, valid event types, and error handling.
All webhook deliveries use the same envelope. The request body is JSON:
{
"type": "post.published",
"data": { ... },
"createdAt": "2025-02-26T14:30:00.000Z"
}
| Field | Description |
|---|
type | The event type (e.g. post.published, post.archived) |
data | Event-specific payload. See each event page for the schema. |
createdAt | ISO 8601 timestamp when the event was emitted |
Your endpoint should respond with a 2xx status code to acknowledge receipt.
See Event types for the full list of supported events and links to each payload schema.