Novu is the open-source notification infrastructure platform that gives engineering teams a unified API for email, SMS, push, in-app, chat (Slack, Discord, Teams), and webhooks — all managed through a single visual workflow builder. When Novu goes down or a delivery channel silently fails, your users stop receiving critical transactional alerts: password resets, order confirmations, and security notifications all queue up undelivered. Vigilmon keeps watch over Novu's API health, workflow execution cadence, and self-hosted infrastructure so you catch problems before your users notice the silence.
What You'll Set Up
- HTTP uptime monitor for the Novu API endpoint
- Cron heartbeat to verify workflow execution is running on schedule
- SSL certificate monitoring for self-hosted Novu instances
- Alerting for subscriber delivery pipeline failures
- TCP port monitoring for self-hosted Novu's backing services
Prerequisites
- Novu cloud account or a self-hosted Novu instance (v0.21+)
- At least one active notification workflow with subscribers
- A free Vigilmon account
Step 1: Monitor the Novu API Endpoint
Whether you use Novu Cloud or self-host, your application depends on Novu's API gateway being reachable. Add an HTTP uptime monitor:
- Log in to vigilmon.online and click Add Monitor.
- Set Type to
HTTP / HTTPS. - For Novu Cloud enter
https://api.novu.co/v1/health-check. For self-hosted, usehttps://your-novu-domain.com/v1/health-check. - Set Check interval to
1 minute. - Set Expected HTTP status to
200. - Click Save.
Novu's /v1/health-check endpoint returns {"status":"ok"} and exercises the API gateway, database connection, and queue system in one probe.
Step 2: Add a Heartbeat to Verify Workflow Execution
Novu workflows are triggered by your application code. A workflow that never fires — because your trigger call is silently failing or the queue is stalled — won't surface in an HTTP uptime check. Use a Vigilmon cron heartbeat to confirm your most critical notification workflow executes on schedule.
- In Vigilmon, click Add Monitor → Cron Heartbeat.
- Set the expected ping interval to match your workflow trigger frequency (e.g.
60minutes for an hourly digest). - Copy the heartbeat URL (e.g.
https://vigilmon.online/heartbeat/abc123). - After triggering your Novu workflow in your application code, ping the heartbeat:
import { Novu } from "@novu/node";
const novu = new Novu(process.env.NOVU_API_KEY);
async function sendDailyDigest(subscriberId: string) {
await novu.trigger("daily-digest", {
to: { subscriberId },
payload: { itemCount: 5 },
});
// Confirm execution to Vigilmon
await fetch("https://vigilmon.online/heartbeat/abc123");
}
If the workflow trigger throws an exception or the queue stalls, the heartbeat never fires and Vigilmon alerts after the expected interval.
Step 3: Monitor Novu's Delivery Status via Webhook
Novu emits webhook events for every notification delivery attempt. Hook these into a lightweight status-check endpoint in your own API, then monitor that endpoint with Vigilmon.
Create a webhook receiver that tracks consecutive failures:
// pages/api/novu-webhook.ts (Next.js example)
import type { NextApiRequest, NextApiResponse } from "next";
let consecutiveFailures = 0;
const FAILURE_THRESHOLD = 5;
export default function handler(req: NextApiRequest, res: NextApiResponse) {
const event = req.body;
if (event.type === "notification.delivered") {
consecutiveFailures = 0;
} else if (event.type === "notification.failed") {
consecutiveFailures++;
}
res.status(200).json({ received: true });
}
// Separate health endpoint
export function deliveryHealth(req: NextApiRequest, res: NextApiResponse) {
if (consecutiveFailures >= FAILURE_THRESHOLD) {
return res.status(503).json({ status: "degraded", failures: consecutiveFailures });
}
res.status(200).json({ status: "ok", failures: consecutiveFailures });
}
Configure the Novu webhook URL in your Novu dashboard under Settings → Webhooks, pointing to your receiver endpoint. Then add a Vigilmon HTTP monitor on your /api/delivery-health endpoint expecting a 200 response.
Step 4: SSL Certificate Alerts for Self-Hosted Novu
Self-hosted Novu instances typically sit behind nginx or Traefik with a Let's Encrypt certificate. Certificate renewal failures are silent until the cert expires and your application starts throwing TLS errors.
- Open the HTTP monitor created in Step 1.
- Enable Monitor SSL certificate under the SSL section.
- Set Alert when certificate expires in less than
21 days. - Click Save.
For the Novu Studio UI (typically on a separate subdomain like app.novu.yourdomain.com), add a second SSL monitor with the same 21-day threshold.
Step 5: TCP Port Monitoring for Self-Hosted Backing Services
Self-hosted Novu depends on MongoDB, Redis, and an S3-compatible store. Add TCP monitors to detect if any backing service goes unreachable:
- In Vigilmon, click Add Monitor → TCP Port.
- Add monitors for each service port:
| Service | Default Port | What It Catches |
|---|---|---|
| MongoDB | 27017 | Database unreachable |
| Redis | 6379 | Queue and cache down |
| Novu API | 3000 | API process crash |
| Novu Worker | 3002 | Background worker crash |
For cloud-managed backing services (MongoDB Atlas, Redis Cloud), use the hostname and port from your connection string. TCP monitors will catch network-level failures that don't surface in application-layer HTTP checks.
Step 6: Configure Alert Channels
- Go to Alert Channels in Vigilmon and add Slack, email, or a webhook.
- Set Consecutive failures before alert to
2on the API monitor — transient network blips shouldn't page your on-call engineer. - Set the heartbeat alert to 1 missed ping — a missed workflow execution is always significant.
- Use Maintenance windows to suppress alerts during Novu upgrades:
curl -X POST https://vigilmon.online/api/maintenance \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{"monitor_id": "abc123", "duration_minutes": 15}'
Summary
| Monitor | Target | What It Catches |
|---|---|---|
| HTTP uptime | /v1/health-check | API gateway down, DB disconnect |
| Cron heartbeat | Heartbeat URL | Workflow trigger failures, queue stall |
| Delivery webhook | /api/delivery-health | Channel delivery failures |
| SSL certificate | Novu domain | TLS cert expiry |
| TCP port | MongoDB, Redis | Backing service failures |
Novu abstracts away multi-channel notification complexity — but that abstraction means a silent failure can cut off email, SMS, push, and chat notifications simultaneously. With Vigilmon monitoring the API health, workflow execution cadence, and self-hosted infrastructure, you get the visibility to catch and fix delivery problems before your users notice anything is wrong.