Skip to main content

Discord Webhook

Send messages to Discord channels via webhooks when alerts trigger. Post custom messages with optional username and avatar customization.

What You Need

  • A Discord server where you have permissions
  • A channel to send messages to
  • A webhook URL created for that channel

Quick Start

  1. Create Discord webhook (Channel Settings → Integrations → Webhooks)
  2. Copy the webhook URL
  3. Create or edit an alert in TipLink
  4. Add the Discord Webhook action
  5. Paste the webhook URL
  6. Enter your message
  7. Optionally customize username and avatar
  8. Save and test

Configuration Options

Webhook URL

Webhook URL

  • The Discord webhook URL from your channel settings
  • Format: https://discord.com/api/webhooks/[ID]/[TOKEN]
  • Required field
  • Keep this URL private (anyone with it can post to your channel)
Security Warning

Keep your webhook URL private. Anyone with it can post messages to your Discord channel.

Message Content

Message Content

  • The text to send to the Discord channel
  • Supports Markdown formatting
  • Supports Discord mentions and emojis
  • Supports dynamic placeholders
  • Required field
  • Max length: 2000 characters

Markdown Formatting:

  • *italic* - italic text
  • **bold** - bold text
  • ***bold italic*** - bold italic
  • __underline__ - underlined text
  • ~~strikethrough~~ - strikethrough text
  • ||spoiler|| - hidden spoiler text
  • `code` - inline code
  • ```code block``` - multi-line code block
  • > quote - quoted text

Dynamic Placeholders:

  • {username} - Viewer's username
  • {amount} - Tip/sub amount
  • {message} - Viewer's message
  • {timestamp} - Event timestamp

Customization

Username

  • Override the webhook's default username
  • Appears as the message sender
  • Max length: 80 characters
  • Optional (uses webhook default if empty)
  • Supports placeholders

Custom Avatar URL

  • Override the webhook's default avatar
  • Must be a direct image URL (PNG, JPG, GIF)
  • Format: https://example.com/avatar.png
  • Optional (uses webhook default if empty)
  • Does not support placeholders
Avatar URLs

Use image hosting services like Imgur or Discord CDN. The URL must be publicly accessible and directly point to an image file.

Setup Guide

Creating Discord Webhook

  1. Open Channel Settings

    • Right-click your Discord channel
    • Select "Edit Channel"
    • Go to "Integrations" tab
  2. Create Webhook

    • Click "Webhooks" or "View Webhooks"
    • Click "New Webhook"
    • Name your webhook (e.g., "TipLink Alerts")
    • Choose avatar for webhook (optional)
  3. Copy Webhook URL

    • Click "Copy Webhook URL"
    • Save this URL securely
    • You'll paste it into TipLink

Basic Message Setup

  1. Create Alert in TipLink

    • Navigate to Alerts
    • Create new or edit existing
    • Set trigger conditions
  2. Add Discord Webhook Action

    • Actions → Add Action
    • Select "Discord Webhook Message"
  3. Configure Webhook

    • Paste webhook URL
    • Enter message: {username} just tipped ${amount}!
    • Leave username/avatar empty (uses defaults)
  4. Test

    • Save alert
    • Trigger it
    • Check Discord channel

Custom Username/Avatar

To personalize the webhook appearance:

  1. Set Custom Username

    • Username: TipLink Alert Bot
    • This overrides the webhook's default name
  2. Set Custom Avatar

    • Find/upload image to image host
    • Get direct image URL: https://i.imgur.com/example.png
    • Paste into Custom Avatar URL field
  3. Test

    • Trigger alert
    • Verify custom name/avatar appears

Rich Formatting

Use Discord markdown for styled messages:

**{username}** just tipped **${amount}**! 🎉

> {message}

Thank you for your support!

Result:

  • Bold username and amount
  • Quoted viewer message
  • Emoji included

Multiple Channel Setup

To send to different channels:

  1. Create webhooks for each channel

    • Webhook 1: #alerts channel
    • Webhook 2: #logs channel
    • Webhook 3: #vip-tips channel
  2. Create separate alerts or actions

    • Small tips → #alerts
    • Large tips → #vip-tips
    • All events → #logs
  3. Use conditions

    • Set alert conditions based on amount
    • Route to appropriate webhook

Common Use Cases

Tip Notification

  • Message: 💵 **{username}** tipped **${amount}**!
  • Simple tip announcements
  • Shows who and how much

Subscriber Welcome

  • Message: 🎉 Welcome **{username}** to the community! Thanks for subscribing!
  • Celebrates new subscribers
  • Engaging welcome message

Large Tip Alert

  • Message: 🚨 **HUGE TIP** 🚨\n**{username}** just tipped **${amount}**! Thank you so much! 🙏
  • Special formatting for large tips
  • Extra emphasis with emojis

Follow Thanks

  • Message: Thanks for the follow, **{username}**! Welcome to the stream! 👋
  • Acknowledges new followers
  • Friendly greeting

Raid Announcement

  • Message: 🔴 **RAID INCOMING!** 🔴\n**{username}** is raiding with **{amount} viewers**! Welcome everyone!
  • Announces raids
  • Shows raider and viewer count

Viewer Message Display

  • Message: 💬 **{username}** says:\n> {message}
  • Shows viewer's custom message
  • Quoted for readability

Bits/Cheers (Twitch)

  • Message: ✨ **{username}** cheered **{amount} bits**! ✨
  • Shows bit donations
  • Platform-specific

Milestone Celebration

  • Message: 🎊 **MILESTONE!** 🎊\n**{username}** is the 100th subscriber! 🎉
  • Special milestone messages
  • Conditional based on count

Troubleshooting

Webhook not working

  • Verify webhook URL is correct
  • Check webhook hasn't been deleted in Discord
  • Ensure URL starts with https://discord.com/api/webhooks/
  • Test webhook with a tool like Postman

Message not appearing

  • Check message isn't empty
  • Verify webhook has permissions to post
  • Check channel isn't muted for you
  • Discord may rate limit webhooks (max 30 msgs/min)

Formatting not working

  • Verify Markdown syntax is correct
  • Check for escaped characters
  • Use Discord's message formatter to test
  • Some formatting may not work in webhook messages

Custom avatar not showing

  • URL must be direct link to image
  • Image must be publicly accessible
  • Supported formats: PNG, JPG, GIF
  • Try different image host if failing

Placeholders not replaced

  • Check placeholder syntax: {username} not username
  • Verify placeholder is valid for trigger type
  • Only works in message content, not avatar URL

Rate limit errors

  • Discord limits webhooks to 30 messages/minute
  • Space out rapid alerts
  • Consider batching or cooldowns
  • Check TipLink logs for rate limit messages

Mentions not working

  • User mentions: <@USER_ID> not @username
  • Role mentions: <@&ROLE_ID>
  • Channel mentions: <#CHANNEL_ID>
  • Everyone/here: @everyone / @here (if webhook allowed)

Best Practices

Message Content:

  • Keep under 500 characters for readability
  • Use emojis for visual appeal (not excessive)
  • Use bold for important info (usernames, amounts)
  • Use quotes for user messages
  • Test formatting before going live

Security:

  • Never share webhook URLs publicly
  • Regenerate webhooks if compromised
  • Use separate webhooks for different alert types
  • Don't include sensitive data in messages

Username/Avatar:

  • Use consistent naming across webhooks
  • Set recognizable avatars
  • Consider different names for different alert types
  • Update webhook defaults instead of overriding each time

Performance:

  • Be aware of 30 messages/minute rate limit
  • Use cooldowns for high-frequency events
  • Consider batching multiple events
  • Space out rapid triggers

Formatting:

  • Test Markdown in Discord first
  • Don't over-use formatting (harder to read)
  • Use line breaks (\n) for structure
  • Consider code blocks for structured data

Organization:

  • Use different channels for different alert types
  • Name webhooks clearly (e.g., "TipLink - Tips", "TipLink - Subs")
  • Document which webhook goes where
  • Use channel categories in Discord

Technical Reference

Webhook URL Format:

https://discord.com/api/webhooks/[WEBHOOK_ID]/[WEBHOOK_TOKEN]
  • WEBHOOK_ID: Numeric ID
  • WEBHOOK_TOKEN: Secret authentication token

Message Limits:

  • Content: 2000 characters
  • Username: 80 characters
  • Webhook name: 80 characters

Rate Limits:

  • 30 messages per minute per webhook
  • 5 requests per second
  • Rate limit headers returned by Discord
  • 429 status code when rate limited

Supported Markdown:

  • Italic: *text* or _text_
  • Bold: **text** or __text__
  • Bold Italic: ***text***
  • Underline: __text__
  • Strikethrough: ~~text~~
  • Spoiler: ||text||
  • Code: `text`
  • Code block: ```language\ncode\n```
  • Quote: > text or >>> multiline
  • Links: [text](url)

Mentions:

  • User: <@USER_ID>
  • Role: <@&ROLE_ID>
  • Channel: <#CHANNEL_ID>
  • Everyone: @everyone (requires permission)
  • Here: @here (requires permission)

Avatar Requirements:

  • Must be direct image URL
  • Publicly accessible
  • Formats: PNG, JPG, GIF, WEBP
  • Max size: 8MB (Discord limit)
  • Recommended: 128x128px or larger

HTTP Details:

  • Method: POST
  • Content-Type: application/json
  • Payload format:
{
"content": "Message text",
"username": "Custom name",
"avatar_url": "https://example.com/avatar.png"
}

Response Codes:

  • 200/204: Success
  • 400: Bad request (invalid JSON)
  • 401: Invalid webhook
  • 404: Webhook not found
  • 429: Rate limited
  • 500: Discord server error

Placeholders:

  • Processed before sending
  • Available placeholders depend on event type
  • Works in content and username fields
  • Does not work in avatar_url field

Webhook Behavior:

  • Messages posted as webhook user
  • No online status
  • Can be deleted by channel moderators
  • Can be rate limited separately from bot
  • No message editing or deletion by webhook

Discord API Version:

  • Uses Discord API v10
  • Follows Discord rate limit guidelines
  • No OAuth required (token in URL)
  • Webhook-only permissions (can't read messages)

Error Handling:

  • Logs errors to TipLink console
  • No automatic retry on failure
  • Rate limit errors logged
  • Invalid webhook fails silently

Performance:

  • Asynchronous (non-blocking)
  • Multiple webhooks can be called simultaneously
  • Network latency: typically 50-200ms
  • No local caching