Versend

Environment

Variables the API reads

Copy apps/api/.env.example to apps/api/.env and fill in the values. The names live in apps/api/.env.schema.

Required

VariablePurpose
WEBHOOK_INTEGRATION_SECRETSigning secret from the Vercel webhook

Destinations

Set any combination. A blank value is off.

VariableDestination
DISCORD_WEBHOOK_URLDiscord channel webhook
DISCORD_WEBHOOK_USERNAMEDisplay name. Defaults to Versend
DISCORD_WEBHOOK_AVATAR_URLAvatar. Defaults to the Vercel mark
TELEGRAM_BOT_TOKENBot token from BotFather
TELEGRAM_CHAT_IDYour user id, or a group or channel id. See Telegram
SLACK_WEBHOOK_URLIncoming webhook. See Slack
NTFY_URLTopic URL. See ntfy
NTFY_TOKENBearer token for a protected topic. Optional
GOTIFY_URLServer URL, with no path. See Gotify
GOTIFY_TOKENApplication token

Telegram needs the token and the chat id. Gotify needs the server and the token.

Filters

Leave these empty to accept every event and every deployment target.

VariableBehavior
FILTER_EVENTSAllowlist. Example: deployment.error,deployment.succeeded
FILTER_EVENTS_EXCLUDEDenylist. Wins over the allowlist
FILTER_TARGETSproduction, preview, or both. Applies to deployment.* only

Rate limit

VariableDefault
RATE_LIMIT_REQUESTS60
RATE_LIMIT_WINDOW_SECONDS60

Set RATE_LIMIT_REQUESTS=0 to turn the limit off. The count stays in the process that received the request.