Listmonk is a self-hosted, high-performance newsletter and mailing list manager built in Go, designed to handle millions of subscribers with a minimal server footprint. Organizations use Listmonk to send newsletters, transactional campaigns, and bulk notifications without depending on paid email service providers — giving them full control over subscriber data, campaign history, and delivery infrastructure. When Listmonk goes down, scheduled campaigns fail to send, subscriber imports stall, and any application that uses Listmonk's API to trigger transactional emails stops delivering. Missing a campaign send window — especially for time-sensitive announcements or newsletters — can mean thousands of missed communications with no automatic retry. Vigilmon gives you external visibility into Listmonk's health endpoint, admin dashboard, campaign API, and SSL certificate so failures are caught within 60 seconds.
What You'll Build
- A monitor on Listmonk's
/healthhealth endpoint - An HTTP monitor for the Listmonk admin dashboard
- An HTTP monitor for the campaign API liveness check
- SSL certificate monitoring for your Listmonk domain
- An alerting setup that separates application failures from API degradation
Prerequisites
- A running Listmonk instance with a public or network-reachable domain
- HTTPS configured (e.g.,
https://listmonk.example.com) - A free account at vigilmon.online
Step 1: Verify Listmonk's Health Endpoint
Listmonk exposes a health check at /health that returns a simple JSON confirmation when the application server and PostgreSQL database are healthy:
curl https://listmonk.example.com/health
A healthy instance returns HTTP 200 with this JSON body:
{"message": "OK"}
This endpoint requires no authentication. A 200 with "message":"OK" confirms the Go application server is running and PostgreSQL (Listmonk's database for subscribers, lists, campaigns, and templates) is reachable. A non-200 response or a timeout indicates the server process has crashed, the database is unreachable, or the container is restarting.
Step 2: Create a Vigilmon HTTP Monitor for the Health Endpoint
- Log in to Vigilmon → Add Monitor → HTTP.
- URL:
https://listmonk.example.com/health. - Check interval: 60 seconds.
- Response timeout: 10 seconds.
- Expected status:
200. - Keyword:
OK. - Label:
Listmonk Health. - Click Save.
This monitor catches:
- Listmonk Go server crashes or panics
- PostgreSQL connectivity failures — Listmonk stores all subscriber records, mailing lists, campaign definitions, templates, and delivery statistics in PostgreSQL; a database failure means no campaigns can be queued or sent
- Worker goroutine failures that cause the campaign sending queue to stall silently
- Container restarts from OOM kills during large bulk-send operations
The OK keyword check ensures the server is reporting a healthy application state — not just a 200 from a reverse proxy that can't reach the backend.
PostgreSQL dependency and campaign timing: Listmonk's Go workers read campaign queues and subscriber batches from PostgreSQL at send time. If the database becomes unavailable mid-campaign, Listmonk's workers stop processing — subscribers who haven't received the campaign yet won't receive it during the outage, and the campaign may need to be manually resumed or re-queued after recovery. Early detection of database failures is critical for campaigns with hard timing windows.
Step 3: Monitor the Listmonk Admin Dashboard
The Listmonk admin dashboard is a single-page application where you manage subscribers, design campaigns, configure mailing lists, and schedule sends. Monitor it independently from the health API to catch reverse proxy failures and static file serving issues:
- Add Monitor → HTTP.
- URL:
https://listmonk.example.com. - Check interval: 60 seconds.
- Expected status:
200. - Keyword:
listmonk. - Label:
Listmonk Admin Dashboard. - Click Save.
This monitor catches nginx or reverse proxy failures, static asset serving errors, and SPA load failures that prevent access to the dashboard — even when the backend API and database are healthy. A broken dashboard means no campaign creation, no subscriber management, and no list configuration until the reverse proxy is restored.
Step 4: Monitor the Campaign API Liveness
Listmonk exposes a REST API that external applications use to manage lists, trigger campaigns, and import subscribers programmatically. The /api/campaigns endpoint requires authentication and returns 401 Unauthorized without valid credentials — confirming the API is alive and processing requests:
curl -i https://listmonk.example.com/api/campaigns
# Expected: HTTP 401 (API is alive, authentication is enforced)
- Add Monitor → HTTP.
- URL:
https://listmonk.example.com/api/campaigns. - Check interval: 60 seconds.
- Expected status:
401. - Label:
Listmonk Campaign API. - Click Save.
A 401 is the correct liveness signal: it proves the Go API server accepted the connection, parsed the request, evaluated authentication, and returned a proper HTTP response. A 502 or 504 means the reverse proxy is running but the Listmonk process is not responding. A timeout means the application layer has failed entirely and any external system using the API to schedule campaigns or import subscribers is silently failing.
Step 5: Monitor SSL Certificates
Listmonk is typically accessed by your marketing, content, and operations teams on a regular schedule for campaign sends. An expired SSL certificate:
- Locks all team members out of the admin dashboard simultaneously
- Breaks any external automation that calls the Listmonk API to trigger transactional campaigns
- May interfere with Listmonk's outbound SMTP connections if TLS validation is involved in the mail server configuration
- Disrupts subscriber import pipelines from external CRM or analytics tools
- Add Monitor → SSL Certificate.
- Domain:
listmonk.example.com. - Alert when expiry is within: 30 days.
- Alert again: 14 days, 7 days, 3 days, 1 day.
- Click Save.
Step 6: Configure Alerting
In Vigilmon under Settings → Notifications, configure your alert channels:
| Monitor | Trigger | Action |
|---|---|---|
| /health | Non-200 or OK missing | Check Listmonk container; inspect PostgreSQL connectivity; review Go server logs |
| Admin Dashboard | Non-200 or keyword missing | Check nginx/reverse proxy; verify static assets served; inspect container logs |
| Campaign API | Non-401 response | Check Go API process; verify worker goroutines are running; inspect campaign queue state |
| SSL certificate | < 30 days to expiry | Renew certificate; verify Let's Encrypt auto-renewal is functioning |
Alert after: 2 consecutive failures for HTTP monitors. Route alerts to both your infrastructure team and the team responsible for campaign schedules — a Listmonk outage that spans a scheduled send window requires manual intervention to confirm which subscribers were missed.
Common Listmonk Failure Modes and What Vigilmon Catches
| Scenario | Vigilmon monitor | |---|---| | Go server process crash or panic | Health endpoint unreachable; alert within 60 s | | PostgreSQL down or disk full | Health check fails; all campaign sends stall immediately | | Campaign queue worker goroutine deadlock | Health check may pass but sends stop; alert triggers before scheduled campaigns are missed | | SMTP relay failure | Listmonk stays healthy but emails bounce; use SMTP-level monitoring alongside Vigilmon | | Reverse proxy misconfiguration after upgrade | Dashboard monitor fires; API may still respond | | Static SPA assets missing after update | Dashboard keyword check fails; blank page on load | | SSL certificate expires | All admin and API access blocked; automation breaks | | Container OOM kill during large bulk send | Health endpoint goes down; mid-campaign send interrupted | | DNS misconfiguration | All monitors fire simultaneously | | PostgreSQL connection pool exhaustion under load | Health check degrades; API returns 500 errors |
Listmonk gives you full control over your email delivery infrastructure — but that control comes with full responsibility for uptime. Vigilmon watches Listmonk's health endpoint, admin dashboard, campaign API, and SSL certificate so you're alerted within 60 seconds of any failure, before a scheduled campaign misses its send window or a subscriber import pipeline stalls silently.
Start monitoring Listmonk in under 5 minutes — register free at vigilmon.online.