BannerHQ ships on-brand outage and maintenance banners the moment a trigger fires — edge-delivered, inline or floating, controlled from a dashboard. No engineer required during the 3 AM page.
private beta · no credit card · we email when seats open
No SDK to install. No framework hooks. Works in Next.js, Rails, Laravel, static sites — anywhere HTML runs.
Paste into the <head> of your app. Two bytes of config. No build step, no SDK, no dependency tree. Works wherever HTML does.
// head.html <script src="edge.bannerhq.dev/embed.js" data-key="env_live_9f3a" async />
No cookies, no build step. Just a script tag.
BannerHQ pings your URL on a regular cadence. A couple of failures in a row? The outage banner fires — for everyone, everywhere your script is loaded.
# trigger type: url_ping url: "api.acme.com/health" threshold: 2 # fail-fast
Recovery is automatic. The banner disappears when your service returns. Pin it from the dashboard to keep control of the story.
▸ 02:17:04 trigger.fired ▸ 02:17:09 banner.activated ▸ 02:23:51 trigger.recovered
Everything you need to handle an incident like a grown-up — and nothing you don't.
Served from Cloudflare Workers with a KV cache. Instant invalidation on state changes. Updates propagate on the next check.
Wire any URL to any banner variant. Failure and recovery thresholds, per-environment targeting. Email when it fires. Email when it clears.
One banner slot, many states. Degraded, outage, maintenance, post-mortem — switch instantly from the dashboard or from a trigger.
Top or bottom floating overlays for site-wide notices. Or drop a <div> with data-bannerhq-id to inject inline banners anywhere.