WWaSparks Social Developers

Reference

Event types

Every webhook event, who can subscribe to it and what its data holds.

Every event is delivered in the same envelope: id, type, created_at, org_id, workspace_id and data. How to receive and verify them is in Webhooks. The shape of data depends on the type, as listed here.

json
{
  "id": "evt_0192a7c4-5d00-7b88-8f99-a0b1c2d3e001",
  "type": "comment.created",
  "created_at": "2026-11-02T09:00:00Z",
  "org_id": "0192a7c1-5d2e-7a10-9c4b-2f6e8d1a3b01",
  "workspace_id": "0192a7c1-5d2e-7a10-9c4b-2f6e8d1a3b02",
  "data": { "comment": { "…": "…" } }
}

Who can subscribe:

Events that are not sent yet can still be subscribed to. Ignore event types you do not know; more will be added.

Accounts

data is { "account": SocialAccount }. Org events.

Type Sent when
account.connected A user finished a connect session and the account was connected, or a reconnect refreshed an existing one.
account.needs_reauth The platform stopped accepting the account's credential (expired, revoked, or a permission was removed). Publishing and replies fail with account_needs_reauth until you reconnect.
account.disconnected The account was disconnected through the API, or the user removed the app on the platform. Its tokens are deleted and its history kept.

Posts

Type Sent when data
post.published Every target of the post is published. { "post": PostSummary }
post.partially_published Some targets are published and some failed (status PARTIAL). Failed targets can be retried. { "post": PostSummary }
post.failed No target could be published. { "post": PostSummary }
post.target.published One account's copy of the post is live. { "post_id", "target": PostTarget }
post.target.failed One account's copy of the post failed; target.error says why. { "post_id", "target": PostTarget }

These are org events. A PostSummary is { id, workspace_id, status, targets: [{ id, account_id, status, external_post_id, permalink }] }. It is not the whole post: fetch GET /v1/posts/{postId} for the text, media and errors. external_post_id and permalink are empty strings when not known.

Comments

data is { "comment": Comment }, the comment as it now stands. Org events.

Type Sent when
comment.created A new comment on one of the org's posts, including replies and comments posted through the API (is_own: true).
comment.updated The text changed, the comment was unhidden, or a LinkedIn organization commenter's name was filled in.
comment.hidden The comment was hidden on the platform.
comment.deleted The comment was deleted on the platform, by its author, the page or the API.

Conversations and messages

Org events.

Type Sent when data
conversation.created Someone wrote to one of the org's accounts for the first time. { "conversation": Conversation }
message.received An incoming message. { "conversation_id", "message": Message }
message.sent An outgoing message reached the platform, whether sent through the API or from the platform's own inbox. { "conversation_id", "message": Message }
message.delivered The platform reports the message delivered. { "conversation_id", "message": Message }
message.read The person read the message. { "conversation_id", "message": Message }
message.failed The message could not be sent; message.error.code says why. send_outcome_unknown means we never learned whether it arrived. { "conversation_id", "message": Message }

Plan limits

Subscribable now, not sent yet. Calls that would go over a limit already answer 402 quota_exceeded.

Type Audience data
quota.warning Org events { "limit", "used", "max" }: a plan limit is at 80%.
quota.exceeded Org events { "limit", "used", "max" }: a plan limit is reached.
org.quota.warning Partner events { "org_id", "limit", "used", "max" }
org.quota.exceeded Partner events { "org_id", "limit", "used", "max" }

Orgs and usage

Partner events. For org.*, data is { "org": Org }, the partner's view of the org, with counts only.

Type Sent when
org.created One of your orgs was created.
org.updated Its name, plan, timezone or external_ref changed.
org.suspended Its Content API calls now answer 403 org_suspended.
org.resumed The org is active again.
org.closed The org was closed for good.
org.transferred_out The org moved to another partner. This is the last event you get about it.
usage.daily_ready Once a day, after the previous UTC day is counted: { "day", "totals" } across all your orgs. org_id is null. See Billing and usage.

Webhooks

Type Audience Sent when
webhook.disabled Org and partner A subscription was disabled after 20 dead deliveries in a row. It goes to the same owner's other active subscriptions. data is { "subscription_id", "reason" }. Re-enable with PATCH and "status": "ACTIVE".
webhook.test Not subscribable A test delivery from POST …/webhook-subscriptions/{subscriptionId}/test. data is { "subscription_id", "message" }. It is not stored or retried.

Next: Error codes