Own every alert, from firing to fixed.
Sigtake ingests alerts from all your systems, collapses duplicates into one row, and routes what matters to the right team — by email, Slack, Microsoft Teams or in-app.
Free during early accessNo credit card
Nobody reads the alert channel anymore
One incident arrives forty-seven times, nothing says who is on it, and the alert that mattered scrolled past at 3am.
- CPU above 92% on prod-web-03
- CPU above 92% on prod-web-03
- CPU above 92% on prod-web-03
- CPU above 92% on prod-web-03
- CPU above 92% on prod-web-03
- CPU above 92% on prod-web-03
+ 41 more · no owner · nobody acknowledged
MRAcked by Marta Ruiz · 2m · team Infrastructure
- 02:58CPU spikes on prod-web-03. The channel starts repeating it.
- 05:16Forty-seven messages later: no owner, nobody acknowledged.
- SigtakeOne row that counts. One owner who has it.
One row per incident, not forty
The whole loop between “it fired” and “it’s fixed”: ingestion, deduplication, routing and acknowledgement.
- One fingerprint per incidentSource, title and severity decide what counts as a repeat, scoped to one project. Staging and production stay two incidents.
- Notified at 1, 10, 25, 50 and 100Then every hundredth. Forty-seven repeats are three notifications, not forty-seven.
- Acknowledge, discuss and resolve in the incidentComments with @mentions, and updates that stream in live so everyone sees the same thing.
- The API key picks the projectProduction and staging keys land alerts in their own project. There is no project id to pass.
- The
team_codepicks the teamEvery alert belongs to one team. Teams can span projects. - The team’s channels in that project deliver itConfigure a channel once and reuse it across teams with per-team toggles.
- Email, Slack, Microsoft Teams and in-appIn-app is always on; the rest you switch per team.
- One Slack workspace, a channel per projectRepeats reply in the thread of the first card, and the card changes colour as the alert is acknowledged and resolved.
- A broken channel never blocks the othersEmail retries up to three times. Discord and Google Chat are in progress.


Slack#alerts-prod · 02:58 (edited)
[CRITICAL] CPU above 92% on prod-web-03
Status Acknowledged · Occurrences 47
Acknowledged by Marta Ruiz
View in SigtakeEmail04:10
[CRITICAL] CPU above 92% on prod-web-03 (×25)
Microsoft TeamsAlerts · 03:25
[CRITICAL] CPU above 92% on prod-web-03 · Occurrences 10
Notified at occurrences 1 · 10 · 25 — not 47 times.
One pipeline, from any source to the right team
Alerts you send and the checks Sigtake runs for you take the same path: deduplicated, routed, delivered.
- Alerts API & SDKs
- Uptime checks
- SSL expiry
- Signal rules
- PAYMENTS
- PLATFORM
- WEB
- Slack
- Microsoft Teams
- In-app
Anything that can POST: Prometheus, Datadog, Grafana, Sentry, Zabbix, cron, a webhook.
Monitoring that files its own alerts
Watch your endpoints and your numbers from the same place you work the incidents. A failed check or a broken threshold becomes a real alert, deduplicated and routed like every other.


signals.send(). Thresholds over a window (avg, sum, count, min, max or last), anomaly detection that learns normal for the hour and weekday, and a heartbeat when a metric stops reporting.Live in five minutes
Three steps from sign-up to the first alert reaching your team.
- Create an API keyIn your project, under API Keys. The key decides which project an alert lands in.
- Create a team and attach a channelThe team gets a code like
K7Q2XD. Attach email, Slack or Microsoft Teams; in-app is always on. - Send your first alertOne request with the team’s code. It shows up live and reaches the team’s channels.
npm install @sigtake/sdk
import { Sigtake } from '@sigtake/sdk'; const sigtake = new Sigtake({ apiKey: process.env.SIGTAKE_API_KEY }); await sigtake.alerts.ingest({ title: 'Payment webhook timeout', severity: 'critical', source: 'payments-api', team_code: 'K7Q2XD', });
pip install sigtake
import os from sigtake import Sigtake with Sigtake(api_key=os.environ["SIGTAKE_API_KEY"]) as sigtake: sigtake.alerts.ingest( title="Payment webhook timeout", severity="critical", source="payments-api", team_code="K7Q2XD", )
POST /api/ingest
curl -X POST https://api.sigtake.com/api/ingest \ -H "X-Api-Key: $SIGTAKE_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "title": "Payment webhook timeout", "severity": "critical", "source": "payments-api", "team_code": "K7Q2XD" }'
201 CreatedOpen in Sigtake and on its way to the Payments team.
Official SDKs for Node and Python: zero dependencies, typed, ESM + CJS, sync and async · npm · PyPI · GitHub
Light on purpose
Sigtake skips the parts that make incident tools heavy: rotas to keep current, escalation trees to configure, pager apps to install. What’s left is live in five minutes.
- Teams, not rotationsEvery alert reaches the whole team that owns it. No schedule to maintain, and nobody missed because last week’s rota was never updated.
- Repeats bring it backAn alert that keeps firing notifies again at 10, 25, 50 and 100 occurrences. Urgency follows the incident, with no escalation policy to write.
- Where your team already worksEmail, Slack, Microsoft Teams and in-app. No pager app to roll out, no phone numbers to collect.
Start free, scale when you’re paged
Everything’s free while we’re in early access: unlimited users, teams, alerts and monitors, no credit card. Paid plans will come as we grow.
$0per month, per organization
The whole product, for as long as early access lasts.
- Unlimited users, teams and projectsWith as many API keys as your systems need.
- Unlimited alert ingestionDeduplicated into incidents, with occurrence counts.
- Email, Slack, Microsoft Teams and in-appEvery channel we ship, on every team.
- Website and signal monitoringThresholds, anomaly detection and heartbeats.
- Node and Python SDKsTyped, zero dependencies, sync and async.
- You hear it by email firstPricing changes are announced to every organization owner before they take effect, never discovered inside the product.
- Nothing you configured is deletedProjects, teams, channels, API keys and alert history stay exactly where they are while you decide.
- Nothing can be charged silentlyThere’s no card on file to charge. A paid plan starts when you choose one, not when a trial expires.
Before you ask
Do I have to replace my current monitoring?
No. Sigtake sits downstream of what you already run. Anything that can send an HTTP request with its own JSON body can post an alert: a cron job, a CI step, the SDKs. Tools with a fixed webhook format, like Alertmanager, need a small relay in between.
How does it decide two alerts are the same incident?
A fingerprint over source, title and severity, scoped to one project. The same failure in staging and production stays two separate incidents.
Who gets notified?
The team named by the alert’s team code, through that team’s channels in the alert’s project. In-app always lands, so nothing is lost while a channel is misconfigured.
What happens if a channel is down?
Email retries up to three times with exponential backoff, and a delivery that still fails is marked as failed. A broken Slack or Microsoft Teams channel never blocks the email, and in-app always lands.