In-app surveys: best practices, and the one survey most apps never run

Search for in-app survey advice and you’ll find a genre: NPS prompts, CSAT ratings, feature polls, churn questionnaires. All of it measures how people feel about the product they’re already using. That’s worth measuring. But it means “in-app survey” has come to mean “satisfaction survey,” and an entire category of question — the one that measures acquisition rather than satisfaction — gets run through tools and timing designed for a different job, or doesn’t get run at all.

This piece covers the practices that hold for every in-app survey, and then the places where the attribution survey breaks the standard playbook — because the standard playbook, applied to “how did you hear about us,” quietly ruins the answer.

Practices that hold for every in-app survey

Ask at a natural pause. A survey that interrupts a task gets dismissed; a survey that appears between tasks gets considered. The first frame after launch is the worst moment in the entire app — the person came to do something, and you’re standing in front of it.

One question beats five. Every additional question costs completion, and the cost compounds. If you need five answers, you need five surveys spread across five moments, not one form. The best in-app surveys don’t feel like surveys; they feel like a single tap on the way to something else.

Closed options beat open text. Free-text answers feel richer and aggregate worse. “The app is slow,” “slow,” “laggy,” and “takes forever to load” are the same answer four ways, and someone has to clean that up before anyone can count it. Give people a controlled set of answers, and reserve typed input for cases where a suggestion list can constrain it.

Skip must be a real choice. A survey that can’t be declined collects compliance, not opinion. The person who wants out will tap whatever makes the screen go away, and that tap is poison: it looks exactly like signal. Make skip prominent and treat a skip as honest data — which it is.

Never ask twice. Re-asking a question the person already answered (or already declined) teaches them that your prompts are spam. Idempotency is a courtesy and a data-quality measure at once.

Where the attribution survey breaks the playbook

“How did you hear about us” looks like just another one-question survey, which is why teams reach for the tool they already have. But it differs from the satisfaction genre on every axis that matters.

The audience is everyone, not the engaged. NPS targets people deep enough into the product to have an opinion — sampling engaged users is the point. An attribution survey sampled that way is broken by construction: you’d learn how your most retained users heard about you, which is a different (and smaller, and biased) question than how your installs heard about you. The attribution survey has to fire for every new install, near the install, exactly once.

The timing is structural, not behavioral. Satisfaction surveys trigger on behavior — after a purchase, after a support chat, after the thirtieth session. The attribution survey triggers on existence: the install happened, memory of the discovery moment is decaying by the hour, and the question is only worth asking while the answer is still retrievable. First open, or as soon after as the app’s flow allows (the timing options are narrow on purpose).

The destination is the spend stack, not the feedback stack. This is the difference that actually costs money. An NPS score belongs in a product dashboard. An attribution answer is useless in one — it needs to land where acquisition decisions are made, joined to the install record, next to the last-click and SKAN numbers it exists to check. An answer that says “podcast” sitting in a feedback tool is trivia; the same answer written to Adjust or AppsFlyer as an install-level event is a measurement your UA team can act on. If the survey tool can’t make that join, the data is stranded no matter how well the question was asked.

The answer quality bar is higher. A biased NPS sample still tells you something directional. A biased attribution answer actively misleads spend: position effects reward whatever option sat on top, open text fragments channels into spellings nobody can aggregate, and forced completion fills the dataset with guesses. Randomized order, closed taxonomy, constrained type-ahead for creators, a prominent skip, non-responder modeling — none of these are nice-to-haves here. The failure modes piece covers each one.

Choosing tools by genre

None of this says satisfaction tools are bad — it says genres don’t transfer. A platform built for NPS is built around engaged-user targeting, recurring schedules, and feedback dashboards: exactly right for satisfaction, exactly wrong for attribution. The attribution survey needs install-scoped triggering, once-ever delivery, a maintained channel taxonomy, and an MMP join. Run each genre on machinery built for it, and the one-question survey most apps never run becomes the cheapest measurement in the stack — the only one that sees the channels everything else marks dark.

Caliper is in early access — we're onboarding our first cohort.

Get access