Skip to content

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.