Website surveys
Ask visitors before they leave.
Run website surveys on any page with one script or Google Tag Manager. Ask on exit intent, a scroll or a click, reach exactly the visitors you want, and see the visit behind every answer. No code, and no login for your visitors.
Free plan, no credit card. Try Pro free for 15 days.
Simple pricing for growing teams
Start free. Upgrade when your team grows.
Starter
$19 /mo
Team
$49 /mo
Business
$99 /mo
Before you go: what's holding you back?
- Not sure which plan fits
- Need to check with my team
- Price
- Just looking around
Pricing exit survey
LiveExit intent on /pricing · 10% of visitors
128
responses this week
- Not sure which plan fits36%
- Need to check with my team30%
- Price21%
- Just looking around13%
Used by 15,000+ teams
























































Install
One snippet, then no more code.
Paste one script into your site's head, or add it as a tag in Google Tag Manager without touching the code. The snippet comes pre-filled with your workspace ID. On React, Next.js or Vue, use the npm package.
From then on, marketers and product managers create, target and change surveys on their own. Changes reach your site within a minute, and cached requests keep Formbricks running on sites with millions of visitors without high hosting costs.
<head> <!-- START Formbricks Surveys --> <script type="text/javascript"> !function(){ var appUrl = "https://app.formbricks.com"; var workspaceId = "<your-workspace-id>"; var t=document.createElement("script"); t.type="text/javascript"; t.async=!0; t.src=appUrl+"/js/formbricks.umd.cjs"; t.onload=function(){ window.formbricks && window.formbricks.setup({ workspaceId: workspaceId, appUrl: appUrl }); }; var e=document.getElementsByTagName("script")[0]; e.parentNode.insertBefore(t,e); }(); </script> <!-- END Formbricks Surveys --></head>Or in Google Tag Manager
New tag: Formbricks
- Tag type
- Custom HTML
- HTML
- Formbricks snippet
- Triggering
- All Pages
Receiving data
Formbricks SDK is connected
Setup guides
- HTML
- React
- Next.js
- Vue
- Google Tag Manager
Survey changes reach the site within a minute.
Triggers
Ask at the right moment.
Show a survey when a visitor opens a page, clicks a button, scrolls halfway, stays a while or moves to leave. Pick the pages each trigger watches, and give a survey several triggers if any of them should open it.
All five work without code, and the survey opens as a pop-up or a slide-in, or sits inline on the page. Developers can add their own moments with formbricks.track().
TriggerPage view
PageURL contains /signup/welcome
Add several triggers to one survey. Any of them can open it.
You're in. Welcome to Acme.
Your workspace is ready. Three steps to get going:
- Create your first project
- Invite your team
- Connect your data
How did you hear about Acme?
- Search engine
- A friend or colleague
- Social media
- Podcast
Targeting
Choose who sees it, and how many.
Narrow a survey by page, referrer, how much someone has browsed, time on site, device, browser or window width. It all works for anonymous visitors, so you can survey your public site without asking anyone to sign in.
Then show it to a share of the visitors who meet the conditions, from 0.01% to 100%. A busy page gives you a steady sample, and the rest browse on undisturbed. Conditions are checked again right before the survey appears.
Pricing exit survey · Show conditions
Show when all of these match
- Current URLpath is any of/pricing
- Pages viewedis at least3
- Entry referrercontainsgoogle
- DeviceisDesktop
And any of these
- Time on siteis at least120 seconds
- Visited URLincludes/customers
11 condition types
The ones this survey uses are highlighted.
Page
- Current URL
- Query parameter
- Page referrer
- Entry referrer
This visit
- Visited URL
- Pages viewed
- Unique pages viewed
- Time on site
Device
- Device
- Browser
- Window width
Pricing exit survey · Display percentage
Show to a share of the visitors who meet the conditions
2,400
visitors a month see it at 10%. Everyone else browses on undisturbed.
acme.com/pricing this month
24,000 visitors who meet the conditions · each dot is 1%
Checked in this order, every time a trigger fires
- Recontact: Show only once
- Cooldown: 7 days
- Targeting: Everyone
- Show conditions: Met
- Display percentage: 10%
Context
Every answer comes with the visit.
Each response records how the visitor got there: the entry referrer, the pages they viewed, how many were unique and how long they stayed. UTM parameters, device and country are captured on their own.
Filter and export by any of it, use it in survey logic, or send responses on to Slack, Google Sheets, Airtable, Notion or your own webhook.
Anonymous visitor
Germany · 2 min agoBefore you go: what's holding you back?
Not sure which plan fits
- Pages viewed
- 5
- Unique pages
- 4
- Time on site
- 4 min 12 s
- Entry referrer
- google.com
- utm_campaign
- spring_launch
- Device
- Desktop · Chrome
The visit
- /0:00From google.com
- /features0:48
- /pricing1:55
- /customers2:40
- /pricing3:41
Debug mode
See why every survey shows.
Wondering why a survey didn't show? Add ?formbricksDebug=true to any page and a debug panel tells you, survey by survey.
It lists the visit as Formbricks sees it, every trigger that fired, the conditions it checked and the reason a survey did or didn't appear. No guessing, no support ticket.
See how debug mode works(opens in a new tab)Simple pricing for growing teams
Start free. Upgrade when your team grows.
Starter
$19 /mo
Team
$49 /mo
Business
$99 /mo
Formbricks debug
HideTurn offThis visit
- Pages viewed: 5 (4 unique)
- Time on site: 252 s
- Entry referrer: google.com
- Device: desktop · Chrome · window 1440 px
Surveys on fired triggers
Pricing exit survey
10:42:17 · trigger: Exit intent
✓ Current URL path is any of /pricing
✓ Pages viewed is at least 3
Show conditions met
Shown
Pricing scroll survey
10:41:30 · trigger: 50% scroll
Show conditions met
Not shown: outside the display percentage
Feature feedback
10:38:53 · trigger: Page view
Not shown: already shown to this visitor (show only once)
Strict CSP welcome
Works with a strict Content Security Policy. Pass your nonce with setNonce() and the survey styles load under it.Your styles stay yours
Surveys render in their own container, protected from most of your site's global CSS. Your pages stay untouched.Talks to your analytics
Survey shown, response submitted and survey closed land in the GTM dataLayer, and formbricks.on() hands them to your own code.Privacy controls per survey
IP capture is off unless you turn it on. Anonymize a survey and it stops storing country, IP and device details.Modern browsers
Chrome and Edge 111+, Firefox 128+ and Safari 16.4+, on desktop, tablet and phone.Open source
Formbricks is open source, with an AGPLv3 core. Read the code behind every survey on your site.
Trusted by teams who care about their users.
“We run NPS® surveys for several products with Formbricks. It's open source and the team lays a strong focus on keeping user data secure and compliant. Definitely recommended!”

Marius Cristea
CTO, ThemeIsle
“As an open source company we highly value data privacy. It's so cool that we could self-host Formbricks within a few minutes using Docker. Great product, finally we have good open source survey software!”

Vishnu Mohandas
Co-Founder, ente.io
Frequently asked questions
Is it free to run website surveys with Formbricks?
Does it work with my CMS or website builder?
Can I add a feedback button to my website?
Can I host Formbricks myself?
Can I survey logged-in users too?
Your first survey is a few minutes away.
Free plan, no credit card. Try Pro free for 15 days.