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
- Create Discord webhook (Channel Settings → Integrations → Webhooks)
- Copy the webhook URL
- Create or edit an alert in TipLink
- Add the Discord Webhook action
- Paste the webhook URL
- Enter your message
- Optionally customize username and avatar
- 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)
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
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
-
Open Channel Settings
- Right-click your Discord channel
- Select "Edit Channel"
- Go to "Integrations" tab
-
Create Webhook
- Click "Webhooks" or "View Webhooks"
- Click "New Webhook"
- Name your webhook (e.g., "TipLink Alerts")
- Choose avatar for webhook (optional)
-
Copy Webhook URL
- Click "Copy Webhook URL"
- Save this URL securely
- You'll paste it into TipLink
Basic Message Setup
-
Create Alert in TipLink
- Navigate to Alerts
- Create new or edit existing
- Set trigger conditions
-
Add Discord Webhook Action
- Actions → Add Action
- Select "Discord Webhook Message"
-
Configure Webhook
- Paste webhook URL
- Enter message:
{username} just tipped ${amount}! - Leave username/avatar empty (uses defaults)
-
Test
- Save alert
- Trigger it
- Check Discord channel
Custom Username/Avatar
To personalize the webhook appearance:
-
Set Custom Username
- Username:
TipLink Alert Bot - This overrides the webhook's default name
- Username:
-
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
-
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:
-
Create webhooks for each channel
- Webhook 1: #alerts channel
- Webhook 2: #logs channel
- Webhook 3: #vip-tips channel
-
Create separate alerts or actions
- Small tips → #alerts
- Large tips → #vip-tips
- All events → #logs
-
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}notusername - 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 IDWEBHOOK_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:
> textor>>> 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
contentandusernamefields - Does not work in
avatar_urlfield
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