Portal Design – Make It Yours

Make the portal feel like part of your product, with your brand, your home page, and custom HTML, CSS, and JavaScript.

On this page

    Your portal is where customers come to share ideas and see what you've done with them. Making it look and feel like your product builds trust and brings people back. This guide covers what you can change, planning a feedback home, the custom code boxes and where each one appears, building a home page with Liquid, styling with CSS, adding JavaScript safely, and testing before you launch.

    What you can change

    Most teams start with the basics and add custom code only when they want the portal to match their product closely. Custom code, white labeling, and your own domain depend on your plan.

    ChangeWhereNeeds code?
    Site title and welcome messageWeb portal, Site textNo
    Logo and colorsWeb portal, Appearance and features, GeneralNo
    Home page, or go straight to a forumAppearance and features, HomepageNo
    Remove “Powered by UserVoice”Appearance and features, Enable White LabelingNo
    Your own address, like feedback.yourcompany.comWeb portal, Domain name, Domain aliasNo
    Header, footer, home page, styles, and scriptsAppearance and features, HTML/CSS/JavascriptYes
    A UserVoice portal with a custom home page: a large heading, a short welcome, a button to explore and share feedback, and product areas
    A custom home page built with the HTML and CSS boxes.

    Plan your feedback home

    A good feedback home answers three questions in the first screen: what is this, what can I do here, and does anything happen when I do?

    Lead with the action

    A clear heading and a search box, so customers find an existing idea before posting a new one.

    Show it's alive

    Recently updated ideas and a public roadmap prove that ideas go somewhere.

    Set expectations

    One line on how often you review ideas, and what the statuses mean.

    Keep it familiar

    Match your product's header, fonts, and colors, so the portal feels like part of it.

    Do and don't

    • Use your product's fonts and colors, and keep text contrast high.
    • Link back to your product and your help center.
    • Keep the page fast: small images, one or two fonts.
    • Hide the search box or the way to post an idea.
    • Promise dates or features in the home page copy.
    • Rebuild UserVoice's own idea list or voting from scratch.

    Turn on custom code

    Custom code lives in one place: the HTML/CSS/Javascript tab of the portal's design settings.

    1. In Settings, open Web portal, then Appearance and features, and select Edit.
    2. Open the HTML/CSS/Javascript tab, and tick Enable custom HTML/CSS/Javascript. Confirm that you accept the risks of custom JavaScript.
    3. Fill in the boxes you need. Leave the header and footer blank to keep UserVoice's defaults.
    4. Save. Changes are live for every visitor right away.
    Watch out

    There's no preview. Saving publishes immediately. Build and test your code somewhere else first, and make changes at a quiet time.

    Good to know

    You can go back one step. The tab shows when the design last changed and by whom. Revert last custom change restores the previous version. Keep your own copy of every box, too, so you can go back further.

    The custom code boxes

    Each box fills one part of every portal page. All of them accept Liquid, UserVoice's template language.

    BoxWhere it appearsUse it for
    HEADInside the page's headFonts, a favicon, and verification tags
    HEADERTop of every pageYour product's navigation and logo. Leave blank for the default header.
    HOME PAGEThe portal's home pageYour feedback home: welcome, search, forums, and roadmap
    ABOVE SIDEBAR and BELOW SIDEBARAround the sidebar on forum and idea pagesShort notes, such as how you review ideas
    FOOTERBottom of every pageLinks to your product, help center, and policies. Leave blank for the default.
    Custom CSSEvery pageStyles for everything above, and for UserVoice's own pages
    JAVASCRIPT SNIPPETSEnd of every pageSmall scripts, such as analytics, in their own script tags
    Good to know

    Script and style tags in HTML boxes are removed. Put styles in Custom CSS and scripts in the JavaScript box. Everything else in the HTML boxes is kept as you wrote it.

    Build a home page

    The HOME PAGE box is a Liquid template. Mix your own HTML with UserVoice's data and building blocks. Leave it blank to keep the default home page.

    A simple feedback home

    <section class="hero">
      <h1>{{ site.title }}</h1>
      {{ site.body_html }}
      {{ render_sidebar }}
    </section>
    
    <section class="forums">
      {% for forum in site.forums %}
        <a class="forum-card" href="{{ forum.url }}">
          <h2>{{ forum.name }}</h2>
          <p>{{ forum.suggestions_count }} ideas</p>
        </a>
      {% endfor %}
    </section>
    
    {% if site.portal_roadmap_enabled %}{% render_roadmap %}{% endif %}
    Building blockWhat it gives you
    {{ render_sidebar }}UserVoice's search, so customers find existing ideas
    {{ render_user }}Sign-in, or the signed-in person's menu
    {% render_roadmap %}Your public roadmap. Add a roadmap's ID to choose one.
    {% render_suggestion idea %}UserVoice's own idea card, with voting

    Data you can use

    VariableIncludes
    siteTitle, welcome message, logo, colors, forums, default forum, and recently updated ideas
    forumName, link, prompt, categories, ideas, and counts
    idea (from a list)Title, link, status, category, and comment count
    current_userThe signed-in person's name and picture, when someone is signed in

    Show recently updated ideas, with a fallback when there are none

    {% if site.recently_updated_suggestions.size > 0 %}
      <h2>{{ "Recently updated" | translate }}</h2>
      {% for idea in site.recently_updated_suggestions %}
        <a href="{{ idea.url }}">{{ idea.title }}</a>
        <span class="status">{{ idea.status_name }}</span>
      {% endfor %}
    {% endif %}
    • Translate your own text with the translate filter, so translated portals read naturally.
    • Show different content to signed-in and anonymous visitors by checking current_user.
    • Keep the skip link working: give your main content the ID start-of-content.
    Watch out

    Personal details are available to your code. current_user includes the visitor's email address. Don't display it or send it anywhere without a reason.

    Style it with CSS

    Your CSS loads before UserVoice's own styles, so make your selectors more specific instead of reaching for !important.

    Examples

    /* Win with specificity, not !important */
    .site3 .uv-home-page .hero { padding: 48px 0; }
    .site3 .uv-forum-page .uvIdeaTitle { font-size: 20px; }
    
    /* Different looks for signed-in and anonymous visitors */
    .uv-no-user .hero .welcome { display: block; }
    TargetClasses
    The whole portal.site3, on the html element
    A type of page.uv-home-page, .uv-forum-page, .uv-suggestion-page, .uv-profile-page
    One forum.uv-forum-123 (the forum's ID)
    Visitors.uv-user, .uv-no-user, .uv-user-SSO, .uv-user-admin
    Language and direction.uv-locale-fr, .uv-direction-rtl
    • Prefer page and visitor classes over UserVoice's inner component classes, which can change.
    • Load fonts with a link tag in HEAD, not with @import.
    • Keep CSS small, under about 40 KB. It loads on every page.

    Add JavaScript carefully

    JavaScript runs on every portal page, for every visitor. Treat it like code on your own website.

    A small, safe snippet

    <script>
      // Runs on every portal page. Keep it small, and don't rely on
      // UserVoice's internal markup, which can change.
      document.querySelectorAll('.footer-year').forEach(function (el) {
        el.textContent = new Date().getFullYear();
      });
    </script>
    • Wrap scripts in script tags in the JavaScript box.
    • Escape Liquid: the box is read as Liquid first, so wrap code that uses double curly braces in raw and endraw tags.
    • Use only scripts you trust. With custom code on, the portal doesn't restrict where scripts load from.
    • Don't depend on UserVoice's internal markup. Use your own elements, or the page and visitor classes.
    Watch out

    A broken script can break the portal. Test every change in another environment first, and keep the previous version ready to restore.

    Beyond the portal

    Custom code changes portal pages only. A few other places need their own settings to match your brand.

    PlaceHow to brand it
    Emails to customersGeneral, Email Communications: colors, logo, and sending domain
    The widgetSettings, Widgets: its own colors and position
    Share previews and emailsUse the uploaded logo, so keep it current even if your header uses another
    Browser tab iconAdd a favicon link in the HEAD box
    “Powered by UserVoice”Enable White Labeling, which covers the portal and emails
    Your addressDomain alias, with a CNAME record from your DNS team

    Test before you launch

    Check every kind of page, as every kind of visitor, before you call it done.

    CheckHow
    Every page typeHome, a forum, an idea, a profile, search results, and sign-in
    Every visitorSigned out, signed in, and signed in through single sign-on
    Private forumsThe access-denied page uses your header and footer too
    PhonesA narrow window, about 375 pixels wide
    ContrastBody text at least 7:1, and smaller muted text at least 4.5:1
    KeyboardTab through the page, and use the skip link
    LanguagesTranslated text, and right-to-left languages if you support them
    Tip

    Know how to roll back. Untick Enable custom HTML/CSS/Javascript to return to the standard design at once, or select Revert last custom change.

    Try it with your AI assistant

    1 of 4 prompts in the PDF

    Attach the PDF to Claude, ChatGPT, or another assistant, then paste:

    Using the UserVoice guide I attached, write Custom CSS that matches our brand: [colors, fonts, link to our site]. Follow the guide's advice on specificity and size.

    Three more prompts and the checklist are in the full guide. Get it by email →

    Free, by email

    Get the full guide

    We'll email you the 13-page PDF. It adds two things that aren't on this page:

    • A six-step checklist to put the guide into practice
    • Four AI prompts for Claude, ChatGPT, or your assistant of choice
    Cover of Portal Design – Make It Yours guide from UserVoice