Overview
Uptime Monitor is a monitoring platform that tracks the availability and performance of your websites, APIs, servers, and services. It supports 9 different monitor types and 9+ notification channels.
Key Features
- 9 monitor types: HTTP(S), Ping, Port, Keyword, Heartbeat, SSL, DNS, Domain Expiry, Change Detection
- 9+ notification channels: Email, Slack, Discord, Telegram, Teams, Google Chat, PagerDuty, Webhooks, Zoho Desk
- Public status pages with password protection
- Incident management with timeline tracking
- Maintenance windows for planned downtime
- Built-in diagnostic tools (SSL checker, DNS lookup, security headers)
- Multi-user support with role-based team management
- Synthetic monitoring with multi-step API checks
- Embeddable uptime and response time badges
- Automated weekly reports with uptime summaries
- Advanced alerting with cooldowns, schedules, and response time thresholds
- API metrics: P95/P99 latency, error rates, status code distribution
- CSV export and installable PWA
Monitor Types
HTTP(S)
Monitors web pages and API endpoints. Supports GET, POST, PUT, DELETE methods. Configure custom headers, request body, expected status codes, and authentication (Basic Auth or Bearer Token).
Ping (ICMP)
Sends ICMP echo requests to check if a host is reachable. Useful for monitoring server availability at the network level.
Port (TCP)
Tests TCP connectivity on a specific port. Great for monitoring databases (3306), mail servers (25/587), FTP (21), SSH (22), and custom services.
Keyword Detection
Fetches a URL and checks if specific text is present (or absent). Use this to detect content changes, error messages, or verify critical page content.
Heartbeat / Cron Job
Provides a unique URL endpoint that your cron jobs or services should ping at regular intervals. If a ping is missed within the expected window, an alert is triggered.
# Example cron job that pings every 5 minutes
*/5 * * * * curl -s https://your-server.com/api/heartbeat/YOUR_TOKEN
SSL Certificate
Monitors SSL/TLS certificate validity and expiration. Get alerts days before your certificate expires.
DNS
Validates DNS records (A, AAAA, CNAME, MX, TXT, NS). Alerts when records change unexpectedly.
Domain Expiry
Checks domain registration expiration dates via WHOIS. Get early warnings before your domain lapses.
Change Detection
Takes a hash of page content and alerts when the content changes. Useful for detecting defacements, unexpected edits, or content updates.
Creating Monitors
To create a new monitor:
- Navigate to the Dashboard and click Add Monitor
- Select the monitor type
- Enter the target URL, hostname, or IP address
- Configure the check interval (1-60 minutes)
- Set retry count for failed checks (avoids false alarms)
- Link notification channels to receive alerts
- Click Create Monitor
The monitor will start checking immediately and appear on your dashboard.
Heartbeat / Push Monitoring
Heartbeat monitors use a "push" model. Instead of Uptime Monitor checking a service, your service pings Uptime Monitor at regular intervals.
How to Use
- Create a Heartbeat monitor and set the expected interval
- Copy the generated heartbeat URL
- Add it to your cron job, scheduled task, or application
# Ping via curl
curl -s https://your-server.com/api/heartbeat/abc123
# Ping via wget
wget -q -O /dev/null https://your-server.com/api/heartbeat/abc123
Both GET and POST requests are supported. If no ping is received within the expected interval, an incident is created and notifications are sent.
Notification Channels
Uptime Monitor supports the following notification channels:
| Channel | Configuration Required |
| Email (SMTP) | SMTP server, port, username, password, recipient |
| Slack | Webhook URL |
| Discord | Webhook URL |
| Telegram | Bot token, Chat ID |
| Microsoft Teams | Webhook URL |
| Google Chat | Webhook URL |
| PagerDuty | Integration key |
| Webhook | URL, method, headers |
| Zoho Desk | OAuth credentials, department ID |
Each monitor can be linked to multiple channels. Manage channels in Settings > Notification Channels.
Channel Setup Guide
Slack
1. Go to your Slack workspace settings > Apps > Incoming Webhooks
2. Create a new webhook and select the target channel
3. Copy the webhook URL into the Slack channel configuration
Discord
1. Open Discord channel settings > Integrations > Webhooks
2. Create a new webhook
3. Copy the webhook URL into the Discord channel configuration
Telegram
1. Message @BotFather on Telegram to create a bot
2. Get the bot token
3. Get your chat ID (message @userinfobot)
4. Enter both in the Telegram channel configuration
Webhook
Configure a custom HTTP webhook with your URL, method, and headers. The payload includes monitor name, status, response time, and incident details in JSON format.
Public Status Pages
Each account gets a unique public status page URL at /status/YOUR_USER_ID. The status page displays:
- Real-time monitor status (up/down/maintenance)
- Uptime history over the last 24 hours, 7 days, and 30 days
- Active incidents and their timeline
- Scheduled maintenance windows
Configure your status page in Settings > Status Page. You can set a custom title, description, and optionally protect it with a password.
Incident Management
Incidents are automatically created when a monitor goes down. You can:
- Acknowledge — Mark that you're aware and investigating
- Add Notes — Document your investigation and resolution steps
- Resolve — Mark the incident as resolved
Incidents are automatically resolved when the monitor recovers. The full timeline is visible on the status page and in the settings panel.
Maintenance Windows
Schedule maintenance periods to:
- Suppress alert notifications during planned downtime
- Show a maintenance badge on the status page
- Keep uptime statistics accurate
Create maintenance windows in Settings > Maintenance. Set the start time, end time, and add an optional description.
API Authentication
The API uses token-based authentication. Include the token in the Authorization header:
Authorization: Bearer YOUR_TOKEN
Endpoints
POST /api/auth/register
POST /api/auth/login
GET /api/auth/me
POST /api/auth/forgot-password
POST /api/auth/reset-password
Monitors API
GET /api/monitors/
POST /api/monitors/
GET /api/monitors/:id
PUT /api/monitors/:id
DELETE /api/monitors/:id
POST /api/monitors/:id/pause
POST /api/monitors/:id/resume
GET /api/monitors/:id/logs
GET /api/monitors/:id/chart
Channels API
GET /api/channels/
POST /api/channels/
PUT /api/channels/:id
DELETE /api/channels/:id
POST /api/channels/:id/test
Uptime Badges
Display live uptime status and response time badges on your README, documentation, or website. Two badge endpoints are available for each monitor.
Badge Endpoints
GET /api/badge/:monitorId
GET /api/badge/:monitorId/response
Embed in Markdown


Embed in HTML
<img src="https://yourdomain.com/api/badge/MONITOR_ID" alt="Uptime">
<img src="https://yourdomain.com/api/badge/MONITOR_ID/response" alt="Response Time">
Customization
| Parameter | Description | Example |
?label= | Custom left-side label text | ?label=My%20API |
?theme=dark | Dark background variant | ?theme=dark |
Badges are rendered as SVG images and cached for 60 seconds. They update automatically as monitor status changes.
Synthetic Monitoring
Synthetic monitoring executes multi-step API checks in sequence, simulating real user workflows. Each step can make an HTTP request, validate the response, and extract variables for use in subsequent steps.
Step Builder
Each step in a synthetic monitor defines:
- URL — The endpoint to call
- Method — GET, POST, PUT, DELETE
- Headers — Custom request headers (supports variable interpolation)
- Body — JSON request payload
Assertions
Add assertions to validate each step's response:
- Status code — Expect a specific HTTP status (e.g., 200, 201)
- Body contains — Verify the response body includes a specific string
If any assertion fails, the entire synthetic check is marked as failed and alerts are triggered.
Variable Extraction
Extract values from a step's JSON response and reference them in later steps using {{variableName}} syntax:
Step 1: POST /api/auth/login → extract "token" from response
Step 2: GET /api/data with header Authorization: Bearer {{token}}
Scheduling
Synthetic monitors run automatically every 5 minutes via cron. Each run executes all steps in order and records pass/fail status plus total execution time.
API Metrics
Track detailed performance metrics for your API endpoints beyond simple uptime.
Available Metrics
- P95 Response Time — 95th percentile response time, filtering out outliers to show typical worst-case performance.
- P99 Response Time — 99th percentile response time, showing near-worst-case latency.
- Error Rate — Percentage of checks returning non-2xx status codes over a given time window.
- Status Code Distribution — Breakdown of HTTP status codes returned (2xx, 3xx, 4xx, 5xx) with counts and percentages.
Viewing Metrics
Click on any HTTP monitor to expand its detail panel. Switch to the Metrics tab to see P95/P99 latency charts, error rate trends, and status code distribution over time.
Weekly Reports
Automated weekly summaries are emailed every Monday at 9:00 AM IST to your registered email address.
Report Contents
- Uptime summary — Overall uptime percentage across all monitors
- Incident counts — Total incidents created and resolved during the week
- Response times — Average, minimum, and maximum response times per monitor
- Top offenders — Monitors with the most downtime or slowest response
Manual Trigger
Admin users can generate a report on demand from Settings → Reports → Send Weekly Report Now. The report is generated and delivered to your email within a few minutes.
Advanced Alerting
Fine-tune when and how you receive alert notifications with advanced rules.
Alert Rules
- Location-down threshold — Set the minimum number of monitoring locations that must report failure before an alert fires.
- Response time alerts — Trigger alerts when response time exceeds a threshold (e.g., > 2000ms) for consecutive checks.
Notification Cooldown
Prevent alert flooding by setting a cooldown period (default: 5 minutes). After an alert fires, duplicate alerts for the same monitor are suppressed during the cooldown window. Recovery notifications are always sent.
Alert Schedule
Restrict notifications to specific days and hours:
- Active days — Select which days alerts should fire (e.g., Monday through Friday)
- Active hours — Set a time window (e.g., 08:00 to 22:00)
- Outside the schedule, alerts are silenced but incidents are still recorded
Notify on Recovery
Toggle per monitor whether a recovery notification is sent when the service comes back online. Enabled by default.
Team Management
Collaborate with your team by inviting members, assigning roles, and managing access.
Inviting Members
Go to Settings → Team → Invite Member. Enter the person's email and select a role. They receive an email invitation with a link to accept and join your workspace.
Roles
| Role | Permissions |
| Admin | Full access: monitors, channels, team, billing, settings |
| User | Create/edit monitors and channels. Cannot manage team or billing |
| Viewer | Read-only access to dashboard, status pages, and reports |
Seat Limits
Free: 1 seat, Solo: 1, Team: 5, Enterprise: unlimited. Upgrade your plan or contact support for additional seats.
CSV Export
Export your monitoring data as CSV files for offline analysis, compliance, or reporting.
How to Export
- Navigate to a monitor's detail view
- Click the Export button and select CSV
- Choose a date range for the export
- The CSV file downloads immediately
What's Included
Exported CSV files contain: timestamp, status (up/down), response time (ms), status code, error message (if any), and monitoring location.
Progressive Web App (PWA)
Uptime Monitor is a fully installable Progressive Web App. Use it like a native app on desktop and mobile.
Installing the App
- Desktop (Chrome/Edge): Click the install icon in the address bar or go to Menu → Install Uptime Monitor
- Mobile (Android): Tap "Add to Home Screen" from the browser menu
- Mobile (iOS): Tap the Share button → "Add to Home Screen"
Offline Mode
The PWA caches essential assets for offline access. You can view your dashboard, recent monitor data, and status pages even without an internet connection. Data syncs automatically when connectivity is restored.