Instrument once.
We handle the rest.
Wrap your workflows with the SDK. Upkeel's platform detects every silent failure, fires the alerts, escalates to the right people, and shows you exactly what happened — without touching your application code again.
Start free trialSeconds to install. Nothing else to configure.
The SDK is pure telemetry — it records what happened and when. That's the entire job. No alerting logic, no retry handling, no dashboards to wire up in your application. Install it once and forget it. Everything else happens on our side.
# One command. That's the entire setup.npm install @upkeel/sdkimport { upkeel } from '@upkeel/sdk'
const keel = upkeel.init(process.env.UPKEEL_API_KEY)
// Your existing checkout code — unchangedawait validateCart(order)await stripe.charges.create({ amount: order.total })
// One line: Stripe webhook must arrive within 30skeel.expect('payment.succeeded', { within: '30s', meta: { orderId: order.id }})
// In your webhook handler, confirm itapp.post('/webhooks/stripe', (req) => { keel.fulfill('payment.succeeded', { id: req.body.payment_intent })})We watch your expectations so you don't have to.
Every expectation you register runs through our server-side detection pipeline. We check for missing events on multiple schedules — down to the second — using heuristic rules, statistical baselines, and AI-powered pattern analysis. All of it happens on our infrastructure, not yours.
We send the alerts. You write zero notification code.
When Upkeel detects a missing event or a degrading flow, we handle the entire notification chain — initial alert, escalation, incident ticket. No webhooks to configure in your application, no Slack bots to build, no on-call routing logic to maintain. Configure your channels once in the dashboard and you're done.
Uptime charts, flow health, and AI summaries — out of the box.
Your Upkeel dashboard is your integration control center. Uptime percentages, event volumes, expectation fulfillment rates, step timing trends — all visible immediately with no setup. The AI insight layer surfaces what matters in plain language, so you don't have to dig through data to know what's happening.
For teams who want their app to self-heal.
Most teams are well served by Upkeel's alerting alone. But if you also want your running application to react to integration health — disable checkout, switch email providers, pause a queue — the SDK's optional status polling makes that clean and straightforward. Zero required complexity for teams who don't need it.
// Optional — react to integration health in your UI// Skip this and Upkeel still alerts your team automatically
keel.on('payment.succeeded', 'failing', () => { checkout.disable() banner.show('Payments temporarily unavailable')})
keel.on('payment.succeeded', 'recovered', () => { checkout.enable() banner.hide()})
// Switch to fallback provider when emails start failingkeel.on('email.delivered', 'failing', () => { emailProvider.setFallback('postmark')})Test that your flows do what you think they do.
@upkeel/testing brings Upkeel's entire detection model into your test suite. Assert on expectations, simulate known failure scenarios, and advance virtual time in a single line — no real waiting, no network calls, no flakiness.
import { createTestKit } from '@upkeel/testing'
it('detects a missing Stripe webhook', async () => { const kit = createTestKit()
// Run your real checkout code await checkout({ amount: 9900 })
// The expectation was registered — now simulate time passing // with no webhook arriving await kit.advanceTime('31s')
// Upkeel should have caught it kit.expectation('payment.succeeded') .wasNotFulfilled() .andTriggeredAlert()})Frequently asked questions
@upkeel/sdk, @upkeel/testing, and @upkeel/scenarios. The backend detection engine, alerting pipeline, and dashboard are proprietary. The SDK being open source means you can audit exactly what runs in your production application before shipping it.Ready to see what you've been missing?
Join the waitlist — SDK access rolling out soon.