Webhook events
Each endpoint picks the events it wants. The same events are in the events feed and in get_updates on MCP.
| Event | When it fires |
|---|---|
post.published |
A scheduled or queued post went live on X. |
post.failed |
X rejected a post. The payload carries the reason. |
post.outperforming |
A recent post reached at least 2× the account’s normal impressions. Fires once per post, after metrics sync. |
post.automation_ran |
An auto-repost, auto-plug or auto-DM ran on a post. |
article.published |
An X Article went live. |
mention.received |
Someone mentioned the account. Arrives at the plan’s mention sync cadence. |
reply.received |
Someone replied to the account’s post. Arrives at the sync cadence. |
lead.found |
A Signals agent found a lead. |
dm.received |
A direct message arrived. |
dm.campaign_completed |
A DM campaign finished sending. |
contacts.import_completed |
A follower or list import finished. |
ask.task_completed |
A job handed to Xholic with ask_xholic or draft_with_xholic finished, failed or was cancelled. |
worker.batch_ready |
A Worker run finished and drafts are waiting for review. |
credits.low |
AI credits fell below 10% of the plan’s monthly amount. |
x_account.reconnect_needed |
X access expired. The owner must reconnect the account in Xholic. |
subscription.changed |
The subscription started, ended, paused, resumed or lapsed. |
connection.revoked |
An API key or OAuth app was revoked. |
webhook.test |
A test event sent from Settings. |
Every event uses the envelope shown in Webhooks: id, type, occurred_at, account, data and api_version.
