Compare commits

...

58 Commits

Author SHA1 Message Date
Dhruwang Jariwala
cd65850308 fix: build (#4755)
Co-authored-by: Matthias Nannt <mail@matthiasnannt.com>
2025-02-19 08:00:23 +00:00
Matti Nannt
b91ae7e9b1 chore: update scorecard action artifact version (#4764) 2025-02-18 23:00:03 +01:00
Matti Nannt
9baab1bf08 fix: scorecard filename (#4763) 2025-02-18 22:55:12 +01:00
Matti Nannt
fdd4d8b926 fix: scorecard action (#4762) 2025-02-18 22:47:29 +01:00
Matti Nannt
c26c42d67f docs: add system architecture and cluster setup details (#4761) 2025-02-18 22:41:17 +01:00
Matti Nannt
e1553becbc fix: scorecard action permissions (#4760) 2025-02-18 18:44:06 +01:00
Dhruwang Jariwala
2e845ab0c0 fix: integration doc links (#4756)
Co-authored-by: Matti Nannt <mail@matthiasnannt.com>
2025-02-18 16:11:39 +00:00
Piyush Gupta
79062a5476 feat: adds filter on insights (#4688) 2025-02-18 13:35:20 +00:00
Piyush Gupta
840495b0e6 fix: matrix question input not accessible (#4727) 2025-02-18 13:21:56 +00:00
Piyush Gupta
dd8fdbc7e3 Merge branch 'main' of https://github.com/formbricks/formbricks into feat/insights-filter 2025-02-18 18:51:25 +05:30
Matti Nannt
a18c2aadf6 chore: prepare v3.2 release (#4746) 2025-02-18 13:10:44 +00:00
Matti Nannt
c7b653f073 chore(deps-dev): bump the npm_and_yarn group across 4 directories with 2 updates (#4748) 2025-02-18 13:10:14 +00:00
Dhruwang
8201df66c3 fix test 2025-02-18 17:41:47 +05:30
Dhruwang
30e9baf0df fix test 2025-02-18 17:17:14 +05:30
Dhruwang Jariwala
a92881645b Merge branch 'main' into matrix-question-accessibility 2025-02-18 16:31:19 +05:30
Matti Nannt
9522545152 fix: add spacing between labels (#4753) 2025-02-18 10:17:25 +00:00
Dhruwang
33a09874c1 fix: workflow 2025-02-18 10:57:02 +05:30
Dhruwang
933755b81d fix workflow 2025-02-18 10:56:06 +05:30
Dhruwang
8a1352d149 add spacing between labels 2025-02-18 10:41:27 +05:30
Piyush Gupta
b47b7d7ea8 Merge branch 'feat/insights-filter' of https://github.com/formbricks/formbricks into feat/insights-filter 2025-02-18 09:28:28 +05:30
Piyush Gupta
27cc4b7a5d fix: cache key 2025-02-18 09:27:20 +05:30
Piyush Gupta
249cc7f276 Merge branch 'main' of https://github.com/formbricks/formbricks into feat/insights-filter 2025-02-18 09:21:25 +05:30
Matti Nannt
7ee9e92f7e Merge branch 'main' into matrix-question-accessibility 2025-02-17 20:32:52 +01:00
Matti Nannt
588e80a237 chore: remove old docs app (#4749) 2025-02-17 20:25:25 +01:00
Anshuman Pandey
e3d2d355de fix: make new session data migration more efficient (#4751) 2025-02-17 20:10:27 +01:00
Anshuman Pandey
e8e00691c0 fix: migration batch size (#4750) 2025-02-17 19:12:05 +01:00
Matthias Nannt
216be571e2 fix: web build 2025-02-17 18:29:59 +01:00
Matti Nannt
0176e82b3c Merge branch 'main' into dependabot/npm_and_yarn/npm_and_yarn-624cccc9ea 2025-02-17 18:27:11 +01:00
Anshuman Pandey
30d3297002 fix: removes new session action (#4726) 2025-02-17 16:53:02 +00:00
Matthias Nannt
6aa94a55ab update pnpm lock 2025-02-17 17:09:30 +01:00
Matthias Nannt
a747ca42ad Merge brtanch 'main' of github.com:formbricks/formbricks into dependabot/npm_and_yarn/npm_and_yarn-624cccc9ea 2025-02-17 15:50:25 +01:00
Matti Nannt
cd7a056bf1 Merge branch 'main' into matrix-question-accessibility 2025-02-17 15:48:27 +01:00
Matthias Nannt
baab774ede chore: add migration guide for 3.2 2025-02-17 15:39:36 +01:00
Matthias Nannt
877c974108 solve merge conflicts 2025-02-17 15:33:34 +01:00
Dhruwang Jariwala
d8033762d7 fix: auto subscribe (#4744) 2025-02-17 13:12:35 +00:00
Anshuman Pandey
47a265016c fix: removes new session action creation (#4734)
Co-authored-by: Matti Nannt <mail@matthiasnannt.com>
2025-02-17 12:51:43 +00:00
Piyush Gupta
ef78c68ac1 chore: refactor survey module (#4696)
Co-authored-by: Matti Nannt <mail@matthiasnannt.com>
2025-02-17 10:56:09 +00:00
Dhruwang Jariwala
bc3f261076 Merge branch 'main' into matrix-question-accessibility 2025-02-17 16:20:17 +05:30
dependabot[bot]
4fa8a66c5f chore(deps-dev): bump the npm_and_yarn group across 4 directories with 2 updates
Bumps the npm_and_yarn group with 2 updates in the / directory: [esbuild](https://github.com/evanw/esbuild) and [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest).
Bumps the npm_and_yarn group with 1 update in the /apps/storybook directory: [esbuild](https://github.com/evanw/esbuild).
Bumps the npm_and_yarn group with 1 update in the /apps/web directory: [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest).
Bumps the npm_and_yarn group with 1 update in the /packages/react-native directory: [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest).


Updates `esbuild` from 0.24.0 to 0.25.0
- [Release notes](https://github.com/evanw/esbuild/releases)
- [Changelog](https://github.com/evanw/esbuild/blob/main/CHANGELOG-2024.md)
- [Commits](https://github.com/evanw/esbuild/compare/v0.24.0...v0.25.0)

Updates `vitest` from 2.1.8 to 2.1.9
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v2.1.9/packages/vitest)

Updates `esbuild` from 0.24.0 to 0.25.0
- [Release notes](https://github.com/evanw/esbuild/releases)
- [Changelog](https://github.com/evanw/esbuild/blob/main/CHANGELOG-2024.md)
- [Commits](https://github.com/evanw/esbuild/compare/v0.24.0...v0.25.0)

Updates `vitest` from 2.1.8 to 2.1.9
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v2.1.9/packages/vitest)

Updates `vitest` from 3.0.4 to 3.0.5
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v2.1.9/packages/vitest)

---
updated-dependencies:
- dependency-name: esbuild
  dependency-type: direct:development
  dependency-group: npm_and_yarn
- dependency-name: vitest
  dependency-type: direct:development
  dependency-group: npm_and_yarn
- dependency-name: esbuild
  dependency-type: direct:development
  dependency-group: npm_and_yarn
- dependency-name: vitest
  dependency-type: direct:development
  dependency-group: npm_and_yarn
- dependency-name: vitest
  dependency-type: direct:development
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-17 10:32:41 +00:00
Matti Nannt
5885afc4f8 chore: add scorecard action (#4570) 2025-02-17 11:24:15 +01:00
Dhruwang Jariwala
f3d21c50ab fix: broken links and redirect in docs (#4741) 2025-02-17 10:47:50 +01:00
Matthias Nannt
30729db47a bump version number 2025-02-17 10:28:11 +01:00
Matthias Nannt
0ff690a344 solve merge conflicts 2025-02-17 10:27:42 +01:00
Ted
bec138c4f0 feat: traditional Chinese translations (#4705)
Co-authored-by: Dhruwang Jariwala <67850763+Dhruwang@users.noreply.github.com>
Co-authored-by: Dhruwang <dhruwangjariwala18@gmail.com>
2025-02-17 10:26:05 +01:00
Matti Nannt
2976810fdf Merge branch 'main' into matrix-question-accessibility 2025-02-17 10:17:52 +01:00
Dhruwang Jariwala
ae70ff2901 fix: Notion integration breaking when notion account is deleted (#4732) 2025-02-17 07:50:39 +00:00
Piyush Gupta
ee2642825f Merge branch 'main' of https://github.com/formbricks/formbricks into matrix-question-accessibility 2025-02-14 10:04:29 +05:30
Piyush Gupta
9cf98df425 fix: translations 2025-02-14 10:03:52 +05:30
Piyush Gupta
1229904188 fix: accessibility 2025-02-14 09:59:39 +05:30
Kartik Saini
9152181a00 fix: discord webhook not pinging (#4673)
Co-authored-by: Piyush Gupta <piyushguptaa2z123@gmail.com>
Co-authored-by: Dhruwang <dhruwangjariwala18@gmail.com>
Co-authored-by: Dhruwang Jariwala <67850763+Dhruwang@users.noreply.github.com>
2025-02-14 03:56:19 +00:00
Matti Nannt
4843cb8789 chore: add more legacy docs redirects (#4739) 2025-02-13 22:51:41 +01:00
Matti Nannt
6d3a489dff chore: update legacy docs rewrites (#4738) 2025-02-13 22:37:25 +01:00
Matti Nannt
ea8e98fa0d chore: add more legacy docs redirects (#4737) 2025-02-13 22:33:29 +01:00
Matti Nannt
614385da75 chore: update legacy docs redirects (#4736) 2025-02-13 22:25:48 +01:00
Dhruwang Jariwala
69734cc922 Merge branch 'main' into matrix-question-accessibility 2025-02-12 16:04:34 +05:30
Dhruwang
8bb3bd9409 fix: matrix question input not accessible 2025-02-11 16:55:13 +05:30
Johannes
9160d63ad4 Merge branch 'main' into feat/insights-filter 2025-01-29 06:59:15 -08:00
Piyush Gupta
b6fc104357 feat: adds filter on insights 2025-01-29 11:42:24 +05:30
936 changed files with 10080 additions and 28306 deletions

View File

@@ -1,32 +0,0 @@
name: Build Docs
on:
workflow_call:
permissions:
contents: read
jobs:
build:
name: Build Docs
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v3
- uses: ./.github/actions/dangerous-git-checkout
- name: Setup Node.js 20.x
uses: actions/setup-node@v3
with:
node-version: 20.x
- name: Install pnpm
uses: pnpm/action-setup@v4
- name: Install dependencies
run: pnpm install --config.platform=linux --config.architecture=x64
shell: bash
- run: |
pnpm build --filter=@formbricks/docs...
shell: bash

View File

@@ -35,11 +35,6 @@ jobs:
uses: ./.github/workflows/build-web.yml
secrets: inherit
docs:
name: Build Docs
uses: ./.github/workflows/build-docs.yml
secrets: inherit
e2e-test:
name: Run E2E Tests
uses: ./.github/workflows/e2e.yml
@@ -47,7 +42,7 @@ jobs:
required:
name: PR Check Summary
needs: [lint, test, build, e2e-test, docs]
needs: [lint, test, build, e2e-test]
if: always()
runs-on: ubuntu-latest
permissions:

76
.github/workflows/scorecard.yml vendored Normal file
View File

@@ -0,0 +1,76 @@
# This workflow uses actions that are not certified by GitHub. They are provided
# by a third-party and are governed by separate terms of service, privacy
# policy, and support documentation.
name: Scorecard supply-chain security
on:
# For Branch-Protection check. Only the default branch is supported. See
# https://github.com/ossf/scorecard/blob/main/docs/checks.md#branch-protection
branch_protection_rule:
# To guarantee Maintained check is occasionally updated. See
# https://github.com/ossf/scorecard/blob/main/docs/checks.md#maintained
schedule:
- cron: "17 17 * * 6"
push:
branches: ["main"]
workflow_dispatch:
# Declare default permissions as read only.
permissions: read-all
jobs:
analysis:
name: Scorecard analysis
runs-on: ubuntu-latest
permissions:
# Needed to upload the results to code-scanning dashboard.
security-events: write
# Needed to publish results and get a badge (see publish_results below).
id-token: write
# Add this permission
actions: write # Required for artifact upload
# Uncomment the permissions below if installing in a private repository.
# contents: read
# actions: read
steps:
- name: "Checkout code"
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
with:
persist-credentials: false
- name: "Run analysis"
uses: ossf/scorecard-action@0864cf19026789058feabb7e87baa5f140aac736 # v2.3.1
with:
results_file: results.sarif
results_format: sarif
# (Optional) "write" PAT token. Uncomment the `repo_token` line below if:
# - you want to enable the Branch-Protection check on a *public* repository, or
# - you are installing Scorecard on a *private* repository
# To create the PAT, follow the steps in https://github.com/ossf/scorecard-action?tab=readme-ov-file#authentication-with-fine-grained-pat-optional.
# repo_token: ${{ secrets.SCORECARD_TOKEN }}
# Public repositories:
# - Publish results to OpenSSF REST API for easy access by consumers
# - Allows the repository to include the Scorecard badge.
# - See https://github.com/ossf/scorecard-action#publishing-results.
# For private repositories:
# - `publish_results` will always be set to `false`, regardless
# of the value entered here.
publish_results: true
# Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF
# format to the repository Actions tab.
- name: "Upload artifact"
uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0
with:
name: sarif
path: results.sarif
retention-days: 5
# Upload the results to GitHub's code scanning dashboard (optional).
# Commenting out will disable upload of results to your repo's Code Scanning dashboard
- name: "Upload to code-scanning"
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: results.sarif

View File

@@ -23,6 +23,10 @@
{
"language": "pt-BR",
"path": "./packages/lib/messages/pt-BR.json"
},
{
"language": "zh-Hant-TW",
"path": "./packages/lib/messages/zh-Hant-TW.json"
}
],
"forceMode": "OVERRIDE"

View File

@@ -1,10 +0,0 @@
NEXT_PUBLIC_FORMBRICKS_COM_API_HOST=http://localhost:3000
NEXT_PUBLIC_FORMBRICKS_COM_ENVIRONMENT_ID=
NEXT_PUBLIC_FORMBRICKS_COM_DOCS_FEEDBACK_SURVEY_ID=
# Strapi API Key
STRAPI_API_KEY=
NEXT_PUBLIC_DOCSEARCH_APP_ID=
NEXT_PUBLIC_DOCSEARCH_API_KEY=
NEXT_PUBLIC_DOCSEARCH_INDEX_NAME=

View File

@@ -1,19 +0,0 @@
module.exports = {
root: true,
extends: ["@formbricks/eslint-config/next.js"],
parserOptions: {
project: "tsconfig.json",
tsconfigRootDir: __dirname,
},
rules: {
"@typescript-eslint/restrict-template-expressions": "off",
"import/no-cycle": "off",
},
settings: {
"import/resolver": {
typescript: {
project: "tsconfig.json",
},
},
},
};

38
apps/docs/.gitignore vendored
View File

@@ -1,38 +0,0 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# dependencies
/node_modules
/.pnp
.pnp.js
# testing
/coverage
# next.js
/.next/
/out/
# production
/build
# misc
.DS_Store
*.pem
# debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# local env files
.env*.local
# vercel
.vercel
# typescript
*.tsbuildinfo
next-env.d.ts
public/sitemap*.xml
public/robots.txt

View File

@@ -1,129 +0,0 @@
# Tailwind UI License
## Personal License
Tailwind Labs Inc. grants you an on-going, non-exclusive license to use the Components and Templates.
The license grants permission to **one individual** (the Licensee) to access and use the Components and Templates.
You **can**:
- Use the Components and Templates to create unlimited End Products.
- Modify the Components and Templates to create derivative components and templates. Those components and templates are subject to this license.
- Use the Components and Templates to create unlimited End Products for unlimited Clients.
- Use the Components and Templates to create End Products where the End Product is sold to End Users.
- Use the Components and Templates to create End Products that are open source and freely available to End Users.
You **cannot**:
- Use the Components and Templates to create End Products that are designed to allow an End User to build their own End Products using the Components and Templates or derivatives of the Components and Templates.
- Re-distribute the Components and Templates or derivatives of the Components and Templates separately from an End Product, neither in code or as design assets.
- Share your access to the Components and Templates with any other individuals.
- Use the Components and Templates to produce anything that may be deemed by Tailwind Labs Inc, in their sole and absolute discretion, to be competitive or in conflict with the business of Tailwind Labs Inc.
### Example usage
Examples of usage **allowed** by the license:
- Creating a personal website by yourself.
- Creating a website or web application for a client that will be owned by that client.
- Creating a commercial SaaS application (like an invoicing app for example) where end users have to pay a fee to use the application.
- Creating a commercial self-hosted web application that is sold to end users for a one-time fee.
- Creating a web application where the primary purpose is clearly not to simply re-distribute the components (like a conference organization app that uses the components for its UI for example) that is free and open source, where the source code is publicly available.
Examples of usage **not allowed** by the license:
- Creating a repository of your favorite Tailwind UI components or templates (or derivatives based on Tailwind UI components or templates) and publishing it publicly.
- Creating a React or Vue version of Tailwind UI and making it available either for sale or for free.
- Create a Figma or Sketch UI kit based on the Tailwind UI component designs.
- Creating a "website builder" project where end users can build their own websites using components or templates included with or derived from Tailwind UI.
- Creating a theme, template, or project starter kit using the components or templates and making it available either for sale or for free.
- Creating an admin panel tool (like [Laravel Nova](https://nova.laravel.com/) or [ActiveAdmin](https://activeadmin.info/)) that is made available either for sale or for free.
In simple terms, use Tailwind UI for anything you like as long as it doesn't compete with Tailwind UI.
### Personal License Definitions
Licensee is the individual who has purchased a Personal License.
Components and Templates are the source code and design assets made available to the Licensee after purchasing a Tailwind UI license.
End Product is any artifact produced that incorporates the Components or Templates or derivatives of the Components or Templates.
End User is a user of an End Product.
Client is an individual or entity receiving custom professional services directly from the Licensee, produced specifically for that individual or entity. Customers of software-as-a-service products are not considered clients for the purpose of this document.
## Team License
Tailwind Labs Inc. grants you an on-going, non-exclusive license to use the Components and Templates.
The license grants permission for **up to 25 Employees and Contractors of the Licensee** to access and use the Components and Templates.
You **can**:
- Use the Components and Templates to create unlimited End Products.
- Modify the Components and Templates to create derivative components and templates. Those components and templates are subject to this license.
- Use the Components and Templates to create unlimited End Products for unlimited Clients.
- Use the Components and Templates to create End Products where the End Product is sold to End Users.
- Use the Components and Templates to create End Products that are open source and freely available to End Users.
You **cannot**:
- Use the Components or Templates to create End Products that are designed to allow an End User to build their own End Products using the Components or Templates or derivatives of the Components or Templates.
- Re-distribute the Components or Templates or derivatives of the Components or Templates separately from an End Product.
- Use the Components or Templates to create End Products that are the property of any individual or entity other than the Licensee or Clients of the Licensee.
- Use the Components or Templates to produce anything that may be deemed by Tailwind Labs Inc, in their sole and absolute discretion, to be competitive or in conflict with the business of Tailwind Labs Inc.
### Example usage
Examples of usage **allowed** by the license:
- Creating a website for your company.
- Creating a website or web application for a client that will be owned by that client.
- Creating a commercial SaaS application (like an invoicing app for example) where end users have to pay a fee to use the application.
- Creating a commercial self-hosted web application that is sold to end users for a one-time fee.
- Creating a web application where the primary purpose is clearly not to simply re-distribute the components or templates (like a conference organization app that uses the components or a template for its UI for example) that is free and open source, where the source code is publicly available.
Examples of use **not allowed** by the license:
- Creating a repository of your favorite Tailwind UI components or template (or derivatives based on Tailwind UI components or templates) and publishing it publicly.
- Creating a React or Vue version of Tailwind UI and making it available either for sale or for free.
- Creating a "website builder" project where end users can build their own websites using components or templates included with or derived from Tailwind UI.
- Creating a theme or template using the components or templates and making it available either for sale or for free.
- Creating an admin panel tool (like [Laravel Nova](https://nova.laravel.com/) or [ActiveAdmin](https://activeadmin.info/)) that is made available either for sale or for free.
- Creating any End Product that is not the sole property of either your company or a client of your company. For example your employees/contractors can't use your company Tailwind UI license to build their own websites or side projects.
### Team License Definitions
Licensee is the business entity who has purchased a Team License.
Components and Templates are the source code and design assets made available to the Licensee after purchasing a Tailwind UI license.
End Product is any artifact produced that incorporates the Components or Templates or derivatives of the Components or Templates.
End User is a user of an End Product.
Employee is a full-time or part-time employee of the Licensee.
Contractor is an individual or business entity contracted to perform services for the Licensee.
Client is an individual or entity receiving custom professional services directly from the Licensee, produced specifically for that individual or entity. Customers of software-as-a-service products are not considered clients for the purpose of this document.
## Enforcement
If you are found to be in violation of the license, access to your Tailwind UI account will be terminated, and a refund may be issued at our discretion. When license violation is blatant and malicious (such as intentionally redistributing the Components or Templates through private warez channels), no refund will be issued.
The copyright of the Components and Templates is owned by Tailwind Labs Inc. You are granted only the permissions described in this license; all other rights are reserved. Tailwind Labs Inc. reserves the right to pursue legal remedies for any unauthorized use of the Components or Templates outside the scope of this license.
## Liability
Tailwind Labs Inc.s liability to you for costs, damages, or other losses arising from your use of the Components or Templates — including third-party claims against you — is limited to a refund of your license fee. Tailwind Labs Inc. may not be held liable for any consequential damages related to your use of the Components or Templates.
This Agreement is governed by the laws of the Province of Ontario and the applicable laws of Canada. Legal proceedings related to this Agreement may only be brought in the courts of Ontario. You agree to service of process at the e-mail address on your original order.
## Questions?
Unsure which license you need, or unsure if your use case is covered by our licenses?
Email us at [support@tailwindui.com](mailto:support@tailwindui.com) with your questions.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

View File

@@ -1,173 +0,0 @@
import { MdxImage } from "@/components/mdx-image";
import AddMember from "./images/add-member.webp";
import BulkInvite from "./images/bulk-invite.webp";
import IndvInvite from "./images/individual-invite.webp";
import MenuItem from "./images/organization-settings-menu.webp";
export const metadata = {
title: "User Management",
description:
"Assign different roles to organization members to grant them specific rights like creating surveys, viewing responses, or managing organization members.",
};
# Organization Access Roles
Learn about the different organization-level and team-level roles and how they affect permissions in Formbricks.
## Memberships
Permissions in Formbricks are broadly handled using organization-level roles, which apply to all teams and projects in the organization. Users on a self-hosting and Enterprise plan, have access to team-level roles, which enable more granular permissions.
<Note>
Access Roles is a feature of the **Enterprise Edition**. In the **Community Edition** and on the **Free** and **Startup** plan in the Cloud you can invite unlimited organization members as `Owner`.
</Note>
Here are the different access permissions, ranked from highest to lowest access
1. Owner
2. Manager
3. Billing
4. Member
### Organisational level
All users and their organization-level roles are listed in **Organization Settings > General**. Users can hold any of the following org-level roles:
- **Billing** users can manage payment and compliance details in the organization.
- **Org Members** can view most data in the organization and act in the projects they are members of. They cannot join projects on their own and need to be assigned.
- **Org Managers** have full management access to all teams and projects. They can also manage the organization's membership. Org Managers can perform Team Admin actions without needing to join the team. They cannot change other organization settings.
- **Org Owners** have full access to the organization, its data, and settings. Org Owners can perform Team Admin actions without needing to join the team.
### Permissions at project level
- **read**: read access to all resources (except settings) in the project.
- **read & write**: read & write access to all resources (except settings) in the project.
- **manage**: read & write access to all resources including settings in the project.
### Team-level Roles
- **Team Contributors** can view and act on surveys and responses.
- **Team Admins** have additional permissions to manage their team's membership and projects. These permissions are granted at the team-level, and don't apply to teams where they're not a Team Admin.
For more information on user roles & permissions, see below:
| | Owner | Manager | Billing | Member |
| -------------------------------- | ----- | ------- | ------- | ------ |
| **Organization** | | | | |
| Update organization | ✅ | ❌ | ❌ | ❌ |
| Delete organization | ✅ | ❌ | ❌ | ❌ |
| Add new Member | ✅ | ✅ | ❌ | ❌ |
| Delete Member | ✅ | ✅ | ❌ | ❌ |
| Update Member Access | ✅ | ✅ | ❌ | ❌ |
| Update Billing | ✅ | ✅ | ✅ | ❌ |
| **Project** | | | | |
| Create Project | ✅ | ✅ | ❌ | ❌ |
| Update Project Name | ✅ | ✅ | ❌ | ✅\*\* |
| Update Project Recontact Options | ✅ | ✅ | ❌ | ✅\*\* |
| Update Look & Feel | ✅ | ✅ | ❌ | ✅\*\* |
| Update Survey Languages | ✅ | ✅ | ❌ | ✅\*\* |
| Delete Project | ✅ | ✅ | ❌ | ❌ |
| **Surveys** | | | | |
| Create New Survey | ✅ | ✅ | ❌ | ✅\* |
| Edit Survey | ✅ | ✅ | ❌ | ✅\* |
| Delete Survey | ✅ | ✅ | ❌ | ✅\* |
| View survey results | ✅ | ✅ | ❌ | ✅ |
| **Response** | | | | |
| Delete response | ✅ | ✅ | ❌ | ✅\* |
| Add tags on response | ✅ | ✅ | ❌ | ✅\* |
| Edit tags on response | ✅ | ✅ | ❌ | ✅\* |
| **Actions** | | | | |
| Create Action | ✅ | ✅ | ❌ | ✅\* |
| Update Action | ✅ | ✅ | ❌ | ✅\* |
| Delete Action | ✅ | ✅ | ❌ | ✅\* |
| **API Keys** | | | | |
| Create API key | ✅ | ✅ | ❌ | ✅\*\* |
| Update API key | ✅ | ✅ | ❌ | ✅\*\* |
| Delete API key | ✅ | ✅ | ❌ | ✅\*\* |
| **Tags** | | | | |
| Create tags | ✅ | ✅ | ❌ | ✅\* |
| Update tags | ✅ | ✅ | ❌ | ✅\* |
| Delete tags | ✅ | ✅ | ❌ | ✅\*\* |
| **People** | | | | |
| Delete Person | ✅ | ✅ | ❌ | ✅\* |
| **Integrations** | | | | |
| Manage Integrations | ✅ | ✅ | ❌ | ✅\* |
\* - for the read & write permissions team members
\*\* - for the manage permissions team members
## Inviting organization members
There are two ways to invite organization members: One by one or in bulk.
### Invite organization members one by one
1. Go to the `Organization Settings` page via the menu in the lower right corner:
<MdxImage
src={MenuItem}
alt="Where to find the Menu Item for Organization Settings"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
2. Click on the `Add member` button:
<MdxImage
src={AddMember}
alt="Add member Button Position"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
3. In the modal, add the Name, Email and Role of the organization member you want to invite:
<MdxImage
src={IndvInvite}
alt="Individual Invite Modal Tab"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
<Note>
Access Roles is a feature of the **Enterprise Edition**. In the **Community Edition** and on the **Free** and **Startup** plan in the Cloud you can invite unlimited organization members as `Owners`.
</Note>
Formbricks sends an email to the organization member with an invitation link. The organization member can accept the invitation or create a new account by clicking on the link.
### Invite organization members in bulk
1. Go to the `Organization Settings` page via the menu in the lower right corner:
<MdxImage
src={MenuItem}
alt="Where to find the Menu Item for Organization Settings"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
2. Click on the `Add member` button:
<MdxImage
src={AddMember}
alt="Add member Button Position"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
3. In the modal, switch to `Bulk Invite`. You can download an example .CSV file to fill in the Name, Email and Role of the organization members you want to invite:
<MdxImage
src={BulkInvite}
alt="Individual Invite Modal Tab"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
4. Upload the filled .CSV file and invite the organization members in bulk ✅
Formbricks sends an email to each organization member in the CSV. The member can accept the invitation or create a new account by clicking on the link.
---

View File

@@ -1,48 +0,0 @@
import { MdxImage } from "@/components/mdx-image";
import SurveyEmbed from "@/components/survey-embed";
import AddImageOrVideoToQuestionImage from "./images/add-image-or-video-to-question-image.webp";
import AddImageOrVideoToQuestionVideo from "./images/add-image-or-video-to-question-video.webp";
import AddImageOrVideoToQuestion from "./images/add-image-or-video-to-question.webp";
# Add Image or Video to a Question
Enhance your questions by adding images or videos. This makes instructions clearer and the survey more engaging.
## How to Add Images
Click the icon on the right side of the question to add an image or video:
<MdxImage
src={AddImageOrVideoToQuestion}
alt="Overview of adding image or video to question"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
Upload an image by clicking the upload icon or dragging the file:
<MdxImage
src={AddImageOrVideoToQuestionImage}
alt="Overview of adding image to question"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
## How to Add Videos
Toggle to add a video via link:
<MdxImage
src={AddImageOrVideoToQuestionVideo}
alt="Overview of adding video to question"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
### Supported Video Platforms
We support YouTube, Vimeo, and Loom URLs.
<Note>
**YouTube Privacy Mode**: This option reduces tracking by converting YouTube URLs to no-cookie URLs. It only works with YouTube.
</Note>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

View File

@@ -1,169 +0,0 @@
import { MdxImage } from "@/components/mdx-image";
import ActionCalculateOperators from "./images/action-calculate-operators.webp";
import ActionCalculateValue from "./images/action-calculate-value.webp";
import ActionCalculateVariables from "./images/action-calculate-variables.webp";
import ActionCalculate from "./images/action-calculate.webp";
import ActionJump from "./images/action-jump.webp";
import ActionOptions from "./images/action-options.webp";
import ActionRequire from "./images/action-require.webp";
import AddLogic from "./images/add-logic.webp";
import ConditionChaining from "./images/condition-chaining.webp";
import ConditionOperators from "./images/condition-operators.webp";
import ConditionOptions from "./images/condition-options.webp";
import ConditionValue from "./images/condition-value.webp";
import Conditions from "./images/conditions.webp";
import Editor from "./images/editor.webp";
import QuestionLogic from "./images/question-logic.webp";
export const metadata = {
title: "Conditional Logic",
description:
"Create complex survey logic with the Logic Editor. Use conditions, actions, and variables to create a personalized survey experience.",
};
# Conditional Logic
Create complex survey logic with the Logic Editor. Use conditions, actions, and variables to create a personalized survey experience.
<MdxImage src={Editor} alt="Logic Editor" quality="100" className="max-w-full rounded-lg sm:max-w-3xl" />
## Terminology
- **Condition**: A rule that determines when an action should be executed.
- **Action**: A task that is executed when a condition is met.
## **Creating Logic**
1. **Add a Logic Block**: Click the `Add logic +` button to add a new logic block.
<MdxImage src={AddLogic} alt="Add Logic" quality="100" className="max-w-full rounded-lg sm:max-w-3xl" />
<Note>
You can add multiple logic blocks to a survey. Logic blocks are executed in the order they are added. You can rearrange the order of logic blocks.
</Note>
2. **Add Conditions**: Add conditions to the logic block. Conditions are rules that determine when an action should be executed.
<MdxImage
src={Conditions}
alt="Add Conditions"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
Conditons can be based on:
- **Question**: The answer to a question.
- **Variable**: A variable value.
- **Hidden Field**: The value of a hidden field.
2.a **Condition Options**: Choose from a list of available conditions.
<MdxImage
src={ConditionOptions}
alt="Condition Options"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
2.b **Condition Operators**: Choose an operator to compare the condition value.
<MdxImage
src={ConditionOperators}
alt="Condition Operators"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
2.c **Condition Value**: Enter a value to compare the condition against.
Comparisons can be made against a fixed value or a dynamic value.
Dynamic values can be based on a question, variable, or hidden field.
<MdxImage
src={ConditionValue}
alt="Condition Value"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
<Note>
- Conditions can be grouped. - Conditions can be combined using AND or OR operators. You can add multiple conditions to a logic block. Conditions are evaluated in the order they are added.
</Note>
<MdxImage
src={ConditionChaining}
alt="Condition Chaining"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
3. **Add Actions**: Add actions to the logic block. Actions are tasks that are executed when a condition is met.
<Note>You can add multiple actions to a logic block. Actions are executed in the order they are added.</Note>
- 3.a **Action Options**: Choose from a list of available actions.
<MdxImage
src={ActionOptions}
alt="Add Actions"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
Action is of the following types:
- **Calculate**: Perform a calculation. These variables are then available for use in other questions.
- Calculations can be performed on variables.
- Calculations can be based on fixed values or dynamic values.
<MdxImage
src={ActionCalculateVariables}
alt="Action Calculate Variables"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
<MdxImage
src={ActionCalculateOperators}
alt="Action Calculate Variables"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
<MdxImage
src={ActionCalculateValue}
alt="Action Calculate Variables"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
<MdxImage
src={ActionCalculate}
alt="Action Calculate"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
- **Require Answer**: Make a question required. Only the optional questions can be marked as required while filling the survey.
<MdxImage
src={ActionRequire}
alt="Action Require"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
- **Jump to Question**: Skip to a specific question. The user will be redirected to the specified question based on the condition.
<MdxImage
src={ActionJump}
alt="Action Jump"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
4. **Save Logic**: Click the `Save` button to save the logic block.
# Question Logic
This logic is executed when the user answers the question. Logic can be as simple as showing a follow-up question based on the answer or as complex as calculating a score based on multiple answers.
<MdxImage
src={QuestionLogic}
alt="Question Logic"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

View File

@@ -1,48 +0,0 @@
import { MdxImage } from "@/components/mdx-image";
import EmailCustomizationSettings from "./email-customization-card.webp";
import EmailSample from "./email-sample.webp";
import UpdatedLogo from "./updated-logo.webp";
export const metadata = {
title: "Email Customization",
description: "Customize the email that is sent to your users!",
};
# Email Customization
Email customization is a white-label feature that allows you to customize the email that is sent to your users. You can upload a logo of your company and use it in the email.
<Note>
This feature is a white-label feature. It is only available for users on paid plans or have an enterprise license.
</Note>
## How to Upload a Logo
1. Go to the Organization Settings page.
2. You will see a card called **Email Customization** under the **General** section.
<MdxImage
src={EmailCustomizationSettings}
alt="Email Customization Settings"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
3. Upload a logo of your company.
4. Click on the **Save** button.
<MdxImage src={UpdatedLogo} alt="Updated Logo" quality="100" className="max-w-full rounded-lg sm:max-w-3xl" />
## Viewing the Logo in the Email
You can click on the **Send test email** button to get a test email with the logo.
<MdxImage src={EmailSample} alt="Email Sample" quality="100" className="max-w-full rounded-lg sm:max-w-3xl" />
<Note>Only the owner and managers of the organization can modify the logo.</Note>
## Use Cases
- **White-labeling**: You can use this feature to white-label your emails to your users.
- **Branding**: You can use this feature to add your logo to your emails to increase brand recognition.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.8 KiB

View File

@@ -1,110 +0,0 @@
import { MdxImage } from "@/components/mdx-image";
import FilledHiddenFields from "./filled-hidden-fields.webp";
import HiddenFieldResponses from "./hidden-field-responses.webp";
import HiddenFields from "./hidden-fields.webp";
import InputHiddenFields from "./input-hidden-fields.webp";
export const metadata = {
title: "Hidden Fields",
description: "Add hidden fields to your surveys to capture additional data without requiring user inputs!",
};
# Hidden Fields
Hidden fields are a powerful feature in Formbricks that allows you to add data to a submission without asking the user to type it in. This feature is especially useful when you already have information about a user that you want to use in the analysis of the survey results (e.g. `payment plan` or `email`)
## How to Add Hidden Fields
### Enable Hidden Fields
1. Edit the survey you want to add hidden fields to & switch to the Questions tab and scroll down to the bottom of the page. You will see a section called **Hidden Fields**. Make sure to enable it by toggling the switch.
<MdxImage
src={HiddenFields}
alt="Enable Hidden Fields"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
### Add Hidden Field IDs
2. Now click on it to add a new hidden field ID. You can add as many hidden fields as you want.
<MdxImage
src={InputHiddenFields}
alt="Add Hidden Fields"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
<MdxImage
src={FilledHiddenFields}
alt="Filled Hidden Fields"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
## Set Hidden Field in Responses
### Link Surveys
Single Hidden Field:
<Col>
<CodeGroup title="Example Screen from which the User filled it">
```sh
https://formbricks.com/clin3dxja02k8l80hpwmx4bjy?screen=pricing
```
</CodeGroup>
</Col>
Multiple Hidden Fields:
<Col>
<CodeGroup title="Example Screen from which the User filled it">
```sh
https://formbricks.com/clin3dxja02k8l80hpwmx4bjy?screen=landing_page&job=Founder
```
</CodeGroup>
</Col>
### App & Website Surveys
For in-product surveys, you can set hidden fields in the response by adding them to the `formbricks.track` call:
<Col>
<CodeGroup title="Example Screen from which the User filled it">
```sh
formbricks.track("my event", {
hiddenFields: {
screen: "landing_page",
job: "Founder"
},
});
```
</CodeGroup>
</Col>
## View Hidden Fields in Responses
These hidden fields will now be visible in the responses tab just like other fields in the Summary as well as the Response Cards, and you can use them to filter and analyze your responses.
<MdxImage
src={HiddenFieldResponses}
alt="Hidden Field Responses"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
## Use Cases
- **Tracking Source**: You can add a hidden field to track the source of the survey. For a detailed guide on Source Tracking, check out the [Source Tracking](/link-surveys/source-tracking) guide.
- **User Metadata**: You can add hidden fields to capture user metadata such as user ID, email, or any other user-specific information.
- **Survey Metadata**: You can add hidden fields to capture other metadata, e.g. the screen from which the survey was filled, or any other app specific information.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

View File

@@ -1,27 +0,0 @@
import { MdxImage } from "@/components/mdx-image";
import StepOne from "./images/step-one.webp";
import StepThree from "./images/step-three.webp";
import StepTwo from "./images/step-two.webp";
export const metadata = {
title: "Set a Maximum Number of Submissions for Surveys",
description: "Limit the number of responses your survey can receive.",
};
# Limit by Number of Submissions
Automatically close your survey after a specific number of responses with Formbricks. This feature is perfect for limited offers, exclusive surveys, or when you need a precise sample size for statistical significance.
- **How to**: Open the Survey Editor, switch to the Settings tab. Scroll down to Response Options, Toggle the “Close survey on response limit”.
{" "}
<MdxImage
src={StepTwo}
alt="Choose a link survey template"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
- **Details**: Set a specific number of responses after which the survey automatically closes.
- **Use Case**: Perfect for limited offers, exclusive surveys, or when you need a precise sample size for statistical significance.
---

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.0 KiB

View File

@@ -1,65 +0,0 @@
import { MdxImage } from "@/components/mdx-image";
import { TellaVideo } from "@/components/tella-video";
import Filters from "./filters.webp";
import MetadataCard from "./metadata-card.webp";
export const metadata = {
title: "User Metadata | Formbricks",
description:
"Understand the metadata of your users when they fill a Formbricks survey (all website, app & link). We currently capture the user's source information, URL, browser, and device details, along with the country & the action that triggered.",
};
# User Metadata
Formbricks captures metadata of your users for you when they fill a survey.
This metadata is useful for understanding the context in which the user filled the survey. For example, if you are running a marketing campaign, you can understand which source is driving the most responses. Or if you are running a survey on a specific page, you can understand the user's behavior on that page.
<TellaVideo tellaVideoIdentifier="clvdr5lv300u90fjq7fmnhs0k" />
## Metadata Captured
- **Source**: The source from where the user filled the survey. This could be an App, Link, or a Webpage.
- **URL**: The URL of the page where the user filled the survey.
- **Browser**: The browser used by the user to fill the survey.
- **OS**: The operating system of the device used by the user to fill the survey.
- **Device**: The device used by the user to fill the survey.
- **Country**: The country of the user.
- **Action**: The action that triggered the survey. This is only available for App surveys.
## View Response Metadata
1. Go to the Responses tab of your survey.
2. Hover over the profile icon of the user on the response card & you should see a tooltip opening up with the metadata details.
<MdxImage
src={MetadataCard}
alt="Metadata Card on Response Tab"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
## Filter Responses by Metadata
1. Go to the Responses tab of your survey.
2. Click on the Filter button.
3. Scroll down & Select the metadata field you want to filter by.
4. Select the condition & the value you want to filter by.
<MdxImage
src={Filters}
alt="Apply Filters on Metadata"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
5. Now you should see the responses filtered based on the metadata you selected. If you want to see a walkthrough, view the video above to see how you can view & filter responses by metadata.
## Export Metadata
You can export the metadata of your responses along with the response data. When you export responses, you will see the metadata fields in the exported CSV file.
---
**Cant figure it out?**: **[Get help in Github Discussions](https://github.com/formbricks/formbricks/discussions)**

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

View File

@@ -1,166 +0,0 @@
import { MdxImage } from "@/components/mdx-image";
import { ResponsiveVideo } from "@/components/responsive-video";
import AddLanguageInSurvey from "./add-language-in-survey.webp";
import AddLanguages from "./add-languages.webp";
import EditMultiLang from "./edit-multi-lang.webp";
import EnableMultiLang from "./enable-multi-lang.webp";
import SeeSurveyInLanguage from "./see-survey-in-language.webp";
import SurveyLanguagesFromHome from "./survey-languages-from-home.webp";
import SurveyLanguageSettings from "./survey-languague-settings.webp";
import SurveySharing from "./survey-sharing.webp";
import SurveysHome from "./surveys-home.webp";
import TranslateAsPerLanguage from "./translate-as-per-language.webp";
export const metadata = {
title: "Multi-language Surveys | Formbricks",
description:
"Create multi-language link & app surveys with Formbricks. Get feedback from your users in their preferred language without writing a single line of code.",
};
# Multi-language Surveys
Multi-Language Surveys allow you to create surveys that support multiple languages using translations. This makes it easier to reach a diverse audience without creating separate surveys for each language. This feature simplifies the creation, delivery, and analysis of surveys for a multilingual audience.
How to deliver a specific language depends on the survey type (app or link survey):
- App & Website survey: Set a `language` attribute for the user. [See the guide below for App Surveys](#app-surveys-configuration)
- Link survey: Add a `lang` parameter in the survey URL. [See the guide below for Link Surveys](#link-surveys-configuration)
<ResponsiveVideo
title="Formbricks Multi-language Surveys"
src="https://www.youtube-nocookie.com/embed/Vol5zjYIoos?si=bdP2y3uk8-xR0uSD&amp;controls=0"
/>
---
## Creating a Multi-language Survey
1. Open the **Survey Languages** page in the Formbricks settings via the top-right menu:
<MdxImage
src={SurveyLanguagesFromHome}
alt="Formbricks Home"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
2. Click on the **Edit languages** button, to add a new language to your survey
<MdxImage
src={SurveyLanguageSettings}
alt="Formbricks Home"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
3. Select the preferred language from the dropdown and assign an identifier Alias. Click the **Add language** button to add the language to your project.
<MdxImage
src={AddLanguages}
alt="Add Multiple Languages to your Project"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
You can come back to this page anytime to add more languages or remove existing ones.
4. Now, return to the dashboard to create a new survey or edit an existing one.
<MdxImage
src={SurveysHome}
alt="Add Multiple Languages to your Project"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
5. In the survey editor, scroll down to the **Multiple Languages** section at the bottom and enable the toggle next to it.
<MdxImage
src={EnableMultiLang}
alt="Enable Multi-language for a survey"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
6. Now choose a **Default Language** for your survey. This is the language that will be shown to users who have not selected a preferred language.
<Note>Changing the default language will reset all the translations you have made for the survey.</Note>
7. Now, add the languages from the dropdown that you want to support in your survey.
<MdxImage
src={AddLanguageInSurvey}
alt="Enable Multi-language for a survey"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
8. You can now see the survey in the selected language by clicking on the language dropdown in any of the questions.
<MdxImage
src={SeeSurveyInLanguage}
alt="Enable Multi-language for a survey"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
9. You can now translate all survey content, including questions, options, and button placeholders, into the selected language.
<MdxImage
src={TranslateAsPerLanguage}
alt="Enable Multi-language for a survey"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
10. Once you are done, click on the **Publish** button to save the survey.
## App Surveys Configuration
1. When you initialise the Formbricks SDK for your user, you can pass a `language` attribute with the language code. This can be either the ISO identifier or the Alias you set when creating the language. The `language` attribute makes sure that this user only sees surveys with a translation in this specific language available.
<Col>
<CodeGroup title="Configuring Formbricks SDK with Multi-language">
```js
Formbricks.init({
environmentId: "<environment-id>",
apiHost: "<api-host>",
userId: "<user_id>",
attributes: {
language: "de", // ISO identifier or Alias set when creating language
},
});
```
</CodeGroup>
</Col>
<Note>
If a user has a language assigned, a survey has multi-language activate and it is missing a translation in the language of the user, the survey will not be displayed.
</Note>
2. That's it! Now, users with the language attribute set will see the survey in their preferred language. You can start collecting responses in multiple languages and filter them by language on the summary page.
---
## Link Surveys Configuration
For link surveys, the translation delivery is dependent on the `land` URL parameter.
After publishing the survey, just copy the survey link and append the `lang` query parameter with the language alias you have set.
For example, if you have set the alias for French as `fr`, you can share the survey link as
`https://your-survey-url.com?lang=fr`
Here are two examples:
- English: https://app.Formbricks.com/s/clptfos2i1pj516pvhxqyu3bn?lang=en
- German: https://app.Formbricks.com/s/clptfos2i1pj516pvhxqyu3bn?lang=de
Without the `lang` parameter, Formbricks will show the survey in the default language you have set.
You can now start collecting responses in multiple languages!
**Cant figure it out?**: **[Get help in Github Discussions](https://github.com/formbricks/formbricks/discussions)**

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -1,132 +0,0 @@
import { MdxImage } from "@/components/mdx-image";
import StepEleven from "./images/step-eleven.webp";
import StepNine from "./images/step-nine.webp";
import StepTen from "./images/step-ten.webp";
import Doggo from "./images/doggo.webp";
import HipsterLiving from "./images/hipster-living.webp";
import Mario from "./images/mario.webp";
import WindowsXp from "./images/windows-xp.webp";
export const metadata = {
title: "Overwrite Styling Theme on Individual Surveys",
description:
"Overwrite the global styling theme for individual surveys to create unique styles for each survey.",
};
# Overwrite Styling Theme on Individual Surveys
Overwrite the global styling theme for individual surveys to create unique styles for each survey.
<Note>
To set a styling theme for all surveys, please see the [Styling Theme](/core-features/global/styling-theme) manual.
</Note>
### Overwrite Styling Theme
1. In the Survey Editor of the survey you want to style, navigate to the **Styling** tab:
<MdxImage
src={StepNine}
alt="Choose a link survey template"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
2. Activate the **Add Custom Styles** toggle to override the default project styling:
<MdxImage
src={StepTen}
alt="Choose a link survey template"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
3. Customize your survey's style as needed:
<MdxImage
src={StepEleven}
alt="Choose a link survey template"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
Voila! just hit the save button to apply your changes. Your survey is now ready to impress with its unique look!
## Overwrite CSS Styles for App & Website Surveys
You can overwrite the default CSS styles for the app & website surveys by adding the following CSS to your global CSS file (eg. `globals.css`):
Make sure that you do not change the CSS variable names as they are used by Formbricks to identify the CSS variables. You can change the values to your liking. We have filled in some sample values for you to change according to your desired appearance.
<Col>
<CodeGroup title="Overwrite Formbricks CSS">
```css
/* Formbricks CSS */
--fb-brand-color: red;
--fb-brand-text-color: white;
--fb-border-color: green;
--fb-border-color-highlight: rgb(13, 13, 12);
--fb-focus-color: red;
--fb-heading-color: yellow;
--fb-subheading-color: green;
--fb-info-text-color: orange;
--fb-signature-text-color: blue;
--fb-survey-background-color: black;
--fb-accent-background-color: rgb(13, 13, 12);
--fb-accent-background-color-selected: red;
--fb-placeholder-color: white;
--fb-shadow-color: var(--fb-brand-color);
--fb-rating-fill: rgb(13, 13, 12);
--fb-rating-hover: green;
--fb-back-btn-border: blue;
--fb-submit-btn-border: transparent;
--fb-rating-selected: black;
```
</CodeGroup>
</Col>
We have an example of this in our [Demo project](https://github.com/formbricks/formbricks/blob/main/apps/demo/styles/globals.css) here.
## Funky Survey Examples
- **Super Mario:** I guess he won't let himself be limited by radio buttons and do all three things
<MdxImage
src={Mario}
alt="Choose a link survey template"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
- **Hipster Living**: Does your monstera get enough water?
<MdxImage
src={HipsterLiving}
alt="Choose a link survey template"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
- **Windows XP**: Hach, nostalgia. Made us wanna play Mafia.
<MdxImage
src={WindowsXp}
alt="Choose a link survey template"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
- **Whosagooooodbooooy**: Things you've likely said to your dog.
<MdxImage
src={Doggo}
alt="Choose a link survey template"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
---

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

View File

@@ -1,75 +0,0 @@
import { MdxImage } from "@/components/mdx-image";
import StepOne from "./images/step-one.webp";
export const metadata = {
title: "Collect Partial Submissions with Formbricks",
description:
"Capture and analyze partial submissions in Formbricks to understand respondent behavior and improve survey engagement. Learn how to enable and access partial submissions data.",
};
# Partial Submissions
Formbricks enables you to capture and analyze partial submissions, providing detailed insights into how participants interact with each question within your survey. This feature is crucial for identifying specific points where respondents may disengage, allowing you to understand and address drop-offs effectively. This makes sure you do not lose any of your meaningful insights from a question in a survey.
## **Understanding Partial Submissions**
Partial submissions occur when respondents start a survey but do not complete it. These can include instances where the survey is opened but no questions are answered, or where only some questions are addressed before the survey is exited.
## **Enabling and Accessing Partial Submissions Tracking**
Tracking of partial submissions is automatically enabled for all Formbricks surveys, capturing every interaction from the moment a respondent begins the survey.
### **Types of Data Captured**
1. **Display Created**: Tracks when a survey is initially opened.
2. **Questions Partially Answered**: Records after every question & the data is handled, noting which questions were last interacted with before the survey was exited.
### **Benefits of Tracking Partial Submissions**
- **Identifies Drop-Off Points**: Pinpoints specific questions where respondents are likely to stop answering, providing critical insights into potential issues within the survey.
- **Improves Survey Design**: Data from partial submissions can guide adjustments to question complexity, survey length, or formatting to enhance respondent engagement.
- **Enhances Completion Rates**: Understanding where and why respondents are dropping off allows for targeted interventions to improve overall engagement and completion rates.
## **Analyzing Partial Submission Data**
Formbricks provides detailed analytics for partial submissions, including a per-question analysis of respondent behavior.
<MdxImage
src={StepOne}
alt="Choose a link survey template"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
### **Survey Summary Analytics**
The "Analyze Drop-Offs" toggle in the survey summary reveals a comprehensive table with detailed metrics, enabling a deep dive into how respondents interact with each question:
- **Summary Metrics**:
- **Impressions**: Total number of times the survey was viewed.
- **Starts**: Percentage of impressions that the survey was started.
- **Responses**: Total number of completed responses.
- **Drop-Offs**: Percentage of starts that did not lead to a complete response.
- **Time to Complete**: Average time taken by respondents to complete the survey.
### **Detailed Question Analysis**
Each question is analyzed for:
- **Time to Complete**: Average time taken by respondents spent on this question.
- **Impressions**: Number of times the question was viewed.
- **Drop-Offs**: Number of times respondents left the survey at this question, with a percentage indicating the drop-off rate.
This data is invaluable for pinpointing problems with specific questions and understanding the overall flow and engagement levels within the survey.
## **Use Cases**
Partial submissions tracking is particularly valuable for:
- Surveys experiencing high drop-off rates, where detailed question analysis can inform necessary adjustments.
- Studies requiring in-depth engagement metrics for each survey question to optimize content and survey structure.
## **Conclusion**
By leveraging the partial submissions tracking feature in Formbricks, you gain comprehensive insights into respondent behaviors and survey interactions. This information is vital for enhancing survey design, improving response rates, and ensuring more reliable and meaningful data collection.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

View File

@@ -1,39 +0,0 @@
import { MdxImage } from "@/components/mdx-image";
import SurveyEmbed from "@/components/survey-embed";
import Address from "./images/address.webp";
#### Question Type
# Address
The Address question type allows respondents to input their address details, including multiple fields such as address lines, city, state, and country. You can configure the question by adding a title, an optional description, and toggling specific fields to be required.
<SurveyEmbed surveyUrl="https://app.formbricks.com/s/m8w91e8wi52pdao8un1f4twu" />
## Elements
<MdxImage
src={Address}
alt="Overview of Address question type"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
### Question
Provide a question to describe the address information you are requesting.
### Description
Optionally, add a description to guide the user.
### Toggle Fields
You can choose to show and require any or all of the following fields in the form:
- Address Line 1
- Address Line 2
- City
- State
- Zip Code
- Country

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -1,32 +0,0 @@
import { MdxImage } from "@/components/mdx-image";
import SurveyEmbed from "@/components/survey-embed";
import Consent from "./images/consent.webp";
#### Question Type
# Consent
The Consent card is used to obtain user agreement regarding a product, service, or policy. It features a bold statement or question as the title, followed by a brief description. At the end of the card, users can confirm their consent by checking a checkbox to indicate their agreement.
<SurveyEmbed surveyUrl="https://app.formbricks.com/s/orxp15pca6x2nfr3v8pttpwm" />
## Elements
<MdxImage
src={Consent}
alt="Overview of Consent question type"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
### Title
A bold statement or question asking for user consent, displayed prominently at the top of the card.
### Description
A short explanation or additional context for the consent request, displayed below the title. The text can be formatted, and hyperlinks are allowed within the description.
### Checkbox
At the bottom of the card, users can confirm their agreement by checking the box, indicating their consent to the question or statement above. The label for the checkbox is also editable.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.3 KiB

View File

@@ -1,38 +0,0 @@
import { MdxImage } from "@/components/mdx-image";
import SurveyEmbed from "@/components/survey-embed";
import Contact from "./images/contact.webp";
#### Question Type
# Contact Info
The Contact Info question type allows respondents to provide their basic contact information such as name, email, and phone number. You can customize the form with a title, an optional description, and control which fields to display and require.
<SurveyEmbed surveyUrl="https://app.formbricks.com/s/z2zjoonfeythx5n6z5qijbsg" />
## Elements
<MdxImage
src={Contact}
alt="Overview of Contact Info question type"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
### Title
Specify a title to describe the information you're collecting.
### Description
Optionally, add a description to give additional context.
### Toggle Fields
You can choose to show and require any or all of the following fields:
- First Name
- Last Name
- Email
- Phone Number
- Company

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

View File

@@ -1,36 +0,0 @@
import { MdxImage } from "@/components/mdx-image";
import SurveyEmbed from "@/components/survey-embed";
import Date from "./images/date.webp";
#### Question Type
# Date
The Date question type allows respondents to provide a date, such as when they are available or when an event is scheduled. It features a title to guide the respondent on what date to enter, and an optional description to provide further details or context.
<SurveyEmbed surveyUrl="https://app.formbricks.com/s/rk844spc8ffls25vzkxzzhse" />
## Elements
<MdxImage
src={Date}
alt="Overview of Date question type"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
### Title
Add a clear title to inform the respondent what date you are asking for.
### Description
Provide an optional description with further instructions.
### Date Format
Choose from multiple date formats for the input:
- MM-DD-YYYY
- DD-MM-YYYY
- YYYY-MM-DD

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.2 KiB

View File

@@ -1,40 +0,0 @@
import { MdxImage } from "@/components/mdx-image";
import SurveyEmbed from "@/components/survey-embed";
import FileUpload from "./images/file-upload.webp";
#### Questions Type
# File Upload
The File Upload question type allows respondents to upload files related to your survey, such as production documents or requirement specifications. It features a title to guide the user on what to upload and an optional description to provide additional context.
<SurveyEmbed surveyUrl="https://app.formbricks.com/s/oo4e6vva48w0trn01ht8krwo" />
## Elements
<MdxImage
src={FileUpload}
alt="Overview of Fill Upload question type"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
### Title
Add a clear title that informs the respondent about the purpose of the file upload.
### Description
Provide an optional description to give respondents more details or instructions about what files they need to upload.
### Allow Multiple Files
Enable this option to allow respondents to upload multiple files at once.
### Max File Size
You can set a maximum file size limit, and an input box will appear to specify the size in MB.
### File Type Restrictions
You can restrict the allowed file types. An input box will appear where you can specify the file formats, such as `.pdf`, `.jpg`, `.docx`, etc.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -1,47 +0,0 @@
import { MdxImage } from "@/components/mdx-image";
import SurveyEmbed from "@/components/survey-embed";
import FreeText from "./images/free-text.webp";
export const metadata = {
title: "Free Text",
description: "Free text questions allow respondents to enter a custom answer.",
};
#### Question Type
# Free Text
Free text questions allow respondents to enter a custom answer. Displays a title and an input field for the respondent to type in.
<SurveyEmbed surveyUrl="https://app.formbricks.com/s/cm2b2eftv000012b0l3htbu0a" />
## Elements
<MdxImage
src={FreeText}
alt="Overview of Free Text question type"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
### Title
Add a clear title to inform the respondent what information you are asking for.
### Description
Provide an optional description with further instructions.
### Placeholder
Specify a placeholder text to display in the input field.
### Input Type
Choose the type of input field to display. Options include:
- **Text**: A text area input. This can be converted to a single line input field if needed, by toggling the _"Long answer"_ switch at the bottom of the question segment.
- **Email**: A single-line text input that validates the input as an email address.
- **URL**: A single-line text input that validates the input as a URL.
- **Number**: A single-line text input that validates the input as a number and shows "increase" and "decrease" buttons.
- **Phone**: A single-line text input that validates the input as a phone number.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -1,41 +0,0 @@
import { MdxImage } from "@/components/mdx-image";
import SurveyEmbed from "@/components/survey-embed";
import Matrix from "./images/matrix.webp";
#### Question Type
# Matrix
Matrix questions allow respondents to select a value for each option presented in rows. The values range from 0 to a user-defined maximum (e.g., 0 to X). The selection is made using radio buttons, and users can choose any value within the defined range, including 0.
<SurveyEmbed surveyUrl="https://app.formbricks.com/s/obqeey0574jig4lo2gqyv51e" />
## Elements
<MdxImage
src={Matrix}
alt="Overview of Matrix question type"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
### Title
Add a clear title to inform the respondent what information you are asking for.
### Description
Provide an optional description with further instructions.
### Rows
Define the options shown on the left side of the matrix. These represent the items for which users will select a value.
### Columns
Represent the range of values from 0 to X (right side of the screen). Users can choose any value, including 0, using radio buttons.
### Select ordering
- Keep current order: This will keep the order of options the same for all respondents.
- Randomize all: This will randomize the options for each respondent.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

View File

@@ -1,39 +0,0 @@
import { MdxImage } from "@/components/mdx-image";
import SurveyEmbed from "@/components/survey-embed";
import MultiSelect from "./images/multi-select.webp";
export const metadata = {
title: "Multi Select",
description: "Multi select questions allow respondents to select several answers from a list",
};
#### Question Type
# Multi Select
Multi select questions allow respondents to select several answers from a list. Displays a title and a list of checkboxes for the respondent to choose from.
<SurveyEmbed surveyUrl="https://app.formbricks.com/s/jhyo6lwzf6eh3fyplhlp7h5f" />
## Elements
<MdxImage
src={MultiSelect}
alt="Overview of Multi Select question type"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
### Title
Add a clear title to inform the respondent what information you are asking for.
### Description
Provide an optional description with further instructions.
### Options
Define the options shown in the list. These represent the items for which users will select.
Other than the fact that respondents can select multiple options, multi select questions are similar to [single select](/global/question-types/single-select) questions.

View File

@@ -1,36 +0,0 @@
import { MdxImage } from "@/components/mdx-image";
import SurveyEmbed from "@/components/survey-embed";
import NetPromoterScore from "./images/net-promoter-score.webp";
#### Question Type
# Net Promoter Score
Net Promoter Score questions allow respondents to rate a question on a scale from 0 to 10. Displays a title and a list of radio buttons for the respondent to choose from.
<SurveyEmbed surveyUrl="https://app.formbricks.com/s/vqmpasmnt5qcpsa4enheips0" />
## Elements
<MdxImage
src={NetPromoterScore}
alt="Overview of Net Promoter Score question type"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
### Title
Add a clear title to inform the respondent what information you are asking for.
### Description
Provide an optional description with further instructions.
### Labels
Add labels for the lower and upper bounds of the score. The default is "Not at all likely" and "Extremely likely".
### Add color coding
Add color coding to the score. This will show a color bar above the score.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Some files were not shown because too many files have changed in this diff Show More