In-app surveys
Ask users right inside your product.
In-app surveys for your web app and your iOS, Android, React Native and Flutter apps. Ask the moment someone uses a feature, reach exactly the users you pick, and get every answer with the context behind it.
Free plan, no credit card. Try Pro free for 15 days.
Reports
Q3 revenue
Shared with 4 teammates
Revenue
1.24M
Signups
312
Churn
1.8%
How easy was it to share this report?
Web appformbricks.track("report_shared")
Q3 revenue
Exported as PDF
Q2 revenue
Churn by plan
Did the PDF have everything you needed?
iOS appFormbricks.track("report_exported")
Used by 15,000+ teams
























































Triggers
Ask right after it happens.
Show a survey on any event in your code with one track call. It works the same in your web app and in your iOS, Android, React Native and Flutter apps.
In web apps you can add no-code triggers too, like a click or a page view. No deploy needed.
Sharing feedback
Triggers · any one shows the survey
Code action
Web and mobile apps
formbricks.track(
Fire it from any event in your code.
No-code action
Web apps
- Click on text
- Share report
- On pages where URL contains
- /reports
Set up in Formbricks, no deploy.
Maya Chen · this morning in Acme
09:02
Signed in
09:05
Opened Reports
09:11
Created Q3 revenue
09:14
Clicked Share report
Trigger matched, survey shown
Targeting
Ask the users who know.
Identify signed-in users and send the attributes you already have, like plan, role or company. Save the people you care about as a segment. It stays current as their attributes change.
Segments also know who has seen, started or finished a survey. Run your NPS on its own three-month rhythm, follow up with people who answered, or reach the ones who dropped off.
Pro admins
Segment · updates as attributes change
and
and
Frequency
Never ask the same user too often.
Formbricks keeps track of what each user has already seen. A cooldown leaves a gap between any two surveys, 7 days unless you change it, so one person never gets two in a row.
Each survey decides how often it may return: once, a set number of times, until someone answers, or every time. Your users stay happy to answer, and every answer you get is worth reading.
Maya Chen · last 30 days
3 shown · 2 held back
- 7 days between any two surveys
- Onboarding check-in: show once
- Quarterly NPS: not seen in 3 months
- Onboarding check-inDay 1 · Onboarding completedShown
- Export feedbackDay 4 · Cooldown, last survey 3 days agoHeld back
- Export feedbackDay 9 · Cooldown overShown
- Onboarding check-inDay 17 · Set to show onceHeld back
- Quarterly NPSDay 23 · Not seen in 3 monthsShown
For developers
A few lines in the app you already ship.
Add the JavaScript SDK to your web app, or the native SDK for iOS, Android, React Native or Flutter. Identify the user, send attributes and track the moments worth asking about.
Pass what your app knows, like the report or the screen, and it lands on the response. Device, locale and country come along on their own. Passed values stay in memory and are never stored on the device.
// npm install @formbricks/js zodimport formbricks from "@formbricks/js"; formbricks.setup({ workspaceId: "<workspace-id>", appUrl: "https://app.formbricks.com",}); // When someone signs informbricks.setUserId("u_48213");formbricks.setAttributes({ plan: "Pro", role: "Admin" }); // When they share a reportformbricks.setEmbeddedData({ report_id: "r_2291" });formbricks.track("report_shared");// Swift Package Manager: github.com/formbricks/iosimport FormbricksSDK let config = FormbricksConfig.Builder( appUrl: "https://app.formbricks.com", workspaceId: "<workspace-id>").build()Formbricks.setup(with: config) // When someone signs inFormbricks.setUserId("u_48213")Formbricks.setAttributes(["plan": "Pro", "role": "Admin"]) // When they share a reportFormbricks.setEmbeddedData(["report_id": "r_2291"])Formbricks.track("report_shared")// implementation("com.formbricks:android:2.1.0")val config = FormbricksConfig.Builder( "https://app.formbricks.com", "<workspace-id>").setFragmentManager(supportFragmentManager).build()Formbricks.setup(this, config) // When someone signs inFormbricks.setUserId("u_48213")Formbricks.setAttributes(mapOf("plan" to "Pro", "role" to "Admin")) // When they share a reportFormbricks.setEmbeddedData(mapOf( "report_id" to EmbeddedDataValue.string("r_2291")))Formbricks.track("report_shared")// npm install @formbricks/react-nativeimport Formbricks, { setUserId, setAttributes, setEmbeddedData, track } from "@formbricks/react-native"; <Formbricks initConfig={{ workspaceId: "<workspace-id>", appUrl: "https://app.formbricks.com",}} /> // When someone signs inawait setUserId("u_48213");await setAttributes({ plan: "Pro", role: "Admin" }); // When they share a reportsetEmbeddedData({ report_id: "r_2291" });await track("report_shared");// flutter pub add formbricksimport 'package:formbricks/formbricks.dart'; // Once, high in your widget treeFormbricks( appUrl: "https://app.formbricks.com", workspaceId: "<workspace-id>",), // When someone signs inawait Formbricks.setUserId("u_48213");await Formbricks.setAttributes({"plan": "Pro", "role": "Admin"}); // When they share a reportFormbricks.setEmbeddedData({"report_id": "r_2291"});await Formbricks.track("report_shared");How easy was it to share this report?
5Very easy
Attributes
- plan
- Pro
- role
- Admin
From your app
- report_id
- r_2291
Captured on its own
- Device
- Desktop · Chrome · macOS
- Locale
- de-DE
- Timezone
- Europe/Berlin
- Country
- Germany
Mobile apps
Ship surveys without an app release.
Surveys render from your Formbricks workspace, not from your app bundle. Launch a survey, reword a question or change who sees it, and it reaches the apps your users already have, with no new build.
Your engineers integrate once. Your product team runs every survey after that, on its own schedule.
Sharing feedback
PublishedQuestion 1 · Rating
How easy was it to share this report?
Question 2 · Single selectNew
Who did you share it with?
Q3 revenue
Shared with 4 teammates
Who did you share it with?
Acme for iOS 4.12.0
The build your users already have
What customers say
“We self-host Formbricks for our app with 100.000+ users. It's remarkable how the surveys feel like a native part of our own app. Great product, built for everyone who cares about UX!”
Ram PasalaCEO, NeverInstall“The rule with Formbricks was simple: do the integration once, and then leave it. My engineering team spent about 15 days getting everything set up, and since then marketing has been completely self-sufficient.”
Srihari UduganiDirector of Technology, Borderless AccessTemplates
Start with a play that works.
Each of these ships as a template. Pick one, set its trigger or segment, and it's live in your product.
Learn why people cancel
Ask the moment someone clicks Cancel plan, while the reason is still fresh, and fix what drives churn.
Click on "Cancel plan"
Make new features land
Ask the first people who use a new feature what works, and improve it before everyone gets it.
track("dashboard_created")
Convert more trials
Ask trial users what stands between them and a paid plan, then remove it.
Page view: /billing · Who: plan equals Trial
Fill your interview calendar
Invite your most active users to a call. Add a scheduling question and they book a slot right in the survey.
track("report_created") · Who: Pro admins
Measure product-market fit
Ask engaged users how they would feel without your product, and watch the answer move as you ship.
track("dashboard_viewed")
Keep a feedback box open
Open a short form every time someone clicks Feedback, so ideas reach you the moment people have them.
Click on "Feedback"
Frequently asked questions
What is an in-app survey?
Is Formbricks free for in-app surveys?
Do I have to identify users?
Can in-app surveys show in each user's language?
Can the surveys match our app's design?
Which question types can I use?
Where do the answers go?
Can we keep in-app survey data on our own servers?
Your first survey is a few minutes away.
Free plan, no credit card. Try Pro free for 15 days.