Uptime Monitoring for GitBook Documentation Services 2026
GitBook is the collaborative documentation platform used by engineering teams, product organizations, and developer-facing companies. It handles version control, real-time collaboration, and publishing — your team focuses on writing, GitBook handles delivery.
But "GitBook handles delivery" only covers GitBook's own infrastructure. Your custom domain, your organization's content sync pipeline, and the APIs your docs describe are all outside GitBook's scope. External monitoring catches the failures GitBook's own uptime tracking doesn't cover.
By the end of this guide you'll have independent monitoring on your GitBook-hosted docs, heartbeat checks for your content pipeline, and instant alerts when users can't reach your documentation — all on the free tier.
The monitoring gap in a hosted docs platform
GitBook monitors its own platform. When GitBook has an incident, it shows on gitbook.com/status. What GitBook doesn't monitor:
- Your custom domain — DNS misconfiguration or certificate expiry affects only your space
- Your GitBook space being accidentally unpublished — a settings change that only takes seconds and takes your docs offline
- Broken links to resources your docs reference — external pages, embedded content, images
- The API your docs describe — if your API is down, interactive examples in your docs break
- Third-party integrations — analytics scripts, Intercom chat widgets, embedded Loom videos
These failures need independent monitoring because they're invisible to GitBook's status page.
Step 1: Monitor your GitBook custom domain
GitBook spaces live on <org>.gitbook.io by default. If you've configured a custom domain (e.g. docs.yourdomain.com), that's what your users, README links, and marketing copy point to. A lapsed DNS record or SSL cert expiry here is a complete outage your users hit first.
Sign up at Vigilmon — free tier, no credit card required.
- Click New Monitor → HTTP
- Enter
https://docs.yourdomain.com - Set check interval to 5 minutes
- Add a Keyword match on a string that only appears in your docs content — your product name, a section title, or a phrase in your homepage
- Save
The keyword match is important: GitBook's CDN can serve a 200 with an error page if your space is misconfigured. A content check catches the difference between "the domain resolved" and "the docs are actually there."
Add a secondary monitor on your GitBook subdomain:
https://your-org.gitbook.io/your-space/
If the custom domain monitor fires but the GitBook subdomain monitor is fine, the problem is your DNS or SSL — not GitBook. This pattern cuts your mean time to diagnosis in half.
Step 2: Monitor key pages in your docs
A single homepage monitor will catch a total outage. But some failures are more subtle — a broken space URL scheme, a specific section that errors, a change in your navigation that created dead links.
Add monitors for your most critical pages:
| Monitor | URL | What it catches |
|---|---|---|
| Homepage | https://docs.yourdomain.com | Total outage |
| Getting started | https://docs.yourdomain.com/getting-started | Broken top-funnel page |
| API reference | https://docs.yourdomain.com/api-reference | Broken API docs |
| Changelog | https://docs.yourdomain.com/changelog | Broken frequently-visited page |
Use keyword matches on each monitor with content unique to that page. If GitBook republishes with a URL restructure, the keyword match will catch pages serving wrong content before your users do.
Step 3: Monitor the API your docs describe
GitBook lets you embed live API examples and interactive content. If your API is down, those examples fail — users hit errors in your getting-started flow at exactly the moment you're trying to convert them.
Add a health endpoint to your API:
Node.js:
// health.js
const express = require('express');
const app = express();
app.get('/health', async (req, res) => {
const checks = {};
// Check database
try {
await db.query('SELECT 1');
checks.db = 'ok';
} catch (err) {
checks.db = { error: err.message };
}
const healthy = Object.values(checks).every(v => v === 'ok');
res.status(healthy ? 200 : 503).json({
status: healthy ? 'ok' : 'degraded',
checks,
});
});
Go:
// main.go
http.HandleFunc("/health", func(w http.ResponseWriter, r *http.Request) {
if err := db.Ping(); err != nil {
w.WriteHeader(http.StatusServiceUnavailable)
json.NewEncoder(w).Encode(map[string]string{
"status": "error",
"detail": err.Error(),
})
return
}
w.WriteHeader(http.StatusOK)
json.NewEncoder(w).Encode(map[string]string{"status": "ok"})
})
In Vigilmon, create an HTTP monitor for https://api.yourdomain.com/health. Route its alerts to your engineering on-call channel — this is not a docs problem, it's an infrastructure problem.
Step 4: Heartbeat monitoring for your GitBook sync
If your GitBook space is connected to a GitHub repository (via GitBook's Git sync feature), a broken sync means your docs go stale silently. New commits don't appear. The GitHub Action keeps running but the docs don't update.
Add a heartbeat monitor to detect when syncs stop succeeding:
In Vigilmon:
- Click New Monitor → Heartbeat
- Set the expected interval to match your commit cadence (e.g. 49 hours if your team commits docs at least every 2 days)
- Copy the heartbeat ping URL
GitHub Actions — GitBook Git Sync heartbeat:
# .github/workflows/docs-heartbeat.yml
name: Docs Sync Heartbeat
on:
push:
branches: [main]
paths:
- 'docs/**'
- '.gitbook.yaml'
- 'SUMMARY.md'
jobs:
heartbeat:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Validate SUMMARY.md structure
run: |
python3 -c "
import re, sys
content = open('SUMMARY.md').read()
links = re.findall(r'\[.*?\]\((.*?\.md)\)', content)
import os
for link in links:
if not os.path.exists(link):
print(f'Broken link in SUMMARY.md: {link}')
sys.exit(1)
print(f'SUMMARY.md OK: {len(links)} pages linked')
"
- name: Ping heartbeat on success
if: success()
run: curl -s "${{ secrets.GITBOOK_SYNC_HEARTBEAT_URL }}"
The validation step checks that every page referenced in SUMMARY.md actually exists — a common GitBook breakage where the nav references a file that was renamed or deleted.
Step 5: Detect accidental unpublish
GitBook spaces can be unpublished in seconds — a click in the settings panel by a team member thinking they're making a draft change, or an accidental API call. From the outside this looks like a 404 on your custom domain.
Your HTTP monitor will catch this, but you can make the alert more descriptive by checking for specific content:
# Test command — run this manually if you suspect an accidental unpublish
curl -s -o /dev/null -w "%{http_code}" https://docs.yourdomain.com/
If this returns 404 instead of 200, your space is unpublished. Vigilmon will have already alerted you — but knowing the cause immediately means faster recovery.
Recovery checklist if your GitBook space goes offline:
- Check Vigilmon — is it the custom domain or also the
.gitbook.iosubdomain? - Log into GitBook → Space Settings → Audience → confirm Public is still selected
- Check DNS settings for your custom domain
- Check SSL certificate expiry in your domain registrar
Step 6: Monitor GitBook's own API if you depend on it
Many teams use the GitBook API to sync content programmatically — updating pages from CI, pulling content for internal tools, reading page data for automation. If the GitBook API is down, your automation breaks.
In Vigilmon:
- New Monitor → HTTP
- URL:
https://api.gitbook.com/v1/user(requires anAuthorization: Bearer <token>header) - Add the header in Vigilmon's Request headers field
- Save
This gives you independent monitoring of GitBook's API availability, separate from their status page.
Step 7: Webhook alerts
Slack:
- Create an incoming webhook at api.slack.com/messaging/webhooks
- In Vigilmon: Notifications → New Channel → Slack
- Paste the webhook URL
- Assign it to your GitBook docs monitors
Discord:
- Server Settings → Integrations → Webhooks → New Webhook → Copy URL
- In Vigilmon: Notifications → New Channel → Discord
- Paste and assign to monitors
Separate alert channels by audience: docs alerts go to #docs, API health alerts go to #engineering, GitBook API alerts go to #platform.
Step 8: Public status page
When your docs are down during an incident, a status page answers user questions before they flood your GitHub Issues or Discord:
- In Vigilmon: Status Pages → New Status Page
- Select your GitBook docs monitors and API health monitor
- Save — you'll get a hosted status URL
GitBook's built-in custom domain settings don't provide a way to add a footer link, but you can add a dedicated status page in your GitBook space:
- Create a new page called Status in your GitBook space
- Add a link card to your Vigilmon status page URL
- Include it in your
SUMMARY.mdnavigation
Users who notice your docs are down and navigate to /status get real-time availability information without any support overhead.
What you've built
| What | How |
|---|---|
| Custom domain monitoring | Vigilmon HTTP monitor with keyword match |
| Platform vs. DNS triage | Secondary monitor on .gitbook.io subdomain |
| Deep page monitoring | Individual monitors on critical docs pages |
| API health monitoring | Health endpoint + Vigilmon HTTP monitor |
| Git sync heartbeat | CI ping on successful docs commits |
| SUMMARY.md validation | Pre-push check for broken navigation links |
| GitBook API monitoring | Vigilmon HTTP monitor with auth header |
| Instant alerts | Slack/Discord webhook notifications |
| Public status page | Vigilmon status page + GitBook status page |
GitBook handles your docs platform. Vigilmon ensures your users can always reach it — and alerts you the moment they can't.
Get started free at vigilmon.online — your first monitor is running in under a minute.