10-DAY TRIALWatch one public account free; monitor deliveries never spend API credits.SEE PRICING

Product · Twitter webhook & account monitor

Twitter account monitor — new posts to Discord or your webhook.

Watch any public X/Twitter account. When xfetch observes a new post, route it to your team’s Discord, your generic signed webhook, or both — without polling code to run. Monitor deliveries never spend API credits.

See monitor pricing 10-day trial · No card required · Timeliness objective P99 < 15s to first attempt · methodology

Set up your Twitter account monitor

01

Choose a public account

Select a dashboard suggestion or resolve the exact @handle you want to watch.

02

Choose where posts go

Connect a Discord channel, add a generic webhook endpoint, or use both delivery branches.

03

Start the monitor

When xfetch observes a new post, it sends the configured notification or signed POST. No polling job to schedule.

Send Twitter posts to Discord — no bot to run

When xfetch observes a post from a watched account, it can send a notification card to the channel where your team already works.

A notification card, not a bare link

See the author name, @handle, post text, an optional avatar, and an Open on X link.

The channel your team already watches

Deliveries land in the Discord channel you pick, so alerts live where the conversation already is.

Hand setup to the channel's admin

Send a one-time setup link and a Discord channel manager in another server can authorize the channel — no xfetch login needed.

No Discord bot to host

Choose the account and authorize the channel from the dashboard. There is no bot process for your team to deploy.

Receive posts through a signed Twitter webhook

The generic webhook branch receives a tweet.created POST your pipeline can verify, dedupe, and act on. Discord receives a notification card instead of this signed JSON payload.

POSTyour webhook
tweet.created
Headers
content-type: application/json
x-xfetch-event-id: evt_example
x-xfetch-delivery-id: dlv_example
x-xfetch-timestamp: 2026-08-18T12:34:56.000Z
x-xfetch-signature: v1=<hmac-sha256>
Valid example JSON
{
  "type": "tweet.created",
  "event_id": "evt_example",
  "delivery_id": "dlv_example",
  "timestamp": "2026-08-18T12:34:56.000Z",
  "monitor": {
    "subscription_id": "mon_example",
    "account": {
      "id": "123456",
      "username": "acme",
      "name": "Acme"
    }
  },
  "tweet": {
    "id": "987654321",
    "text": "A new product update",
    "author_id": "123456",
    "created_at": "2026-08-18T12:34:50.000Z",
    "lang": "en",
    "like_count": 12,
    "retweet_count": 3,
    "reply_count": 2,
    "quote_count": 1,
    "bookmark_count": 4,
    "is_quote_status": false,
    "entities": {
      "hashtags": [],
      "urls": [],
      "mentions": []
    }
  }
}

Verify generic webhook deliveries

Each generic webhook POST carries x-xfetch-signature (HMAC-SHA256), so your receiver can authenticate it before acting.

Transient retries built in

Transient delivery failures retry automatically with bounded backoff.

Dedupe-safe

event_id and delivery_id are stable, so dropping duplicates is one lookup.

Verify the raw request before parsing JSON

Build the signed input from the timestamp, event ID, delivery ID, and exact raw request body in that order. Compare the result with x-xfetch-signature using a timing-safe equality check.

HMAC-SHA256raw request body
verification
Signing formula
HMAC-SHA256(secret, timestamp + '.' + event_id + '.' + delivery_id + '.' + raw_body)
Node.js
import { createHmac, timingSafeEqual } from "node:crypto";

const signedPayload = [timestamp, eventId, deliveryId, rawBody].join(".");
const expected = `v1=${createHmac("sha256", secret)
  .update(signedPayload)
  .digest("hex")}`;
const actualBuffer = Buffer.from(signature, "ascii");
const expectedBuffer = Buffer.from(expected, "ascii");
const valid =
  /^v1=[0-9a-f]{64}$/.test(signature) &&
  actualBuffer.length === expectedBuffer.length &&
  timingSafeEqual(actualBuffer, expectedBuffer);

Treat the delivery as your wake-up signal. When the workflow needs depth — the author’s profile, the thread, engagement context — call the /v1 read API from your handler. Twitter data API for AI agents → API reference →

Twitter account monitoring workflows

Trading & market desks

Use a signed webhook to start signal ingestion when xfetch observes a post from a watched account.

See the Bitcoin build →

Competitive & founder intel

Route observed product announcements and founder posts into the channel your team already reads.

Community & brand ops

Use one Discord channel as a shared tweet tracker for the public accounts your ecosystem follows.

AI agents

A generic tweet.created webhook wakes your agent; /v1 can then add the author, thread, and engagement context.

See the agent pipeline →

Need topics or keywords instead of a known account? Use the Twitter Search API for keyword monitoring →

Twitter account monitor vs notifications and polling

X app notificationsGeneric automation toolsDIY poller + data APIxfetch monitor
When you find outas personal app notifications arrivedepends on the tool's trigger schedulewhen your poller runs — if it's healthyP99 < 15s objective to first delivery attempt for eligible events
Where it landsyour app or device notificationsthe connectors your tool supportswherever you build itDiscord, a generic signed webhook, or both
Can it trigger machinesnot as a signed webhookdepends on the available connectorsyes — you build ityes — signed tweet.created webhook
Setup & upkeepenable notifications per accountconfigure each workflowcode, hosting, cursors, rate limitsdashboard-configured; no polling job to run
Cost shapeincluded with the appvaries by tool and taskinfra + per-read coststrial or plan capacity; extra-account rate is $3 per account per month

Twitter account monitor pricing

$3 / extra account / month
  • Free & PAYG: watch 1 account free for 10 days — no card needed.
  • Monthly plans include monitor accounts: Starter 2 · Growth 5 · Pro 10 · Scale 25.
  • One monitored account can deliver to Discord and a signed webhook at the same time.
  • Deliveries never spend your credits.
See all plans →

Twitter webhook and account monitor FAQ

What is a Twitter account monitor?
A Twitter account monitor watches a selected public X/Twitter account. When xfetch observes a new post, it can send a Discord notification card, a generic signed tweet.created webhook, or both.
How do I send Twitter posts to Discord?
Create a monitor for a public @handle and connect the Discord channel your team uses. Observed posts arrive as notification cards, so the channel can work as a shared tweet tracker without a bot process for you to host.
Do monitor deliveries cost API credits?
No — deliveries never spend your credits. Free and PAYG include 1 account for a 10-day trial, monthly plans include 2–25 accounts, and the extra-account rate is $3 per account per month.
Can xfetch monitor keywords or search terms?
Account monitors watch selected public accounts. Keyword and topic tracking is a Twitter Search API workflow: run the query you care about on /v1 search endpoints and page through results on your own schedule.
How does the signed Twitter webhook work?
Generic webhook deliveries carry an x-xfetch-signature header (HMAC-SHA256) plus event_id and delivery_id values. Verify the signature against the raw request body before parsing JSON, then use the IDs to drop duplicates. Discord receives a notification card rather than a signed tweet.created payload.
What happens when a delivery fails?
Transient delivery failures retry automatically with bounded backoff. Other failures update destination health and may pause the channel.
Who can set up the Discord channel?
You can connect a channel from the dashboard. Or send a one-time setup link — a Discord channel manager in another server can authorize the channel without an xfetch login, scoped to that one monitor.
How fast do deliveries arrive?
The published monitor timeliness objective is P99 < 15s, measured from an eligible source-event timestamp to the first delivery attempt. The methodology does not treat destination acceptance or post completeness as part of that measurement.

Watch your first account
free for 10 days.

Connect Discord, a generic signed webhook, or both. When xfetch observes a new post, it routes it to the destinations you choose.

See all pricing