Templates
Every feed post is built from a message template. Each platform has a default, named feeds.<platform> (for example feeds.youtube), and Twitch and Kick clips have their own (feeds.twitch.clips, feeds.kick.clips). A subscription uses its platform's default unless you pick one of your own.
Use your own template
- Open Edit Subscription (or step 3 of the wizard).
- Under Post Template, click Create template. The Message Builder opens with a preview filled from the source's latest post.
- Design the post, using the variables below, and save it.
- You come back to the subscription with the new template selected. Click Save Changes.
Pick an existing template in the Post Template list to reuse it, or Edit template to change the selected one. A template you create for a platform is offered for every subscription on that platform. To change the look of every subscription on a platform at once, edit its default instead, from the dashboard's Templates page.
After changing a template, click Re-send latest item on the subscription card to see the result in the channel.
Variables
Write a variable in curly braces, such as {post.title}. Besides the post variables below, every template can use:
{source.name},{source.url},{source.platform}and{source.icon_url}for the channel, account or feed,- the
{server.*}variables for your server.
Every platform
| Variable | Description |
|---|---|
{post.title} | Post title |
{post.url} | Post URL |
{post.description} | Post description or summary |
{post.author} | Post author name |
{post.author_url} | Post author profile URL |
{post.image_url} | Full-size image URL |
{post.thumbnail_url} | Thumbnail image URL |
{post.gallery_urls} | All image URLs, one per line, for a MediaGallery (one for a single image) |
{post.published_at} | Unix timestamp |
{post.published_at_iso} | ISO 8601 publish time |
Extra variables per platform
| Platform | Variable | Description |
|---|---|---|
| Bluesky | {post.handle} | Author @handle |
| Bluesky | {post.likes} | Like count |
| Bluesky | {post.reposts} | Repost count |
| Bluesky | {post.replies} | Reply count |
{post.shortcode} | Post shortcode | |
{post.handle} | @handle | |
{post.media_type} | Media type | |
| Kick | {post.game} | Stream category |
| Kick | {post.viewer_count} | Viewer count |
| Kick | {post.is_live} | Whether live (Yes or No) |
| Kick | {post.stream_preview_url} | Live stream thumbnail URL |
| Kick | {post.clip_duration} | Clip duration (clips subscriptions only; empty for live) |
| Kick | {post.clip_views} | Clip view count (clips subscriptions only; empty for live) |
| Podcast | {post.audio_url} | Episode MP3 / audio file URL (from <enclosure>) |
| Podcast | {post.duration} | Episode duration |
| Podcast | {post.episode} | Episode number |
| Podcast | {post.season} | Season number |
{post.id} | Reddit post ID (without t3_ prefix) | |
{post.author_name} | Author username (no prefix) | |
{post.score} | Upvote count | |
{post.comments} | Comment count | |
{post.media_type} | Media type: image / gallery / video / third-party / text | |
{post.subreddit} | Subreddit with r/ prefix | |
{post.subreddit_name} | Subreddit name without r/ prefix | |
{post.subreddit_url} | Subreddit URL | |
{post.subreddit_icon} | Subreddit community icon URL | |
{post.subreddit_members} | Subreddit subscriber count (if available) | |
{post.flair} | Post flair text (empty if none) | |
{post.domain} | Link domain for link posts; self.<subreddit> for self-posts | |
{post.external_url} | External link URL for link posts; empty for self/image posts | |
| TikTok | {post.video_id} | TikTok video ID |
| TikTok | {post.handle} | @handle |
| Twitch | {post.game} | Game or category |
| Twitch | {post.viewer_count} | Viewer count |
| Twitch | {post.is_live} | Whether live (Yes or No) |
| Twitch | {post.duration} | Clip duration (empty for live) |
| Twitch | {post.stream_preview_url} | Live stream preview image (1920x1080, cache-busted) |
| Twitch | {post.clip_duration} | Clip duration (clips subscriptions only; empty for live) |
| Twitch | {post.clip_views} | Clip view count (clips subscriptions only; empty for live) |
| Twitch | {post.clip_creator} | Username who created the clip (clips subscriptions only) |
| X (Twitter) | {post.handle} | @handle |
| X (Twitter) | {post.likes} | Like count |
| X (Twitter) | {post.retweets} | Retweet count |
| X (Twitter) | {post.replies} | Reply count |
| X (Twitter) | {post.bookmarks} | Bookmark count |
| YouTube | {post.video_id} | YouTube video ID |
| YouTube | {post.channel_id} | YouTube channel ID |
| YouTube | {post.channel_icon_url} | Channel icon/avatar URL |
{post.published_at} is a Unix timestamp, so <t:{post.published_at}:R> shows "3 hours ago" in Discord. Only use variables listed for your platform: the Available fields list in step 2 of the wizard shows which ones the source's latest post has.
The default posts
Twitch and Kick posts are shown on Providers.