Discourse Welcome Modal

:information_source: Summary A welcome modal to help new or returning community members with actionable ways to begin exploring/engaging in a forum
:eyeglasses: Preview Theme Creator (Requires being logged in)
:hammer_and_wrench: Repository GitHub - noahLovell/discourse-welcome-modal
:question: Install Guide How to install a theme or theme component
:open_book: New to Discourse Themes? Beginner’s guide to using Discourse Themes

Install this theme component

:rocket: Why use this?

Many communities see high signup rates but struggle with “first-day churn.” By providing actionable paths, you reduce the cognitive load on new members and guide them toward the high-value behaviors that build long-term retention.


:camera_flash: Screenshots

Desktop


Mobile


How it works

The modal uses a logic-based rollout so you prevent prompting regular members who are already familiar with your community.

  1. New Users: Automatically displays to all users who registered after your feature_enabled_date.
  2. Grace Period: During a configurable window, the component “silently” marks active users as having seen the modal so they aren’t interrupted.
  3. Legacy Users: Shows to existing users who return to the forum after your grace period has expired, helping re-onboard them.

Note: The “seen” state is stored locally in the user’s browser, so the modal may reappear if they switch devices or clear their cache.


:gear: Settings

Setting Type Default Description
feature_enabled_date string "2026-01-01" Enter date in YYYY-MM-DD format.
grace_period_months integer 3 Number of months after feature enable date to silently mark existing users as seen.
card_layout enum "grid" Choose how cards are displayed in the welcome modal (grid or list).
card_content objects [] Configure the cards shown in the welcome modal (requires id, title, subtitle, imgUrl, altText, btnLabel, and action).
title (Translation) text Join the conversation The main heading displayed at the top of the modal.
close_btn (Translation) text Done The label for the button that dismisses the modal.

This is my first proper theme component :raised_hands: I’d love feedback, thoughts, things that might have been done better :smile:

6 Likes