Loading tutorials…
Loading tutorials…
PostHog surveys are the cheapest user-research tool in the stack — but only if you target right and write the questions right. This walks through both, plus the analysis pipeline that turns free-text answers into product decisions.
Who this is forProduct managers, founders, and customer-success leads who need qualitative signal alongside quantitative analytics. Especially relevant for understanding churn reasons, validating PMF, or running NPS without a separate tool like Delighted or Refiner.
What you'll need
Step 1
Surveys are best for the "why" behind a behavior you already see in analytics. List the specific question. Pick survey type (NPS, PMF, free-text) accordingly.
Start with the question. Examples: "Why did users who signed up but never returned drop off?", "What feature do trial users want most?", "What is our NPS score post-onboarding?"
Match survey type to question: NPS for promoter-likelihood, PMF (Sean Ellis test) for product-market-fit signal, open-ended for "why" investigation, rating scale (1-5) for specific feature satisfaction.
Do NOT survey to "see what comes up." That generates noise, burns the user goodwill budget, and produces no decisions.
List the audience: "users who signed up 7-30 days ago and have not returned in 14 days" is targetable. "Random users" is not.
Step 2
PostHog → Surveys → New survey → pick type → write questions → set targeting → preview → launch.
Open PostHog → Surveys → New survey. Pick template: NPS, PMF, CSAT, or Open-text.
Write the question. Keep it to ONE question per survey if possible. Multi-question surveys drop response rate by 30-50% per added question.
For NPS: PostHog has a built-in 0-10 scale + follow-up "What's the main reason for your score?" Use this exact format — it is the industry standard.
For PMF (Sean Ellis test): "How would you feel if you could no longer use [product]?" with options: Very disappointed / Somewhat disappointed / Not disappointed / N/A. 40%+ "Very disappointed" = strong PMF signal.
Set the appearance: corner of screen (bottom-right is least intrusive), color match to your brand, prominence level.
Step 3
Target the right user at the right moment. Do not ask new signups for NPS. Do not survey users mid-conversion. Set frequency caps.
Open Targeting tab. Set conditions:
(1) User cohort: e.g. "Active users in last 7 days" (for NPS), or "Signed up but not returned" (for churn investigation).
(2) Event-based: "Show after user performs `onboarding_completed`" — survey fires only after the moment that justifies the question.
(3) Page filter: "Only on /dashboard" — do not show during checkout, signup, or other conversion-critical paths.
(4) Sampling rate: "Show to 25% of matching users" — for high-traffic surveys, sample to avoid over-surveying.
(5) Frequency cap: "Show at most once per 90 days" — never show the same user the same survey twice in a quarter.
Save targeting. Preview as a test user before launching.
Step 4
PostHog captures responses as events: `survey_sent`, `survey_dismissed`, `survey_shown`, `survey_response`. Build a dashboard to monitor.
Survey responses appear automatically as events: `survey_sent` (response submitted), `survey_dismissed` (user closed without responding), `survey_shown` (impression).
Compute response rate: `survey_sent` / `survey_shown` × 100. Healthy: 15-30%+. Below 10% means targeting or question is wrong.
For free-text responses, use PostHog SQL: `SELECT survey_response, person.properties.plan FROM events WHERE event = "survey_sent" AND survey_id = "your_id"`.
For NPS: compute Promoters (9-10) / Detractors (0-6) / Passives (7-8). NPS = % Promoters - % Detractors.
For free-text: use the PostHog LLM Analytics features or export to a spreadsheet for manual tagging. Quarterly: re-tag and look for themes.
Step 5
First survey is rarely the right one. After 50-100 responses, review for misinterpretation, leading questions, and missing options. Revise and rerun.
Common failure mode: question is interpreted differently than intended. "How easy was onboarding?" can mean "easy vs hard" or "easy vs incomplete" depending on the reader.
Watch for free-text responses that answer a different question than you asked. That is a sign the question was unclear.
Leading questions ("How much do you LOVE feature X?") produce inflated scores. Rewrite: "Rate feature X from 1-5." Neutral wording = honest data.
Multi-choice surveys where most users pick "Other" mean you missed common options. Add the popular Other-write-ins as explicit options for v2.
Run v2 of the survey 30 days after v1. Compare response distributions.
Step 6
For high-value responses (low NPS, churn intent), email the user. Surveys that get acknowledged generate 3-5x more useful follow-up data.
Filter responses: any Detractor (NPS 0-6) gets a personal email from a founder / CS lead within 48 hours.
Template: "Saw your feedback on [feature]. I am [name], [role]. Mind a 15-min call next week so I can understand better?"
You will get a 30-50% reply rate to founder-direct emails. That is your highest-signal customer-research channel.
For positive responses (Promoters), nudge a referral or review: "Thanks for the kind feedback! Would you be open to leaving us a G2 / Trustpilot review?"
Document themes in a quarterly synthesis. The closed-loop process is what makes surveys actually drive product decisions.
Common mistakes
Surveying everyone
What goes wrong: You don't filter — every visitor gets the NPS survey. Response rate is 2%. Of those, 60% are random visitors who never used the product. Your NPS is now polluted with noise from users who have no informed opinion. Decisions made on this data are wrong.
How to avoid: Target by usage: "Users with `core_action_performed` in last 30 days." Set cohort threshold (e.g. minimum 3 sessions). Only surveys users who have a real opinion get useful data.
Surveying during checkout / conversion
What goes wrong: A survey pops on the pricing page. Conversion rate drops 8%. You lose ~$2K-5K of trial signups while collecting "data" that distracts users from buying.
How to avoid: Exclude conversion-critical pages from all surveys (checkout, signup, pricing). Only survey on neutral pages (dashboard, settings, post-completion screens).
No frequency cap
What goes wrong: Same survey fires every login. Power users see it 50 times. They start dismissing on sight. Response quality degrades. Some uninstall the product entirely.
How to avoid: "Show at most once per 90 days per user" on every survey. PostHog enforces this via the `seen_survey_*` person property.
Leading questions
What goes wrong: "How much do you LOVE our new dashboard?" gets average rating 4.5/5. You ship more "love"-worthy features. Reality: users actually hate the dashboard but the question primed positive responses. You waste a quarter shipping the wrong thing.
How to avoid: Use neutral wording: "Rate the new dashboard from 1 (poor) to 5 (excellent)." Pilot questions with 3-5 internal users before launching. If they cannot describe the question back accurately, rewrite.
No closed-loop process
What goes wrong: You collect 200 NPS responses. 30 are Detractors. Nobody emails them. They churn at 3x the rate of Passives. You lose ~$15K of ARR you could have saved with a 15-min conversation.
How to avoid: Set up an automation: any Detractor response triggers a Slack alert + a templated email from CS lead within 48 hours. Track save rate over time.
Multi-question surveys
What goes wrong: You ask 7 questions. Response rate drops from a potential 30% to 4%. The 4% who respond are not representative — they are the small subset patient enough to fill out long forms. Sample bias destroys validity.
How to avoid: One question per survey ideally; two max. Run a sequence of single-question surveys over weeks, not one mega-survey. Higher response rate + cleaner data.
Recap
Done — what's next
How to set up PostHog event tracking with a taxonomy that scales
Read the next tutorial
Hand it off
Survey design is a craft most product teams under-invest in. The difference between a 4% useless response rate and a 30% high-signal one comes down to targeting, question phrasing, and follow-up discipline. EverestX matches you with a vetted specialist who has run customer research for 30+ products, from $14-16/hr.
See specialist rates
PostHog surveys are in-app, targeted by user behavior, and tied to your analytics events. Typeform is link-based (better for external research). Delighted is email-based NPS only. For in-product feedback tied to behavior, PostHog wins. For external surveys (customers, prospects, lapsed users), Typeform or Tally.
For NPS: ~100 responses for a stable score. For PMF: 40+ responses (Sean Ellis methodology). For directional product feedback: 30-50 responses is usually enough to spot themes. For statistical comparisons across cohorts: 100+ per cohort.
Surveys are billed separately as "Survey responses" — first 250 free per month, then ~$0.20/response. Cheaper than Delighted (~$0.50/response) and Refiner (~$0.40/response). Survey impressions (shown but not responded to) do not count.
Yes — run multiple surveys with non-overlapping cohort targets. PostHog enforces one-survey-at-a-time per user by default; configure "Allow multiple surveys" if you really need concurrent showing (rarely a good idea).
For under 50 responses: read them all, manually tag themes in a spreadsheet. For 50-500: same, but cluster on common phrases. For 500+: export to CSV and use an LLM (Claude / GPT-4) for theme extraction. PostHog has built-in LLM analytics for this.
PostHog
Most teams ship 50 events in week one, then spend month four rewriting them because the names made no sense in retrospect. This walks through an event taxonomy that scales, a property schema that does not drift, and the identify flow that keeps your funnel reports honest.
PostHog
Session replay is the most valuable PostHog feature for debugging product UX — and the most dangerous if you skip the masking step. This walks through enabling replay, configuring DOM-level privacy, controlling storage cost, and the compliance checklist.
PostHog
Running tests is easy. Running tests that produce real decisions is hard. This walks through hypothesis design, sample-size calculation, the PostHog experiment UI, and the 5 statistical mistakes that invalidate 80% of DIY A/B tests.
PostHog
DIY PostHog is the right call up to a point. Then it isn't. This is the honest framework: when the cost of self-managing exceeds the cost of hiring, and how to tell which side you're on.