Pageflare
← Back to blog

Wiring up your own bot? Here's our webhook payload shape

August 15, 2026·1 min read
engineeringwebhooks

If you're building your own Discord integration instead of using our bot, you only need to handle one payload shape.

The payload

TypeScript
type IncidentWebhook = {
  service: string;
  severity: "low" | "medium" | "high" | "critical";
  message: string;
  url: string;
};

export async function sendIncident(payload: IncidentWebhook) {
  await fetch(process.env.DISCORD_WEBHOOK_URL!, {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({ content: formatEmbed(payload) }),
  });
}

Why this shape

severity drives which color strip and emoji show up on the Discord embed, and url is what the acknowledge/escalate/resolve buttons link back to. Everything else is passed through as-is.

← Previous

Hello, world