Pingoru Discord integration — documentation
Setup, alert format, and troubleshooting for the Pingoru Discord integration. No OAuth required — Discord uses webhook URLs you generate inside your channel's settings, no app to install.
Install
- In Discord, open the channel where you want alerts to land. Click the gear icon next to the channel name → Integrations → Webhooks → New Webhook.
- Give the webhook a name (e.g. "Pingoru") — this is what appears as the message author in the channel. Optional: set an avatar.
- Click Copy Webhook URL. The URL has the
shape
https://discord.com/api/webhooks/<id>/<token>. Treat it as a secret — anyone with it can post to the channel. - Open Integrations on Pingoru. Click Add Discord channel. Paste the URL, give the integration a name (defaults to "Discord"), click Connect Discord.
- Click Test on the channel row. A 🦘 "Pingoru is connected" embed should land in your Discord channel within a second.
Want alerts in multiple Discord channels? Repeat steps 1–4 for each — every channel gets its own webhook URL on Discord's side, and Pingoru stores them as separate integrations.
Alert format
Pingoru posts incident alerts as Discord embeds — Discord's rich-message JSON schema. Each embed contains:
- Title: provider name + status pill (🟠 Partial Outage / 🔴 Major Outage / 🔧 Maintenance / ✅ Resolved). Linked to the Pingoru incident page.
- Description: the incident headline as published upstream.
- Color: red / orange / yellow / green / blue depending on severity. Visible as a stripe on the left edge of the embed.
- Affected components: when the incident is scoped to a subset of the provider's catalog.
- Timestamp: incident's
started_at. Discord auto-localises this to the viewer's timezone — no manual conversion needed. - Live timeline link: clickable URL to the incident's full timeline on Pingoru.
Discord webhooks don't support buttons (those need a Discord bot application). The Live timeline field acts as the action — clicking it opens the incident page on Pingoru.
Troubleshooting
Pingoru says "url doesn't look like a Discord webhook"
We validate the URL against Discord's webhook URL pattern: https://discord.com/api/webhooks/<id>/<token>. Make sure you copied the *Webhook URL* (the one with `/api/webhooks/` in the path), not the channel link or the integration page URL. Discord's UI shows it as a Copy button labelled "Copy Webhook URL" inside the webhook's edit screen.
Alerts stopped arriving after I renamed the Discord channel
Discord webhook URLs are channel-bound but survive a channel rename — the URL stays valid. If alerts stop after a rename, more often the cause is that someone moved the webhook to a different channel from Discord's webhook settings page, or that Discord regenerated the URL. Visit Discord → Channel → Edit Channel → Integrations → Webhooks to check the current state, regenerate the URL if needed, and paste the new one into Pingoru's Edit dialog.
Last error: HTTP 404
404 from a Discord webhook URL means the webhook was deleted on Discord's side. Pingoru auto-disables the channel when this happens to stop hammering a dead URL. Re-add the integration in Pingoru with a fresh webhook URL once you've regenerated it on Discord.
Last error: HTTP 429
Discord webhooks have a per-channel rate limit (~30 messages/minute). For individual Pingoru users this is essentially never hit; if you do see 429s, it usually means a noisy provider with many incidents in a short window. The integration auto-recovers — Discord clears the rate limit after a few seconds and the next event tries again.
Can I send the same alert to multiple Discord channels?
Yes — generate a webhook URL for each channel from inside Discord, then add each as a separate Discord integration in Pingoru. You can attach different ones to different notification groups so (e.g.) #ops-critical only gets major outages while #ops-firehose gets everything.
How do I uninstall the integration?
Two options: (1) on Pingoru, Integrations page → Delete on the Discord row; (2) in Discord, channel settings → Integrations → Webhooks → delete the webhook. Either works. Discord-side deletion will also disable the Pingoru row automatically the next time we attempt delivery (404 → auto-disable).
Need more help?
Reach out at [email protected]. Bug reports + feature requests welcome.