Feeds dashboard
Pipe content from YouTube, Twitch, X, Reddit, RSS, podcasts, Instagram, TikTok, Kick, and webhooks straight into Discord. Build subscriptions, customise message templates, watch delivery health, and review every change in audit.
Before you start
A handful of things make the rest of this guide easier to follow.
- The Feeds module is enabled for the server (toggle on the page header).
- You have a destination text or announcement channel ready.
- For role mentions, the role you want to ping already exists.
- For platform feeds (YouTube, Twitch, etc.) you know the channel handle, user ID, or RSS URL.
- You hold the feeds.view permission, plus feeds.manage for write actions.
What you'll see
The page splits into five tabs. Pick the tab that matches the job you're doing.
Subscriptions tab
One row per content source you've wired up. Use this tab daily.
What's on the page
- Four counters across the top: Total, Active, Paused, Error.
- A row of provider chips that filter the list — YouTube, Twitch, X, Reddit, RSS, Webhook, Podcasts, Instagram, TikTok, Kick.
- A status dropdown that scopes the table to Active, Paused, or Error.
- The subscription table itself, with edit, pause/resume, and delete on each row.
The Add / Edit form
Which platform the feed comes from. Drives validation on the source ID below.
Example: YouTube
Channel ID, handle, subreddit, RSS URL, or webhook secret depending on the provider.
Example: UCXuqSBlHAE6Xw-yeJA0Tunw
One or more channels with an optional mention. Each row picks a channel, a mention policy (None, @here, role), and a role if you chose role mention.
Pick a saved template or leave blank to use the global default. Templates are managed on the next tab.
Per-feed include or exclude rules — for example only post videos longer than a duration, or skip live streams.
Optional override of the server-wide quiet hours window for this single feed.
Save the feed in a paused state so you can finish wiring it up before the first delivery.
Templates tab
Templates control how a delivery looks in Discord. They can be plain text, a rich embed, or both.
Template list
- Each row shows: Name, Provider (or All), Scope (Per feed / All), Default flag, and Embed mode (Rich / Plain).
- Click a name to open the editor. The editor contains a content textarea, the embed builder, and a live preview.
- Mark exactly one template as default per provider. New subscriptions inherit it automatically.
Template variables
- {provider} — the platform name, e.g. YouTube.
- {source.name} — the channel/source's display name.
- {item.title}, {item.url}, {item.summary} — the content payload.
- {item.publishedAt}, {item.thumbnail}, {item.type} — metadata.
Embed builder
- Toggle Rich embed on to expose title, description, color, author, thumbnail, image, footer, and field rows.
- Pick from preset Discord colours (Blurple, Green, Yellow, Red, Fuchsia, White, Black) or paste a hex.
- The right panel renders a live preview using sample data so you can confirm the layout before saving.
Health tab
See whether deliveries are landing and which sources are slow or failing.
Delivery counters
- Delivered today and Failed today — running counters since midnight server time.
- 7-day delivered and 7-day failed — rolling totals.
- A second row mirrors the subscription totals (total, active, paused, error) so you can correlate at a glance.
7-day delivery chart
Per-source latency table
Config tab
Server-wide rules. These apply to every subscription unless a feed overrides them.
| Setting | Type | Default | Description |
|---|---|---|---|
| Max subscriptions per server | Number | 100 | Hard cap on total subscriptions across all providers. |
| Max destinations per subscription | Number | 10 | How many channels a single feed can post to. |
| Poll interval (seconds) | Number | 60 | How often the bot checks each source for new items. |
| Max retries | Number | 5 | Per-delivery retries before the failure is recorded. |
| Retry backoff (ms) | Number | 2000 | Wait time multiplier between retries. |
| Dedupe window (minutes) | Number | 60 | Window during which the same item won’t be posted twice. |
| Retry on failure | Toggle | On | Disable to fail fast — useful when debugging template errors. |
| Log deliveries | Toggle | On | Turn off to reduce audit volume on very busy feeds. |
| Default channel | Channel | None | New subscriptions use this channel unless you pick another. |
| Default template | Dropdown | None | Fallback template when a feed has no specific one. |
| Default mention policy | Dropdown | None | Whether new feeds ping nobody, @here, or a chosen role. |
| Quiet hours start / end | Time | 22:00 / 07:00 | 24-hour times during which deliveries pause server-wide. |
| Error channel | Channel | None | Where to send a heads-up after repeated delivery failures. |
| Send error after N failures | Number | 3 | Threshold before the error notice fires. |
| Enabled providers | Multi-toggle | All | Master switch for each platform — disabled providers are hidden from the picker. |
Audit tab
A complete record of every change to feeds on this server.
What's logged
- FD_SUB_CREATED
- A subscription was added.
- FD_SUB_PAUSED
- A subscription was paused.
- FD_SUB_RESUMED
- A paused subscription was resumed.
- FD_SUB_DELETED
- A subscription was permanently removed.
- FD_CONFIG_UPDATED
- A change was saved on the Config tab.
- FD_TEMPLATE_CREATED
- A new template was added.
- FD_TEMPLATE_DELETED
- A template was removed.
Filtering & paging
- Use the action dropdown to scope the table to one event type.
- Each row shows when, who acted, the action, the target ID, and a JSON-style details summary.
- Pagination buttons sit below the table — page size matches the rest of the dashboard.
Common tasks
Three workflows you'll likely run on day one.
Add your first YouTube channel
Open DashboardMessagingFeedsSubscriptions.
- Click Add subscription. Pick YouTube as the provider.
- Paste the channel ID or handle into Source ID — for example @LinusTechTips or the UC… ID from youtube.comchannelUCXuq….
- Pick a destination channel and (optionally) a mention policy.
- Leave Template blank to use the default, or assign a YouTube-specific one if you have one.
- Click Save. The first poll runs within the configured poll interval.
Build a custom embed template
Open DashboardMessagingFeedsTemplates.
- Click New template. Give it a memorable name and pick a provider scope (or leave it global).
- In the content box, write the plain-text portion using variables — for example New {provider} from {source.name}: {item.title}.
- Toggle Rich embed on. Set a colour, fill in the title, description, thumbnail, and footer.
- Watch the live preview on the right. When it looks right, click Save.
- If you want this to be the default for a provider, tick Default before saving.
Diagnose a feed in error state
Open DashboardMessagingFeedsHealth.
- Find the source row with high latency or stale Last poll in the per-source table.
- Switch to Audit, filter on the relevant action types, and look for the most recent failure entry.
- Open the subscription on Subscriptions. Confirm the source ID still resolves on the upstream platform.
- If the upstream is rate limiting, raise the global Poll interval on the Config tab and resume the feed.
Troubleshooting
Common issues you might hit and what to check.