Skip to main content
A multi-purpose embed block. Think of it as a mini Linktree inside a widget: up to 12 entries of mixed type, rendered either as cards-that-open-modals (button mode) or as live iframes (embed mode).

What an entry can be

The unified embed widget accepts five EMBED_ENTRY_KINDS: The youtube literal is kept on disk for backwards compatibility — the widget itself is named “YouTube / embed” in the dashboard and any entry kind is allowed inside it.

Per-entry fields

Display modes

Each widget has one mode for all its entries:

Button mode (embedRender: "button", default)

Every entry is a card with thumbnail + label + description. Tapping opens the content in a modal centered in your card (so visitors don’t navigate away). Telegram and link entries skip the modal — they open in a new tab directly. Best for:
  • Mixed embeds (YouTube videos + a Discord invite + an external website).
  • Pages where you want a clean grid and don’t want auto-playing iframes loading on first paint.

Embed mode (embedRender: "embed")

Each entry renders inline:
  • youtube / iframe — live iframe.
  • discord_invite — full server invite card.
  • telegram / link — still a CTA link tile (no inline iframe — t.me doesn’t allow embedding).
Best for:
  • A single hero video.
  • Always-visible content like a Twitch player or a Spotify playlist.
Embed mode loads every iframe on page load — heavy on bandwidth. If you have more than 2–3 embeds, prefer button mode.

Grid columns

youtubeGridColumnsPerRow accepts 14 (or omit for auto-fit).

Limits

  • 12 entries per widget (entries.max(12)).
  • 16 widgets per profile.
  • URLs capped at 2,048 chars; labels at 80; descriptions at 400.
  • Iframe sandbox: allow-scripts allow-same-origin allow-popups allow-presentation.

Common questions

Check the URL is the standard youtube.com/watch?v= or youtu.be/ form. Live streams sometimes need to be public (not unlisted) for embedding.
Some sites block being embedded (X-Frame-Options / CSP). There’s nothing we can do — the site’s owner has to allow embedding. Use a link button kind instead.
Yes — paste their https://open.spotify.com/embed/... or https://w.soundcloud.com/player?... URL into an iframe entry.
Telegram doesn’t allow t.me URLs to be iframed. The telegram kind always renders as a CTA link tile that opens Telegram in a new tab.
Make sure the invite is permanent (set to never expire in Discord) and the Server Widget is enabled in the server’s settings → Widget.