In a nutshell
What Formbricks handles:
- Survey Management: Create, update, and host survey definitions through the Formbricks Management API or dashboard.
- Response Handling: Receive and securely store responses via the Client or Management API.
- Webhooks Delivery: Send real-time response data to your configured endpoints when responses are created, updated, or completed.
What you handle:
- Custom Survey Wrapper / UI: Build your own front-end package that fetches the survey (via API or local cache), renders it, and captures user responses.
- Analysis & Reporting: Process incoming webhook data or fetched responses in your own analytics, data warehouse, or visualization tools. You can still make use of Formbricks to view Survey stats and data, but any type of custom dashboards is currently not supported.
Why choose this approach?
- Your UI, your brand: You take full control of survey look, feel, transitions, validations, and logic in your application stack.
- Separation of concerns: Formbricks functions like a specialized “Backend-as-a-Service” for survey schemas and response handling; you control the frontend and analytics.
- OSS, self-hostable: With Formbricks being open source, you can self-host without vendor lock-in.
Core components
- Formbricks Backend: Use the Formbricks app or Management API to create surveys (questions, flows, locales, validations).
- Your UI Survey Package: Renders your custom UI, collects the data and sends to Formbricks backend using Formbricks API. For inspiration, you can start looking here. With an active Enterprise license you can even fork our surveys package, make changes and keep them private to your organization (freed from AGPL obligation to also release your changes under AGPL)
- Webhook Integration: Using in-built Webhook integration forward the data to your Analysis tool or Data warehouse.
- Your Analysis Tool / Data Warehouse: Receive all the data from Formbricks integration and process it for analysis.
Data Flow
Create Survey with Formbricks:
Create a survey in Formbricks (UI) or programmatically via the Management API. Read more about the API endpoint here.Returns: Full survey object with id, schema, and configuration.
⚠️ Backend only: Requires API key - call from your server, not client-side.
Fetch Survey Schema:
Get the survey schema using the Formbricks API. Read more about the API endpoint here. GET /api/v1/management/surveys/Headers: x-api-key: <your-api-key>
Returns: Complete survey JSON schema including:
- Questions array with types, logic, and validation
- Display settings and styling
- Languages and translations
- Branching/skip logic
- Thank you pages and redirects
Implementation Options:
Option A (Live): Your backend fetches at runtime and serves to your UI- Fresh data on every request
- Requires backend proxy endpoint
- Faster client load times
- Periodically refresh from Management API
- Best for high-traffic scenarios
- Survey type: Website & App
- Recontact Options: Overwrite Global Waiting Time & Always show
- Targeting: None
Render Survey with Your Custom UI:
Your frontend receives the survey JSON and renders it using your own UI components. For inspiration, you can start looking here. With an active Enterprise license you can even fork our surveys package, make changes and keep them private to your organization (freed from AGPL obligation to also release your changes under AGPL)- Question rendering based on type (openText, multipleChoiceSingle, rating, etc.)
- Skip logic and conditional branching
- Input validation
- Progress tracking
- Custom styling and branding
Submit Responses to Formbricks:
Client-side Submission (Recommended):
Post responses directly from the browser to Formbricks Client API. Read more about it here.✅ No authentication required - Safe for browser/mobile apps.
Server-side Submission (Alternative):
Proxy responses through your backend.Use when: You need server-side validation, PII handling, or response enrichment before storage.
Consume Analytics & Response Data:
Option A: Real-time Webhooks (Recommended):
Configure webhooks in Formbricks to push response data to your system. Read more about Webhooks here.- Go to Formbricks Settings → Webhooks
- Add your endpoint URL: https://your-domain.com/webhooks/formbricks
- Select triggers:
- responseCreated - New response started
- responseUpdated - Response in progress
- responseFinished - Response completed