Vercel and Netlify both email on a red deploy. Neither should own your push token. Point both outgoing webhooks at the same AlertHub project and paste one Gotify message URL. Ops that already runs Gotify for Android gets host failures without a Slack workspace.
The ingest URLs stay the ones from Vercel deployment alerts and Netlify deployments. This post is the last mile: critical on error (Gotify priority 8), info on success.
Gotify must be HTTPS and reachable from the internet.
What to subscribe to
| Host | Event | Level | Gotify |
|---|---|---|---|
| Vercel | deployment.error | Critical | Priority 8 |
| Vercel | deployment.canceled | Warning | Priority 5 |
| Vercel | deployment.succeeded / ready | Info | No |
| Netlify | Failed build / deploy-failed notify | Critical | Priority 8 |
| Netlify | Production deploy succeeded | Info | No |
If GitHub Actions is the source of truth instead of the host, use Actions → ntfy (or Gotify on that same project). Do not double-page the same git SHA from Actions and Vercel unless you like two buzzes.
Setup (once)
- One project at app.thealerthub.com. Distinct
ah_source:VercelvsNetlify. - Paste the existing host webhook URLs (widgets and steps live in the Vercel/Netlify posts).
- Gotify Apps → token →
https://your-gotify/message?token=…in Connections → Gotify.
Docs: Gotify destination. Subpath: https://example.com/gotify/message?token=….
Alert 1: Vercel deployment.error
Keep ah_level=critical so Android sounds. Put branch or commit in the title; URL in the description. Placeholder field names drift — after the first delivery, adjust {{payload.deployment.url}} vs {{type}} as in the Vercel guide. Success URLs stay info.
Alert 2: Netlify failed build
Netlify Notifications → Emails and webhooks → outgoing webhook on deploy failed. Same sendAlert contract, ah_source=Netlify. One Gotify app for both hosts; the title tells you which CDN blinked.
Alert 3: Preview vs production
Preview deploy errors can be warning (or a second AlertHub project) so a broken PR does not use priority 8. Production deployment.error stays critical. Filter in the dashboard by source if both share a project.
Ideas to squeeze more value
- Do not curl Gotify from a build plugin. The host webhook is enough; rotating the app token happens in AlertHub.
- Uptime after ship. A green Vercel deploy plus a red probe: uptime + VPS → ntfy (or Gotify) on the same or a sibling project.
- Team in Mattermost. Add Mattermost next to Gotify — hybrid on-call.
- ntfy if you do not run Gotify. Same two host URLs, different Connection.
FAQ
One Gotify app or two?
One is enough. Use ah_source and titles. Two apps if marketing vs platform should not share a lock screen.
Does a successful preview page me?
Not if it is info. Raise the level only when you want the phone.
Self-hosted Gotify on LAN?
AlertHub cannot reach it. Put TLS on a public reverse proxy.
Next steps
Keep the Vercel and Netlify webhooks, paste Gotify, and fail a preview deploy on purpose.
Related: Gotify setup · Vercel to Slack/Telegram · Netlify deployments