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

  1. In Discord, open the channel where you want alerts to land. Click the gear icon next to the channel name → IntegrationsWebhooksNew Webhook.
  2. Give the webhook a name (e.g. "Pingoru") — this is what appears as the message author in the channel. Optional: set an avatar.
  3. 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.
  4. Open Integrations on Pingoru. Click Add Discord channel. Paste the URL, give the integration a name (defaults to "Discord"), click Connect Discord.
  5. 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.