post.publish_failed
Fired when a post fails to publish
All webhook payloads follow a consistent top-level structure with event-specific data nested within the data object.
typestring
The event type (e.g. post.publish_failed).
stringdataobject
Event-specific payload for this webhook.
objectdata.postobject
The post that failed to publish.
objectdata.post.idstring
Post ID.
stringdata.post.titlestring
Post title.
stringdata.post.channelstring
Channel where publish failed.
stringdata.post.errorstring
Error message describing the failure.
stringdata.post.campaign?object | null
Campaign if assigned. Contains id, name, startDate, and endDate.
object | nulldata.post.urlstring
Ordinal post URL.
stringdata.post.profileobject
Profile that attempted to publish. Contains id, name, and detail.
objectdata.post.scheduledPublishAtstring
ISO 8601 timestamp when publish was attempted.
stringdata.post.workspaceobject
Workspace the post belongs to. Contains id, slug, and name.
objectdata.post.createdByobject
User who created the post. Contains id, firstName, lastName, and email.
objectdata.post.failedAtstring
ISO 8601 timestamp when the publish failed.
stringcreatedAtstring
ISO 8601 timestamp when the webhook event was created.
string{
"type": "post.publish_failed",
"data": {
"post": {
"id": "550e8400-e29b-41d4-a716-446655440001",
"title": "Q4 Product Launch Announcement",
"channel": "LinkedIn",
"error": "Token expired",
"campaign": null,
"url": "https://app.tryordinal.com/acme/posts/550e8400-e29b-41d4-a716-446655440001",
"profile": {
"id": "550e8400-e29b-41d4-a716-446655440002",
"name": "Acme Inc",
"detail": "acme-inc"
},
"scheduledPublishAt": "2025-03-01T14:00:00.000Z",
"workspace": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"slug": "acme",
"name": "Acme Inc"
},
"createdBy": {
"id": "550e8400-e29b-41d4-a716-446655440010",
"firstName": "Jane",
"lastName": "Doe",
"email": "jane@example.com"
},
"failedAt": "2025-03-01T14:00:05.000Z"
}
},
"createdAt": "2025-03-01T14:00:05.000Z"
}