# Discord Webhook Message

> Discord incoming webhook message with content, embeds, and username override.

- Name: `discord-webhook-message`
- Categories: discord
- Depends on: `@open-types/discord-message`
- Detail page: https://open-types.dev/types/discord-webhook-message

## Install

```bash
# Types only
npx shadcn add @open-types/discord-webhook-message

# Types + Zod v4 validators
npx shadcn add @open-types/discord-webhook-message-zod

# Types + real-world examples
npx shadcn add @open-types/discord-webhook-message-examples
```

## Types

```typescript
import type { DiscordEmbed } from "./discord-message";

export interface DiscordWebhookMessage {
  content?: string;
  username?: string;
  avatar_url?: string;
  tts?: boolean;
  embeds?: DiscordEmbed[];
}
```

## Zod validator

```typescript
import * as z from "zod";
import type { DiscordWebhookMessage } from "../types/discord-webhook-message";
import { discordEmbedSchema } from "./discord-message";

export const discordWebhookMessageSchema = z.object({
  content: z.string().optional(),
  username: z.string().optional(),
  avatar_url: z.string().optional(),
  tts: z.boolean().optional(),
  embeds: z.array(discordEmbedSchema).optional(),
}) satisfies z.ZodType<DiscordWebhookMessage>;

export type { DiscordWebhookMessage } from "../types/discord-webhook-message";
```

## Examples

```typescript
// Source: https://discord.com/developers/docs/resources/webhook#execute-webhook
// Captured: 2026-05
import type { DiscordWebhookMessage } from "../types/discord-webhook-message";

export const discordWebhookMessageExamples = {
  rich: {
    content: "Build completed successfully.",
    username: "Open Types Bot",
    avatar_url: "https://cdn.discordapp.com/embed/avatars/0.png",
    tts: false,
    embeds: [
      {
        title: "Build status",
        description: "All checks passed.",
        url: "https://open-types.dev",
        color: 5763719,
        timestamp: "2026-04-13T10:00:00.000Z",
        fields: [{ name: "Branch", value: "main", inline: true }],
      },
    ],
  } satisfies DiscordWebhookMessage,
  contentOnly: { content: "Deploy succeeded" } satisfies DiscordWebhookMessage,
  embedOnly: {
    username: "CI",
    embeds: [{ title: "Failure", description: "tests failed", color: 15158332 }],
  } satisfies DiscordWebhookMessage,
  ttsAlert: {
    content: "Production is down!",
    username: "PagerBot",
    tts: true,
  } satisfies DiscordWebhookMessage,
  empty: {} satisfies DiscordWebhookMessage,
} as const;
```
