A status page builds trust with your users by showing them your service health in real-time. Here's how to create one for free and what to include.
Why You Need a Status Page
Benefits
- Reduce support tickets - Users check status before contacting support
- Build trust - Transparency shows professionalism
- Improve communication - Central place for incident updates
- Save time - No need to respond to "is it down?" questions individually
What to Include
Essential components:
- Current service status (operational, degraded, down)
- Uptime percentage (90 days is standard)
- Response time metrics
- Incident history
- Scheduled maintenance notices
- Subscribe option for updates
Free Status Page Options
1. Hosted Solutions
Pros: Quick setup, no maintenance Cons: Limited customization, branding restrictions
Popular free tiers:
- Atlassian Statuspage - Free for basic use
- Instatus - Generous free tier
- Cachet - Self-hosted, open-source
- Upptime - GitHub-powered
2. GitHub-Powered Status Pages
Use GitHub Pages for a completely free solution:
# .github/workflows/uptime.yml
name: Uptime CI
on:
schedule:
- cron: '*/5 * * * *'
workflow_dispatch:
jobs:
check:
runs-on: ubuntu-latest
steps:
- uses: upptime/upptime@master
with:
token: ${{ secrets.GITHUB_TOKEN }}
3. Self-Hosted Options
For full control:
Cachet (PHP):
git clone https://github.com/CachetHQ/Cachet.git
cd Cachet
composer install
php artisan key:generate
php artisan cachet:install
Gatus (Go):
# config/config.yaml
endpoints:
- name: Website
url: "https://example.com"
interval: 60s
conditions:
- "[STATUS] == 200"
- "[RESPONSE_TIME] < 1000"
Setting Up Your Status Page
Step 1: Define Your Services
Break down your product into components:
Your Product
├── Web Application
├── API
├── Database
├── Payment Processing
├── Email Service
└── CDN
Step 2: Set Monitoring
For each component, set up:
- Availability check (is it responding?)
- Performance check (how fast?)
- Functionality check (is it working correctly?)
Step 3: Configure Incident Templates
Prepare templates for common scenarios:
Investigating:
We are investigating reports of [service] issues.
Users may experience [symptoms]. We will provide
updates as we learn more.
Identified:
We have identified the issue affecting [service].
The cause is [brief explanation]. Our team is
working on a fix.
Resolved:
The issue affecting [service] has been resolved.
[Brief explanation of fix]. We apologize for
any inconvenience.
Step 4: Set Up Notifications
Allow users to subscribe via:
- Email notifications
- Slack/Discord webhooks
- RSS feed
- SMS (premium feature usually)
Best Practices
Keep It Simple
- Show only essential information
- Use clear status indicators (green/yellow/red)
- Write in plain language
- Update frequently during incidents
Be Transparent
- Post updates every 30 minutes during incidents
- Explain what happened in post-mortems
- Show historical uptime honestly
- Acknowledge when you don't know yet
Automate Where Possible
- Connect monitoring to status page
- Auto-update when services recover
- Trigger alerts for status changes
- Generate uptime reports automatically
Status Page Checklist
- Services identified and categorized
- Monitoring connected
- Incident templates prepared
- Notification channels configured
- Custom domain set up (optional)
- Team members have access
- Subscribe options available
- Historical data displaying
- Mobile-friendly design
- Link added to main website
WizStatus includes a beautiful public status page with every account. Automatically updated, customizable branding, and free subdomain included.