Feature requests

Collect customer ideas through your Customer Portal and the SDK request board. Your team triages the shared app-scoped records, replies, and chooses which requests become public.

Part of Customer Portal

Requests belong under Customer Portal, alongside Roadmap, Help center, Changelog, and optional Support. They have their own status and visibility rather than the Engage campaign composer. Portal settings controls your company address, included apps, and publication.

Portal and SDK participation

Customers can read published requests without signing in. Portal submission and voting require email verification and feedback consent. SDK submission, voting, following, and comments use the app's write key, consent, and an authenticated anonymous or identified subject. Portal identities remain separate from SDK identities.

The dashboard shows each request's source (Portal or SDK). Detail pages distinguish verified portal visitors, anonymous SDK users, and identified SDK users. Public pages do not expose private participant identities or SDK comments.

UserGist's public request board with voting, status filters, search, and an idea submission form.
The public UserGist portal lets visitors browse ideas and verify their email to participate.

Request settings reference

The request settings API configures SDK board access, appearance, and follower notifications. These fields are distinct from company portal settings. The dashboard's current appearance controls are described in Setup & branding; the API schema also retains older public-roadmap fields.

Entry

FieldNotes
enabledMaster toggle. When off, the SDK board doesn't render and submitRequest rejects with disabled.
entryLabelThe string shown on your in-app entry point (1–60 chars). Default: Feature requests.

SDK permissions — who can do what

Two segments gate access:

FieldNotes
viewSegmentIdSegment of users who can view the board. Leave empty to allow everyone.
submitSegmentIdSegment of users who can submit new requests. Typically narrower than view — e.g. only paying users can submit.

These segment rules govern the SDK board. Hosted portal participation uses its own email-verified visitor session and portal publication checks.

Earlier public-roadmap API settings

FieldNotes
publicRoadmapEnabledEnables the earlier /v1/public/roadmap/:slug read-only request API.
publicSlugSlug used by that earlier API; separate from the company portal address and app path.

For the current hosted portal, use https://<company>.usergist.com/<app>/requests and /roadmap, with the portal's published state, included apps, and request visibility. Do not use the earlier fields to configure the new portal.

Branding

FieldNotes
logoUrlApp logo used on the portal and SDK request board.
accentColorHex #rrggbb. Active states and upvote highlights.
portalColorsCustom primary, background, text, secondary-text, and border colors.
introCopyUp to 500 chars. Intro below the Requests heading and on the SDK board.

themeMode chooses the app default or custom theme. coverImageUrl remains in the request settings schema; the current hosted portal does not render a cover-image hero.

Notification rules

Triage actions can notify followers automatically.

RuleTriggers when
transitionsA request's status changes — keys such as under_review->planned enable or disable a transition.
responseFirstFirst admin response is posted.
responseEditAdmin edits an existing response.
templateOverridesstatusChange and response copy overrides for outgoing instructions.

The current service queues in-app SDK instructions for eligible followers with feedback consent. Automatic native push delivery for request updates is not implemented. Portal voting does not create an SDK follow, and the portal does not expose visitor follow or comment controls.

Feature requests triage view in the dashboard.
Requests list. Portal settings manages company publication and app appearance.

Triage board

Open Customer Portal → Requests for the searchable list with status filters, votes, source, and portal visibility. Open a row to review its detail, change status, write a team response, or moderate it. The separate Roadmap groups planned, in-progress, and shipped work into columns.

Sort

ValueNotes
topHighest vote count first.
newestMost recently submitted.
recently_updatedMost recent triage activity (status change, response, comment).

API and SDK filters

  • Status — multi-select across under_review, planned, in_progress, shipped, declined.
  • Personal filter — submitted (by me) · upvoted · following.
  • Hidden — show requests admin-hidden for moderation.
  • Search — debounced (300 ms) across title + body.

Statuses

StatusDefault orderMeaning
under_review1Open for discussion; no commitment.
planned2On the roadmap. We will build this.
in_progress3Active development.
shipped4Live. Configured SDK follower notification rules apply.
declined5Won't build. Add a team response to explain the decision.

Bulk operations

The API supports:

  • Change status (up to 200 at once).
  • Merge — pick a canonical + duplicates. Votes and followers transfer; comments preserve.

Developer responses and hide / unhide moderation are available on an individual request.

The dashboard list supports selecting requests to publish on the portal or remove from it.

Request detail showing its status, portal visibility, team response, SDK comments, and submitter identity.
Review the request's status, response, and visibility without exposing private SDK comments on the portal.

In-app surface

Two ways your app talks to requests:

// Hosted UI (recommended) — UserGist renders the full board
UserGist.openRequestsBoard()
UserGist.openRequestDetail('req_abc123')
 
// Or build your own UI on the data APIs
const { items } = await UserGist.getRequests({ statuses: ['planned'], q: 'dark' })
await UserGist.voteOnRequest('req_abc123', true)
await UserGist.followRequest('req_abc123', true)
UserGist.submitRequest('Dark mode', 'A system-aware theme would help.', (error, request) => {
  if (error) console.error(error)
})
 
const comments = await UserGist.getComments('req_abc123')
await UserGist.postComment('req_abc123', 'Yes please.')

Optimistic semantics (identical on every SDK):

  • Voting auto-follows the request.
  • Un-voting does not unfollow.
  • Vote / follow tap updates the UI immediately and reconciles with the server.

Publish requests on the portal

Select requests and choose Publish on portal, or open one request and use the same action. Review the public title, description, status, vote count, and team response before confirming. Use Remove from portal to make a request private there.

Publication requires a published company portal and an included app. SDK visibility remains independent. Globally hidden requests stay hidden until unhidden. A portal-origin submission is published on the portal when created; your team can remove it or hide it afterward. SDK submissions need an explicit portal publication decision.

Published requests in Planned, In progress, or Shipped also appear in the portal roadmap. Separate team roadmap items can link requests without merging them; see Roadmap.

See Share your portal & roadmap for links and SDK presentation. The current portal does not implement iframe embedding.

Closing the loop

When an operator changes status or posts a developer response, UserGist's request notification service applies the configured transition/response rules and queues in-app instructions for eligible SDK followers. Queuing is not proof that a device displayed an update. Automatic request-update push is not implemented; a native push announcement is a separate Engage campaign.

API

  • GET /v1/apps/:appId/requests — list (admin)
  • POST /v1/sdk/requests — SDK submission
  • PATCH /v1/apps/:appId/requests/:requestId/status — change status
  • PATCH /v1/apps/:appId/requests/:requestId/moderation — hide or unhide
  • POST /v1/apps/:appId/requests/merge — merge duplicates
  • GET /v1/public/roadmap/:slug — public roadmap data
  • PATCH /v1/apps/:appId/requests/portal-visibility — current portal publication
  • GET /v1/portal/:portalSlug/apps/:appSlug/requests — current public request list

Comment, vote, and follow endpoints all under the same family. Canonical schemas: apps/api/src/schemas/requests.ts. For hosted portal sessions, submission, and voting, see Customer Portal API.

What's next

Feature requests on websites

Use the Web SDK to open the request board or a request detail, submit ideas, vote, follow and manage comments. Participation requires explicit activation and feedback consent. The launcher is optional and off by default.

Mutations can return { queued: true, pendingId } while waiting for connectivity or earlier pending work. Treat that as saved locally instead of submitting again. The SDK sends retries and newer actions in order. Loading the board and opening request details require a connection. Browser notification push is not included.