Webhooks: get a JSON POST for every matching news item
Quantisnow webhook reference: add a URL on /alerters, get a JSON POST for each alert on your followed tickers, payload fields, a sample payload and Slack or Discord setup.
Key takeaways
- Plus accounts can add any webhook URL up to 767 characters on the Alerters page at /alerters.
- Quantisnow sends a JSON POST to each webhook for every news item that matches a followed ticker with the Webhook channel on.
- The payload includes url, source, title, companies, published_at, language, category, industries, sectors, tags, related_tickers and summary.
- The Send test button posts a sample payload and reports the HTTP status your endpoint returned.
- Slack (hooks.slack.com) and Discord (discord.com) webhook URLs work directly: live alerts are reformatted into native Slack and Discord messages.
A Quantisnow webhook sends a JSON POST to a URL you choose for every news item that matches your alert rules. It is the real-time way to get the wire into your own system, a trading tool, or a chat channel. Webhooks are part of Plus and are set up on the Alerters page.
How webhooks fit with alerts
Webhooks are one of three alert channels, alongside Email and Push. A webhook fires when:
- A new item mentions a ticker you follow, and
- The item matches one of the categories enabled for that ticker, and
- The Webhook channel is switched on for that ticker.
Set categories and channels per ticker on /follows. See Alerts for the full rules.
How to add a webhook
- Subscribe to Plus at /pricing.
- Go to /alerters and scroll to Webhooks.
- Click + Add webhook.
- Paste your endpoint URL, for example https://example.com/hook. The URL can be up to 767 characters.
- Click Create. The webhook appears in the list with its configured date.
- On /follows, open each ticker's alert menu and switch on Webhook under Channels.
You can add more than one webhook. Matching items are sent to every webhook on your account.
How to test a webhook
- On /alerters, click Send test next to the webhook.
- Quantisnow posts a sample payload to your URL.
- If your endpoint responds with a 2xx status within 10 seconds, you see Test webhook delivered. Otherwise the message shows the status your endpoint returned, such as "webhook responded 404 Not Found".
Click Webhook payload format on the same page to see the sample payload.
How to remove a webhook
Click Remove next to the webhook and confirm. Deliveries to that URL stop.
Request format
| Property | Value |
|---|---|
| Method | POST |
| Content-Type | application/json |
| Body | One JSON object per news item |
| Success | Respond with 200 or 204 within 3 seconds (the Send test button accepts any 2xx within 10 seconds) |
Payload fields
| Field | Type | Description |
|---|---|---|
| url | string | The item's Quantisnow page |
| source | string | Link to the original document, such as the SEC filing or newswire release |
| title | string | Headline |
| companies | array | Companies the item is about, each with ticker, exchange and name |
| published_at | string | Publish time in UTC, ISO 8601 |
| discovered_at | string, optional | When Quantisnow first saw the item |
| processed_at | string, optional | When Quantisnow finished processing the item |
| important | boolean | Whether the item is flagged as important (the same flag the "Important only" alert setting uses) |
| language | string | Language code, for example en |
| category | string | Category label, such as SEC Form 8-K or Analyst Upgrade. See Event categories. |
| industries | array of strings | Industries of the companies |
| sectors | array of strings | Sectors of the companies |
| tags | array of strings | Tags on the item |
| related_tickers | array of strings | Other tickers related to the item |
| summary | string | Short summary of the item |
Example payload
This is a hypothetical item for illustration:
{
"url": "https://www.quantisnow.com/insight/acme-therapeutics-files-form-8-k-123456",
"source": "https://www.sec.gov/Archives/edgar/data/0000000000/000000000026000001/0000000000-26-000001-index.htm",
"title": "SEC Form 8-K filed by Acme Therapeutics Inc.",
"companies": [
{ "ticker": "ACME", "exchange": "NASDAQ", "name": "Acme Therapeutics Inc." }
],
"published_at": "2026-10-23T20:05:12Z",
"discovered_at": "2026-10-23T20:05:13Z",
"important": true,
"language": "en",
"category": "SEC Form 8-K",
"industries": ["Biotechnology"],
"sectors": ["Health Care"],
"tags": [],
"related_tickers": [],
"summary": "Acme Therapeutics reported a material agreement under Item 1.01."
}
Learn what an 8-K item like 1.01 means in Form 8-K explained.
Sending alerts to Slack or Discord
Slack and Discord incoming webhook URLs work directly. When a webhook URL is on hooks.slack.com or discord.com, live alerts are reformatted into a native Slack or Discord message instead of the raw JSON above.
- In Slack, create an incoming webhook for a channel (or in Discord, open channel settings, then Integrations, then Webhooks) and copy its URL.
- Paste the URL into the webhook field on Alerters and save.
- Make sure the tickers you care about have the Webhook channel on in their alert rules.
The Send test button always posts the raw JSON sample, so a test against a Slack or Discord URL can fail even though live alerts will arrive formatted. Judge a Slack or Discord hook by the next real alert.
Want a custom message format instead? Point the webhook at a small relay of your own, such as a serverless function, and reformat there:
export default async function handler(req) {
const item = await req.json();
const tickers = item.companies.map((c) => c.ticker).join(", ");
await fetch(process.env.SLACK_WEBHOOK_URL, {
method: "POST",
headers: { "content-type": "application/json" },
body: JSON.stringify({ text: `${tickers}: ${item.title}\n${item.url}` }),
});
return new Response("ok");
}
For Discord, send { "content": "..." } instead of { "text": "..." }.
Good practices
- Respond fast. Live deliveries time out after 3 seconds and count as failed unless your endpoint returns 200 or 204. Redirects are not followed. Return right away and do slow work afterwards.
- Deduplicate on url. Each item has a unique url, which makes a good key if your system might see the same item twice.
- Keep the URL private. Anyone with your endpoint URL could post to it, so use a hard-to-guess path.
- Watch volume. Following many tickers with broad categories can send many requests on busy mornings. For high-volume webhooks, contact contact@quantisnow.com.
Prefer a feed you can poll without Plus? Use RSS feeds, which run on a 3-minute delay. All options are compared in Integrations and data access.
FAQ
Do Quantisnow webhooks require Plus?
Yes. Webhook delivery is a Plus feature, along with email and push alerts. Plus is $59.99 per month.
What does a Quantisnow webhook send?
A JSON POST for each matching news item, with fields including url, source, title, companies, published_at, category, sectors, industries, tags, related_tickers and summary.
Can I send Quantisnow alerts straight to Slack or Discord?
Yes. Paste a Slack (hooks.slack.com) or Discord (discord.com) incoming webhook URL on /alerters and live alerts arrive as native messages. The Send test button posts raw JSON, so it may fail against those URLs even though real alerts work.
How long can a webhook URL be?
Webhook URLs can be up to 767 characters.
Can I get every item on the wire by webhook?
Webhooks fire for your followed tickers and their alert categories. For high-volume webhooks or programmatic access to more of the wire, email contact@quantisnow.com.