Surveys
Collect in-product feedback with targeted, customizable surveys.
Surveys
Collect qualitative feedback directly from your users at the right moment — without leaving your product.
Overview
Surveys appear as in-product popups, triggered by events, user properties, or feature flag conditions. Responses are automatically correlated with behavioral data.
Survey Types
NPS (Net Promoter Score)
The classic 0–10 scale with optional follow-up text question. Auto-calculates your NPS score over time.
CSAT (Customer Satisfaction)
1–5 star rating or emoji scale. Ideal for post-interaction feedback.
Multiple Choice
Single or multi-select options. Good for feature prioritization or demographic research.
Open Text
Free-form response. Best for discovery research and bug reports.
Rating Scale
Custom numeric or labeled scale (e.g., "Not useful" → "Very useful").
Link Survey
Send surveys via email or link — no in-product integration required.
Targeting
Surveys are shown based on:
- User properties: plan, role, signup_date, country
- Events: "completed_onboarding", "viewed_pricing"
- Feature flags: only show to beta users
- Frequency: once per user, once per month, always
// Example: trigger survey after user completes key action
posthog.capture('completed_first_report')
// → Survey configured to show after this event firesCustomization
Styling
posthog.init('<KEY>', {
surveys: {
forceShow: false,
// Custom colors, fonts, positioning
}
})Programmatic Control
// Show survey manually
posthog.getSurveys((surveys) => {
const mySurvey = surveys.find(s => s.name === 'Q1 NPS')
posthog.renderSurvey(mySurvey.id, '#survey-container')
})
// Check if user has seen survey
posthog.isSurveySeen(surveyId) // returns booleanAnalyzing Responses
The Surveys dashboard shows:
- Response rate over time
- NPS breakdown (Promoters / Passives / Detractors)
- Individual responses with user context (events, feature flags, session replay link)
- Word cloud for open-text responses
- Export to CSV
API Access
# List surveys
GET /api/projects/{project_id}/surveys/
# Get responses
GET /api/projects/{project_id}/surveys/{survey_id}/responses/Self-Hosting Notes
Surveys are rendered from the @posthog/surveys-js package embedded in the JS SDK. No additional infrastructure required beyond the standard Hanzo Insights stack.