Overview
DASHBOARD GUIDE

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.

Path
DashboardMessagingFeeds
Module
feeds
Required permission
feeds.view

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
Templates
Health
Config
Audit
Subscriptions
Add, edit, pause, or delete the actual feeds wired into your channels.
Templates
Define how each provider renders into Discord using plain text or rich embeds.
Health
Delivery counts for today and the past 7 days, plus per-source latency and last poll.
Config
Server-wide limits, polling cadence, defaults, quiet hours, and which providers are allowed.
Audit
Filterable log of every create, pause, resume, delete, config change, and template change.

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

ProviderDropdown

Which platform the feed comes from. Drives validation on the source ID below.

Example: YouTube

Source IDText input

Channel ID, handle, subreddit, RSS URL, or webhook secret depending on the provider.

Example: UCXuqSBlHAE6Xw-yeJA0Tunw

DestinationsMulti-select

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.

TemplateDropdown

Pick a saved template or leave blank to use the global default. Templates are managed on the next tab.

FiltersTags

Per-feed include or exclude rules — for example only post videos longer than a duration, or skip live streams.

Quiet hours overrideDuration

Optional override of the server-wide quiet hours window for this single feed.

Paused at createToggle

Save the feed in a paused state so you can finish wiring it up before the first delivery.

Use destinations, not duplicates
Add multiple destinations to one subscription instead of duplicating the feed. Each destination can have its own mention policy.

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

A bar-per-day chart of successful and failed deliveries over the last week. Hover any bar for the exact count. The card collapses to a friendly empty state until your first delivery is recorded.

Per-source latency table

Each source ID is listed with its measured latency and last poll time. Sustained high latency or a stale last-poll usually means the upstream provider is rate limiting you — check the Audit tab and consider lengthening the poll interval.

Config tab

Server-wide rules. These apply to every subscription unless a feed overrides them.

LimitsPolling & retriesDefaultsQuiet hoursErrorsProviders
SettingTypeDefaultDescription
Max subscriptions per serverNumber100Hard cap on total subscriptions across all providers.
Max destinations per subscriptionNumber10How many channels a single feed can post to.
Poll interval (seconds)Number60How often the bot checks each source for new items.
Max retriesNumber5Per-delivery retries before the failure is recorded.
Retry backoff (ms)Number2000Wait time multiplier between retries.
Dedupe window (minutes)Number60Window during which the same item won’t be posted twice.
Retry on failureToggleOnDisable to fail fast — useful when debugging template errors.
Log deliveriesToggleOnTurn off to reduce audit volume on very busy feeds.
Default channelChannelNoneNew subscriptions use this channel unless you pick another.
Default templateDropdownNoneFallback template when a feed has no specific one.
Default mention policyDropdownNoneWhether new feeds ping nobody, @here, or a chosen role.
Quiet hours start / endTime22:00 / 07:0024-hour times during which deliveries pause server-wide.
Error channelChannelNoneWhere to send a heads-up after repeated delivery failures.
Send error after N failuresNumber3Threshold before the error notice fires.
Enabled providersMulti-toggleAllMaster switch for each platform — disabled providers are hidden from the picker.
Saving changes
Use the Save configuration button at the bottom of the tab. Edits stay local until you save.

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.

1

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.
2

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.
3

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.

No deliveries appear after I save a feed
Polling runs on a schedule. With the default 60-second interval, allow up to two minutes for the first item. Check that the subscription is Active, the destination channel still exists, and the source actually has new content since the dedupe window.
Subscription is stuck in Error
Open Audit with the action set to FD_SUB_PAUSED or look for the error channel notice. The most common causes are the destination channel being deleted, the bot losing Send Messages in that channel, or the upstream source being removed. Fix the underlying issue, then resume from the Subscriptions tab.
Quiet hours seem to be blocking everything
Quiet hours pause delivery server-wide between quietHoursStart and quietHoursEnd. If a single feed should ignore them, set its per-feed override on the Add/Edit form. Times are 24-hour and follow the bot's UTC clock.
A provider is missing from the picker
The Config tab's Enabled providers grid acts as a master switch. If YouTube or Twitch isn't offered when adding a subscription, re-enable it there and save.