← Back to challenges
GitHub Issue to Discord
3 intermediate
GitHub Discord Webhooks API
Create a workflow that monitors GitHub issues and forwards them to Discord with rich formatting. Practice webhook handling, data transformation, and API integration.
Your Challenge
Core Functionality
Your workflow must:
- Set up a Webhook Trigger node to receive GitHub issue events
- Extract issue details: title, description, labels, author, issue number
- Create a Discord embed message with proper formatting
- Send the embed to a specified Discord channel using a webhook
- Include a clickable link back to the original GitHub issue
- Display issue labels with appropriate visual formatting
Error Handling
Your workflow should:
- Enable "Continue on Fail" on the Discord node to prevent workflow crashes
- Use IF node to validate incoming webhook has required fields (issue.title, issue.url, issue.number)
- Return appropriate HTTP status codes to GitHub (200 for success, 400 for invalid payload, 500 for server errors)
- Send failed webhook attempts to a monitoring Slack channel or email with error details
Edge Cases
Your workflow should handle:
- Handle issue descriptions longer than Discord's character limits (truncate appropriately)
- Process issues with no description
- Deal with special characters and markdown in issue text
- Handle issues with many labels (prevent Discord embed overflow)
- Handle webhook retries from GitHub (prevent duplicate Discord messages)
- Process rapid-fire issue events without hitting Discord rate limits
Bonus Challenges (Optional)
Take it further by:
- Filter issues by specific labels before forwarding (e.g., only "bug" or "help wanted")
- Add different embed colors based on issue priority or label
- Include issue assignee information if available
- Support multiple GitHub repositories routing to different Discord channels
- Add reaction buttons or Discord interactions for issue triage
Tips & Hints
- GitHub webhooks send JSON payloads - you'll need to parse them
- Discord embeds support rich formatting with colors and fields
- Consider filtering issues by label or repository
- Use the Set node to restructure data before sending to Discord
- Test with GitHub's webhook delivery history to replay events