Mobile Apps – Feedback and Voting in Your App

Build idea, vote, and comment screens into your iOS, Android, or React Native app on the UserVoice API, with your server holding the key and customers never signing in twice.

On this page

    Your customers spend their time in your mobile app, so that's where they should share ideas and vote. You can open your portal inside the app, or build screens that look like the rest of it on the UserVoice API. This guide covers both, how your server connects to UserVoice, signing customers in, showing and posting ideas, keeping customers updated, design, and testing.

    Two ways to bring feedback into your app

    Most teams start by opening the portal inside the app, then build native screens for the actions customers take most: browsing, posting, and voting.

    OptionWhat customers seeWhat it takesFits
    Your portal in an in-app browserYour portal, with your branding, signed in as themselvesA single sign-on token from your server, added to the portal linkLaunching quickly, and anything you haven't built natively
    Your own screens on the APIScreens built with your app's components, fonts, and gesturesYour developers build the screens, plus a small service on your serverThe main feedback flow in a consumer or mobile-first product
    Works with any framework

    The API is plain HTTPS and JSON, so it works from React Native and Expo, Swift, Kotlin, and Flutter apps alike.

    Same forums, same people

    Ideas and votes from the app land in the forums your team already manages, next to the ones from your portal and widget.

    Rule of thumb

    Native for the core, portal for the rest. Build the browse, post, and vote screens natively, and link to the portal for everything else, such as the full comment history or a customer's profile.

    How it fits together

    The app never talks to UserVoice directly. It calls your own server, and your server calls the UserVoice API with a key only it holds.

    1. A customer taps Vote in your app. The app calls your server, signed in as that customer the way it is for everything else.
    2. Your server checks who the customer is, then calls the UserVoice API with your trusted API key, naming the customer by email.
    3. UserVoice records the vote for that person, and your server sends the result back to the app.
    PartIts job
    Your appShows ideas and forms, and sends the customer's actions to your server
    Your serverHolds the API key, gets access tokens, decides what each customer can do, and caches lists
    UserVoiceStores ideas, votes, comments, and statuses, and runs your team's side in the admin console
    Watch out

    Never put the API key in the app. A trusted key gets a token with full admin access. Anything shipped in an app can be pulled out of it, so the key, its secret, and its tokens stay on your server.

    Set up the key

    1. In Settings, open Integrations, and choose UserVoice API keys.
    2. Add a key named for the app, such as “Mobile app feedback,” and tick Trusted?.
    3. Store the key and secret in your server's secrets manager.
    4. Your server trades the key and secret for an access token, and sends it with each request. When a call is refused because the token expired, get a new one.
    • One key for the app. Your other integrations keep their own keys, so you can turn one off without breaking the rest.
    • Cache what everyone sees. Requests are limited per minute for your whole account, not per customer. Cache idea lists on your server for a short time instead of calling UserVoice on every screen load.
    • Handle a 429. If you go over the limit, wait for the number of seconds in the Retry-After header, then try again.
    Good to know

    API access depends on your plan. Your UserVoice rep can confirm whether it's included in yours.

    Know who's giving feedback

    Customers are already signed in to your app, so they should never be asked to sign in to UserVoice. Your server tells UserVoice who they are.

    • Name the customer on every call. Send their email and name with each idea, vote, and comment. UserVoice finds the person by email, or adds them the first time.
    • Use the same email everywhere. UserVoice matches people by email, so the same address in your app, widget, and portal keeps one person's ideas, votes, and updates together.
    • Send only verified emails. If your sign-in provider, such as Auth0, Okta, or Firebase, marks an email as unverified, ask the customer to confirm it before they post.
    • Bring their account along. If you connect Salesforce or HubSpot, each person is matched to their account, so ideas from the app show the revenue behind them.
    Tip

    Open portal links already signed in. When the app links to the portal, have your server create a single sign-on token for the customer and add it to the link as ?sso=. The portal opens signed in, with no second login.

    Show ideas

    Your server reads ideas from one forum and passes the app only what it shows. These are the calls you'll use most, in version 2 of the API.

    To showCallUseful options
    A list of ideasGET /api/v2/admin/suggestionsFilter by forum, category, status, or state. Search with q, and sort the results.
    One ideaGET /api/v2/admin/suggestions/:idIncludes its status, supporter count, and description
    Forums, categories, and statusesGET /api/v2/admin/forums, /categories, and /statusesLoad these once and cache them, since they rarely change
    Watch out

    Your key sees everything an admin sees. That includes private forums, ideas waiting for moderation, and ideas marked as spam. Filter on your server to the forum and states you mean to show, and test with an idea you've moderated.

    Tip

    Show the status on every idea. Customers vote more, and ask “is this planned?” less, when they can see where each idea stands.

    Post ideas, votes, and comments

    Each action is one call from your server, with the customer named by email and name.

    ActionCallSend
    Post an ideaPOST /api/v2/admin/suggestionsA title of up to 140 characters, a description, the forum, an optional category, the customer as creator, and answers to your custom questions
    VotePOST /api/v2/admin/suggestions/:id/subscribeThe customer as user. This adds their support and subscribes them to updates.
    Remove a votePOST /api/v2/admin/suggestions/:id/unsubscribeThe customer as user, with remove_vote set
    CommentPOST /api/v2/admin/commentsThe comment, the idea, and the customer as user
    Watch out

    Ideas from the API skip your portal's spam filter and moderation queue. They appear in the forum straight away. Let only signed-in customers post, limit how often each one can, and check new ideas from the app in your daily triage.

    Keep customers in the loop

    The best reason to post an idea is hearing back. UserVoice emails subscribers when a status changes, and webhooks let your app tell them too.

    1. In Settings, open Integrations, choose Service hooks, and add a custom web hook pointing at your server.
    2. Tick Idea Status Update and New Comment for the forum the app uses.
    3. When an event arrives, your server checks its signature, finds the customers who voted, and sends them a push notification.
    4. The notification opens the idea in your app, showing its new status and the update your team posted.
    Good to know

    Check the signature on every webhook. Each request carries an HMAC-SHA256 signature made with your account's SSO key. Recompute it and reject anything that doesn't match.

    Good to know

    A vote also subscribes the customer. They get email updates when the idea's status changes, the same as voting on your portal.

    Tip

    Write status updates for a phone screen. The first sentence of your update is what fits in a notification, so lead with what changed for the customer.

    Make it feel like your app

    Native screens are worth building because they feel like the rest of your product. These choices make the most difference.

    • Feedback one tap from your main menu or settings, labeled in your own words, such as “Ideas” or “Request a feature”.
    • Vote buttons that respond instantly, with the count and status on every idea.
    • A search-first form that shows similar ideas before the customer posts.
    • A “My ideas” view of what each customer posted and voted for.
    • Your own components, colors, and type, so feedback looks like part of the product.
    • A link to the full portal for comments, history, and anything you haven't built.
    • Asking for an email or a second login.
    • Long forms with every custom question you've set up.
    • Hiding statuses or closed ideas, so customers keep asking for shipped features.
    • Showing ideas from private forums or the moderation queue.

    Custom questions

    • Send answers by each question's field key. Set the questions up in UserVoice, then show the same ones in your form. See Custom Questions That Make Ideas Actionable for what to ask.
    • Check required questions in the app. The API saves what you send, so your form decides what's required.

    Test before launch

    Test end to end with a forum only your team can see, then point the app at your real forum.

    1. Create a private test forum, and a test API key just for it.
    2. Sign in to a test build of the app as a test customer, post an idea, and vote on another.
    3. In the admin console, check that both show the right person and account.
    4. Change the idea's status, and check the email and the push notification arrive.
    5. Remove the vote in the app, and check the count goes down.
    6. Run a burst of requests, and check your server waits and retries after a 429.
    7. Point the app at your real forum, and delete the test key.
    Rule of thumb

    Launch to a small group first. Turn the feature on for a slice of customers, read the first week of ideas, and adjust your form and categories before everyone sees it.

    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, design the server endpoints our [React Native / Swift / Kotlin] app needs for browsing, posting, and voting on ideas. Include caching and how to handle 429 responses.

    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 12-page PDF. It adds two things that aren't on this page:

    • A eight-step checklist to put the guide into practice
    • Four AI prompts for Claude, ChatGPT, or your assistant of choice, including one that uses the UserVoice MCP to work with your own feedback data
    Cover of Mobile Apps – Feedback and Voting in Your App guide from UserVoice