tutorial

How to Monitor Formbricks with Vigilmon (Health Checks, Workers, and SSL Alerts)

Formbricks is an open-source form and survey platform that lets you build in-product microsurveys, NPS flows, and user research forms without sending data to...

Formbricks is an open-source form and survey platform that lets you build in-product microsurveys, NPS flows, and user research forms without sending data to third-party servers. When you self-host Formbricks, you own the data — but you also own the reliability. A down Formbricks instance means missed survey responses, broken in-app feedback widgets, and incomplete user research data you can never recover.

This tutorial walks you through setting up comprehensive monitoring for a self-hosted Formbricks instance using Vigilmon.


Why monitoring matters for Formbricks

Self-hosted Formbricks has several components that can fail independently:

  • The Next.js web app — the main UI and API surface. If it's down, no forms load and no responses are collected.
  • Background workers — Formbricks processes survey triggers, sends notification emails, and syncs user attributes asynchronously. A worker crash is invisible to users until they notice emails aren't arriving or attributes aren't updating.
  • PostgreSQL database — all survey definitions, responses, and user segments live here. A database connection failure surfaces as 500 errors on every API call.
  • API key authentication — if your API integration returns 401s instead of 200s, your in-app widgets silently stop reporting.

External monitoring catches all of these before your users do.


What you'll need

  • A self-hosted Formbricks instance (Docker or bare-metal)
  • A free Vigilmon account

Step 1: Verify the Formbricks health endpoint

Formbricks exposes a built-in health endpoint at /health. Make a quick request to confirm it's responding:

curl -i https://forms.your-domain.com/health

A healthy instance returns HTTP 200 with a JSON body:

{ "status": "ok" }

If Formbricks is behind a reverse proxy (nginx or Caddy), confirm the /health path is not blocked by any access rules before setting up the monitor.


Step 2: Set up HTTP monitoring in Vigilmon

  1. Log in to vigilmon.online and go to Monitors → New Monitor
  2. Choose HTTP / HTTPS as the type
  3. Set the URL to https://forms.your-domain.com/health
  4. Set the check interval to 1 minute
  5. Under Expected response, set:
    • Status code: 200
    • Response body contains: "status":"ok"
  6. Save the monitor

Vigilmon will now probe your health endpoint from multiple regions every minute. Any non-200 response or timeout opens an incident immediately.


Step 3: Monitor the Formbricks web UI separately

The /health endpoint only confirms the Node.js process is alive. Add a second HTTP monitor for the main web interface to catch rendering failures, broken static assets, or misconfigured reverse proxies:

  1. Add a second HTTP / HTTPS monitor
  2. URL: https://forms.your-domain.com (the root URL)
  3. Expected status code: 200
  4. Assign the same alert channel

This catches the case where the health endpoint returns 200 but the app is actually serving a blank page or redirect loop.


Step 4: Monitor background worker availability via API

Formbricks background workers process webhooks and outbound notifications. You can indirectly verify they're healthy by checking that the Formbricks API responds correctly to authenticated requests:

  1. Add a third HTTP / HTTPS monitor
  2. URL: https://forms.your-domain.com/api/v1/me
  3. Under Custom request headers, add:
    • x-api-key: your-formbricks-api-key
  4. Expected status code: 200

If this returns 401, your API key has been rotated or invalidated. If it returns 500, a background service or database dependency has failed. Either way, Vigilmon alerts you before your integrations notice.


Step 5: Set up SSL certificate monitoring

Formbricks serves sensitive survey responses over HTTPS. A lapsed TLS certificate breaks the entire instance — browsers refuse to load the app and your in-product widgets throw CORS errors before they even reach the health check.

  1. In Vigilmon, go to Monitors → New Monitor
  2. Choose SSL Certificate as the type
  3. Enter your domain: forms.your-domain.com
  4. Set alert thresholds: warn at 30 days, critical at 7 days

Vigilmon will alert you well before expiry so you can renew without any downtime.


Step 6: Configure alert channels

  1. Go to Alert Channels → Add Channel
  2. Add a Webhook pointing to your Slack, Discord, or PagerDuty endpoint — or add an Email channel
  3. Assign all four monitors to the channel

Recommended escalation policy for Formbricks:

| Severity | Trigger | Action | |----------|---------|--------| | Critical | /health returns non-200 for 2+ minutes | Page on-call immediately | | High | API auth check returns 401 or 500 | Alert engineering channel | | Warning | SSL cert expires in < 30 days | Create ticket for renewal |


Monitoring summary

| Monitor | Type | What it catches | |---------|------|-----------------| | https://forms.your-domain.com/health | HTTP | Process crash, DB connection failure | | https://forms.your-domain.com | HTTP | UI rendering failure, bad reverse proxy config | | https://forms.your-domain.com/api/v1/me | HTTP (auth) | Worker failure, API key invalidation | | forms.your-domain.com SSL | Certificate | Imminent TLS expiry |


What's next

  • Heartbeat monitors — if you run Formbricks cron jobs for digest emails or scheduled exports, add a heartbeat monitor so Vigilmon alerts when the job stops checking in
  • Status page — publish a Vigilmon status page for your internal teams so they can self-serve instead of asking ops when surveys stop working

Get started free at vigilmon.online — no credit card, monitors start running in under a minute.

Monitor your app with Vigilmon

Free plan — 5 monitors, no credit card required. Up and running in 60 seconds.

Start free →