How to ask “how did you hear about us” without ruining the answer
The question is one line. Anyone can ship it in an afternoon. That’s the problem — because it’s so easy to put on screen, teams treat it as solved the moment it renders, then make spend decisions off answers the form itself corrupted.
We have strong opinions here, and they’re not theoretical. Fairing (Caliper’s parent) runs this exact question at checkout for ecommerce brands, and most of what we know came from watching specific things break, repeatedly, in production. The failures are mechanical. So are the fixes.
Fixed option order
Show the same list in the same order to everyone and the top option collects taps it didn’t earn. If your list is alphabetical — App Store, Facebook, Friend, Google — App Store wins by default. People who genuinely don’t remember grab the first plausible answer. And because it’s the same first answer for everyone, the bias doesn’t average out. It compounds, and your channel mix quietly rewards whatever happened to sort first.
Randomize the order per impression. Not per user, per impression. Position bias scatters into noise instead of piling onto one option. This is the cheapest fix on this list and the one homegrown surveys skip most often.
The open text box
A free-text field feels like the more honest design. It isn’t. Ask people to type and you get “tiktok,” “TikTok,” “tik tok,” “saw a video,” “ig” — a dozen spellings of four real channels. Now someone has to classify that mess. Either a person does it by hand and you’ve created a part-time job, or a script does it and quietly miscategorizes the long tail.
We tested open-field-first at Fairing. Response rates collapse and the answers fragment. Closed options from a maintained taxonomy win every time you try to compute an actual number from the data — and “maintained” is the operative word, because channels appear and die and the list has to keep up. What belongs on the list is its own question; we wrote up the mobile option list separately.
The influencer answer with nowhere to go
You can’t list every podcast and creator as a checkbox, so teams either bury them under a generic “influencer” bucket or leave them off entirely. Both lose the only thing worth knowing — which show, which creator. Frustrating, because creator-driven installs are exactly the ones your MMP already can’t see. You finally have a chance to learn that one specific host moves installs, and the form throws it away.
The answer is a type-ahead, not a text box. The person picks “podcast,” then a suggest field resolves what they type against a known list of shows. You capture the actual entity instead of the bucket. This is the one place typed input belongs in this survey, because suggestions constrain it.
One wrinkle from a UA lead we talked to recently: UGC complicates this further, because unlike traditional influencer marketing, the creator often isn’t memorable at all. His team showed users the actual creative in a follow-up to figure out which content was working. The general principle holds — help people recognize the source, don’t ask them to recall it cold.
The tiny skip button
Make the survey mandatory, or shrink the skip control to a five-pixel x, and you stop collecting answers and start collecting guesses. Someone who doesn’t remember will tap anything to get past a wall. That tap looks identical to a real answer in your data, and you will trust it.
Make skip prominent. A skip is honest missing data you can account for; a guess is corruption you can’t find later. Teams optimize for completion rate because more rows feels like more data. It isn’t — a smaller set of real answers beats a bigger set of contaminated ones, every time.
Non-response
Even with a clean form, responders aren’t a random sample. The memorable channels over-respond. If you multiply raw response percentages against installs, you’ve assumed the people who didn’t answer look exactly like the people who did. They don’t.
Model the non-responders as their own population. Response-rate-aware estimates are the difference between a number you can put next to your MMP and SKAN data and a chart that just looks nice in a deck.
Timing
Fire the survey mid-onboarding and you’ve put a wall between the user and the thing they came to do. They skip, guess, or churn. Fire it before they’ve committed to anything and you’re surveying people who haven’t decided to stay.
Once, after first open, close to the install — memory of how they found you decays by the hour. And once means once. Re-prompting trains users to reflexively dismiss everything you show them afterward.
What this adds up to
- Randomized option order, per impression
- Closed options from a maintained taxonomy
- Type-ahead resolution for creators and shows
- A skip control people can actually find
- Non-responder modeling instead of raw percentages
- One prompt, near the install
None of this is exotic. It’s six decisions, and together they determine whether the answer is worth joining to your install data at all. Caliper is these six decisions packaged as an SDK. The hard part was never asking the question — it was not ruining the answer.
Caliper is in early access — we're onboarding our first cohort.
Get access