\n \n \n \n \n \n \n \n",
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "description": "OK",
+ "headers": {
+ "Cache-Control": {
+ "schema": {
+ "example": "no-store, must-revalidate",
+ "type": "string"
+ }
+ },
+ "Connection": {
+ "schema": {
+ "example": "keep-alive",
+ "type": "string"
+ }
+ },
+ "Content-Encoding": {
+ "schema": {
+ "example": "gzip",
+ "type": "string"
+ }
+ },
+ "Content-Type": {
+ "schema": {
+ "example": "text/html; charset=utf-8",
+ "type": "string"
+ }
+ },
+ "Date": {
+ "schema": {
+ "example": "Tue, 23 Apr 2024 07:03:50 GMT",
+ "type": "string"
+ }
+ },
+ "Keep-Alive": {
+ "schema": {
+ "example": "timeout=5",
+ "type": "string"
+ }
+ },
+ "Transfer-Encoding": {
+ "schema": {
+ "example": "chunked",
+ "type": "string"
+ }
+ },
+ "Vary": {
+ "schema": {
+ "example": "RSC, Next-Router-State-Tree, Next-Router-Prefetch, Accept-Encoding",
+ "type": "string"
+ }
+ },
+ "X-Powered-By": {
+ "schema": {
+ "example": "Next.js",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "500": {
+ "content": {
+ "text/plain": {
+ "example": "\n\n \n \n \n \n \n \n \n \n \n Formbricks\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n",
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "description": "Internal Server Error",
+ "headers": {
+ "Cache-Control": {
+ "schema": {
+ "example": "no-store, must-revalidate",
+ "type": "string"
+ }
+ },
+ "Connection": {
+ "schema": {
+ "example": "keep-alive",
+ "type": "string"
+ }
+ },
+ "Content-Encoding": {
+ "schema": {
+ "example": "gzip",
+ "type": "string"
+ }
+ },
+ "Content-Type": {
+ "schema": {
+ "example": "text/html; charset=utf-8",
+ "type": "string"
+ }
+ },
+ "Date": {
+ "schema": {
+ "example": "Tue, 23 Apr 2024 07:05:08 GMT",
+ "type": "string"
+ }
+ },
+ "Keep-Alive": {
+ "schema": {
+ "example": "timeout=5",
+ "type": "string"
+ }
+ },
+ "Transfer-Encoding": {
+ "schema": {
+ "example": "chunked",
+ "type": "string"
+ }
+ },
+ "Vary": {
+ "schema": {
+ "example": "RSC, Next-Router-State-Tree, Next-Router-Prefetch, Accept-Encoding",
+ "type": "string"
+ }
+ },
+ "X-Powered-By": {
+ "schema": {
+ "example": "Next.js",
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "summary": "Health Check",
+ "tags": ["default"]
+ }
+ }
+ },
+ "servers": [
+ {
+ "url": "http://{{baseurl}}",
+ "variables": {
+ "baseurl": {
+ "default": "localhost:3000"
+ }
+ }
+ }
+ ],
+ "tags": [
+ {
+ "description": "The Public Client API is designed for the JavaScript SDK and does not require authentication. It's primarily used for creating persons, sessions, and responses within the Formbricks platform. This API is ideal for client-side interactions, as it doesn't expose sensitive information.\n- Displays API - Mark Survey as Displayed or Responded for a Person\n- Responses API - Create & update responses for a survey\n- Environment API - Get the environment state to be used in Formbricks SDKs\n- Contacts API - Identify & update contacts (e.g. attributes)\n- User API - Identify & track users based on their attributes, device type, etc.",
+ "name": "Client API"
+ },
+ {
+ "description": "Displays are metrics used to measure the number of times a survey was viewed both by unidentified or identified users.",
+ "name": "Client API > Display"
+ },
+ {
+ "description": "Responses are captured whenever a user fills in your survey either partially or completely.",
+ "name": "Client API > Response"
+ },
+ {
+ "description": "Get the environment state to be used in Formbricks SDKs",
+ "name": "Client API > Environment"
+ },
+ {
+ "description": "Contacts are the identified users on Formbricks app that get initated when you pass a userId and have user activation enabled. This now allows you to track & show them targeted surveys based on their attributes, device type, etc.",
+ "name": "Client API > Contacts"
+ },
+ {
+ "description": "Users are the identified users on Formbricks app that get initated when you pass a userId and have user activation enabled. This now allows you to track & show them targeted surveys based on their attributes, device type, etc. Currently, this api is only being used in the react-native sdk.",
+ "name": "Client API > User"
+ },
+ {
+ "description": "The Management API provides access to all data and settings that are visible in the Formbricks App. This API requires a personal API Key for authentication, which can be generated in the Settings section of the Formbricks App. With the Management API, you can manage your Formbricks account programmatically, accessing and modifying data and settings as needed.\n\n> **For Auth:** we use the `x-api-key` header \n \n\nAPI requests made to the Management API are authorized using a personal API key. This key grants the same rights and access as if you were logged in at formbricks.com. It's essential to keep your API key secure and not share it with others.\n\nTo generate, store, or delete an API key, follow the instructions provided on the following page [API Key](https://formbricks.com/docs/api/management/api-key-setup).",
+ "name": "Management API"
+ },
+ {
+ "description": "Action Classes allow you to set behaviour methods such as when a user clicks on a buy now button, or when a user leaves the page, etc. These allow you to trigger specific surveys to these users.\n\nMethods: Get All, Get, Create, Update, and Delete Action Classes",
+ "name": "Management API > Action Class"
+ },
+ {
+ "description": "Attribute Classes help you categorize attributes so that you can target users based on specific values of their attributes. They are associated with a Person. Read more [here](https://formbricks.com/docs/in-app-surveys/attributes)",
+ "name": "Management API > Attribute Class"
+ },
+ {
+ "description": "The Contacts API allows you to retrieve information about contacts in your environment. Contacts represent users who have interacted with your surveys or forms.",
+ "name": "Management API > Contacts"
+ },
+ {
+ "description": "The Contact Attributes API allows you to retrieve information about attributes associated with contacts in your environment. These attributes can include custom properties and values assigned to your contacts.",
+ "name": "Management API > Contact Attributes"
+ },
+ {
+ "description": "The Contact Attribute Keys API allows you to retrieve information about the defined attribute keys in your environment. These keys define the structure and properties that can be assigned to contacts, such as email, name, or custom attributes.",
+ "name": "Management API > Contact Attribute Keys"
+ },
+ {
+ "description": "Retrieve Account Information",
+ "name": "Management API > Me"
+ },
+ {
+ "description": "Enable User Identification in Formbricks to granularly target users to show surveys to without spraying across them. This API will help you utilise Formbricks User Identification to its maximum.\n\nMethods: Get All, Get, and Delete Persons",
+ "name": "Management API > People"
+ },
+ {
+ "description": "Responses are what your users fill in as answers to a survey. Use this cautiosly and make sure you handle this data carefully.\n\nMethods allowed: Get All, Get by Survey, Get, Update, and Delete Responses",
+ "name": "Management API > Response"
+ },
+ {
+ "description": "Surveys are the core of user data & feedback collection. We have various types of surveys to cater to you:\n\n- In-App Surveys\n \n- Website Surveys\n \n- Link Surveys\n \n\nCreate surveys & then trigger them as per your actions & attribute filterings that you have set to make the most of them.\n\nMethods allowed: Get All, Get, Create, Update, and Delete Surveys",
+ "name": "Management API > Survey"
+ },
+ {
+ "description": "Formbricks' Webhook API offers a powerful interface for interacting with webhooks. Webhooks allow you to receive real-time HTTP notifications of changes to specific objects in the Formbricks environment.\n\nThe behavior of the webhooks is determined by their trigger settings. The trigger determines which updates the webhook sends. Current available triggers include:\n\n- \"responseCreated\"\n \n- \"responseUpdated\", and\n \n- \"responseFinished\".\n \n\nThese APIs are designed to facilitate seamless integration of Formbricks with third-party systems. By making use of our webhook API, you can automate the process of sending data to these systems whenever significant events occur within your Formbricks environment.\n\n \n\nMethods allowed: Get All, Get ,Create, and Delete Webhooks",
+ "name": "Management API > Webhook"
+ }
+ ]
+}
diff --git a/docs/api-reference/rest-api.mdx b/docs/api-reference/rest-api.mdx
new file mode 100644
index 0000000000..404099eca0
--- /dev/null
+++ b/docs/api-reference/rest-api.mdx
@@ -0,0 +1,129 @@
+---
+title: "REST API"
+icon: "code"
+description: "
+Formbricks provides two APIs: the Public Client API for frontend survey interactions and the Management API for backend management tasks."
+---
+
+
+ View our [API Documentation](/api-reference) in more than 30 frameworks and languages.
+
+
+## Public Client API
+
+The **Public Client API** is used by our SDKs and doesn’t require authentication, making it ideal for client-side interactions without exposing sensitive data.
+
+We currently have the following Client API methods exposed and below is their documentation attached in Postman:
+
+- [Displays API](/api-reference/client-api->-display/create-display) - Mark a survey as displayed or link a display to a response for a person.
+
+- [People API](/api-reference/client-api->-people/create-person) - Create & Update a Person (e.g., attributes, email, userId, etc.)
+
+- [Responses API](/api-reference/client-api->-response/create-response) - Create & Update a Response for a Survey.
+
+## Management API
+
+The **Management API** gives full access to all data and settings available in your Formbricks account. It requires a personal API Key for authentication, which you can generate and manage in the Settings section of the Formbricks app.
+
+We currently have the following Management API methods exposed and below is their documentation attached in Postman:
+
+- [Action Class API](/api-reference/management-api->-action-class/get-all-action-classes) - Create, List, and Delete Action Classes
+
+- [Attribute Class API ](/api-reference/management-api->-attribute-class/get-all-attribute-classes)- Create, List, and Delete Attribute Classes
+
+- [Me API](/api-reference/management-api->-me/me) - Retrieve Account Information
+
+- [People API](/api-reference/management-api->-people/get-all-persons) - List and Delete People
+
+- [Response API](/api-reference/management-api->-response/get-survey-responses) - List, List by Survey, Update, and Delete Responses
+
+- [Survey API](/api-reference/management-api->-survey/get-all-surveys) - List, Create, Update, generate multiple suId, and Delete Surveys
+
+- [Webhook API](/api-reference/management-api->-webhook/get-all-webhooks) - List, Create, and Delete Webhooks
+
+## How to Generate an API key
+
+API requests require a personal API key for authorization. This API key gives you the same rights as if you were logged in at Formbricks UI - **keep it private!**
+
+- Go to your settings on [Formbricks UI](https://app.formbricks.com).
+
+- Go to page “API keys”
+
+
+
+- Create a key for the development or production environment.
+
+- Copy the key immediately. You won’t be able to see it again.
+
+
+
+
+ **Store API key safely! Anyone who has your API key has full control over your
+ account. For security reasons, you cannot view the API key again.**
+
+
+## Test your API Key
+
+Hit the below request to verify that you are authenticated with your API Key and the server is responding.
+
+### Get My Profile
+
+Get the project details and environment type of your account.
+
+### Mandatory Headers
+
+| Name | x-Api-Key |
+| --------------- | ------------------------ |
+| **Type** | string |
+| **Description** | Your Formbricks API key. |
+
+### Request
+
+```bash cURL
+GET - /api/v1/me
+
+curl --location \
+'https://app.formbricks.com/api/v1/me' \
+--header \
+'x-api-key: '
+```
+
+### Response
+
+
+
+
+```bash 200 (Success)
+{
+ "id": "cll2m30r70004mx0huqkitgqv",
+ "createdAt": "2023-08-08T18:04:59.922Z",
+ "updatedAt": "2023-08-08T18:04:59.922Z",
+ "type": "production",
+ "project": {
+ "id": "cll2m30r60003mx0hnemjfckr",
+ "name": "My Project"
+ },
+ "appSetupCompleted": false,
+ "websiteSetupCompleted": false,
+}
+```
+
+```bash 401 (Not Authenticated)
+Not authenticated
+```
+
+
+
+### Delete a personal API key
+
+- Go to settings on [app.formbricks.com](https://app.formbricks.com/).
+
+- Go to the page “API keys”.
+
+- Find the key you wish to revoke and select “Delete”.
+
+- Your API key will stop working immediately.
+
+---
+
+**Can’t figure it out?** Get help in [GitHub Discussions](https://github.com/formbricks/formbricks/discussions).
\ No newline at end of file
diff --git a/docs/development/contribution/contribution.mdx b/docs/development/contribution/contribution.mdx
new file mode 100644
index 0000000000..dcac633452
--- /dev/null
+++ b/docs/development/contribution/contribution.mdx
@@ -0,0 +1,43 @@
+---
+title: "Contributing to Formbricks 🤗"
+description: "How to contribute to Formbricks"
+icon: "code"
+---
+
+We’re excited that you want to contribute to Formbricks! There are many ways to help, including reporting issues, fixing bugs, adding new features, or improving documentation.
+
+#### How to Contribute
+
+- **Issues:** Found a bug? Facing deployment problems? Have user feedback? Report an issue for the fastest response.
+
+- **Feature Requests:** Have an idea? Open an issue, tag it as an **Enhancement**, and clearly describe the issue you're solving.
+
+- **Pull Requests (PRs):** Fork the repo, make your changes, and submit a PR.
+
+ - For small fixes, go ahead!
+
+ - For bigger features, please discuss them with us first to ensure they align with our roadmap.
+
+#### Talk to Us First
+
+We highly recommend engaging with us on [**GitHub Discussions**](https://github.com/formbricks/formbricks/discussions) before submitting contributions.
+This helps improve the chances of your PR being accepted while avoiding unnecessary work.
+
+#### Contributor License Agreement (CLA)
+
+To keep Formbricks sustainable, we require a **CLA** from all contributors.
+
+Once you open a PR, our **CLA bot** will prompt you to sign the agreement. We can only merge contributions after the CLA is signed.
+
+#### Setting Up Your Development Environment
+
+You can set up your environment using:
+
+- [**Gitpod**](/development/local-setup/gitpod)
+
+- [**GitHub Codespaces**](/development/local-setup/github-codespaces)
+
+- [**Local Machine Setup**](/development/local-setup)
+
+For junior developers, **Gitpod or GitHub Codespaces** are recommended as they allow you to start coding in minutes.
+
diff --git a/docs/development/local-setup/github-codespaces.mdx b/docs/development/local-setup/github-codespaces.mdx
new file mode 100644
index 0000000000..5a25415bcf
--- /dev/null
+++ b/docs/development/local-setup/github-codespaces.mdx
@@ -0,0 +1,55 @@
+---
+title: GitHub Codespaces
+description: How to set up Formbricks in a GitHub Codespaces environment
+icon: "github"
+---
+
+### GitHub Codespaces Setup
+
+
+ This guide outlines how to set up Formbricks in a **GitHub Codespaces** environment.
+
+
+**Requirements:**
+
+- A GitHub Codespace that has support for Node.JS, pnpm, and Docker.
+
+**Steps:**
+
+1. **Open your repository in GitHub Codespaces. If needed, clone the repository:**
+ ```bash
+ git clone https://github.com/formbricks/formbricks && cd formbricks
+ ```
+
+2. **Setup NodeJS with nvm (if not already configured):**
+ ```bash
+ nvm install && nvm use
+ ```
+
+3. **Install the dependencies:**
+ ```bash
+ pnpm install
+ ```
+
+4. **Create a `.env` file from the template:**
+ ```bash
+ cp .env.example .env
+ ```
+
+5. **Generate & set the required secrets:**
+ ```bash
+ sed -i '/^ENCRYPTION_KEY=/c\ENCRYPTION_KEY='$(openssl rand -hex 32) .env
+ sed -i '/^NEXTAUTH_SECRET=/c\NEXTAUTH_SECRET='$(openssl rand -hex 32) .env
+ sed -i '/^CRON_SECRET=/c\CRON_SECRET='$(openssl rand -hex 32) .env
+ ```
+
+6. **Launch the development setup:**
+ ```bash
+ pnpm go
+ ```
+
+Use the Codespaces port forwarding to access Formbricks at [http://localhost:3000](http://localhost:3000).
+
+
+ Make sure your Codespaces port configuration is set to allow access to the app.
+
\ No newline at end of file
diff --git a/docs/development/local-setup/gitpod.mdx b/docs/development/local-setup/gitpod.mdx
new file mode 100644
index 0000000000..fec0f4fa63
--- /dev/null
+++ b/docs/development/local-setup/gitpod.mdx
@@ -0,0 +1,55 @@
+---
+title: Gitpod
+description: How to set up Formbricks in a Gitpod workspace
+icon: "code"
+---
+
+### Gitpod Setup
+
+
+ This guide explains how to set up Formbricks in a **Gitpod** workspace.
+
+
+**Requirements:**
+
+- A Gitpod workspace with Node.JS, pnpm, and Docker support.
+
+**Steps:**
+
+1. **Open the repository in Gitpod. The workspace typically clones the repo automatically. If not:**
+ ```bash
+ git clone https://github.com/formbricks/formbricks && cd formbricks
+ ```
+
+2. **Setup NodeJS with nvm:**
+ ```bash
+ nvm install && nvm use
+ ```
+
+3. **Install dependencies:**
+ ```bash
+ pnpm install
+ ```
+
+4. **Create a `.env` file:**
+ ```bash
+ cp .env.example .env
+ ```
+
+5. **Generate & set secret values:**
+ ```bash
+ sed -i '/^ENCRYPTION_KEY=/c\ENCRYPTION_KEY='$(openssl rand -hex 32) .env
+ sed -i '/^NEXTAUTH_SECRET=/c\NEXTAUTH_SECRET='$(openssl rand -hex 32) .env
+ sed -i '/^CRON_SECRET=/c\CRON_SECRET='$(openssl rand -hex 32) .env
+ ```
+
+6. **Run the development setup:**
+ ```bash
+ pnpm go
+ ```
+
+Access the running app via the forwarded port (typically [http://localhost:3000](http://localhost:3000) inside Gitpod).
+
+
+ Check your Gitpod settings to ensure Docker is enabled if required.
+
\ No newline at end of file
diff --git a/docs/development/local-setup/linux.mdx b/docs/development/local-setup/linux.mdx
new file mode 100644
index 0000000000..5cf559c8ff
--- /dev/null
+++ b/docs/development/local-setup/linux.mdx
@@ -0,0 +1,57 @@
+---
+title: Linux
+description: How to set up Formbricks on a Linux machine
+icon: "linux"
+---
+
+### Local Machine Setup - Linux
+
+
+ This guide is recommended for advanced users setting up Formbricks on a **Linux** machine.
+
+
+Here are the requirements for setting up Formbricks on Linux:
+
+- Node.JS (v20 recommended)
+- [pnpm](https://pnpm.io/)
+- [Docker](https://www.docker.com/) (to run PostgreSQL/MailHog)
+
+**Steps:**
+
+1. **Clone the project & move into the directory:**
+ ```bash
+ git clone https://github.com/formbricks/formbricks && cd formbricks
+ ```
+
+2. **Setup NodeJS with nvm:**
+ ```bash
+ nvm install && nvm use
+ ```
+
+3. **Install NodeJS packages via pnpm:**
+ ```bash
+ pnpm install
+ ```
+
+4. **Create a `.env` file based on `.env.example`:**
+ ```bash
+ cp .env.example .env
+ ```
+
+5. **Generate & set the secret values:**
+ ```bash
+ sed -i '/^ENCRYPTION_KEY=/c\ENCRYPTION_KEY='$(openssl rand -hex 32) .env
+ sed -i '/^NEXTAUTH_SECRET=/c\NEXTAUTH_SECRET='$(openssl rand -hex 32) .env
+ sed -i '/^CRON_SECRET=/c\CRON_SECRET='$(openssl rand -hex 32) .env
+ ```
+
+6. **Start the development setup:**
+ ```bash
+ pnpm go
+ ```
+
+You can now access Formbricks at [http://localhost:3000](http://localhost:3000).
+
+
+ Create a new account on first login as no default account is available.
+
\ No newline at end of file
diff --git a/docs/development/local-setup/mac.mdx b/docs/development/local-setup/mac.mdx
new file mode 100644
index 0000000000..8c9e33e382
--- /dev/null
+++ b/docs/development/local-setup/mac.mdx
@@ -0,0 +1,57 @@
+---
+title: Mac
+description: How to set up Formbricks on a Mac machine
+icon: "apple"
+---
+
+### Local Machine Setup - Mac
+
+
+ This guide is recommended for advanced users setting up Formbricks on a **Mac** machine.
+
+
+**Requirements:**
+
+- Node.JS (v20 recommended)
+- [pnpm](https://pnpm.io/)
+- [Docker](https://www.docker.com/)
+
+**Steps:**
+
+1. **Clone the project & change directory:**
+ ```bash
+ git clone https://github.com/formbricks/formbricks && cd formbricks
+ ```
+
+2. **Setup NodeJS with nvm:**
+ ```bash
+ nvm install && nvm use
+ ```
+
+3. **Install NodeJS packages with pnpm:**
+ ```bash
+ pnpm install
+ ```
+
+4. **Create a `.env` file from the example:**
+ ```bash
+ cp .env.example .env
+ ```
+
+5. **Generate & set secret values (using BSD sed syntax for macOS):**
+ ```bash
+ sed -i '' '/^ENCRYPTION_KEY=/s|.*|ENCRYPTION_KEY='$(openssl rand -hex 32)'|' .env
+ sed -i '' '/^NEXTAUTH_SECRET=/s|.*|NEXTAUTH_SECRET='$(openssl rand -hex 32)'|' .env
+ sed -i '' '/^CRON_SECRET=/s|.*|CRON_SECRET='$(openssl rand -hex 32)'|' .env
+ ```
+
+6. **Start the development setup:**
+ ```bash
+ pnpm go
+ ```
+
+Visit [http://localhost:3000](http://localhost:3000) to access Formbricks.
+
+
+ Ensure you create a new account at first login.
+
\ No newline at end of file
diff --git a/docs/development/local-setup/windows.mdx b/docs/development/local-setup/windows.mdx
new file mode 100644
index 0000000000..44b085292c
--- /dev/null
+++ b/docs/development/local-setup/windows.mdx
@@ -0,0 +1,57 @@
+---
+title: Windows
+description: How to set up Formbricks on a Windows machine
+icon: "windows"
+---
+
+### Local Machine Setup - Windows
+
+
+ This guide is intended for **Windows** users. For the best experience, use **WSL2** since pure Windows is not fully supported.
+
+
+**Requirements:**
+
+- Node.JS (v20 recommended) via WSL2
+- [pnpm](https://pnpm.io/)
+- [Docker](https://www.docker.com/) (ensure Docker Desktop is installed with WSL2 integration enabled)
+
+**Steps (Using WSL2):**
+
+1. **Open your WSL2 terminal and clone the project:**
+ ```bash
+ git clone https://github.com/formbricks/formbricks && cd formbricks
+ ```
+
+2. **Setup NodeJS with nvm in WSL2:**
+ ```bash
+ nvm install && nvm use
+ ```
+
+3. **Install packages using pnpm:**
+ ```bash
+ pnpm install
+ ```
+
+4. **Create a `.env` file:**
+ ```bash
+ cp .env.example .env
+ ```
+
+5. **Generate & set secret values (Linux commands work in WSL2):**
+ ```bash
+ sed -i '/^ENCRYPTION_KEY=/c\ENCRYPTION_KEY='$(openssl rand -hex 32) .env
+ sed -i '/^NEXTAUTH_SECRET=/c\NEXTAUTH_SECRET='$(openssl rand -hex 32) .env
+ sed -i '/^CRON_SECRET=/c\CRON_SECRET='$(openssl rand -hex 32) .env
+ ```
+
+6. **Start the development setup:**
+ ```bash
+ pnpm go
+ ```
+
+Access Formbricks at [http://localhost:3000](http://localhost:3000).
+
+
+ If you run into conflicts, ensure any local services (like PostgreSQL) are stopped.
+
\ No newline at end of file
diff --git a/docs/development/overview.mdx b/docs/development/overview.mdx
new file mode 100644
index 0000000000..704b99c44f
--- /dev/null
+++ b/docs/development/overview.mdx
@@ -0,0 +1,16 @@
+---
+title: Development
+description: Learn how to setup formbricks locally and develop on it
+icon: "code"
+---
+
+Welcome to the Development section of Formbricks! This guide is designed to help you get started with setting up the project locally, contributing to the Formbricks codebase, and customizing it to suit your needs.
+
+Whether you're a seasoned developer or just getting started, you'll find valuable information on how to:
+
+- **Set Up Locally**: Step-by-step instructions to clone the repository, install dependencies, and run Formbricks on your local machine.
+- **Contribute**: Guidelines on how to contribute to the project, including coding standards, submitting pull requests, and collaborating with other developers.
+- **Customize**: Tips and tricks for customizing Formbricks to better fit your specific use cases, including modifying components and extending functionality.
+
+Dive in and start building with Formbricks today!
+
diff --git a/docs/development/support/troubleshooting.mdx b/docs/development/support/troubleshooting.mdx
new file mode 100644
index 0000000000..09064108c6
--- /dev/null
+++ b/docs/development/support/troubleshooting.mdx
@@ -0,0 +1,38 @@
+---
+title: "Troubleshooting"
+description: "Here, you'll find help with common issues."
+icon: "wrench"
+---
+
+## "The app doesn't work after Prisma migration"
+
+If the app doesn’t work after a Prisma migration, clear your browser’s storage and reload the page. This will force the app to fetch data from the server again. 
+
+## "I ran 'pnpm i' but there seems to be an error with the packages"
+
+If you run `pnpm i` and get an error with the packages, try running `pnpm clean` followed by `pnpm i` again. This often solves the problem.
+
+## "I get a full-screen error with cryptic strings"
+
+This usually happens when the Formbricks Widget isn't correctly or completely built.
+
+```bash
+pnpm build --filter=@formbricks/js
+
+// Run the app again
+pnpm dev
+```
+
+## "My machine struggles with the repository"
+
+Since we're working with a monorepo structure, the repository can get quite big. If you're having trouble working with the repository, try the following:
+
+```bash helloWorld.js
+pnpm dev --filter=@formbricks/web...
+```
+
+It’s better to use a single terminal with `pnpm dev` rather than having multiple open (one with the Formbricks app and one with the demo).
+
+## Error: "Uncaught (in promise) SyntaxError: Unexpected token !DOCTYPE ... is not valid JSON"
+
+If you see this error, it happens when the person connected to the widget is deleted. To fix it, log out of the test person and reload the page.
diff --git a/docs/images/favicon.svg b/docs/images/favicon.svg
new file mode 100644
index 0000000000..84c094c3bc
--- /dev/null
+++ b/docs/images/favicon.svg
@@ -0,0 +1,73 @@
+
diff --git a/docs/images/logo-dark.svg b/docs/images/logo-dark.svg
new file mode 100644
index 0000000000..7f0568ab1a
--- /dev/null
+++ b/docs/images/logo-dark.svg
@@ -0,0 +1,76 @@
+
diff --git a/docs/images/logo-light.svg b/docs/images/logo-light.svg
new file mode 100644
index 0000000000..659385db41
--- /dev/null
+++ b/docs/images/logo-light.svg
@@ -0,0 +1,76 @@
+
diff --git a/docs/images/xm-and-surveys/core-features/access-roles/add-member.webp b/docs/images/xm-and-surveys/core-features/access-roles/add-member.webp
new file mode 100644
index 0000000000..dba6f062f5
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/access-roles/add-member.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/access-roles/bulk-invite.webp b/docs/images/xm-and-surveys/core-features/access-roles/bulk-invite.webp
new file mode 100644
index 0000000000..cdd2189d5d
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/access-roles/bulk-invite.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/access-roles/individual-invite.webp b/docs/images/xm-and-surveys/core-features/access-roles/individual-invite.webp
new file mode 100644
index 0000000000..fd9426ccc3
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/access-roles/individual-invite.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/access-roles/organization-settings-menu.webp b/docs/images/xm-and-surveys/core-features/access-roles/organization-settings-menu.webp
new file mode 100644
index 0000000000..63794142c6
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/access-roles/organization-settings-menu.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/access-roles/team-settings-menu.webp b/docs/images/xm-and-surveys/core-features/access-roles/team-settings-menu.webp
new file mode 100644
index 0000000000..63794142c6
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/access-roles/team-settings-menu.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/email-customization/email-customization-card.webp b/docs/images/xm-and-surveys/core-features/email-customization/email-customization-card.webp
new file mode 100644
index 0000000000..bdc93d051b
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/email-customization/email-customization-card.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/email-customization/email-sample.webp b/docs/images/xm-and-surveys/core-features/email-customization/email-sample.webp
new file mode 100644
index 0000000000..197cb6f20f
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/email-customization/email-sample.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/email-customization/updated-logo.webp b/docs/images/xm-and-surveys/core-features/email-customization/updated-logo.webp
new file mode 100644
index 0000000000..12eedafa51
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/email-customization/updated-logo.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/activepieces/configure-connection.webp b/docs/images/xm-and-surveys/core-features/integrations/activepieces/configure-connection.webp
new file mode 100644
index 0000000000..cd0daa6e95
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/activepieces/configure-connection.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/activepieces/create-connection.webp b/docs/images/xm-and-surveys/core-features/integrations/activepieces/create-connection.webp
new file mode 100644
index 0000000000..eec50e6364
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/activepieces/create-connection.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/activepieces/create-new-flow.webp b/docs/images/xm-and-surveys/core-features/integrations/activepieces/create-new-flow.webp
new file mode 100644
index 0000000000..ec1efff3da
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/activepieces/create-new-flow.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/activepieces/duplicate-survey.webp b/docs/images/xm-and-surveys/core-features/integrations/activepieces/duplicate-survey.webp
new file mode 100644
index 0000000000..842612ca8b
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/activepieces/duplicate-survey.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/activepieces/match-data.webp b/docs/images/xm-and-surveys/core-features/integrations/activepieces/match-data.webp
new file mode 100644
index 0000000000..db12224e5c
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/activepieces/match-data.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/activepieces/result.webp b/docs/images/xm-and-surveys/core-features/integrations/activepieces/result.webp
new file mode 100644
index 0000000000..5fa6cac881
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/activepieces/result.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/activepieces/search-formbricks.webp b/docs/images/xm-and-surveys/core-features/integrations/activepieces/search-formbricks.webp
new file mode 100644
index 0000000000..5a804f56c2
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/activepieces/search-formbricks.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/activepieces/select-google-sheet.webp b/docs/images/xm-and-surveys/core-features/integrations/activepieces/select-google-sheet.webp
new file mode 100644
index 0000000000..824e560839
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/activepieces/select-google-sheet.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/activepieces/select-gs-sheet.webp b/docs/images/xm-and-surveys/core-features/integrations/activepieces/select-gs-sheet.webp
new file mode 100644
index 0000000000..2b34521238
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/activepieces/select-gs-sheet.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/activepieces/select-survey.webp b/docs/images/xm-and-surveys/core-features/integrations/activepieces/select-survey.webp
new file mode 100644
index 0000000000..9547653fdf
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/activepieces/select-survey.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/activepieces/success-response.webp b/docs/images/xm-and-surveys/core-features/integrations/activepieces/success-response.webp
new file mode 100644
index 0000000000..dc790dc4fc
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/activepieces/success-response.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/activepieces/test-trigger.webp b/docs/images/xm-and-surveys/core-features/integrations/activepieces/test-trigger.webp
new file mode 100644
index 0000000000..e6756823da
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/activepieces/test-trigger.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/activepieces/update-question-id.webp b/docs/images/xm-and-surveys/core-features/integrations/activepieces/update-question-id.webp
new file mode 100644
index 0000000000..b1db9d6140
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/activepieces/update-question-id.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/airtable/add-base.webp b/docs/images/xm-and-surveys/core-features/integrations/airtable/add-base.webp
new file mode 100644
index 0000000000..0e3ae3e1ba
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/airtable/add-base.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/airtable/airtable-connected.webp b/docs/images/xm-and-surveys/core-features/integrations/airtable/airtable-connected.webp
new file mode 100644
index 0000000000..143e7d370d
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/airtable/airtable-connected.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/airtable/connect-with-airtable.webp b/docs/images/xm-and-surveys/core-features/integrations/airtable/connect-with-airtable.webp
new file mode 100644
index 0000000000..a9ac572dc7
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/airtable/connect-with-airtable.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/airtable/create-new-integration.webp b/docs/images/xm-and-surveys/core-features/integrations/airtable/create-new-integration.webp
new file mode 100644
index 0000000000..a55bdc618d
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/airtable/create-new-integration.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/airtable/delete-integration.webp b/docs/images/xm-and-surveys/core-features/integrations/airtable/delete-integration.webp
new file mode 100644
index 0000000000..4a80b50a8d
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/airtable/delete-integration.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/airtable/integrations-tab.webp b/docs/images/xm-and-surveys/core-features/integrations/airtable/integrations-tab.webp
new file mode 100644
index 0000000000..f0430ecaa2
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/airtable/integrations-tab.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/airtable/link-survey-with-table.webp b/docs/images/xm-and-surveys/core-features/integrations/airtable/link-survey-with-table.webp
new file mode 100644
index 0000000000..785363dae6
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/airtable/link-survey-with-table.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/airtable/link-with-questions.webp b/docs/images/xm-and-surveys/core-features/integrations/airtable/link-with-questions.webp
new file mode 100644
index 0000000000..57bfba7fb0
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/airtable/link-with-questions.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/airtable/list-linked-surveys.webp b/docs/images/xm-and-surveys/core-features/integrations/airtable/list-linked-surveys.webp
new file mode 100644
index 0000000000..3b50cee9e5
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/airtable/list-linked-surveys.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/airtable/open-developer-hub.webp b/docs/images/xm-and-surveys/core-features/integrations/airtable/open-developer-hub.webp
new file mode 100644
index 0000000000..648aab6598
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/airtable/open-developer-hub.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/airtable/register-new-integration.webp b/docs/images/xm-and-surveys/core-features/integrations/airtable/register-new-integration.webp
new file mode 100644
index 0000000000..331ea78dfd
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/airtable/register-new-integration.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/airtable/select-scopes.webp b/docs/images/xm-and-surveys/core-features/integrations/airtable/select-scopes.webp
new file mode 100644
index 0000000000..f60e8ca7f4
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/airtable/select-scopes.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/google-sheets/connect-with-google.webp b/docs/images/xm-and-surveys/core-features/integrations/google-sheets/connect-with-google.webp
new file mode 100644
index 0000000000..782718a973
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/google-sheets/connect-with-google.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/google-sheets/delete-connection.webp b/docs/images/xm-and-surveys/core-features/integrations/google-sheets/delete-connection.webp
new file mode 100644
index 0000000000..d845f2d0a1
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/google-sheets/delete-connection.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/google-sheets/google-connected.webp b/docs/images/xm-and-surveys/core-features/integrations/google-sheets/google-connected.webp
new file mode 100644
index 0000000000..30abe13403
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/google-sheets/google-connected.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/google-sheets/integrations-tab.webp b/docs/images/xm-and-surveys/core-features/integrations/google-sheets/integrations-tab.webp
new file mode 100644
index 0000000000..79e4cf9b19
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/google-sheets/integrations-tab.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/google-sheets/link-survey-with-sheet.webp b/docs/images/xm-and-surveys/core-features/integrations/google-sheets/link-survey-with-sheet.webp
new file mode 100644
index 0000000000..daa7a1ee90
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/google-sheets/link-survey-with-sheet.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/google-sheets/link-with-questions.webp b/docs/images/xm-and-surveys/core-features/integrations/google-sheets/link-with-questions.webp
new file mode 100644
index 0000000000..c09b0656d0
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/google-sheets/link-with-questions.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/google-sheets/list-linked-surveys.webp b/docs/images/xm-and-surveys/core-features/integrations/google-sheets/list-linked-surveys.webp
new file mode 100644
index 0000000000..cc84c7ca6a
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/google-sheets/list-linked-surveys.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/make/add-module.webp b/docs/images/xm-and-surveys/core-features/integrations/make/add-module.webp
new file mode 100644
index 0000000000..0104803bd4
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/make/add-module.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/make/create-new-scenario.webp b/docs/images/xm-and-surveys/core-features/integrations/make/create-new-scenario.webp
new file mode 100644
index 0000000000..729e3c3586
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/make/create-new-scenario.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/make/create-webhook.webp b/docs/images/xm-and-surveys/core-features/integrations/make/create-webhook.webp
new file mode 100644
index 0000000000..c60864c0d0
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/make/create-webhook.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/make/duplicate-survey.webp b/docs/images/xm-and-surveys/core-features/integrations/make/duplicate-survey.webp
new file mode 100644
index 0000000000..c4c9e4258a
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/make/duplicate-survey.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/make/enter-api-key-and-host.webp b/docs/images/xm-and-surveys/core-features/integrations/make/enter-api-key-and-host.webp
new file mode 100644
index 0000000000..4d0213aa40
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/make/enter-api-key-and-host.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/make/result.webp b/docs/images/xm-and-surveys/core-features/integrations/make/result.webp
new file mode 100644
index 0000000000..f775db5f72
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/make/result.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/make/search-formbricks.webp b/docs/images/xm-and-surveys/core-features/integrations/make/search-formbricks.webp
new file mode 100644
index 0000000000..811bae7839
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/make/search-formbricks.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/make/select-action.webp b/docs/images/xm-and-surveys/core-features/integrations/make/select-action.webp
new file mode 100644
index 0000000000..0af544befc
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/make/select-action.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/make/select-fields.webp b/docs/images/xm-and-surveys/core-features/integrations/make/select-fields.webp
new file mode 100644
index 0000000000..ff02fc6fc7
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/make/select-fields.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/make/select-survey.webp b/docs/images/xm-and-surveys/core-features/integrations/make/select-survey.webp
new file mode 100644
index 0000000000..dd73934522
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/make/select-survey.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/make/select-trigger.webp b/docs/images/xm-and-surveys/core-features/integrations/make/select-trigger.webp
new file mode 100644
index 0000000000..ba19fd4b58
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/make/select-trigger.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/make/submit-test-response.webp b/docs/images/xm-and-surveys/core-features/integrations/make/submit-test-response.webp
new file mode 100644
index 0000000000..ff098a5d19
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/make/submit-test-response.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/make/update-question-id.webp b/docs/images/xm-and-surveys/core-features/integrations/make/update-question-id.webp
new file mode 100644
index 0000000000..7e00ff2dea
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/make/update-question-id.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/n8n/add-api-key.webp b/docs/images/xm-and-surveys/core-features/integrations/n8n/add-api-key.webp
new file mode 100644
index 0000000000..d015ff537d
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/n8n/add-api-key.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/n8n/add-discord.webp b/docs/images/xm-and-surveys/core-features/integrations/n8n/add-discord.webp
new file mode 100644
index 0000000000..e5f7b5c59a
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/n8n/add-discord.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/n8n/add-formbricks-trigger.webp b/docs/images/xm-and-surveys/core-features/integrations/n8n/add-formbricks-trigger.webp
new file mode 100644
index 0000000000..f6219251e3
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/n8n/add-formbricks-trigger.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/n8n/create-new-credential-btn.webp b/docs/images/xm-and-surveys/core-features/integrations/n8n/create-new-credential-btn.webp
new file mode 100644
index 0000000000..bfc1a0c7dc
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/n8n/create-new-credential-btn.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/n8n/discord-response.webp b/docs/images/xm-and-surveys/core-features/integrations/n8n/discord-response.webp
new file mode 100644
index 0000000000..5d39b9cc91
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/n8n/discord-response.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/n8n/duplicate-survey.webp b/docs/images/xm-and-surveys/core-features/integrations/n8n/duplicate-survey.webp
new file mode 100644
index 0000000000..c4c9e4258a
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/n8n/duplicate-survey.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/n8n/fill-discord-details.webp b/docs/images/xm-and-surveys/core-features/integrations/n8n/fill-discord-details.webp
new file mode 100644
index 0000000000..56dc5b6ef3
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/n8n/fill-discord-details.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/n8n/listen-for-event.webp b/docs/images/xm-and-surveys/core-features/integrations/n8n/listen-for-event.webp
new file mode 100644
index 0000000000..a08211e4b9
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/n8n/listen-for-event.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/n8n/select-event.webp b/docs/images/xm-and-surveys/core-features/integrations/n8n/select-event.webp
new file mode 100644
index 0000000000..54c613ed25
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/n8n/select-event.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/n8n/select-survey.webp b/docs/images/xm-and-surveys/core-features/integrations/n8n/select-survey.webp
new file mode 100644
index 0000000000..f10c163bcf
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/n8n/select-survey.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/n8n/selected-surveys.webp b/docs/images/xm-and-surveys/core-features/integrations/n8n/selected-surveys.webp
new file mode 100644
index 0000000000..a1619783e1
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/n8n/selected-surveys.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/n8n/submit-test-response.webp b/docs/images/xm-and-surveys/core-features/integrations/n8n/submit-test-response.webp
new file mode 100644
index 0000000000..735e6eb951
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/n8n/submit-test-response.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/n8n/success-connection.webp b/docs/images/xm-and-surveys/core-features/integrations/n8n/success-connection.webp
new file mode 100644
index 0000000000..888369916a
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/n8n/success-connection.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/n8n/test-response-success.webp b/docs/images/xm-and-surveys/core-features/integrations/n8n/test-response-success.webp
new file mode 100644
index 0000000000..c25cdf6336
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/n8n/test-response-success.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/n8n/update-question-id.webp b/docs/images/xm-and-surveys/core-features/integrations/n8n/update-question-id.webp
new file mode 100644
index 0000000000..7e00ff2dea
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/n8n/update-question-id.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/notion/connect-with-notion.webp b/docs/images/xm-and-surveys/core-features/integrations/notion/connect-with-notion.webp
new file mode 100644
index 0000000000..ec5d4553e0
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/notion/connect-with-notion.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/notion/delete-connection.webp b/docs/images/xm-and-surveys/core-features/integrations/notion/delete-connection.webp
new file mode 100644
index 0000000000..3a857ebe31
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/notion/delete-connection.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/notion/integrations-tab.webp b/docs/images/xm-and-surveys/core-features/integrations/notion/integrations-tab.webp
new file mode 100644
index 0000000000..b408f96d9a
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/notion/integrations-tab.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/notion/link-survey-with-database.webp b/docs/images/xm-and-surveys/core-features/integrations/notion/link-survey-with-database.webp
new file mode 100644
index 0000000000..8a54a70676
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/notion/link-survey-with-database.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/notion/link-with-databases.webp b/docs/images/xm-and-surveys/core-features/integrations/notion/link-with-databases.webp
new file mode 100644
index 0000000000..ca41fb0bf5
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/notion/link-with-databases.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/notion/list-linked-databases.webp b/docs/images/xm-and-surveys/core-features/integrations/notion/list-linked-databases.webp
new file mode 100644
index 0000000000..3e5fb7b4ec
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/notion/list-linked-databases.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/notion/notion-connected.webp b/docs/images/xm-and-surveys/core-features/integrations/notion/notion-connected.webp
new file mode 100644
index 0000000000..405277e807
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/notion/notion-connected.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/slack/add-slack-bot-1.webp b/docs/images/xm-and-surveys/core-features/integrations/slack/add-slack-bot-1.webp
new file mode 100644
index 0000000000..6169f86383
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/slack/add-slack-bot-1.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/slack/add-slack-bot-2.webp b/docs/images/xm-and-surveys/core-features/integrations/slack/add-slack-bot-2.webp
new file mode 100644
index 0000000000..f17d540c93
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/slack/add-slack-bot-2.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/slack/add-slack-bot-3.webp b/docs/images/xm-and-surveys/core-features/integrations/slack/add-slack-bot-3.webp
new file mode 100644
index 0000000000..ea4e6217e4
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/slack/add-slack-bot-3.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/slack/add-slack-bot-4.webp b/docs/images/xm-and-surveys/core-features/integrations/slack/add-slack-bot-4.webp
new file mode 100644
index 0000000000..f070e360ac
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/slack/add-slack-bot-4.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/slack/connect-with-slack.webp b/docs/images/xm-and-surveys/core-features/integrations/slack/connect-with-slack.webp
new file mode 100644
index 0000000000..6927d8d236
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/slack/connect-with-slack.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/slack/delete-connection.webp b/docs/images/xm-and-surveys/core-features/integrations/slack/delete-connection.webp
new file mode 100644
index 0000000000..2f1cbc5122
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/slack/delete-connection.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/slack/integrations-tab.webp b/docs/images/xm-and-surveys/core-features/integrations/slack/integrations-tab.webp
new file mode 100644
index 0000000000..c4dc113fcb
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/slack/integrations-tab.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/slack/link-survey-with-channel.webp b/docs/images/xm-and-surveys/core-features/integrations/slack/link-survey-with-channel.webp
new file mode 100644
index 0000000000..a12656ecb0
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/slack/link-survey-with-channel.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/slack/link-with-questions.webp b/docs/images/xm-and-surveys/core-features/integrations/slack/link-with-questions.webp
new file mode 100644
index 0000000000..caaca0088b
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/slack/link-with-questions.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/slack/list-linked-surveys.webp b/docs/images/xm-and-surveys/core-features/integrations/slack/list-linked-surveys.webp
new file mode 100644
index 0000000000..7709179e9f
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/slack/list-linked-surveys.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/slack/slack-auth.webp b/docs/images/xm-and-surveys/core-features/integrations/slack/slack-auth.webp
new file mode 100644
index 0000000000..1a7b96fc52
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/slack/slack-auth.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/slack/slack-connected.webp b/docs/images/xm-and-surveys/core-features/integrations/slack/slack-connected.webp
new file mode 100644
index 0000000000..5a169935e7
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/slack/slack-connected.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/wordpress/1-wordpress-targeted-survey-on-website-free.webp b/docs/images/xm-and-surveys/core-features/integrations/wordpress/1-wordpress-targeted-survey-on-website-free.webp
new file mode 100644
index 0000000000..625fdb825d
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/wordpress/1-wordpress-targeted-survey-on-website-free.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/wordpress/2-run-website-survey-wordpress-targeted-for-free.webp b/docs/images/xm-and-surveys/core-features/integrations/wordpress/2-run-website-survey-wordpress-targeted-for-free.webp
new file mode 100644
index 0000000000..fc08053b83
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/wordpress/2-run-website-survey-wordpress-targeted-for-free.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/wordpress/3-wordpress-setup-survey-on-website-targeted-free-open-source.webp b/docs/images/xm-and-surveys/core-features/integrations/wordpress/3-wordpress-setup-survey-on-website-targeted-free-open-source.webp
new file mode 100644
index 0000000000..65f850b5df
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/wordpress/3-wordpress-setup-survey-on-website-targeted-free-open-source.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/wordpress/4-wordpress-website-survey-target-visitor-free.webp b/docs/images/xm-and-surveys/core-features/integrations/wordpress/4-wordpress-website-survey-target-visitor-free.webp
new file mode 100644
index 0000000000..154b458282
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/wordpress/4-wordpress-website-survey-target-visitor-free.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/wordpress/6-targeted-survey-on-wordpress-website-for-free.webp b/docs/images/xm-and-surveys/core-features/integrations/wordpress/6-targeted-survey-on-wordpress-website-for-free.webp
new file mode 100644
index 0000000000..88b965c387
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/wordpress/6-targeted-survey-on-wordpress-website-for-free.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/wordpress/7-wordpress-free-hotjar-survey-open-source-website-survey-hotjar.webp b/docs/images/xm-and-surveys/core-features/integrations/wordpress/7-wordpress-free-hotjar-survey-open-source-website-survey-hotjar.webp
new file mode 100644
index 0000000000..bbf59a73b3
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/wordpress/7-wordpress-free-hotjar-survey-open-source-website-survey-hotjar.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/wordpress/step-4-copy-to-wordpress-for-free-targeted-survey.webp b/docs/images/xm-and-surveys/core-features/integrations/wordpress/step-4-copy-to-wordpress-for-free-targeted-survey.webp
new file mode 100644
index 0000000000..150bd89743
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/wordpress/step-4-copy-to-wordpress-for-free-targeted-survey.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/zapier/add-new-zap.webp b/docs/images/xm-and-surveys/core-features/integrations/zapier/add-new-zap.webp
new file mode 100644
index 0000000000..4f4ff0cec2
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/zapier/add-new-zap.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/zapier/choose-event.webp b/docs/images/xm-and-surveys/core-features/integrations/zapier/choose-event.webp
new file mode 100644
index 0000000000..9eacab449f
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/zapier/choose-event.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/zapier/connect-with-formbricks-1.webp b/docs/images/xm-and-surveys/core-features/integrations/zapier/connect-with-formbricks-1.webp
new file mode 100644
index 0000000000..d7b6b8ccde
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/zapier/connect-with-formbricks-1.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/zapier/connect-with-formbricks-2.webp b/docs/images/xm-and-surveys/core-features/integrations/zapier/connect-with-formbricks-2.webp
new file mode 100644
index 0000000000..c5b7fa12c1
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/zapier/connect-with-formbricks-2.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/zapier/duplicate-survey.webp b/docs/images/xm-and-surveys/core-features/integrations/zapier/duplicate-survey.webp
new file mode 100644
index 0000000000..88ad485c7a
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/zapier/duplicate-survey.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/zapier/select-survey.webp b/docs/images/xm-and-surveys/core-features/integrations/zapier/select-survey.webp
new file mode 100644
index 0000000000..880aab8b15
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/zapier/select-survey.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/zapier/slack-channel-msg.webp b/docs/images/xm-and-surveys/core-features/integrations/zapier/slack-channel-msg.webp
new file mode 100644
index 0000000000..d06fa628c4
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/zapier/slack-channel-msg.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/zapier/slack-message.webp b/docs/images/xm-and-surveys/core-features/integrations/zapier/slack-message.webp
new file mode 100644
index 0000000000..f0cf71b1f1
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/zapier/slack-message.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/zapier/submit-test-response.webp b/docs/images/xm-and-surveys/core-features/integrations/zapier/submit-test-response.webp
new file mode 100644
index 0000000000..d294882d09
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/zapier/submit-test-response.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/zapier/success-connected.webp b/docs/images/xm-and-surveys/core-features/integrations/zapier/success-connected.webp
new file mode 100644
index 0000000000..987cfaa9d2
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/zapier/success-connected.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/zapier/test-submission.webp b/docs/images/xm-and-surveys/core-features/integrations/zapier/test-submission.webp
new file mode 100644
index 0000000000..6a28586b47
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/zapier/test-submission.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/zapier/update-question-id.webp b/docs/images/xm-and-surveys/core-features/integrations/zapier/update-question-id.webp
new file mode 100644
index 0000000000..834eb086ea
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/zapier/update-question-id.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/integrations/zapier/zapier-message.webp b/docs/images/xm-and-surveys/core-features/integrations/zapier/zapier-message.webp
new file mode 100644
index 0000000000..425b109860
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/integrations/zapier/zapier-message.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/question-type/address.webp b/docs/images/xm-and-surveys/core-features/question-type/address.webp
new file mode 100644
index 0000000000..7f9279616f
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/question-type/address.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/question-type/consent.webp b/docs/images/xm-and-surveys/core-features/question-type/consent.webp
new file mode 100644
index 0000000000..60291a402c
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/question-type/consent.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/question-type/contact-info.webp b/docs/images/xm-and-surveys/core-features/question-type/contact-info.webp
new file mode 100644
index 0000000000..ac2ade0722
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/question-type/contact-info.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/question-type/date.webp b/docs/images/xm-and-surveys/core-features/question-type/date.webp
new file mode 100644
index 0000000000..6fa0c564a4
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/question-type/date.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/question-type/file-upload.webp b/docs/images/xm-and-surveys/core-features/question-type/file-upload.webp
new file mode 100644
index 0000000000..dd85a6d161
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/question-type/file-upload.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/question-type/free-text.webp b/docs/images/xm-and-surveys/core-features/question-type/free-text.webp
new file mode 100644
index 0000000000..960d9b4cc1
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/question-type/free-text.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/question-type/matrix.webp b/docs/images/xm-and-surveys/core-features/question-type/matrix.webp
new file mode 100644
index 0000000000..8c3d1c436f
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/question-type/matrix.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/question-type/multi-select.webp b/docs/images/xm-and-surveys/core-features/question-type/multi-select.webp
new file mode 100644
index 0000000000..8c169b6f2e
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/question-type/multi-select.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/question-type/net-promoter-score.webp b/docs/images/xm-and-surveys/core-features/question-type/net-promoter-score.webp
new file mode 100644
index 0000000000..1b30bcc4d4
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/question-type/net-promoter-score.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/question-type/ranking.webp b/docs/images/xm-and-surveys/core-features/question-type/ranking.webp
new file mode 100644
index 0000000000..b057d34f34
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/question-type/ranking.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/question-type/rating.webp b/docs/images/xm-and-surveys/core-features/question-type/rating.webp
new file mode 100644
index 0000000000..9b1000ba1e
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/question-type/rating.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/question-type/schedule-a-meeting.webp b/docs/images/xm-and-surveys/core-features/question-type/schedule-a-meeting.webp
new file mode 100644
index 0000000000..55b291282c
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/question-type/schedule-a-meeting.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/question-type/select-picture.webp b/docs/images/xm-and-surveys/core-features/question-type/select-picture.webp
new file mode 100644
index 0000000000..5c780e5530
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/question-type/select-picture.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/question-type/select-single.webp b/docs/images/xm-and-surveys/core-features/question-type/select-single.webp
new file mode 100644
index 0000000000..8949f4ab5a
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/question-type/select-single.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/question-type/statement-cta.webp b/docs/images/xm-and-surveys/core-features/question-type/statement-cta.webp
new file mode 100644
index 0000000000..c0762f3198
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/question-type/statement-cta.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/styling-theme/allow-overwrite.webp b/docs/images/xm-and-surveys/core-features/styling-theme/allow-overwrite.webp
new file mode 100644
index 0000000000..fcadbc68e0
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/styling-theme/allow-overwrite.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/styling-theme/background-settings.webp b/docs/images/xm-and-surveys/core-features/styling-theme/background-settings.webp
new file mode 100644
index 0000000000..01fff26e7e
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/styling-theme/background-settings.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/styling-theme/card-settings.webp b/docs/images/xm-and-surveys/core-features/styling-theme/card-settings.webp
new file mode 100644
index 0000000000..9ad553b4cc
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/styling-theme/card-settings.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/styling-theme/doggo.webp b/docs/images/xm-and-surveys/core-features/styling-theme/doggo.webp
new file mode 100644
index 0000000000..65096ccd59
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/styling-theme/doggo.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/styling-theme/form-settings.webp b/docs/images/xm-and-surveys/core-features/styling-theme/form-settings.webp
new file mode 100644
index 0000000000..643cf950ac
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/styling-theme/form-settings.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/styling-theme/hipster-living.webp b/docs/images/xm-and-surveys/core-features/styling-theme/hipster-living.webp
new file mode 100644
index 0000000000..c83c00ed3e
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/styling-theme/hipster-living.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/styling-theme/look-and-feel.webp b/docs/images/xm-and-surveys/core-features/styling-theme/look-and-feel.webp
new file mode 100644
index 0000000000..b7c8dcfff9
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/styling-theme/look-and-feel.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/styling-theme/mario.webp b/docs/images/xm-and-surveys/core-features/styling-theme/mario.webp
new file mode 100644
index 0000000000..62470994b7
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/styling-theme/mario.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/styling-theme/pre-requisite.webp b/docs/images/xm-and-surveys/core-features/styling-theme/pre-requisite.webp
new file mode 100644
index 0000000000..1b296658df
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/styling-theme/pre-requisite.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/styling-theme/step-eight.webp b/docs/images/xm-and-surveys/core-features/styling-theme/step-eight.webp
new file mode 100644
index 0000000000..5c35789d03
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/styling-theme/step-eight.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/styling-theme/step-eleven.webp b/docs/images/xm-and-surveys/core-features/styling-theme/step-eleven.webp
new file mode 100644
index 0000000000..0cb0b13445
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/styling-theme/step-eleven.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/styling-theme/step-five.webp b/docs/images/xm-and-surveys/core-features/styling-theme/step-five.webp
new file mode 100644
index 0000000000..71daa7e751
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/styling-theme/step-five.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/styling-theme/step-four.webp b/docs/images/xm-and-surveys/core-features/styling-theme/step-four.webp
new file mode 100644
index 0000000000..3ca7dc38d9
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/styling-theme/step-four.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/styling-theme/step-nine.webp b/docs/images/xm-and-surveys/core-features/styling-theme/step-nine.webp
new file mode 100644
index 0000000000..bd8c73fe7e
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/styling-theme/step-nine.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/styling-theme/step-one.webp b/docs/images/xm-and-surveys/core-features/styling-theme/step-one.webp
new file mode 100644
index 0000000000..d8908f7cd7
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/styling-theme/step-one.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/styling-theme/step-seven.webp b/docs/images/xm-and-surveys/core-features/styling-theme/step-seven.webp
new file mode 100644
index 0000000000..bcbabf8315
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/styling-theme/step-seven.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/styling-theme/step-six.webp b/docs/images/xm-and-surveys/core-features/styling-theme/step-six.webp
new file mode 100644
index 0000000000..3ac271b6c8
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/styling-theme/step-six.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/styling-theme/step-ten.webp b/docs/images/xm-and-surveys/core-features/styling-theme/step-ten.webp
new file mode 100644
index 0000000000..092b337eb7
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/styling-theme/step-ten.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/styling-theme/step-three.webp b/docs/images/xm-and-surveys/core-features/styling-theme/step-three.webp
new file mode 100644
index 0000000000..cedee026fe
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/styling-theme/step-three.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/styling-theme/step-two.webp b/docs/images/xm-and-surveys/core-features/styling-theme/step-two.webp
new file mode 100644
index 0000000000..54f3d0e907
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/styling-theme/step-two.webp differ
diff --git a/docs/images/xm-and-surveys/core-features/styling-theme/windows-xp.webp b/docs/images/xm-and-surveys/core-features/styling-theme/windows-xp.webp
new file mode 100644
index 0000000000..45f588a285
Binary files /dev/null and b/docs/images/xm-and-surveys/core-features/styling-theme/windows-xp.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/add-image-or-video-question/add-image-or-video-to-question-image.webp b/docs/images/xm-and-surveys/surveys/general-features/add-image-or-video-question/add-image-or-video-to-question-image.webp
new file mode 100644
index 0000000000..838117dc32
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/add-image-or-video-question/add-image-or-video-to-question-image.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/add-image-or-video-question/add-image-or-video-to-question-video.webp b/docs/images/xm-and-surveys/surveys/general-features/add-image-or-video-question/add-image-or-video-to-question-video.webp
new file mode 100644
index 0000000000..cb4b0536bc
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/add-image-or-video-question/add-image-or-video-to-question-video.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/add-image-or-video-question/add-image-or-video-to-question.webp b/docs/images/xm-and-surveys/surveys/general-features/add-image-or-video-question/add-image-or-video-to-question.webp
new file mode 100644
index 0000000000..54ea67f3ff
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/add-image-or-video-question/add-image-or-video-to-question.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/conditional-logic/action-calculate-operators.webp b/docs/images/xm-and-surveys/surveys/general-features/conditional-logic/action-calculate-operators.webp
new file mode 100644
index 0000000000..c0928693b3
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/conditional-logic/action-calculate-operators.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/conditional-logic/action-calculate-value.webp b/docs/images/xm-and-surveys/surveys/general-features/conditional-logic/action-calculate-value.webp
new file mode 100644
index 0000000000..678a56d404
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/conditional-logic/action-calculate-value.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/conditional-logic/action-calculate-variables.webp b/docs/images/xm-and-surveys/surveys/general-features/conditional-logic/action-calculate-variables.webp
new file mode 100644
index 0000000000..b33a360a2c
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/conditional-logic/action-calculate-variables.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/conditional-logic/action-calculate.webp b/docs/images/xm-and-surveys/surveys/general-features/conditional-logic/action-calculate.webp
new file mode 100644
index 0000000000..fad23ba416
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/conditional-logic/action-calculate.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/conditional-logic/action-jump.webp b/docs/images/xm-and-surveys/surveys/general-features/conditional-logic/action-jump.webp
new file mode 100644
index 0000000000..acae8eea84
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/conditional-logic/action-jump.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/conditional-logic/action-options.webp b/docs/images/xm-and-surveys/surveys/general-features/conditional-logic/action-options.webp
new file mode 100644
index 0000000000..4635196200
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/conditional-logic/action-options.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/conditional-logic/action-require.webp b/docs/images/xm-and-surveys/surveys/general-features/conditional-logic/action-require.webp
new file mode 100644
index 0000000000..652dcbd7dd
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/conditional-logic/action-require.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/conditional-logic/add-logic.webp b/docs/images/xm-and-surveys/surveys/general-features/conditional-logic/add-logic.webp
new file mode 100644
index 0000000000..03504d21ca
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/conditional-logic/add-logic.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/conditional-logic/condition-chaining.webp b/docs/images/xm-and-surveys/surveys/general-features/conditional-logic/condition-chaining.webp
new file mode 100644
index 0000000000..a5560aced8
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/conditional-logic/condition-chaining.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/conditional-logic/condition-operators.webp b/docs/images/xm-and-surveys/surveys/general-features/conditional-logic/condition-operators.webp
new file mode 100644
index 0000000000..8d99b4d44e
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/conditional-logic/condition-operators.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/conditional-logic/condition-options.webp b/docs/images/xm-and-surveys/surveys/general-features/conditional-logic/condition-options.webp
new file mode 100644
index 0000000000..c08fbfa2b4
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/conditional-logic/condition-options.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/conditional-logic/condition-value.webp b/docs/images/xm-and-surveys/surveys/general-features/conditional-logic/condition-value.webp
new file mode 100644
index 0000000000..4bc2d51218
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/conditional-logic/condition-value.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/conditional-logic/conditions.webp b/docs/images/xm-and-surveys/surveys/general-features/conditional-logic/conditions.webp
new file mode 100644
index 0000000000..85bb78d596
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/conditional-logic/conditions.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/conditional-logic/editor.webp b/docs/images/xm-and-surveys/surveys/general-features/conditional-logic/editor.webp
new file mode 100644
index 0000000000..bb7dab326c
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/conditional-logic/editor.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/conditional-logic/question-logic.webp b/docs/images/xm-and-surveys/surveys/general-features/conditional-logic/question-logic.webp
new file mode 100644
index 0000000000..9d1d48845f
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/conditional-logic/question-logic.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/hidden-fields/filled-hidden-fields.webp b/docs/images/xm-and-surveys/surveys/general-features/hidden-fields/filled-hidden-fields.webp
new file mode 100644
index 0000000000..1881351586
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/hidden-fields/filled-hidden-fields.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/hidden-fields/hidden-field-responses.webp b/docs/images/xm-and-surveys/surveys/general-features/hidden-fields/hidden-field-responses.webp
new file mode 100644
index 0000000000..0d01d48e74
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/hidden-fields/hidden-field-responses.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/hidden-fields/hidden-fields.webp b/docs/images/xm-and-surveys/surveys/general-features/hidden-fields/hidden-fields.webp
new file mode 100644
index 0000000000..6c4dc4ab8d
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/hidden-fields/hidden-fields.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/hidden-fields/input-hidden-fields.webp b/docs/images/xm-and-surveys/surveys/general-features/hidden-fields/input-hidden-fields.webp
new file mode 100644
index 0000000000..8f3d4e45a9
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/hidden-fields/input-hidden-fields.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/limit-submissions/limit-submissions.webp b/docs/images/xm-and-surveys/surveys/general-features/limit-submissions/limit-submissions.webp
new file mode 100644
index 0000000000..4dcbe47395
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/limit-submissions/limit-submissions.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/metadata/filters.webp b/docs/images/xm-and-surveys/surveys/general-features/metadata/filters.webp
new file mode 100644
index 0000000000..8c9d2b6f6b
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/metadata/filters.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/metadata/metadata-card.webp b/docs/images/xm-and-surveys/surveys/general-features/metadata/metadata-card.webp
new file mode 100644
index 0000000000..16c802f7b2
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/metadata/metadata-card.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/multi-language-surveys/add-language-in-survey.webp b/docs/images/xm-and-surveys/surveys/general-features/multi-language-surveys/add-language-in-survey.webp
new file mode 100644
index 0000000000..7e493802ef
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/multi-language-surveys/add-language-in-survey.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/multi-language-surveys/add-languages.webp b/docs/images/xm-and-surveys/surveys/general-features/multi-language-surveys/add-languages.webp
new file mode 100644
index 0000000000..081f81d46c
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/multi-language-surveys/add-languages.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/multi-language-surveys/edit-multi-lang.webp b/docs/images/xm-and-surveys/surveys/general-features/multi-language-surveys/edit-multi-lang.webp
new file mode 100644
index 0000000000..ef987c81a5
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/multi-language-surveys/edit-multi-lang.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/multi-language-surveys/enable-multi-lang.webp b/docs/images/xm-and-surveys/surveys/general-features/multi-language-surveys/enable-multi-lang.webp
new file mode 100644
index 0000000000..ff26f0a190
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/multi-language-surveys/enable-multi-lang.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/multi-language-surveys/home-page.webp b/docs/images/xm-and-surveys/surveys/general-features/multi-language-surveys/home-page.webp
new file mode 100644
index 0000000000..9f7392cd52
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/multi-language-surveys/home-page.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/multi-language-surveys/see-survey-in-language.webp b/docs/images/xm-and-surveys/surveys/general-features/multi-language-surveys/see-survey-in-language.webp
new file mode 100644
index 0000000000..d117b3cc51
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/multi-language-surveys/see-survey-in-language.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/multi-language-surveys/survey-languages-from-home.webp b/docs/images/xm-and-surveys/surveys/general-features/multi-language-surveys/survey-languages-from-home.webp
new file mode 100644
index 0000000000..c280254ad7
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/multi-language-surveys/survey-languages-from-home.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/multi-language-surveys/survey-languague-settings.webp b/docs/images/xm-and-surveys/surveys/general-features/multi-language-surveys/survey-languague-settings.webp
new file mode 100644
index 0000000000..c043011028
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/multi-language-surveys/survey-languague-settings.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/multi-language-surveys/survey-sharing.webp b/docs/images/xm-and-surveys/surveys/general-features/multi-language-surveys/survey-sharing.webp
new file mode 100644
index 0000000000..da69235865
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/multi-language-surveys/survey-sharing.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/multi-language-surveys/surveys-home.webp b/docs/images/xm-and-surveys/surveys/general-features/multi-language-surveys/surveys-home.webp
new file mode 100644
index 0000000000..d3f408e0bd
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/multi-language-surveys/surveys-home.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/multi-language-surveys/translate-as-per-language.webp b/docs/images/xm-and-surveys/surveys/general-features/multi-language-surveys/translate-as-per-language.webp
new file mode 100644
index 0000000000..dc6b9b20c6
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/multi-language-surveys/translate-as-per-language.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/overwrite-styling/doggo.webp b/docs/images/xm-and-surveys/surveys/general-features/overwrite-styling/doggo.webp
new file mode 100644
index 0000000000..65096ccd59
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/overwrite-styling/doggo.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/overwrite-styling/hipster-living.webp b/docs/images/xm-and-surveys/surveys/general-features/overwrite-styling/hipster-living.webp
new file mode 100644
index 0000000000..c83c00ed3e
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/overwrite-styling/hipster-living.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/overwrite-styling/mario.webp b/docs/images/xm-and-surveys/surveys/general-features/overwrite-styling/mario.webp
new file mode 100644
index 0000000000..62470994b7
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/overwrite-styling/mario.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/overwrite-styling/pre-requisite.webp b/docs/images/xm-and-surveys/surveys/general-features/overwrite-styling/pre-requisite.webp
new file mode 100644
index 0000000000..1b296658df
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/overwrite-styling/pre-requisite.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/overwrite-styling/step-eight.webp b/docs/images/xm-and-surveys/surveys/general-features/overwrite-styling/step-eight.webp
new file mode 100644
index 0000000000..5c35789d03
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/overwrite-styling/step-eight.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/overwrite-styling/step-eleven.webp b/docs/images/xm-and-surveys/surveys/general-features/overwrite-styling/step-eleven.webp
new file mode 100644
index 0000000000..0cb0b13445
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/overwrite-styling/step-eleven.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/overwrite-styling/step-five.webp b/docs/images/xm-and-surveys/surveys/general-features/overwrite-styling/step-five.webp
new file mode 100644
index 0000000000..71daa7e751
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/overwrite-styling/step-five.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/overwrite-styling/step-four.webp b/docs/images/xm-and-surveys/surveys/general-features/overwrite-styling/step-four.webp
new file mode 100644
index 0000000000..3ca7dc38d9
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/overwrite-styling/step-four.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/overwrite-styling/step-nine.webp b/docs/images/xm-and-surveys/surveys/general-features/overwrite-styling/step-nine.webp
new file mode 100644
index 0000000000..bd8c73fe7e
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/overwrite-styling/step-nine.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/overwrite-styling/step-one.webp b/docs/images/xm-and-surveys/surveys/general-features/overwrite-styling/step-one.webp
new file mode 100644
index 0000000000..d8908f7cd7
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/overwrite-styling/step-one.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/overwrite-styling/step-seven.webp b/docs/images/xm-and-surveys/surveys/general-features/overwrite-styling/step-seven.webp
new file mode 100644
index 0000000000..bcbabf8315
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/overwrite-styling/step-seven.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/overwrite-styling/step-six.webp b/docs/images/xm-and-surveys/surveys/general-features/overwrite-styling/step-six.webp
new file mode 100644
index 0000000000..3ac271b6c8
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/overwrite-styling/step-six.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/overwrite-styling/step-ten.webp b/docs/images/xm-and-surveys/surveys/general-features/overwrite-styling/step-ten.webp
new file mode 100644
index 0000000000..092b337eb7
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/overwrite-styling/step-ten.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/overwrite-styling/step-three.webp b/docs/images/xm-and-surveys/surveys/general-features/overwrite-styling/step-three.webp
new file mode 100644
index 0000000000..cedee026fe
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/overwrite-styling/step-three.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/overwrite-styling/step-two.webp b/docs/images/xm-and-surveys/surveys/general-features/overwrite-styling/step-two.webp
new file mode 100644
index 0000000000..54f3d0e907
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/overwrite-styling/step-two.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/overwrite-styling/windows-xp.webp b/docs/images/xm-and-surveys/surveys/general-features/overwrite-styling/windows-xp.webp
new file mode 100644
index 0000000000..45f588a285
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/overwrite-styling/windows-xp.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/partial-submissions/step-one.webp b/docs/images/xm-and-surveys/surveys/general-features/partial-submissions/step-one.webp
new file mode 100644
index 0000000000..89494819fe
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/partial-submissions/step-one.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/recall/step-one.webp b/docs/images/xm-and-surveys/surveys/general-features/recall/step-one.webp
new file mode 100644
index 0000000000..42ebcd0fa5
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/recall/step-one.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/recall/step-three.webp b/docs/images/xm-and-surveys/surveys/general-features/recall/step-three.webp
new file mode 100644
index 0000000000..dd630ba876
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/recall/step-three.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/recall/step-two.webp b/docs/images/xm-and-surveys/surveys/general-features/recall/step-two.webp
new file mode 100644
index 0000000000..98761acc8c
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/recall/step-two.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/schedule-start-end-dates/step-one.webp b/docs/images/xm-and-surveys/surveys/general-features/schedule-start-end-dates/step-one.webp
new file mode 100644
index 0000000000..1ceaa74231
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/schedule-start-end-dates/step-one.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/schedule-start-end-dates/step-three.webp b/docs/images/xm-and-surveys/surveys/general-features/schedule-start-end-dates/step-three.webp
new file mode 100644
index 0000000000..33f01ed624
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/schedule-start-end-dates/step-three.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/schedule-start-end-dates/step-two.webp b/docs/images/xm-and-surveys/surveys/general-features/schedule-start-end-dates/step-two.webp
new file mode 100644
index 0000000000..4dcbe47395
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/schedule-start-end-dates/step-two.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/shareable-dashboards/1-publish-to-web.webp b/docs/images/xm-and-surveys/surveys/general-features/shareable-dashboards/1-publish-to-web.webp
new file mode 100644
index 0000000000..3d8996b622
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/shareable-dashboards/1-publish-to-web.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/shareable-dashboards/2-warning-publish.webp b/docs/images/xm-and-surveys/surveys/general-features/shareable-dashboards/2-warning-publish.webp
new file mode 100644
index 0000000000..0d8ac85853
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/shareable-dashboards/2-warning-publish.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/shareable-dashboards/3-share-link.webp b/docs/images/xm-and-surveys/surveys/general-features/shareable-dashboards/3-share-link.webp
new file mode 100644
index 0000000000..3ae5696f88
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/shareable-dashboards/3-share-link.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/show-survey-to-percent-of-users/step-one.webp b/docs/images/xm-and-surveys/surveys/general-features/show-survey-to-percent-of-users/step-one.webp
new file mode 100644
index 0000000000..1a8587a024
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/show-survey-to-percent-of-users/step-one.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/show-survey-to-percent-of-users/step-two.webp b/docs/images/xm-and-surveys/surveys/general-features/show-survey-to-percent-of-users/step-two.webp
new file mode 100644
index 0000000000..b37dda4e3f
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/show-survey-to-percent-of-users/step-two.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/variables/created-variables.webp b/docs/images/xm-and-surveys/surveys/general-features/variables/created-variables.webp
new file mode 100644
index 0000000000..4567d91598
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/variables/created-variables.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/variables/input-variables.webp b/docs/images/xm-and-surveys/surveys/general-features/variables/input-variables.webp
new file mode 100644
index 0000000000..6273bfe5fc
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/variables/input-variables.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/variables/logic-with-variables.webp b/docs/images/xm-and-surveys/surveys/general-features/variables/logic-with-variables.webp
new file mode 100644
index 0000000000..24db41a7e3
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/variables/logic-with-variables.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/variables/variables-card.webp b/docs/images/xm-and-surveys/surveys/general-features/variables/variables-card.webp
new file mode 100644
index 0000000000..c9f6c781d6
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/variables/variables-card.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/general-features/variables/variables-usage.webp b/docs/images/xm-and-surveys/surveys/general-features/variables/variables-usage.webp
new file mode 100644
index 0000000000..2ff22da6ad
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/general-features/variables/variables-usage.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/link-surveys/data-prefilling/question-id.webp b/docs/images/xm-and-surveys/surveys/link-surveys/data-prefilling/question-id.webp
new file mode 100644
index 0000000000..8dfcb219c5
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/link-surveys/data-prefilling/question-id.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/link-surveys/embed-surveys/email-content-with-survey.webp b/docs/images/xm-and-surveys/surveys/link-surveys/embed-surveys/email-content-with-survey.webp
new file mode 100644
index 0000000000..6782b534ee
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/link-surveys/embed-surveys/email-content-with-survey.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/link-surveys/embed-surveys/email-content-without-survey.webp b/docs/images/xm-and-surveys/surveys/link-surveys/embed-surveys/email-content-without-survey.webp
new file mode 100644
index 0000000000..d35f1683dd
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/link-surveys/embed-surveys/email-content-without-survey.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/link-surveys/embed-surveys/embed-mode-disabled.webp b/docs/images/xm-and-surveys/surveys/link-surveys/embed-surveys/embed-mode-disabled.webp
new file mode 100644
index 0000000000..5a0532b30a
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/link-surveys/embed-surveys/embed-mode-disabled.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/link-surveys/embed-surveys/embed-mode-enabled.webp b/docs/images/xm-and-surveys/surveys/link-surveys/embed-surveys/embed-mode-enabled.webp
new file mode 100644
index 0000000000..187535b462
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/link-surveys/embed-surveys/embed-mode-enabled.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/link-surveys/embed-surveys/embed-mode-toggle.webp b/docs/images/xm-and-surveys/surveys/link-surveys/embed-surveys/embed-mode-toggle.webp
new file mode 100644
index 0000000000..661e76177b
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/link-surveys/embed-surveys/embed-mode-toggle.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/link-surveys/embed-surveys/jo-signature.webp b/docs/images/xm-and-surveys/surveys/link-surveys/embed-surveys/jo-signature.webp
new file mode 100644
index 0000000000..859260e6d1
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/link-surveys/embed-surveys/jo-signature.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/link-surveys/embed-surveys/plugin-add-survey.webp b/docs/images/xm-and-surveys/surveys/link-surveys/embed-surveys/plugin-add-survey.webp
new file mode 100644
index 0000000000..92d474a09c
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/link-surveys/embed-surveys/plugin-add-survey.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/link-surveys/embed-surveys/plugin-source-tab.webp b/docs/images/xm-and-surveys/surveys/link-surveys/embed-surveys/plugin-source-tab.webp
new file mode 100644
index 0000000000..6b765123e6
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/link-surveys/embed-surveys/plugin-source-tab.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/link-surveys/market-research-panel/copy-survey-link.webp b/docs/images/xm-and-surveys/surveys/link-surveys/market-research-panel/copy-survey-link.webp
new file mode 100644
index 0000000000..f994d21f67
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/link-surveys/market-research-panel/copy-survey-link.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/link-surveys/market-research-panel/create-study.webp b/docs/images/xm-and-surveys/surveys/link-surveys/market-research-panel/create-study.webp
new file mode 100644
index 0000000000..969bc3616d
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/link-surveys/market-research-panel/create-study.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/link-surveys/market-research-panel/hidden-fields.webp b/docs/images/xm-and-surveys/surveys/link-surveys/market-research-panel/hidden-fields.webp
new file mode 100644
index 0000000000..4c4545ca21
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/link-surveys/market-research-panel/hidden-fields.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/link-surveys/market-research-panel/preview-complete.webp b/docs/images/xm-and-surveys/surveys/link-surveys/market-research-panel/preview-complete.webp
new file mode 100644
index 0000000000..7e7120d926
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/link-surveys/market-research-panel/preview-complete.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/link-surveys/market-research-panel/preview-study.webp b/docs/images/xm-and-surveys/surveys/link-surveys/market-research-panel/preview-study.webp
new file mode 100644
index 0000000000..6b665e8954
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/link-surveys/market-research-panel/preview-study.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/link-surveys/market-research-panel/redirect-url-formbricks.webp b/docs/images/xm-and-surveys/surveys/link-surveys/market-research-panel/redirect-url-formbricks.webp
new file mode 100644
index 0000000000..eda709578c
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/link-surveys/market-research-panel/redirect-url-formbricks.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/link-surveys/market-research-panel/redirect-url.webp b/docs/images/xm-and-surveys/surveys/link-surveys/market-research-panel/redirect-url.webp
new file mode 100644
index 0000000000..3f106f1bf3
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/link-surveys/market-research-panel/redirect-url.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/link-surveys/market-research-panel/screening-out.webp b/docs/images/xm-and-surveys/surveys/link-surveys/market-research-panel/screening-out.webp
new file mode 100644
index 0000000000..7d8dee37f2
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/link-surveys/market-research-panel/screening-out.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/link-surveys/market-research-panel/url-parameters.webp b/docs/images/xm-and-surveys/surveys/link-surveys/market-research-panel/url-parameters.webp
new file mode 100644
index 0000000000..2215eb11f0
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/link-surveys/market-research-panel/url-parameters.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/link-surveys/pin-protected-surveys/step-five.webp b/docs/images/xm-and-surveys/surveys/link-surveys/pin-protected-surveys/step-five.webp
new file mode 100644
index 0000000000..52c23b53de
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/link-surveys/pin-protected-surveys/step-five.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/link-surveys/pin-protected-surveys/step-four.webp b/docs/images/xm-and-surveys/surveys/link-surveys/pin-protected-surveys/step-four.webp
new file mode 100644
index 0000000000..b186fde5f4
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/link-surveys/pin-protected-surveys/step-four.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/link-surveys/pin-protected-surveys/step-one.webp b/docs/images/xm-and-surveys/surveys/link-surveys/pin-protected-surveys/step-one.webp
new file mode 100644
index 0000000000..7d74be7026
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/link-surveys/pin-protected-surveys/step-one.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/link-surveys/pin-protected-surveys/step-three.webp b/docs/images/xm-and-surveys/surveys/link-surveys/pin-protected-surveys/step-three.webp
new file mode 100644
index 0000000000..c59f807ce8
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/link-surveys/pin-protected-surveys/step-three.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/link-surveys/pin-protected-surveys/step-two.webp b/docs/images/xm-and-surveys/surveys/link-surveys/pin-protected-surveys/step-two.webp
new file mode 100644
index 0000000000..abe1ae4de4
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/link-surveys/pin-protected-surveys/step-two.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/link-surveys/single-use-links/env-variable.webp b/docs/images/xm-and-surveys/surveys/link-surveys/single-use-links/env-variable.webp
new file mode 100644
index 0000000000..5ac40484eb
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/link-surveys/single-use-links/env-variable.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/link-surveys/single-use-links/metadata.webp b/docs/images/xm-and-surveys/surveys/link-surveys/single-use-links/metadata.webp
new file mode 100644
index 0000000000..8b806e0a56
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/link-surveys/single-use-links/metadata.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/link-surveys/single-use-links/share-modal.webp b/docs/images/xm-and-surveys/surveys/link-surveys/single-use-links/share-modal.webp
new file mode 100644
index 0000000000..82cf5ba31f
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/link-surveys/single-use-links/share-modal.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/link-surveys/single-use-links/single-use-setting.webp b/docs/images/xm-and-surveys/surveys/link-surveys/single-use-links/single-use-setting.webp
new file mode 100644
index 0000000000..9161968715
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/link-surveys/single-use-links/single-use-setting.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/link-surveys/single-use-links/used-message.webp b/docs/images/xm-and-surveys/surveys/link-surveys/single-use-links/used-message.webp
new file mode 100644
index 0000000000..f1f5b5f588
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/link-surveys/single-use-links/used-message.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/link-surveys/source-tracking/share-link.webp b/docs/images/xm-and-surveys/surveys/link-surveys/source-tracking/share-link.webp
new file mode 100644
index 0000000000..12d9357727
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/link-surveys/source-tracking/share-link.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/link-surveys/source-tracking/view-response.webp b/docs/images/xm-and-surveys/surveys/link-surveys/source-tracking/view-response.webp
new file mode 100644
index 0000000000..8b0e9bd7d5
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/link-surveys/source-tracking/view-response.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/link-surveys/verify-email-before-survey/step-five.webp b/docs/images/xm-and-surveys/surveys/link-surveys/verify-email-before-survey/step-five.webp
new file mode 100644
index 0000000000..bce405556c
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/link-surveys/verify-email-before-survey/step-five.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/link-surveys/verify-email-before-survey/step-four.webp b/docs/images/xm-and-surveys/surveys/link-surveys/verify-email-before-survey/step-four.webp
new file mode 100644
index 0000000000..d9ed057e01
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/link-surveys/verify-email-before-survey/step-four.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/link-surveys/verify-email-before-survey/step-one.webp b/docs/images/xm-and-surveys/surveys/link-surveys/verify-email-before-survey/step-one.webp
new file mode 100644
index 0000000000..679f4e9e73
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/link-surveys/verify-email-before-survey/step-one.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/link-surveys/verify-email-before-survey/step-seven.webp b/docs/images/xm-and-surveys/surveys/link-surveys/verify-email-before-survey/step-seven.webp
new file mode 100644
index 0000000000..519720f79b
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/link-surveys/verify-email-before-survey/step-seven.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/link-surveys/verify-email-before-survey/step-six.webp b/docs/images/xm-and-surveys/surveys/link-surveys/verify-email-before-survey/step-six.webp
new file mode 100644
index 0000000000..5ca465d171
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/link-surveys/verify-email-before-survey/step-six.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/link-surveys/verify-email-before-survey/step-three.webp b/docs/images/xm-and-surveys/surveys/link-surveys/verify-email-before-survey/step-three.webp
new file mode 100644
index 0000000000..b4e20a69b2
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/link-surveys/verify-email-before-survey/step-three.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/link-surveys/verify-email-before-survey/step-two.webp b/docs/images/xm-and-surveys/surveys/link-surveys/verify-email-before-survey/step-two.webp
new file mode 100644
index 0000000000..a3d871c668
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/link-surveys/verify-email-before-survey/step-two.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/website-app-surveys/actions/i1.webp b/docs/images/xm-and-surveys/surveys/website-app-surveys/actions/i1.webp
new file mode 100644
index 0000000000..88c128dc54
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/website-app-surveys/actions/i1.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/website-app-surveys/actions/i2.webp b/docs/images/xm-and-surveys/surveys/website-app-surveys/actions/i2.webp
new file mode 100644
index 0000000000..0e12783e67
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/website-app-surveys/actions/i2.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/website-app-surveys/recontact/app-survey.webp b/docs/images/xm-and-surveys/surveys/website-app-surveys/recontact/app-survey.webp
new file mode 100644
index 0000000000..467e536c8a
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/website-app-surveys/recontact/app-survey.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/website-app-surveys/recontact/global-wait-time.webp b/docs/images/xm-and-surveys/surveys/website-app-surveys/recontact/global-wait-time.webp
new file mode 100644
index 0000000000..6208dfa66b
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/website-app-surveys/recontact/global-wait-time.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/website-app-surveys/recontact/ignore-wait-time.webp b/docs/images/xm-and-surveys/surveys/website-app-surveys/recontact/ignore-wait-time.webp
new file mode 100644
index 0000000000..97809d77c2
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/website-app-surveys/recontact/ignore-wait-time.webp differ
diff --git a/docs/images/xm-and-surveys/surveys/website-app-surveys/recontact/survey-recontact.webp b/docs/images/xm-and-surveys/surveys/website-app-surveys/recontact/survey-recontact.webp
new file mode 100644
index 0000000000..552871ab31
Binary files /dev/null and b/docs/images/xm-and-surveys/surveys/website-app-surveys/recontact/survey-recontact.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/cancel-subscription/change-text.webp b/docs/images/xm-and-surveys/xm/best-practices/cancel-subscription/change-text.webp
new file mode 100644
index 0000000000..6ff799b492
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/cancel-subscription/change-text.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/cancel-subscription/create-cancel-flow.webp b/docs/images/xm-and-surveys/xm/best-practices/cancel-subscription/create-cancel-flow.webp
new file mode 100644
index 0000000000..6d88d33e02
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/cancel-subscription/create-cancel-flow.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/cancel-subscription/publish-survey.webp b/docs/images/xm-and-surveys/xm/best-practices/cancel-subscription/publish-survey.webp
new file mode 100644
index 0000000000..1452de30d6
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/cancel-subscription/publish-survey.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/cancel-subscription/recontact-options.webp b/docs/images/xm-and-surveys/xm/best-practices/cancel-subscription/recontact-options.webp
new file mode 100644
index 0000000000..3597c60e5f
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/cancel-subscription/recontact-options.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/cancel-subscription/select-action.webp b/docs/images/xm-and-surveys/xm/best-practices/cancel-subscription/select-action.webp
new file mode 100644
index 0000000000..a120c5770d
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/cancel-subscription/select-action.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/cancel-subscription/trigger-css-selector.webp b/docs/images/xm-and-surveys/xm/best-practices/cancel-subscription/trigger-css-selector.webp
new file mode 100644
index 0000000000..404802b219
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/cancel-subscription/trigger-css-selector.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/cancel-subscription/trigger-inner-text.webp b/docs/images/xm-and-surveys/xm/best-practices/cancel-subscription/trigger-inner-text.webp
new file mode 100644
index 0000000000..bae93a23cd
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/cancel-subscription/trigger-inner-text.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/cancel-subscription/trigger-page-url.webp b/docs/images/xm-and-surveys/xm/best-practices/cancel-subscription/trigger-page-url.webp
new file mode 100644
index 0000000000..71f03ec7d5
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/cancel-subscription/trigger-page-url.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/contact-form/add-question.webp b/docs/images/xm-and-surveys/xm/best-practices/contact-form/add-question.webp
new file mode 100644
index 0000000000..2e5fd8b6a1
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/contact-form/add-question.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/contact-form/email-field.webp b/docs/images/xm-and-surveys/xm/best-practices/contact-form/email-field.webp
new file mode 100644
index 0000000000..9ccd33683e
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/contact-form/email-field.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/contact-form/embed.webp b/docs/images/xm-and-surveys/xm/best-practices/contact-form/embed.webp
new file mode 100644
index 0000000000..1be2dae3e1
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/contact-form/embed.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/contact-form/message-field.webp b/docs/images/xm-and-surveys/xm/best-practices/contact-form/message-field.webp
new file mode 100644
index 0000000000..a96d778c4b
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/contact-form/message-field.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/contact-form/name-field.webp b/docs/images/xm-and-surveys/xm/best-practices/contact-form/name-field.webp
new file mode 100644
index 0000000000..ce60346972
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/contact-form/name-field.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/contact-form/query-form.webp b/docs/images/xm-and-surveys/xm/best-practices/contact-form/query-form.webp
new file mode 100644
index 0000000000..206e6fe5f9
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/contact-form/query-form.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/contact-form/single-select-questionare.webp b/docs/images/xm-and-surveys/xm/best-practices/contact-form/single-select-questionare.webp
new file mode 100644
index 0000000000..f273729ab9
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/contact-form/single-select-questionare.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/contact-form/welcome1.webp b/docs/images/xm-and-surveys/xm/best-practices/contact-form/welcome1.webp
new file mode 100644
index 0000000000..6dee4dbeaf
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/contact-form/welcome1.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/docs-feedback/add-action.webp b/docs/images/xm-and-surveys/xm/best-practices/docs-feedback/add-action.webp
new file mode 100644
index 0000000000..04ccbf56ac
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/docs-feedback/add-action.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/docs-feedback/change-id.webp b/docs/images/xm-and-surveys/xm/best-practices/docs-feedback/change-id.webp
new file mode 100644
index 0000000000..92b914ce15
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/docs-feedback/change-id.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/docs-feedback/copy-ids.webp b/docs/images/xm-and-surveys/xm/best-practices/docs-feedback/copy-ids.webp
new file mode 100644
index 0000000000..6a3ac7b7e4
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/docs-feedback/copy-ids.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/docs-feedback/docs-navi.webp b/docs/images/xm-and-surveys/xm/best-practices/docs-feedback/docs-navi.webp
new file mode 100644
index 0000000000..527244613b
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/docs-feedback/docs-navi.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/docs-feedback/docs-template.webp b/docs/images/xm-and-surveys/xm/best-practices/docs-feedback/docs-template.webp
new file mode 100644
index 0000000000..0cc8fab9d3
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/docs-feedback/docs-template.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/docs-feedback/select-action.webp b/docs/images/xm-and-surveys/xm/best-practices/docs-feedback/select-action.webp
new file mode 100644
index 0000000000..74babbaf43
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/docs-feedback/select-action.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/docs-feedback/survey-trigger.webp b/docs/images/xm-and-surveys/xm/best-practices/docs-feedback/survey-trigger.webp
new file mode 100644
index 0000000000..0fb2129e91
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/docs-feedback/survey-trigger.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/docs-feedback/switch-to-dev.webp b/docs/images/xm-and-surveys/xm/best-practices/docs-feedback/switch-to-dev.webp
new file mode 100644
index 0000000000..1fcb17b72a
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/docs-feedback/switch-to-dev.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/feature-chaser/action-css.webp b/docs/images/xm-and-surveys/xm/best-practices/feature-chaser/action-css.webp
new file mode 100644
index 0000000000..576e22a234
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/feature-chaser/action-css.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/feature-chaser/action-innertext.webp b/docs/images/xm-and-surveys/xm/best-practices/feature-chaser/action-innertext.webp
new file mode 100644
index 0000000000..374dbdaada
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/feature-chaser/action-innertext.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/feature-chaser/change-text.webp b/docs/images/xm-and-surveys/xm/best-practices/feature-chaser/change-text.webp
new file mode 100644
index 0000000000..65eb73d10a
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/feature-chaser/change-text.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/feature-chaser/create-survey.webp b/docs/images/xm-and-surveys/xm/best-practices/feature-chaser/create-survey.webp
new file mode 100644
index 0000000000..50dc09c357
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/feature-chaser/create-survey.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/feature-chaser/publish.webp b/docs/images/xm-and-surveys/xm/best-practices/feature-chaser/publish.webp
new file mode 100644
index 0000000000..8f6e4af4df
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/feature-chaser/publish.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/feature-chaser/recontact-options.webp b/docs/images/xm-and-surveys/xm/best-practices/feature-chaser/recontact-options.webp
new file mode 100644
index 0000000000..c57c97419c
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/feature-chaser/recontact-options.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/feature-chaser/select-action.webp b/docs/images/xm-and-surveys/xm/best-practices/feature-chaser/select-action.webp
new file mode 100644
index 0000000000..e04a636ff6
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/feature-chaser/select-action.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/feedback-box/action-css.webp b/docs/images/xm-and-surveys/xm/best-practices/feedback-box/action-css.webp
new file mode 100644
index 0000000000..a3ca09f44f
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/feedback-box/action-css.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/feedback-box/action-innertext.webp b/docs/images/xm-and-surveys/xm/best-practices/feedback-box/action-innertext.webp
new file mode 100644
index 0000000000..f425951656
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/feedback-box/action-innertext.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/feedback-box/add-action.webp b/docs/images/xm-and-surveys/xm/best-practices/feedback-box/add-action.webp
new file mode 100644
index 0000000000..94d2172b26
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/feedback-box/add-action.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/feedback-box/change-text-content.webp b/docs/images/xm-and-surveys/xm/best-practices/feedback-box/change-text-content.webp
new file mode 100644
index 0000000000..acd382b68f
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/feedback-box/change-text-content.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/feedback-box/create-feedback-box-by-template.webp b/docs/images/xm-and-surveys/xm/best-practices/feedback-box/create-feedback-box-by-template.webp
new file mode 100644
index 0000000000..afc81da214
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/feedback-box/create-feedback-box-by-template.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/feedback-box/publish-survey.webp b/docs/images/xm-and-surveys/xm/best-practices/feedback-box/publish-survey.webp
new file mode 100644
index 0000000000..43f12de8db
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/feedback-box/publish-survey.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/feedback-box/select-action.webp b/docs/images/xm-and-surveys/xm/best-practices/feedback-box/select-action.webp
new file mode 100644
index 0000000000..918979d664
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/feedback-box/select-action.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/feedback-box/set-recontact-options.webp b/docs/images/xm-and-surveys/xm/best-practices/feedback-box/set-recontact-options.webp
new file mode 100644
index 0000000000..2127b80254
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/feedback-box/set-recontact-options.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/improve-email-content/choose-survey-type.webp b/docs/images/xm-and-surveys/xm/best-practices/improve-email-content/choose-survey-type.webp
new file mode 100644
index 0000000000..a1a76256eb
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/improve-email-content/choose-survey-type.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/improve-email-content/embed-survey-code-in-your-email.webp b/docs/images/xm-and-surveys/xm/best-practices/improve-email-content/embed-survey-code-in-your-email.webp
new file mode 100644
index 0000000000..32fe64525c
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/improve-email-content/embed-survey-code-in-your-email.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/improve-email-content/embed-survey-prompt.webp b/docs/images/xm-and-surveys/xm/best-practices/improve-email-content/embed-survey-prompt.webp
new file mode 100644
index 0000000000..b00b0c8f92
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/improve-email-content/embed-survey-prompt.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/improve-email-content/improve-newsletter-content-editor-formbricks.webp b/docs/images/xm-and-surveys/xm/best-practices/improve-email-content/improve-newsletter-content-editor-formbricks.webp
new file mode 100644
index 0000000000..b51669114c
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/improve-email-content/improve-newsletter-content-editor-formbricks.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/improve-email-content/improve-newsletter-content-survey-location.webp b/docs/images/xm-and-surveys/xm/best-practices/improve-email-content/improve-newsletter-content-survey-location.webp
new file mode 100644
index 0000000000..f8666dc3ae
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/improve-email-content/improve-newsletter-content-survey-location.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/improve-trial-cr/action-innertext.webp b/docs/images/xm-and-surveys/xm/best-practices/improve-trial-cr/action-innertext.webp
new file mode 100644
index 0000000000..168f2988c6
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/improve-trial-cr/action-innertext.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/improve-trial-cr/action-pageurl.webp b/docs/images/xm-and-surveys/xm/best-practices/improve-trial-cr/action-pageurl.webp
new file mode 100644
index 0000000000..542d7c1388
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/improve-trial-cr/action-pageurl.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/improve-trial-cr/change-text.webp b/docs/images/xm-and-surveys/xm/best-practices/improve-trial-cr/change-text.webp
new file mode 100644
index 0000000000..37e716fb59
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/improve-trial-cr/change-text.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/improve-trial-cr/create-survey.webp b/docs/images/xm-and-surveys/xm/best-practices/improve-trial-cr/create-survey.webp
new file mode 100644
index 0000000000..b9cdc4130c
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/improve-trial-cr/create-survey.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/improve-trial-cr/publish.webp b/docs/images/xm-and-surveys/xm/best-practices/improve-trial-cr/publish.webp
new file mode 100644
index 0000000000..2f41668cce
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/improve-trial-cr/publish.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/improve-trial-cr/recontact-options.webp b/docs/images/xm-and-surveys/xm/best-practices/improve-trial-cr/recontact-options.webp
new file mode 100644
index 0000000000..fabdb5830e
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/improve-trial-cr/recontact-options.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/improve-trial-cr/select-action.webp b/docs/images/xm-and-surveys/xm/best-practices/improve-trial-cr/select-action.webp
new file mode 100644
index 0000000000..4ec617c631
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/improve-trial-cr/select-action.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/interview-prompt/action-css.webp b/docs/images/xm-and-surveys/xm/best-practices/interview-prompt/action-css.webp
new file mode 100644
index 0000000000..4b562cdedb
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/interview-prompt/action-css.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/interview-prompt/action-innertext.webp b/docs/images/xm-and-surveys/xm/best-practices/interview-prompt/action-innertext.webp
new file mode 100644
index 0000000000..0a3e6ed9a6
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/interview-prompt/action-innertext.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/interview-prompt/action-pageurl.webp b/docs/images/xm-and-surveys/xm/best-practices/interview-prompt/action-pageurl.webp
new file mode 100644
index 0000000000..6bdbb0f742
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/interview-prompt/action-pageurl.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/interview-prompt/add-action.webp b/docs/images/xm-and-surveys/xm/best-practices/interview-prompt/add-action.webp
new file mode 100644
index 0000000000..a24c2af56d
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/interview-prompt/add-action.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/interview-prompt/change-text.webp b/docs/images/xm-and-surveys/xm/best-practices/interview-prompt/change-text.webp
new file mode 100644
index 0000000000..774edc27a8
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/interview-prompt/change-text.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/interview-prompt/create-prompt.webp b/docs/images/xm-and-surveys/xm/best-practices/interview-prompt/create-prompt.webp
new file mode 100644
index 0000000000..614b02f1d8
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/interview-prompt/create-prompt.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/interview-prompt/interview-example.webp b/docs/images/xm-and-surveys/xm/best-practices/interview-prompt/interview-example.webp
new file mode 100644
index 0000000000..d53cd7c048
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/interview-prompt/interview-example.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/interview-prompt/publish-survey.webp b/docs/images/xm-and-surveys/xm/best-practices/interview-prompt/publish-survey.webp
new file mode 100644
index 0000000000..8bec9cf609
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/interview-prompt/publish-survey.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/interview-prompt/recontact-options.webp b/docs/images/xm-and-surveys/xm/best-practices/interview-prompt/recontact-options.webp
new file mode 100644
index 0000000000..c38fb671f4
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/interview-prompt/recontact-options.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/interview-prompt/select-action.webp b/docs/images/xm-and-surveys/xm/best-practices/interview-prompt/select-action.webp
new file mode 100644
index 0000000000..e04a636ff6
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/interview-prompt/select-action.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/pmf-survey/action-css.webp b/docs/images/xm-and-surveys/xm/best-practices/pmf-survey/action-css.webp
new file mode 100644
index 0000000000..d5429698fb
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/pmf-survey/action-css.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/pmf-survey/action-pageurl.webp b/docs/images/xm-and-surveys/xm/best-practices/pmf-survey/action-pageurl.webp
new file mode 100644
index 0000000000..ec4f21a81a
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/pmf-survey/action-pageurl.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/pmf-survey/change-text.webp b/docs/images/xm-and-surveys/xm/best-practices/pmf-survey/change-text.webp
new file mode 100644
index 0000000000..9aaeddef5f
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/pmf-survey/change-text.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/pmf-survey/create-survey.webp b/docs/images/xm-and-surveys/xm/best-practices/pmf-survey/create-survey.webp
new file mode 100644
index 0000000000..d4fed2ebc6
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/pmf-survey/create-survey.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/pmf-survey/publish.webp b/docs/images/xm-and-surveys/xm/best-practices/pmf-survey/publish.webp
new file mode 100644
index 0000000000..f5d3ed77ab
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/pmf-survey/publish.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/pmf-survey/recontact-options.webp b/docs/images/xm-and-surveys/xm/best-practices/pmf-survey/recontact-options.webp
new file mode 100644
index 0000000000..c38fb671f4
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/pmf-survey/recontact-options.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/pmf-survey/select-action.webp b/docs/images/xm-and-surveys/xm/best-practices/pmf-survey/select-action.webp
new file mode 100644
index 0000000000..e04a636ff6
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/pmf-survey/select-action.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/quiz-time/conditional-logic.webp b/docs/images/xm-and-surveys/xm/best-practices/quiz-time/conditional-logic.webp
new file mode 100644
index 0000000000..a773c59b1f
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/quiz-time/conditional-logic.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/quiz-time/ending-logic.webp b/docs/images/xm-and-surveys/xm/best-practices/quiz-time/ending-logic.webp
new file mode 100644
index 0000000000..a7dc105503
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/quiz-time/ending-logic.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/quiz-time/pass-fail.webp b/docs/images/xm-and-surveys/xm/best-practices/quiz-time/pass-fail.webp
new file mode 100644
index 0000000000..979b19e98c
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/quiz-time/pass-fail.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/quiz-time/quiz.webp b/docs/images/xm-and-surveys/xm/best-practices/quiz-time/quiz.webp
new file mode 100644
index 0000000000..9ef9797e1e
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/quiz-time/quiz.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/quiz-time/score.webp b/docs/images/xm-and-surveys/xm/best-practices/quiz-time/score.webp
new file mode 100644
index 0000000000..9b77cb2a8b
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/quiz-time/score.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/quiz-time/single-select.webp b/docs/images/xm-and-surveys/xm/best-practices/quiz-time/single-select.webp
new file mode 100644
index 0000000000..39131bfd62
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/quiz-time/single-select.webp differ
diff --git a/docs/images/xm-and-surveys/xm/best-practices/quiz-time/when-then.webp b/docs/images/xm-and-surveys/xm/best-practices/quiz-time/when-then.webp
new file mode 100644
index 0000000000..8dad1ab4a7
Binary files /dev/null and b/docs/images/xm-and-surveys/xm/best-practices/quiz-time/when-then.webp differ
diff --git a/docs/mint.json b/docs/mint.json
new file mode 100644
index 0000000000..0959f7f0f7
--- /dev/null
+++ b/docs/mint.json
@@ -0,0 +1,279 @@
+{
+ "$schema": "https://mintlify.com/schema.json",
+ "colors": {
+ "anchors": {
+ "from": "#0D9373",
+ "to": "#07C983"
+ },
+ "dark": "#00C4B8",
+ "light": "#00C4B8",
+ "primary": "#00C4B8"
+ },
+ "favicon": "/images/favicon.svg",
+ "footerSocials": {
+ "github": "https://github.com/formbricks/formbricks",
+ "linkedin": "https://linkedin.com/company/formbricks",
+ "x": "https://x.com/formbricks"
+ },
+ "logo": {
+ "dark": "/images/logo-dark.svg",
+ "light": "/images/logo-light.svg"
+ },
+ "name": "Documentation - Formbricks",
+ "navigation": [
+ {
+ "group": "",
+ "pages": ["overview/introduction", "overview/what-is-formbricks", "overview/open-source"]
+ },
+ {
+ "group": "",
+ "pages": ["xm-and-surveys/overview"]
+ },
+ {
+ "group": "Surveys",
+ "pages": [
+ {
+ "group": "General Features",
+ "icon": "wrench",
+ "pages": [
+ "xm-and-surveys/surveys/general-features/add-image-or-video-question",
+ "xm-and-surveys/surveys/general-features/conditional-logic",
+ "xm-and-surveys/surveys/general-features/overwrite-styling",
+ "xm-and-surveys/surveys/general-features/hidden-fields",
+ "xm-and-surveys/surveys/general-features/limit-submissions",
+ "xm-and-surveys/surveys/general-features/multi-language-surveys",
+ "xm-and-surveys/surveys/general-features/partial-submissions",
+ "xm-and-surveys/surveys/general-features/recall",
+ "xm-and-surveys/surveys/general-features/shareable-dashboards",
+ "xm-and-surveys/surveys/general-features/schedule-start-end-dates",
+ "xm-and-surveys/surveys/general-features/metadata",
+ "xm-and-surveys/surveys/general-features/variables",
+ "xm-and-surveys/surveys/general-features/show-survey-to-percent-of-users"
+ ]
+ },
+ {
+ "group": "Link Surveys",
+ "icon": "link",
+ "pages": [
+ "xm-and-surveys/surveys/link-surveys/quickstart",
+ {
+ "group": "Features",
+ "icon": "wrench",
+ "pages": [
+ "xm-and-surveys/surveys/link-surveys/data-prefilling",
+ "xm-and-surveys/surveys/link-surveys/embed-surveys",
+ "xm-and-surveys/surveys/link-surveys/market-research-panel",
+ "xm-and-surveys/surveys/link-surveys/pin-protected-surveys",
+ "xm-and-surveys/surveys/link-surveys/single-use-links",
+ "xm-and-surveys/surveys/link-surveys/source-tracking",
+ "xm-and-surveys/surveys/link-surveys/start-at-question",
+ "xm-and-surveys/surveys/link-surveys/verify-email-before-survey"
+ ]
+ }
+ ]
+ },
+ {
+ "group": "Website & App Surveys",
+ "icon": "mobile",
+ "pages": [
+ "xm-and-surveys/surveys/website-app-surveys/quickstart",
+ "xm-and-surveys/surveys/website-app-surveys/framework-guides",
+ {
+ "group": "Features",
+ "icon": "wrench",
+ "pages": [
+ "xm-and-surveys/surveys/website-app-surveys/actions",
+ "xm-and-surveys/surveys/website-app-surveys/advanced-targeting",
+ "xm-and-surveys/surveys/website-app-surveys/user-identification",
+ "xm-and-surveys/surveys/website-app-surveys/recontact"
+ ]
+ }
+ ]
+ }
+ ]
+ },
+
+ {
+ "group": "Core Features",
+ "pages": [
+ {
+ "group": "Question Types",
+ "icon": "question",
+ "pages": [
+ "xm-and-surveys/core-features/question-type/address",
+ "xm-and-surveys/core-features/question-type/consent",
+ "xm-and-surveys/core-features/question-type/contact-info",
+ "xm-and-surveys/core-features/question-type/date",
+ "xm-and-surveys/core-features/question-type/file-upload",
+ "xm-and-surveys/core-features/question-type/free-text",
+ "xm-and-surveys/core-features/question-type/matrix",
+ "xm-and-surveys/core-features/question-type/net-promoter-score",
+ "xm-and-surveys/core-features/question-type/ranking",
+ "xm-and-surveys/core-features/question-type/rating",
+ "xm-and-surveys/core-features/question-type/schedule-a-meeting",
+ "xm-and-surveys/core-features/question-type/select-multiple",
+ "xm-and-surveys/core-features/question-type/select-picture",
+ "xm-and-surveys/core-features/question-type/select-single",
+ "xm-and-surveys/core-features/question-type/statement-cta"
+ ]
+ },
+ {
+ "group": "Integrations",
+ "icon": "bridge",
+ "pages": [
+ "xm-and-surveys/core-features/integrations/overview",
+ "xm-and-surveys/core-features/integrations/activepieces",
+ "xm-and-surveys/core-features/integrations/airtable",
+ "xm-and-surveys/core-features/integrations/google-sheets",
+ "xm-and-surveys/core-features/integrations/make",
+ "xm-and-surveys/core-features/integrations/n8n",
+ "xm-and-surveys/core-features/integrations/notion",
+ "xm-and-surveys/core-features/integrations/slack",
+ "xm-and-surveys/core-features/integrations/wordpress",
+ "xm-and-surveys/core-features/integrations/zapier",
+ "xm-and-surveys/core-features/integrations/webhooks"
+ ]
+ },
+ "xm-and-surveys/core-features/user-management",
+ "xm-and-surveys/core-features/styling-theme",
+ "xm-and-surveys/core-features/email-customization"
+ ]
+ },
+ {
+ "group": "XM",
+ "pages": [
+ {
+ "group": "Best Practices",
+ "icon": "lightbulb",
+ "pages": [
+ "xm-and-surveys/xm/best-practices/contact-form",
+ "xm-and-surveys/xm/best-practices/docs-feedback",
+ "xm-and-surveys/xm/best-practices/feature-chaser",
+ "xm-and-surveys/xm/best-practices/feedback-box",
+ "xm-and-surveys/xm/best-practices/improve-email-content",
+ "xm-and-surveys/xm/best-practices/interview-prompt",
+ "xm-and-surveys/xm/best-practices/cancel-subscription",
+ "xm-and-surveys/xm/best-practices/pmf-survey",
+ "xm-and-surveys/xm/best-practices/quiz-time",
+ "xm-and-surveys/xm/best-practices/improve-trial-cr"
+ ]
+ }
+ ]
+ },
+ {
+ "group": "",
+ "pages": ["development/overview"]
+ },
+ {
+ "group": "Local Setup",
+ "pages": [
+ "development/local-setup/linux",
+ "development/local-setup/mac",
+ "development/local-setup/windows",
+ "development/local-setup/gitpod",
+ "development/local-setup/github-codespaces"
+ ]
+ },
+ {
+ "group": "Contribution",
+ "pages": ["development/contribution/contribution"]
+ },
+ {
+ "group": "Support",
+ "pages": ["development/support/troubleshooting"]
+ },
+ {
+ "group": "",
+ "pages": ["self-hosting/overview"]
+ },
+ {
+ "group": "Setup",
+ "pages": [
+ "self-hosting/setup/one-click",
+ "self-hosting/setup/docker",
+ "self-hosting/setup/cluster-setup"
+ ]
+ },
+ {
+ "group": "Configuration",
+ "pages": [
+ "self-hosting/configuration/custom-ssl",
+ "self-hosting/configuration/environment-variables",
+ "self-hosting/configuration/oauth",
+ {
+ "group": "Integrations",
+ "icon": "bridge",
+ "pages": [
+ "self-hosting/configuration/airtable",
+ "self-hosting/configuration/google-sheets",
+ "self-hosting/configuration/n8n",
+ "self-hosting/configuration/notion",
+ "self-hosting/configuration/slack",
+ "self-hosting/configuration/zapier"
+ ]
+ }
+ ]
+ },
+ {
+ "group": "Advanced",
+ "pages": [
+ "self-hosting/advanced/migration",
+ "self-hosting/advanced/license",
+ "self-hosting/advanced/rate-limiting"
+ ]
+ },
+ {
+ "group": "API Documentation",
+ "pages": ["api-reference/introduction", "api-reference/rest-api"]
+ }
+ ],
+ "redirects": [
+ {
+ "destination": "/docs/overview/what-is-formbricks",
+ "permanent": true,
+ "source": "/docs/introduction/what-is-formbricks"
+ },
+ {
+ "destination": "/docs/overview/open-source",
+ "permanent": true,
+ "source": "/docs/introduction/why-open-source"
+ },
+ {
+ "destination": "/docs/xm-and-surveys/overview",
+ "source": "/docs/introduction/how-it-works"
+ }
+ ],
+ "tabs": [
+ {
+ "name": "Overview",
+ "url": "overview"
+ },
+ {
+ "name": "XM & Surveys",
+ "url": "xm-and-surveys"
+ },
+ {
+ "name": "Self Hosting",
+ "url": "self-hosting"
+ },
+ {
+ "name": "API Reference",
+ "openapi": "/api-reference/openapi.json",
+ "url": "api-reference"
+ },
+ {
+ "name": "Development",
+ "url": "development"
+ }
+ ],
+ "topbarCtaButton": {
+ "name": "Go to app",
+ "url": "https://app.formbricks.com"
+ },
+ "topbarLinks": [
+ {
+ "name": "Support",
+ "url": "https://github.com/formbricks/formbricks/discussions"
+ }
+ ]
+}
diff --git a/docs/overview/images/analytics.webp b/docs/overview/images/analytics.webp
new file mode 100644
index 0000000000..5161cc3240
Binary files /dev/null and b/docs/overview/images/analytics.webp differ
diff --git a/docs/overview/images/form-builder.webp b/docs/overview/images/form-builder.webp
new file mode 100644
index 0000000000..c94bdbc8be
Binary files /dev/null and b/docs/overview/images/form-builder.webp differ
diff --git a/docs/overview/images/integrations.webp b/docs/overview/images/integrations.webp
new file mode 100644
index 0000000000..d94c009b40
Binary files /dev/null and b/docs/overview/images/integrations.webp differ
diff --git a/docs/overview/images/targeting.webp b/docs/overview/images/targeting.webp
new file mode 100644
index 0000000000..7ca18df49b
Binary files /dev/null and b/docs/overview/images/targeting.webp differ
diff --git a/docs/overview/images/trigger.webp b/docs/overview/images/trigger.webp
new file mode 100644
index 0000000000..62b2c8c20b
Binary files /dev/null and b/docs/overview/images/trigger.webp differ
diff --git a/docs/overview/introduction.mdx b/docs/overview/introduction.mdx
new file mode 100644
index 0000000000..0dfc614209
--- /dev/null
+++ b/docs/overview/introduction.mdx
@@ -0,0 +1,32 @@
+---
+title: "Introduction"
+description: "Welcome to the Formbricks Documentation!"
+icon: "presentation-screen"
+---
+
+## Welcome to the Formbricks Documentation!
+
+Formbricks is a versatile open-source platform for collecting and analyzing feedback from customers, users, and employees through targeted surveys. Whether you need simple forms or complex experience management solutions, Formbricks scales with your needs.
+
+This guide covers everything you need to set up, use, and develop with Formbricks. You'll find step-by-step instructions, feature explanations, and best practices. It also includes advanced docs on extending Formbricks using its self-hosted option, APIs, and SDKs.
+
+
+
+
+
+ Learn how to use Formbricks' XM & Surveys to collect feedback from your customers, users, and employees.
+
+
+ Learn how to self-host Formbricks on your infrastructure.
+
+
+
+ Learn how to use Formbricks' API to CRUD various resources programmatically.
+
+
+
+ Warm up with the Formbricks code base to make changes to the platform.
+
+
+
+
diff --git a/docs/overview/open-source.mdx b/docs/overview/open-source.mdx
new file mode 100644
index 0000000000..5f1d9d792d
--- /dev/null
+++ b/docs/overview/open-source.mdx
@@ -0,0 +1,22 @@
+---
+title: "Open-Source"
+icon: "osi"
+---
+
+The open core of the Formbricks software is available under the AGPLv3 license. This means you can use, modify, and distribute the software as long as you adhere to the [terms of the license.](https://www.tldrlegal.com/license/gnu-affero-general-public-license-v3-agpl-3-0) The open-source version of Formbricks is free to use, even for commercial purposes. Over time, all survey features will remain part of the free Community Edition.
+
+Formbricks also offers a more advanced Enterprise Edition with additional features and support.
+
+| Advantage | Open Source Software | Proprietary Software |
+| --------------------- | ------------------------------------------------------------ | ---------------------------------------------------------------- |
+| **Data Privacy** | Self-host for maximum control over data | Dependent on third party data processor. |
+| **Cost** | Often free or significantly lower cost. | Typically, requires a purchase or subscription. |
+| **Customizability** | Code can be modified to meet specific needs. | Limited customization, restricted to developer's features. |
+| **Security** | Frequent community reviews identify vulnerabilities quickly. | Security updates depend on vendor's schedule and interest. |
+| **Flexibility** | Supports a wide range of applications and integrations. | Designed for specific environments and integrations. |
+| **Community Support** | Large, active communities offer free support and resources. | Paid customer support with limited community help. |
+| **Innovation** | Fosters rapid innovation through community contributions. | Innovations depend on vendor's vision and development team. |
+| **Licensing** | Permissive licenses allow broad usage and modification. | Strict licensing with limited redistribution rights. |
+| **Independence** | Not dependent on a single vendor or developer. | Vendor lock-in can limit future choices. |
+| **Transparency** | Full visibility into the code base and development. | Closed-source, code is hidden from users. |
+| **Interoperability** | Supports open standards, ensuring interoperability. | Often requires additional software or plugins for compatibility. |
\ No newline at end of file
diff --git a/docs/overview/what-is-formbricks.mdx b/docs/overview/what-is-formbricks.mdx
new file mode 100644
index 0000000000..8213a3f1c5
--- /dev/null
+++ b/docs/overview/what-is-formbricks.mdx
@@ -0,0 +1,34 @@
+---
+title: "What is Formbricks?"
+description: "Get to know Formbricks and its capabilities."
+icon: "laptop-mobile"
+---
+
+Formbricks is an open-source (AGPLv3) survey platform built to collect feedback from anyone—users, customers, or employees—on any platform.
+
+With Formbricks, you can replace many existing survey tools:
+
+- **Standalone surveys (share via link):** Replace Google Forms, Typeform or any other link survey tool [with Formbricks Form Builder](https://formbricks.com/open-source-form-builder). Use lots of question types and comprehensive customizations.
+
+- **Scalable website surveys:** Even if you have millions of website visitors, Formbricks lets you run well-timed and anonymously targeted [surveys on any public website.](https://formbricks.com/website-survey)
+
+- **Highly targeted app surveys:** Identify known users with Formbricks and enrich their profiles with attributes and specific actions. Build cohorts for [highly targeted in-app surveys.](https://formbricks.com/in-app-survey)
+
+The survey platform is **mostly free, even for commercial use**. Over time, all survey features will stay part of the free Community Edition.
+
+### Formbricks – The Experience Management (XM) Suite
+
+To support the development of our open-source platform, we’ve created a premium offering: the **Formbricks XM Suite**.
+
+- **What is XM?**
+ Experience Management (XM) involves collecting, analysing, and reporting feedback from stakeholders (like customers or employees) to understand and improve their experience with your organisation.
+
+- **Why XM Matters**
+ Helping businesses, governments, and nonprofits understand their users' experiences leads to better services and happier people. Formbricks XM provides the data needed to make decisions that put people first.
+
+- **How XM Works in Formbricks**
+ Formbricks XM simplifies experience management. It focuses only on what’s needed to measure specific experiences, with easy-to-use templates, reports, and best practices.
+
+We have spent a lot of time and energy building out the open-source survey platform which powers the above. Stick around to see how Formbricks XM Apps will empower everyone to think and work human-centric.
+
+[Try Formbricks Cloud ☁️ ](https://app.formbricks.com/)
diff --git a/docs/self-hosting/advanced/license.mdx b/docs/self-hosting/advanced/license.mdx
new file mode 100644
index 0000000000..f6a68f755f
--- /dev/null
+++ b/docs/self-hosting/advanced/license.mdx
@@ -0,0 +1,107 @@
+---
+title: 'License'
+description: "License for Formbricks"
+icon: "file-certificate"
+---
+
+The Formbricks core source code is licensed under AGPLv3 and available on GitHub. Additionally, we offer features for bigger organisations & enterprises under a separate, paid Enterprise License. This assures the long-term sustainability of the open source project. All free features are listed [below](#what-features-are-free).
+
+
+ Want to get your hands on the Enterprise Edition? Request a free 30-day Enterprise Edition trial by [filling out the form below.](#30-day-trial-license-request) No call needed or strings attached 🤙
+
+
+## Enterprise Edition
+
+Additional to the AGPLv3 licensed Formbricks core, the Formbricks repository contains code licensed under our [Enterprise License](https://github.com/formbricks/formbricks/blob/main/apps/web/modules/ee/LICENSE). This additional functionality is not part of the AGPLv3 licensed Formbricks core and is designed to meet the needs of larger teams and enterprises. This advanced functionality is already included in the Docker images, but you need an **Enterprise License Key** to unlock it. For the pricing, please refer to [Formbricks Pricing](https://formbricks.com/pricing) or [get in touch](https://cal.com/johannes/license).
+
+## When do I need an Enterprise License?
+
+| | Community Edition | Enterprise License |
+| ------------------------------------------------------------- | ----------------- | ------------------ |
+| Self-host for commercial purposes | ✅ | No license needed |
+| Fork codebase, make changes, release under AGPLv3 | ✅ | No license needed |
+| Fork codebase, make changes, **keep private** | ❌ | ✅ |
+| Unlimited responses | ✅ | No license needed |
+| Unlimited surveys | ✅ | No license needed |
+| Unlimited users | ✅ | No license needed |
+| Projects | 3 | Unlimited |
+| Use any of the other [free features](#what-features-are-free) | ✅ | No license needed |
+| Remove branding ⚠️ Changed with 3.0 ⚠️ | ❌ | ✅ |
+| SSO ⚠️ Changed with 3.0 ⚠️ | ❌ | ✅ |
+| Contacts & Targeting ⚠️ Changed with 3.0 ⚠️ | ❌ | ✅ |
+| Teams & access roles | ❌ | ✅ |
+| Cluster support | ❌ | ✅ |
+| Use any of the [paid features](#what-features-are-free) | ❌ | ✅ |
+
+Ready to get started with the Enterprise Edition? Fill out our form below and we'll reach out to you.
+
+## 30-day Trial License Request
+
+Many organisations want to do an internal test run with the Enterprise Edition. To make that really easy, we offer a 30-day trial license. Just fill out the form below and we'll send you a license key within 24 hours (business days):
+
+
+
+
+
+## Open Core Licensing
+
+### The AGPL Formbricks Core
+
+The Formbricks core application is licensed under the [AGPLv3 Open Source License](https://github.com/formbricks/formbricks/blob/main/LICENSE). The core application is fully functional and includes everything you need to design & run link surveys, website surveys and in-app surveys. You can use the software for free for personal and commercial use. You're also allowed to create and distribute modified versions as long as you document the changes you make incl. date and **publish your complete code under the AGPLv3 license as well.**
+
+### The Enterprise Edition
+
+Additional to the AGPL licensed Formbricks core, this repository contains code licensed under an Enterprise license. The [code](https://github.com/formbricks/formbricks/tree/main/apps/web/modules/ee) and [license](https://github.com/formbricks/formbricks/blob/main/apps/web/modules/ee/LICENSE) for the enterprise functionality can be found in the `/apps/web/modules/ee` folder of this repository. This additional functionality is not part of the AGPLv3 licensed Formbricks core and is designed to meet the needs of larger teams and enterprises. This advanced functionality is already included in the Docker images, but you need an [Enterprise License Key](https://formbricks.com/docs/self-hosting/enterprise) to unlock it.
+
+## White-Labeling Formbricks and Other Licensing Needs
+
+We currently do not offer Formbricks white-labeled. Any other needs? [Send us an email](mailto:hola@formbricks.com).
+
+## Why charge for Enterprise Features?
+
+The Enterprise Edition allows us to fund the development of Formbricks sustainably. It guarantees that the open-source surveying infrastructure we're building will be around for decades to come.
+
+## What features are free?
+
+| Feature | Community Edition | Enterprise Edition |
+| ---------------------------------------------- | ----------------- | ------------------ |
+| Unlimited surveys | ✅ | ✅ |
+| Website & App surveys | ✅ | ✅ |
+| Link surveys | ✅ | ✅ |
+| Email embedded surveys | ✅ | ✅ |
+| Advanced logic | ✅ | ✅ |
+| Custom styling | ✅ | ✅ |
+| Custom URL | ✅ | ✅ |
+| Recall information | ✅ | ✅ |
+| All question types | ✅ | ✅ |
+| Multi-media backgrounds | ✅ | ✅ |
+| Partial responses | ✅ | ✅ |
+| File upload | ✅ | ✅ |
+| Hidden fields | ✅ | ✅ |
+| Single-use links | ✅ | ✅ |
+| Pin-protected surveys | ✅ | ✅ |
+| Full API Access | ✅ | ✅ |
+| All SDKs | ✅ | ✅ |
+| Webhooks | ✅ | ✅ |
+| Email follow-ups | ✅ | ✅ |
+| Multi-language UI | ✅ | ✅ |
+| All integrations (Slack, Zapier, Notion, etc.) | ✅ | ✅ |
+| Remove branding | ❌ | ✅ |
+| Teams & access roles | ❌ | ✅ |
+| Contact management & segments | ❌ | ✅ |
+| AI analysis | ❌ | ✅ |
+| Multi-language surveys | ❌ | ✅ |
+| Single sign-on (SSO) | ❌ | ✅ |
+| Helm charts | ❌ | ✅ |
+| White-glove onboarding | ❌ | ✅ |
+| Support SLAs | ❌ | ✅ |
+
+**Any more questions?**: [Send us an email](mailto:johannes@formbricks.com) or [book a call with us.](https://cal.com/johannes/license)
\ No newline at end of file
diff --git a/docs/self-hosting/advanced/migration.mdx b/docs/self-hosting/advanced/migration.mdx
new file mode 100644
index 0000000000..764d08944e
--- /dev/null
+++ b/docs/self-hosting/advanced/migration.mdx
@@ -0,0 +1,960 @@
+---
+title: "Migration"
+icon: "arrow-right"
+---
+
+### v3.1
+
+
+ With Formbricks 3.0, we introduced an automatic data migration system. If you're using a version older than **v2.7**, you must upgrade step-by-step through earlier versions (e.g. **2.4 → 2.5 → 2.6 → 2.7**). Once you reach **v2.7**, you can upgrade directly to **any v3.x or future release** without needing intermediate migrations.
+
+
+### Steps to Migrate
+
+This guide is for users who are **self-hosting Formbricks** using the **one-click setup**. If you have a different setup, you may need to adjust the commands accordingly.
+
+Before running these steps, **navigate to the `formbricks` directory** where your `docker-compose.yml` file is located.
+
+1. **Backup your Database**: Backing up your database is crucial before upgrading. Use the following command to create a backup:
+
+```bash
+docker exec formbricks-postgres-1 pg_dump -Fc -U postgres -d formbricks > formbricks_pre_v3.1_$(date +%Y%m%d_%H%M%S).dump
+```
+
+
+ If you run into “**No such container**”, use `docker ps` to find your container name, e.g. `formbricks_postgres_1`.
+
+
+If you prefer storing the backup as an `*.sql` file remove the `-Fc` (custom format) option. In case of a restore scenario you will need to use `psql` then with an empty `formbricks` database.
+
+1. Pull the latest version of Formbricks:
+
+```bash
+docker compose pull
+```
+
+1. Stop the running Formbricks instance & remove the related containers:
+
+```bash
+docker compose down
+```
+
+1. Restarting the containers with the latest version of Formbricks:
+
+```bash
+docker compose up -d
+```
+
+When you start the latest version of **Formbricks**, it will **automatically detect and apply any required data migrations** during startup. You don’t need to run any manual migration steps or download separate migration images.
+
+* Access your updated instance
+
+Once the containers are running, simply go to the **same URL** as before to access your updated **Formbricks** instance.
+
+That’s it! This new process ensures your **Formbricks** setup stays up to date with the latest schema changes as soon as you run the updated container.
+
+## v3.0
+
+
+ **Important: Do Not Upgrade to 3.0 If You Need SSO, User Identification, or Cluster Support**
+
+ With **Formbricks 3.0**, we're making changes to ensure long-term sustainability while still supporting open source. While the **Community Edition** has gained [new features](https://formbricks.com/blog/formbricks-3-0), some [advanced capabilities](https://formbricks.com/docs/self-hosting/license) are now part of the **Enterprise Edition**.
+
+
+
+ ⚠️ **No Downgrade Option:** If you upgrade to **3.0** and run the data migration, **you cannot revert to 2.7.2**. If you rely on **SSO, user identification, or cluster support**, either **stay on version 2.7.x** or [reach out](https://formbricks.com/cdn-cgi/l/email-protection#1e7671727f5e78716c737c6c777d756d307d7173) **for a custom quote**.
+
+
+This major release brings a better approach to **data migrations**.
+
+* If you're using **Formbricks v2.7 or later**, you can upgrade **directly** to **v3.x** and future versions.
+
+* If you're on a version **older than v2.7**, you **must upgrade step-by-step** (e.g. **2.4 → 2.5 → 2.6 → 2.7**) before moving to v3.x.
+
+### Steps to Migrate
+
+This guide is for users **self-hosting** Formbricks with the **one-click setup**. If you're using a different setup, you may need to adjust the commands.
+
+* Navigate to the Formbricks Directory
+
+Before running any steps, go to the directory where your `docker-compose.yml` file is located.
+
+* Backup Your Database
+
+Backing up your database is **crucial** before upgrading. Use the following command to create a backup:
+
+```bash
+docker exec formbricks-postgres-1 pg_dump -Fc -U postgres -d formbricks > formbricks_pre_v3.0_$(date +%Y%m%d_%H%M%S).dump
+
+```
+
+
+ **Note:** If you see a “No such container” error, run `docker ps` to find your actual container name (e.g. `formbricks_postgres_1`).
+
+
+
+ Tip: If you want to store the backup as a `.sql` file, remove the `-Fc` (custom format) option. If you need to restore it later, use `psql` with an empty Formbricks database.
+
+
+* Pull the latest version of Formbricks:
+
+```bash
+docker compose pull
+```
+
+* Stop the running Formbricks instance & remove the related containers:
+
+```bash
+docker compose down
+```
+
+* Restarting the containers with the latest version of Formbricks:
+
+```bash
+docker compose up -d
+```
+
+When you start the latest version of Formbricks, it will automatically detect and run any necessary data migrations during startup. There is no need to run any manual migration steps or pull any separate migration images.
+
+* Access your updated instance
+
+That’s it! Once the containers are up and running, simply navigate to the same URL as before to access your fully migrated Formbricks instance.
+
+## v2.7
+
+
+ AI Features & Database Update: This release lays the groundwork for upcoming AI features, now in private beta. Formbricks requires the `pgvector` extension in PostgreSQL.
+
+ One-Click Setup Users: Use the `pgvector/pgvector:pg15` image instead of `postgres:15-alpine` to ensure compatibility.
+
+
+Formbricks v2.7 includes all the features and improvements developed by the community during Hacktoberfest 2024. Additionally, this release introduces an advanced team-based access control system, which is available in the Formbricks Enterprise Edition.
+
+### Additional Updates
+
+If you previously used organisation-based access control (an enterprise feature) and the `DEFAULT_ORGANIZATION_ROLE` environment variable, update its value to one of these roles: `owner`, `manager`, or `member`. Read more about the new roles in the [documentation](/global/access-roles).
+
+### Steps to Migrate
+
+This guide is for users who are self-hosting Formbricks using our one-click setup. If you are using a different setup, you might adjust the commands accordingly.
+
+To run all these steps, please navigate to the Formbricks folder where your `docker-compose.yml` file is located.
+
+* **Backup your Database:** This is a crucial step. Please make sure to backup your database before proceeding with the upgrade. You can use the following command to backup your database.
+
+```bash
+docker exec formbricks-postgres-1 pg_dump -Fc -U postgres -d formbricks > formbricks_pre_v2.7_$(date +%Y%m%d_%H%M%S).dump
+```
+
+
+ If you run into “No such container”, use `docker ps` to find your container name, e.g. `formbricks_postgres_1`.
+
+
+
+ If you want to store the backup as an \*.sql file, remove the `-Fc` option. To restore, use `psql` with an empty Formbricks database.
+
+
+* If you use an older `docker-compose.yml` file from the one-click setup, modify it to use the `pgvector/pgvector:pg15` image instead of `postgres:15-alpine`:
+
+```yaml
+services:
+ postgres:
+ image: pgvector/pgvector:pg15
+ volumes:
+ - postgres:/var/lib/postgresql/data
+ environment:
+ - POSTGRES_DB=postgres
+ - POSTGRES_USER=postgres
+ - POSTGRES_PASSWORD=postgres
+ ports:
+ - 5432:5432
+```
+
+* Pull the latest version of Formbricks:
+
+```bash
+docker compose pull
+```
+
+* Stop the running Formbricks instance and remove the related containers:
+
+```bash
+docker compose down
+```
+
+* Restarting the containers with the latest version of Formbricks:
+
+```bash
+docker compose up -d
+```
+
+* Now let's migrate the data to the latest schema:
+
+
+ To find the Docker network name for your Postgres database, run `docker network ls`.
+
+
+```bash
+docker pull ghcr.io/formbricks/data-migrations:latest && \
+docker run --rm \
+ --network=formbricks_default \
+ -e DATABASE_URL="postgresql://postgres:postgres@postgres:5432/formbricks?schema=public" \
+ -e UPGRADE_TO_VERSION="v2.7" \
+ ghcr.io/formbricks/data-migrations:v2.7.0
+
+```
+
+The command above will migrate your data to the latest schema. This step is important to update your existing data to the new structure. The changes will only be made if the script runs successfully. You can run the script multiple times safely.
+
+* That's it! Once the migration is finished, you can **access your Formbricks instance** at the same URL as before.
+
+## v2.6
+
+Formbricks v2.6 introduces advanced logic jumps for surveys, allowing more complex branching logic, including variables, conditions, and more. This release also includes numerous bug fixes, significant performance improvements for website and app surveys, and enhanced stability.
+
+
+ This release includes the final step of deprecating server-side action tracking (previously used for segment filtering by performed actions). The migrations will delete all tracked actions from the database. If you still need these action records, ensure you export them before upgrading.
+
+
+### Steps to Migrate
+
+This guide is for users who are self-hosting Formbricks using our one-click setup. If you're using a different setup, you might need to adjust the commands accordingly.
+
+To run these steps, navigate to the folder where your `docker-compose.yml` file is located.
+
+* **Backup your Database:** This is an important step. Make sure to back up your database before proceeding with the upgrade. You can use this command to back up your database:
+
+```bash
+docker exec formbricks-postgres-1 pg_dump -Fc -U postgres -d formbricks > formbricks_pre_v2.6_$(date +%Y%m%d_%H%M%S).dump
+```
+
+
+ If you get a "No such container" error, run `docker ps` to find your container name, for example, `formbricks_postgres_1`.
+
+
+
+ If you prefer storing the backup as an `*.sql` file remove the `-Fc` (custom format) option. In case of a restore scenario, you will need to use `psql` then with an empty `formbricks` database.
+
+
+* Pull the latest version of Formbricks:
+
+```bash
+docker compose pull
+```
+
+* Stop the running Formbricks instance & remove the related containers:
+
+```bash
+docker compose down
+```
+
+* Restarting the containers with the latest version of Formbricks:
+
+```bash
+docker compose up -d
+```
+
+* Now let's migrate the data to the latest schema:
+
+
+ To find the Docker network name for your Postgres database, run the command:
+
+
+```bash
+docker pull ghcr.io/formbricks/data-migrations:latest && \
+docker run --rm \
+ --network=formbricks_default \
+ -e DATABASE_URL="postgresql://postgres:postgres@postgres:5432/formbricks?schema=public" \
+ -e UPGRADE_TO_VERSION="v2.6" \
+ ghcr.io/formbricks/data-migrations:v2.6.0
+```
+
+The command above will migrate your data to the latest schema. This is an important step to update your existing data to the new structure. Changes will only be made if the script runs successfully. You can run the script multiple times without issues.
+
+* Once the migration is complete, **you can access your Formbricks instance** at the same URL as before.
+
+## v2.5
+
+Formbricks v2.5 lets you visualise responses in a data table format. This release also brings a few bug fixes and performance improvements.
+
+
+ This release fixes the inconsistency of CTA and consent question values when a question is skipped. The value will now be set to an empty string instead of "dismissed" to maintain consistency with other questions.
+
+
+### Steps to Migrate
+
+This guide is for users self-hosting Formbricks with our one-click setup. If you're using a different setup, you may need to adjust the commands.
+
+To begin, navigate to the folder where your `docker-compose.yml` file is located.
+
+* **Backup your Database**: This step is important. Please make sure to back up your database before upgrading. You can use the following command to back up your database:
+
+```bash
+docker exec formbricks-postgres-1 pg_dump -Fc -U postgres -d formbricks > formbricks_pre_v2.5_$(date +%Y%m%d_%H%M%S).dump
+```
+
+
+ If you run into “No such container”, use `docker ps` to find your container name, e.g.`formbricks_postgres_1`.
+
+
+
+ If you prefer storing the backup as an `*.sql` file remove the `-Fc` (custom format) option. In case of a restore scenario you will need to use `psql` then with an empty `formbricks` database.
+
+
+* Pull the latest version of Formbricks:
+
+```bash
+docker compose pull
+```
+
+* Stop the running Formbricks instance & remove the related containers:
+
+```bash
+docker compose down
+```
+
+* Restarting the containers with the latest version of Formbricks:
+
+```bash
+docker compose up -d
+```
+
+* Now let's migrate the data to the latest schema:
+
+
+ To find your Docker Network name for your Postgres Database, find it using `docker network ls`
+
+
+```bash
+docker pull ghcr.io/formbricks/data-migrations:latest && \
+docker run --rm \
+ --network=formbricks_default \
+ -e DATABASE_URL="postgresql://postgres:postgres@postgres:5432/formbricks?schema=public" \
+ -e UPGRADE_TO_VERSION="v2.5" \
+ ghcr.io/formbricks/data-migrations:v2.5.3
+```
+
+The command will migrate your data to the latest schema, ensuring your existing data is updated to the new structure. Changes will only be made if the script runs successfully, and you can safely run the script multiple times.
+
+* Once the migration is complete, **you can access your Formbricks instance** at the same URL as before.
+
+## v2.4
+
+Formbricks v2.4 lets you create multiple endings for your surveys and choose which one users see based on logic jumps. This version also includes bug fixes and performance improvements.
+
+
+ This release will remove support for advanced targeting (enterprise targeting for app surveys) using actions (e.g. targeting users who triggered action x 3 times in the last month). Actions can still be used as triggers, but they will no longer be stored on the server to improve Formbricks' overall performance.
+
+
+### Steps to Migrate
+
+This guide is for users who are self-hosting Formbricks with our one-click setup. If you're using a different setup, you may need to adjust the commands accordingly.
+
+To follow these steps, go to the folder where your `docker-compose.yml` file is located.
+
+1. **Backup your Database**: This step is important. Please make sure to back up your database before upgrading. You can use the following command to back up your database:
+
+```bash
+docker exec formbricks-postgres-1 pg_dump -Fc -U postgres -d formbricks > formbricks_pre_v2.4_$(date +%Y%m%d_%H%M%S).dump
+```
+
+
+ If you run into “No such container”, use `docker ps` to find your container name, e.g. `formbricks_postgres_1`.
+
+
+
+ If you prefer storing the backup as a `*.sql` file, remove the `-Fc` (custom format) option. In case of a restore scenario, you will need to use `psql` then with an empty `formbricks` database.
+
+
+* Pull the latest version of Formbricks:
+
+```bash
+docker compose pull
+```
+
+* Stop the running Formbricks instance & remove the related containers:
+
+```bash
+docker compose down
+```
+
+* Restarting the containers with the latest version of Formbricks:
+
+```bash
+docker compose up -d
+```
+
+Now let's migrate the data to the latest schema:
+
+To find your Docker Network name for your Postgres Database, find it using `docker network ls`
+
+```bash
+docker pull ghcr.io/formbricks/data-migrations:v2.4.3 && \
+docker run --rm \
+ --network=formbricks_default \
+ -e DATABASE_URL="postgresql://postgres:postgres@postgres:5432/formbricks?schema=public" \
+ -e UPGRADE_TO_VERSION="v2.4" \
+ ghcr.io/formbricks/data-migrations:v2.4.3
+```
+
+The command above will migrate your data to the latest schema. This is an important step to update your data structure. Changes are only applied if the script runs successfully. You can run the script multiple times without issues.
+
+* That's it! Once the migration is done, you can access your Formbricks instance at the same URL as before.
+
+### Additional Updates
+
+* The `CRON_SECRET` environment variable is now required to enhance the security of the internal cron APIs. Please ensure that this variable is set in your environment or `docker-compose.yml`. You can generate a secure secret using `openssl rand -hex 32`
+
+## v2.3
+
+Formbricks v2.3 introduces new colour options for rating questions, enhanced multi-language support for Chinese (Simplified & Traditional), and includes several bug fixes and performance improvements.
+
+### Steps to Migrate
+
+
+ You only need to run the data migration if you have surveys set up in Chinese (`zh`). If you don't have any surveys in Chinese, you can skip the migration step.
+
+
+This guide is for users self-hosting Formbricks with our one-click setup. If you're using a different setup, adjust the commands as needed.
+
+To proceed, go to the folder where your `docker-compose.yml` file is located.
+
+* **Backup your Database**: This is a crucial step. Please make sure to backup your database before proceeding with the upgrade. You can use the following command to backup your database:
+
+```bash
+docker exec formbricks-postgres-1 pg_dump -Fc -U postgres -d formbricks > formbricks_pre_v2.3_$(date +%Y%m%d_%H%M%S).dump
+```
+
+
+ If you run into “**No such containe**r”, use `docker ps` to find your container name, e.g. `formbricks_postgres_1`.
+
+
+
+ If you prefer storing the backup as an `*.sql` file remove the `-Fc` (custom format) option. In case of a restore scenario you will need to use `psql` then with an empty `formbricks` database.
+
+
+* Pull the latest version of Formbricks:
+
+```bash
+docker compose pull
+```
+
+* Stop the running Formbricks instance & remove the related containers:
+
+```bash
+docker compose down
+```
+
+* Restarting the containers with the latest version of Formbricks:
+
+```bash
+docker compose up -d
+```
+
+* Now let's migrate the data to the latest schema:
+
+
+ To find your Docker Network name for your Postgres Database, find it using `docker network ls`
+
+
+```bash
+docker pull ghcr.io/formbricks/data-migrations:v2.3.0 && \
+docker run --rm \
+ --network=formbricks_default \
+ -e DATABASE_URL="postgresql://postgres:postgres@postgres:5432/formbricks?schema=public" \
+ -e UPGRADE_TO_VERSION="v2.3" \
+ ghcr.io/formbricks/data-migrations:v2.3.0
+
+```
+
+The command above will migrate your data to the latest schema, which is essential for updating your data structure. Changes will only be made if the script runs successfully. You can safely run the script multiple times.
+
+* Once the migration is complete, **you can access your Formbricks instance** at the same URL as before.
+
+### Additional Updates
+
+The feature to create short URLs in Formbricks is now deprecated. Existing short URLs will continue to work for now, but it is recommended to use long URLs instead. Support for short URL redirects will be removed in a future release.
+
+## v2.2
+
+Formbricks v2.2 introduces XM research presets, providing a brand-new product onboarding experience. Our goal is to make user research "obviously easy" across different industries, starting with Software-as-a-Service and E-Commerce.
+
+### Steps to Migrate
+
+This guide is for users who are self-hosting Formbricks with our one-click setup. If you're using a different setup, you may need to adjust the commands accordingly.
+
+To run all these steps, please navigate to the `formbricks` folder where your `docker-compose.yml` file is located.
+
+1. **Backup your Database**: This is a crucial step. Please make sure to backup your database before proceeding with the upgrade. You can use the following command to backup your database:
+
+```bash
+docker exec formbricks-postgres-1 pg_dump -Fc -U postgres -d formbricks > formbricks_pre_v2.2_$(date +%Y%m%d_%H%M%S).dump
+```
+
+
+ If you run into “No such container”, use `docker ps` to find your container name, e.g. `formbricks_postgres_1`.
+
+
+
+ If you prefer storing the backup as an `*.sql` file remove the `-Fc` (custom format) option. In case of a restore scenario you will need to use `psql` then with an empty `formbricks` database.
+
+
+* Pull the latest version of Formbricks:
+
+```bash
+docker compose pull
+```
+
+* Stop the running Formbricks instance & remove the related containers:
+
+```bash
+docker compose down
+```
+
+* Restarting the containers with the latest version of Formbricks:
+
+```bash
+docker compose up -d
+```
+
+* Now let's migrate the data to the latest schema:
+
+
+ To find your Docker Network name for your Postgres Database, find it using `docker network ls`
+
+
+```bash
+docker pull ghcr.io/formbricks/data-migrations:v2.2 && \
+docker run --rm \
+ --network=formbricks_default \
+ -e DATABASE_URL="postgresql://postgres:postgres@postgres:5432/formbricks?schema=public" \
+ -e UPGRADE_TO_VERSION="v2.2" \
+ ghcr.io/formbricks/data-migrations:v2.2
+```
+
+The command above will migrate your data to the latest schema. This is an important step to update your existing data. Changes will only be made if the script runs successfully. You can safely run the script multiple times.
+
+* Once the migration is complete, **you can access your Formbricks instance** at the same URL as before.
+
+### Changes in Environment Variables
+
+* The `ONBOARDING_DISABLED` environment variable is now deprecated. We have replaced the user onboarding with a product onboarding process that only runs when creating a new product.
+
+## v2.1
+
+Formbricks v2.1 introduces more options for creating No-Code Actions and improves the self-hosting experience with a new onboarding process for fresh instances.
+
+
+ To improve the user experience and simplify setup for self-hosting instances, we are transitioning to a single organization model. This change allows self-hosts to manage their instance centrally and more easily control access. A new permissions system will also be introduced soon, providing more granular control over projects and resources within an organization.
+
+ If you've previously created multiple organizations, you can still switch between them in the UI, but creating new organizations will no longer be possible.
+
+
+### Steps to Migrate
+
+This guide is for users self-hosting Formbricks using our one-click setup. If you are using a different setup, you may need to adjust the commands accordingly.
+
+To follow these steps, please navigate to the Formbricks folder where your `docker-compose.yml` file is located.
+
+* **Backup your Database**: This is an essential step. Please ensure that you back up your database before proceeding with the upgrade. You can use the following command to back it up:
+
+```bash
+docker exec formbricks-postgres-1 pg_dump -Fc -U postgres -d formbricks > formbricks_pre_v2.1_$(date +%Y%m%d_%H%M%S).dump
+```
+
+
+ If you run into “No such container”, use `docker ps` to find your container name, e.g. `formbricks_postgres_1`.
+
+
+
+ If you prefer storing the backup as a `*.sql` file remove the `-Fc` (custom format) option. In case of a restore scenario you will need to use `psql` then with an empty `formbricks` database.
+
+
+* Pull the latest version of Formbricks:
+
+```bash
+docker compose pull
+```
+
+* Stop the running Formbricks instance & remove the related containers.
+
+```bash
+docker compose down
+```
+
+* Restarting the containers with the latest version of Formbricks:
+
+```bash
+docker compose up -d
+```
+
+* Now let's migrate the data to the latest schema:
+
+
+ To find your Docker network name for the Postgres database, run the following `docker network ls`
+
+
+```bash
+docker pull ghcr.io/formbricks/data-migrations:v2.1.0 && \
+docker run --rm \
+ --network=formbricks_default \
+ -e DATABASE_URL="postgresql://postgres:postgres@postgres:5432/formbricks?schema=public" \
+ -e UPGRADE_TO_VERSION="v2.1" \
+ ghcr.io/formbricks/data-migrations:v2.1.0
+```
+
+Once the migration script runs successfully, your data will be migrated to the latest schema. The script is designed to run safely multiple times, so you don’t need to worry if it’s executed more than once. After completing the migration, you can continue to access your Formbricks instance at the same URL as before.
+
+* That's it! Once the migration is complete, you can **now access your Formbricks instance** at the same URL as before.
+
+### Changes in Environment Variables
+
+* **SIGNUP\_DISABLED** is now deprecated. Self-hosting instances have signup disabled by default, and new users can only be invited by the organization owner or admin.
+
+* **DEFAULT\_TEAM\_ID** has been renamed to **DEFAULT\_ORGANIZATION\_ID**.
+
+* **DEFAULT\_TEAM\_ROLE** has been renamed to **DEFAULT\_ORGANIZATION\_ROLE**.
+
+## v2.0
+
+Formbricks v2.0 introduces significant features such as **Multi-Language Surveys** and **Advanced Styling for Surveys**, aimed at improving the flexibility and appearance of your surveys. Additionally, the release includes several optimisations, bug fixes, and smaller improvements to ensure a smoother user experience.
+
+If you are upgrading to Formbricks v2.0, follow this guide to ensure a smooth migration of your existing Formbricks instance without encountering issues or build errors.
+
+
+ This upgrade requires a **data migration**. Please make sure to back up your database before proceeding. Follow the steps below to upgrade your Formbricks instance to v2.0.
+
+
+
+ If you've used the Formbricks Enterprise Edition with a free beta license key, your instance will be downgraded to the Community Edition 2.0. You can find all license details on the [license page](https://formbricks.com/docs/self-hosting/license).
+
+
+
+ We are moving from DockerHub to GitHub Packages for our images. If you are still pulling the images from DockerHub please change `image: formbricks/formbricks:latest` to `image:ghcr.io/formbricks/formbricks:latest` in your `docker-compose.yml` file.
+
+
+### Steps to Migrate
+
+This guide is for users who are self-hosting Formbricks using our one-click setup. If you are using a different setup, you might adjust the commands accordingly.
+
+To run all these steps, please navigate to the `formbricks` folder where your `docker-compose.yml` file is located.
+
+1. **Backup your Database**: This is an essential step. Please ensure that you back up your database before proceeding with the upgrade. You can use the following command to back it up:
+
+```bash
+docker exec formbricks-postgres-1 pg_dump -Fc -U postgres -d formbricks > formbricks_pre_v2.0_$(date +%Y%m%d_%H%M%S).dump
+```
+
+
+ If you run into “No such container”, use `docker ps` to find your container name, e.g. `formbricks_postgres_1`.
+
+
+If you prefer storing the backup as an `*.sql` file remove the `-Fc` (custom format) option. In case of a restore scenario you will need to use `psql` then with an empty `formbricks` database.
+
+* Pull the latest version of Formbricks:
+
+```bash
+docker compose pull
+```
+
+* Stop the running Formbricks instance & remove the related containers:
+
+```bash
+docker compose down
+```
+
+* Restarting the containers with the latest version of Formbricks:
+
+```bash
+docker compose up -d
+```
+
+* Now let's migrate the data to the latest schema:
+
+
+ To find your Docker Network name for your Postgres Database, find it using `docker network ls`
+
+
+```bash
+docker pull ghcr.io/formbricks/data-migrations:v2.0.3 && \
+docker run --rm \
+ --network=formbricks_default \
+ -e DATABASE_URL="postgresql://postgres:postgres@postgres:5432/formbricks?schema=public" \
+ -e UPGRADE_TO_VERSION="v2.0" \
+ ghcr.io/formbricks/data-migrations:v2.0.3
+```
+
+The above command will migrate your data to the latest schema. This is a crucial step to migrate your existing data to the new structure. Only if the script runs successful, changes are made to the database. The script can safely run multiple times.
+
+* That's it! Once the migration is complete, you can **now access your Formbricks instance** at the same URL as before.
+
+### App Surveys with @formbricks/js
+
+With this upgrade, we now dynamically fetch the package from our API endpoint and have updated the package entry points to support both app and website surveys. This ensures that you always have the latest version of the package (v2.0.0+).
+
+**Old approach:** (v1.6.5)
+
+```ts
+import formbricks from "@formbricks/js";
+
+formbricks.init({
+ environmentId: "",
+ apiHost: "",
+ userId: "", // optional
+});
+
+```
+
+**New approach:** (v2.0.0)
+
+Website surveys:
+
+```ts
+import formbricks from "@formbricks/js/website";
+
+formbricks.init({
+ environmentId: "",
+ apiHost: "",
+ // userId is not supported here
+});
+
+```
+
+App surveys:
+
+```ts
+import formbricks from "@formbricks/js/app";
+
+formbricks.init({
+ environmentId: "",
+ apiHost: "",
+ userId: "", // required
+});
+
+```
+
+## v1.6
+
+Formbricks v1.6 introduces key features like Advanced Targeting, Segmentation, on-the-fly survey triggers, and stability improvements. This update also changes some environment variables. Follow this guide to upgrade your Formbricks instance to v1.6 smoothly.
+
+
+ This upgrade requires a data migration. Ensure you back up your database before proceeding. Follow the steps below to upgrade your Formbricks instance to v1.6.
+
+
+### Steps to Migrate
+
+This guide is for users self-hosting Formbricks with our one-click setup. If you're using a different setup, adjust the commands accordingly.
+
+Navigate to the Formbricks folder containing your `docker-compose.yml` file to run the steps.
+
+* **Backup your Database**: This is a crucial step. Please make sure to backup your database before proceeding with the upgrade. You can use the following command to backup your database:
+
+```bash
+docker exec formbricks-quickstart-postgres-1 pg_dump -Fc -U postgres -d formbricks > formbricks_pre_v1.6_$(date +%Y%m%d_%H%M%S).dump
+```
+
+
+ If you run into “No such container”, use `docker ps` to find your container name, e.g. `formbricks_postgres_1`.
+
+
+
+ If you prefer storing the backup as a `*.sql` file remove the `-Fc` (custom format) option. In case of a restore scenario you will need to use `psql` then with an empty `formbricks` database.
+
+
+* Stop the running Formbricks instance & remove the related containers:
+
+```bash
+docker compose down
+```
+
+* Restarting the containers will automatically pull the latest version of Formbricks:
+
+```bash
+docker compose up -d
+```
+
+* Now let's migrate the data to the latest schema:
+
+
+ To find your Docker Network name for your Postgres Database, find it using `docker network ps`
+
+
+```bash
+docker run --rm \
+ --network=formbricks_default \
+ -e DATABASE_URL="postgresql://postgres:postgres@postgres:5432/formbricks?schema=public" \
+ -e UPGRADE_TO_VERSION="v1.6" \
+ ghcr.io/formbricks/data-migrations:v1.6.1
+
+```
+
+The above command will migrate your data to the latest schema. This is a crucial step to migrate your existing data to the new structure. Only if the script runs successful, changes are made to the database. The script can safely run multiple times.
+
+1. That's it! Once the migration is complete, you can **now access your Formbricks instance** at the same URL as before.
+
+#### Restoring the database after a failed upgrade
+
+```bash
+docker exec -i formbricks-quickstart-postgres-1 pg_restore --clean -U postgres -v -d formbricks < formbricks_pre_v1.6_.dump
+```
+
+
+ Replace the path to `formbricks_pre_v1.6_.dump` with the exact path to your `.dump` file.
+
+
+
+ This will wipe the database and restore from the `.dump` file.
+
+
+### App Surveys with `@formbricks/js`
+
+If you're using the `@formbricks/js` package, update it to version \~1.6.5 to access the latest features and improvements.
+
+
+ Currently, the package needs to be pinned to `~1.6.5`, see [this issue](https://github.com/formbricks/formbricks/issues/2273).
+
+
+### Upgrade and pin the client package
+
+```bash
+npm install @formbricks/js@~1.6.5
+```
+
+### Deprecated Environment Variables
+
+| Environment Variable | Comments |
+| ---------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `GITHUB_AUTH_ENABLED` | Was used to enable GitHub OAuth, but from v1.6, you can just set the `GITHUB_ID` and `GITHUB_SECRET` environment variables. |
+| `GOOGLE_AUTH_ENABLED` | Was used to enable Google OAuth, but from v1.6, you can just set the `GOOGLE_CLIENT_ID` and `GOOGLE_CLIENT_SECRET` environment variables. |
+| `AZUREAD_AUTH_ENABLED` | Was used to enable AzureAD OAuth, but from v1.6, you can just set the `AZUREAD_CLIENT_ID`, `AZUREAD_CLIENT_SECRET` & `AZUREAD_TENANT_ID` environment variables. |
+
+## v1.2
+
+Formbricks v1.2 introduces new features for Link Surveys and enhances security. However, there are some breaking changes related to environment variables. This guide will help you upgrade your Formbricks instance to v1.2 smoothly.
+
+### New Environment Variables
+
+| Environment Variable | Required | Recommended Generation | Comments |
+| -------------------- | -------- | ----------------------- | ----------------------------------------------------------- |
+| `ENCRYPTION_KEY` | true | `openssl rand -hex 32` | Needed for 2 Factor Authentication |
+| `SHORT_URL_BASE` | false | `` | Needed if you want to enable shorter links for Link Surveys |
+
+### Deprecated / Removed Environment Variables
+
+| Environment Variable | Comments |
+| -------------------- | --------------------------------------------------------------------------- |
+| `SURVEY_BASE_URL` | The `WEBAPP_URL` is now used to determine the survey base URL in all places |
+
+## v1.1
+
+Formbricks v1.1 introduces new features and improvements but includes breaking changes with environment variables. This guide will help you upgrade your Formbricks instance to v1.1 without data loss.
+
+### Renamed Environment Variables
+
+| till v1.0 | v1.1 |
+| ----------------------------------------- | ----------------------------- |
+| `NEXT_PUBLIC_EMAIL_VERIFICATION_DISABLED` | `EMAIL_VERIFICATION_DISABLED` |
+| `NEXT_PUBLIC_PASSWORD_RESET_DISABLED` | `PASSWORD_RESET_DISABLED` |
+| `NEXT_PUBLIC_SIGNUP_DISABLED` | `SIGNUP_DISABLED` |
+| `NEXT_PUBLIC_INVITE_DISABLED` | `INVITE_DISABLED` |
+| `NEXT_PUBLIC_PRIVACY_URL` | `PRIVACY_URL` |
+| `NEXT_PUBLIC_TERMS_URL` | `TERMS_URL` |
+| `NEXT_PUBLIC_IMPRINT_URL` | `IMPRINT_URL` |
+| `NEXT_PUBLIC_GITHUB_AUTH_ENABLED` | `GITHUB_AUTH_ENABLED` |
+| `NEXT_PUBLIC_GOOGLE_AUTH_ENABLED` | `GOOGLE_AUTH_ENABLED` |
+| `NEXT_PUBLIC_WEBAPP_URL` | `WEBAPP_URL` |
+| `NEXT_PUBLIC_IS_FORMBRICKS_CLOUD` | `IS_FORMBRICKS_CLOUD` |
+| `NEXT_PUBLIC_SURVEY_BASE_URL` | `SURVEY_BASE_URL` |
+
+Please note that their values and the logic remains exactly the same. Only the prefix has been deprecated. The other environment variables remain the same as well.
+
+### Deprecated Environment Variables
+
+* **`NEXT_PUBLIC_VERCEL_URL`**: Was used as Vercel URL (used instead of `WEBAPP_URL)`, but from v1.1, you can just set the `WEBAPP_URL` environment variable to your Vercel URL.
+
+* **`RAILWAY_STATIC_URL`**: Was used as Railway Static URL (used instead of `WEBAPP_URL`), but from v1.1, you can just set the `WEBAPP_URL` environment variable.
+
+* **`RENDER_EXTERNAL_URL`**: Was used as an external URL to Render (used instead of `WEBAPP_URL`), but from v1.1, you can just set the `WEBAPP_URL` environment variable.
+
+* **`HEROKU_APP_NAME`**: Was used to build the App name on a Heroku hosted webapp, but from v1.1, you can just set the `WEBAPP_URL` environment variable.
+
+* **`NEXT_PUBLIC_WEBAPP_URL`**: Was used for the same purpose as `WEBAPP_URL`, but from v1.1, you can just set the `WEBAPP_URL` environment variable.
+
+* **`PRISMA_GENERATE_DATAPROXY`**: Was used to tell Prisma that it should generate the runtime for Dataproxy usage. But its officially deprecated now.
+
+### Helper Shell Script
+
+For a seamless migration, below is a shell script for your self-hosted instance that will automatically update your environment variables to be compliant with the new naming conventions.
+
+### Docker & Single Script Setup
+
+Now that these variables can be defined at runtime, you can append them inside your `x-environment` in the `docker-compose.yml` itself.
+For a more detailed guide on these environment variables, please refer to the [Important Runtime Variables](/self-hosting/docker#important-run-time-variables) section.
+
+```yaml docker-compose.yml
+version: "3.3"
+x-environment: &environment
+ environment:
+ # The url of your Formbricks instance used in the admin panel
+ WEBAPP_URL:
+
+ # Required for next-auth. Should be the same as WEBAPP_URL
+ NEXTAUTH_URL:
+
+ # PostgreSQL DB for Formbricks to connect to
+ DATABASE_URL: "postgresql://postgres:postgres@postgres:5432/formbricks?schema=public"
+
+ # NextJS Auth
+ # @see: https://next-auth.js.org/configuration/options#nextauth_secret
+ # You can use: `openssl rand -hex 32` to generate one
+ NEXTAUTH_SECRET:
+
+ # PostgreSQL password
+ POSTGRES_PASSWORD: postgres
+
+ # Email Configuration
+ MAIL_FROM:
+ SMTP_HOST:
+ SMTP_PORT:
+ SMTP_SECURE_ENABLED:
+ SMTP_USER:
+ SMTP_PASSWORD:
+
+ # Uncomment the below and set it to 1 to disable Email Verification for new signups
+ # EMAIL_VERIFICATION_DISABLED:
+
+ # Uncomment the below and set it to 1 to disable Password Reset
+ # PASSWORD_RESET_DISABLED:
+
+ # Uncomment the below and set it to 1 to disable Signups
+ # SIGNUP_DISABLED:
+
+ # Uncomment the below and set it to 1 to disable loging in with email
+ # EMAIL_AUTH_DISABLED:
+
+ # Uncomment the below and set it to 1 to disable Invites
+ # INVITE_DISABLED:
+
+ # Uncomment the below and set a value to have your own Privacy Page URL on the signup & login page
+ # PRIVACY_URL:
+
+ # Uncomment the below and set a value to have your own Terms Page URL on the auth and the surveys page
+ # TERMS_URL:
+
+ # Uncomment the below and set a value to have your own Imprint Page URL on the auth and the surveys page
+ # IMPRINT_URL:
+
+ # Uncomment the below and set to 1 if you want to enable GitHub OAuth
+ # GITHUB_AUTH_ENABLED:
+ # GITHUB_ID:
+ # GITHUB_SECRET:
+
+ # Uncomment the below and set to 1 if you want to enable Google OAuth
+ # GOOGLE_AUTH_ENABLED:
+ # GOOGLE_CLIENT_ID:
+ # GOOGLE_CLIENT_SECRET:
+
+```
+
+If you have any questions or require help, feel free to reach out to us on [**GitHub Discussions**](https://github.com/formbricks/formbricks/discussions). 😃[
+](https://formbricks.com/docs/developer-docs/rest-api)
\ No newline at end of file
diff --git a/docs/self-hosting/advanced/rate-limiting.mdx b/docs/self-hosting/advanced/rate-limiting.mdx
new file mode 100644
index 0000000000..39631ebb15
--- /dev/null
+++ b/docs/self-hosting/advanced/rate-limiting.mdx
@@ -0,0 +1,41 @@
+---
+title: "Rate Limiting"
+description: "Rate limiting for Formbricks"
+icon: "timer"
+---
+
+To protect the platform from abuse and ensure fair usage, rate limiting is enforced by default on an IP-address basis. If a client exceeds the allowed number of requests within the specified time window, the API will return a `429 Too Many Requests` status code.
+
+## Default Rate Limits
+
+The following rate limits apply to various endpoints:
+
+| **Endpoint** | **Rate Limit** | **Time Window** |
+| ----------------------- | -------------- | --------------- |
+| `POST /login` | 30 requests | 15 minutes |
+| `POST /signup` | 30 requests | 60 minutes |
+| `POST /verify-email` | 10 requests | 60 minutes |
+| `POST /forgot-password` | 5 requests | 60 minutes |
+| `GET /client-side-api` | 100 requests | 1 minute |
+| `POST /share` | 100 requests | 60 minutes |
+
+If a request exceeds the defined rate limit, the server will respond with:
+
+```json
+{
+ "code": 429,
+ "error": "Too many requests, Please try after a while!"
+}
+```
+
+## Disabling Rate Limiting
+
+For self-hosters, rate limiting can be disabled if necessary. However, we **strongly recommend keeping rate limiting enabled in production environments** to prevent abuse.
+
+To disable rate limiting, set the following environment variable:
+
+```bash
+RATE_LIMITING_DISABLED=1
+```
+
+After making this change, restart your server to apply the new setting.
\ No newline at end of file
diff --git a/docs/self-hosting/configuration/custom-ssl.mdx b/docs/self-hosting/configuration/custom-ssl.mdx
new file mode 100644
index 0000000000..257d898fe3
--- /dev/null
+++ b/docs/self-hosting/configuration/custom-ssl.mdx
@@ -0,0 +1,149 @@
+---
+title: "Custom SSL Certificate"
+description: "Using Formbricks One-Click Setup with a Custom SSL Certificate."
+icon: "lock"
+---
+
+
+ Formbricks One-Click setup already comes with a valid SSL certificate using **Let's Encrypt**. This guide is only if you already have a valid SSL certificate that you need to use due to company policy or other requirements.
+
+
+Formbricks' One-Click setup automatically creates an SSL certificate using **Let's Encrypt**. However, some setups need a custom SSL certificate. This is common for intranets or systems with special certificate rules that use an internal or custom certificate authority (CA).
+
+### Step 1: Navigate to the Formbricks Folder
+
+Move into the `formbricks/` directory:
+
+```bash
+cd formbricks
+```
+
+### Step 2: Create a Folder for SSL Certificates
+
+Create a folder called `certs` and place your SSL certificate files inside:
+
+```bash
+mkdir certs
+# Move your SSL certificate files to the certs folder
+mv /path/to/your/fullchain.crt certs/
+mv /path/to/your/cert.key certs/
+```
+
+### Step 3: Understand SSL Certificate Files
+
+* **fullchain.crt** – Your SSL certificate, including the full certificate chain.
+
+* **cert.key** – The private key used to encrypt data.
+
+### Step 4: Set Correct File Permissions
+
+Ensure the certificate files have the right permissions:
+
+```bash
+sudo chown root:root certs/*
+sudo chmod 600 certs/*
+```
+
+### Step 5: Update `traefik.yaml`
+
+Modify the file to define HTTP and HTTPS settings:
+
+
+ ```yaml traefik.yaml
+ entryPoints:
+ web:
+ address: ":80"
+ http:
+ redirections:
+ entryPoint:
+ to: websecure
+ scheme: https
+ permanent: true
+ websecure:
+ address: ":443"
+
+ providers:
+ docker:
+ watch: true
+ exposedByDefault: false
+ file:
+ directory: /etc/traefik/dynamic
+ ```
+
+
+### Step 6: Create `certs-traefik.yaml`
+
+Create a `certs-traefik.yaml` file that specifies the path to your custom SSL certificate and key.
+
+
+ ```yaml certs-traefik.yaml
+ tls:
+ certificates:
+ - certFile: /certs/fullchain.crt
+ keyFile: /certs/cert.key
+ ```
+
+
+### Step 7: Update `docker-compose.yml`
+
+Modify the configuration to enforce SSL. The rest of the configuration should remain the same as the One-Click setup:
+
+
+ ```yaml docker-compose.yml
+ services:
+ formbricks:
+ restart: always
+ image: ghcr.io/formbricks/formbricks:latest
+ depends_on:
+ - postgres
+ labels:
+ - "traefik.enable=true" # Enable Traefik for this service
+ - "traefik.http.routers.formbricks.rule=Host(`my-domain.com`)" # Use your actual domain or IP
+ - "traefik.http.routers.formbricks.entrypoints=websecure" # Use the websecure entrypoint (port 443 with TLS)
+ - "traefik.http.routers.formbricks.tls=true" # Enable TLS
+ - "traefik.http.services.formbricks.loadbalancer.server.port=3000" # Forward traffic to Formbricks on port 3000
+ ports:
+ - 3000:3000
+ volumes:
+ - uploads:/home/nextjs/apps/web/uploads/
+ <<: *environment
+
+ traefik:
+ image: "traefik:v2.7"
+ restart: always
+ container_name: "traefik"
+ depends_on:
+ - formbricks
+ ports:
+ - "80:80"
+ - "443:443"
+ - "8080:8080"
+ volumes:
+ - ./traefik.yaml:/traefik.yaml
+ - ./acme.json:/acme.json
+ - /var/run/docker.sock:/var/run/docker.sock:ro
+ - ./certs:/certs
+ - ./certs-traefik.yaml:/etc/traefik/dynamic/certs-traefik.yaml
+ ```
+
+
+## Summary
+
+* **Navigate to the Formbricks folder**
+
+* **Create a `certs/` folder** and move your certificate files inside.
+
+* **Ensure you have the correct certificate files** (`fullchain.crt` and `cert.key`).
+
+* **Update file permissions** for security.
+
+* **Modify `traefik.yaml`** to handle HTTPS.
+
+* **Create `certs-traefik.yaml`** to point to your certificate files.
+
+* **Update `docker-compose.yml`** to use your custom SSL certificate.
+
+This setup ensures that Formbricks securely communicates using your own SSL certificate. 🚀
+
+If you have any questions or require help, feel free to reach out to us on [**GitHub Discussions**](https://github.com/formbricks/formbricks/discussions). 😃[
+](https://formbricks.com/docs/developer-docs/rest-api)
\ No newline at end of file
diff --git a/docs/self-hosting/configuration/environment-variables.mdx b/docs/self-hosting/configuration/environment-variables.mdx
new file mode 100644
index 0000000000..e4658819bd
--- /dev/null
+++ b/docs/self-hosting/configuration/environment-variables.mdx
@@ -0,0 +1,63 @@
+---
+title: "Environment Variables"
+description: "Environment variables for Formbricks"
+icon: "code"
+---
+
+#### Custom Configurations
+
+These variables are present inside your machine’s docker-compose file. Restart the docker containers if you change any variables for them to take effect.
+
+| Variable | Description | Required | Default |
+| ---------------------------- | -------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------------------------- |
+| WEBAPP_URL | Base URL of the site. | required | http://localhost:3000 |
+| NEXTAUTH_URL | Location of the auth server. This should normally be the same as WEBAPP_URL | required | http://localhost:3000 |
+| DATABASE_URL | Database URL with credentials. | required | |
+| NEXTAUTH_SECRET | Secret for NextAuth, used for session signing and encryption. | required | (Generated by the user, must not exceed 32 bytes, `openssl rand -hex 32`) |
+| ENCRYPTION_KEY | Secret for used by Formbricks for data encryption | required | (Generated by the user, must not exceed 32 bytes, `openssl rand -hex 32`) |
+| CRON_SECRET | API Secret for running cron jobs. | required | (Generated by the user, must not exceed 32 bytes, `openssl rand -hex 32`) |
+| UPLOADS_DIR | Local directory for storing uploads. | optional | ./uploads |
+| S3_ACCESS_KEY | Access key for S3. | optional | (resolved by the AWS SDK) |
+| S3_SECRET_KEY | Secret key for S3. | optional | (resolved by the AWS SDK) |
+| S3_REGION | Region for S3. | optional | (resolved by the AWS SDK) |
+| S3_BUCKET_NAME | S3 bucket name for data storage. Formbricks enables S3 storage when this is set. | optional (required if S3 is enabled) | |
+| S3_ENDPOINT_URL | Endpoint for S3. | optional | (resolved by the AWS SDK) |
+| PRIVACY_URL | URL for privacy policy. | optional | |
+| TERMS_URL | URL for terms of service. | optional | |
+| IMPRINT_URL | URL for imprint. | optional | |
+| IMPRINT_ADDRESS | Address for imprint. | optional | |
+| EMAIL_AUTH_DISABLED | Disables the ability for users to signup or login via email and password if set to 1. | optional | |
+| PASSWORD_RESET_DISABLED | Disables password reset functionality if set to 1. | optional | |
+| EMAIL_VERIFICATION_DISABLED | Disables email verification if set to 1. | optional | |
+| RATE_LIMITING_DISABLED | Disables rate limiting if set to 1. | optional | |
+| INVITE_DISABLED | Disables the ability for invited users to create an account if set to 1. | optional | |
+| MAIL_FROM | Email address to send emails from. | optional (required if email services are to be enabled) | |
+| SMTP_HOST | Host URL of your SMTP server. | optional (required if email services are to be enabled) | |
+| SMTP_PORT | Host Port of your SMTP server. | optional (required if email services are to be enabled) | |
+| SMTP_USER | Username for your SMTP Server. | optional (required if email services are to be enabled) | |
+| SMTP_PASSWORD | Password for your SMTP Server. | optional (required if email services are to be enabled) | |
+| SMTP_AUTHENTICATED | If set to 0, the server will not require SMTP_USER and SMTP_PASSWORD(default is 1) | optional | |
+| SMTP_SECURE_ENABLED | SMTP secure connection. For using TLS, set to 1 else to 0. | optional (required if email services are to be enabled) | |
+| SMTP_REJECT_UNAUTHORIZED_TLS | If set to 0, the server will accept connections without requiring authorization from the list of supplied CAs. | optional | 1 |
+| TURNSTILE_SITE_KEY | Site key for Turnstile. | optional | |
+| TURNSTILE_SECRET_KEY | Secret key for Turnstile. | optional | |
+| GITHUB_ID | Client ID for GitHub. | optional (required if GitHub auth is enabled) | |
+| GITHUB_SECRET | Secret for GitHub. | optional (required if GitHub auth is enabled) | |
+| GOOGLE_CLIENT_ID | Client ID for Google. | optional (required if Google auth is enabled) | |
+| GOOGLE_CLIENT_SECRET | Secret for Google. | optional (required if Google auth is enabled) | |
+| STRIPE_SECRET_KEY | Secret key for Stripe integration. | optional | |
+| STRIPE_WEBHOOK_SECRET | Webhook secret for Stripe integration. | optional | |
+| TELEMETRY_DISABLED | Disables telemetry if set to 1. | optional | |
+| DEFAULT_BRAND_COLOR | Default brand color for your app (Can be overwritten from the UI as well). | optional | #64748b |
+| DEFAULT_ORGANIZATION_ID | Automatically assign new users to a specific organization when joining | optional | |
+| DEFAULT_ORGANIZATION_ROLE | Role of the user in the default organization. | optional | owner |
+| OIDC_DISPLAY_NAME | Display name for Custom OpenID Connect Provider | optional | |
+| OIDC_CLIENT_ID | Client ID for Custom OpenID Connect Provider | optional (required if OIDC auth is enabled) | |
+| OIDC_CLIENT_SECRET | Secret for Custom OpenID Connect Provider | optional (required if OIDC auth is enabled) | |
+| OIDC_ISSUER | Issuer URL for Custom OpenID Connect Provider (should have .well-known configured at this) | optional (required if OIDC auth is enabled) | |
+| OIDC_SIGNING_ALGORITHM | Signing Algorithm for Custom OpenID Connect Provider | optional | RS256 |
+| OPENTELEMETRY_LISTENER_URL | URL for OpenTelemetry listener inside Formbricks. | optional | |
+| CUSTOM_CACHE_DISABLED | Disables custom cache handler if set to 1 (required for deployment on Vercel) | optional | |
+
+Note: If you want to configure something that is not possible via above, please open an issue on our GitHub repo here or reach out to us on Github Discussions and we’ll try our best to work out a solution with you.
+
diff --git a/docs/self-hosting/configuration/integrations/airtable.mdx b/docs/self-hosting/configuration/integrations/airtable.mdx
new file mode 100644
index 0000000000..443a7fb9e8
--- /dev/null
+++ b/docs/self-hosting/configuration/integrations/airtable.mdx
@@ -0,0 +1,63 @@
+export const metadata = {
+ title: "Airtable (On Premise)",
+ description: "Instantly populate your Airtable table with survey data",
+};
+
+#### On Premise: Integrations
+
+# Airtable (On Premise)
+
+The Airtable integration allows you to automatically send responses to an Airtable of your choice.
+
+
+ If you are using Formbricks Cloud, you will need to configure this
+ integration differently. Please follow this guide
+ [here](/xm-and-surveys/core-features/integrations/airtable) to set it up.
+
+
+## Setup
+
+Enabling the Airtable Integration in a self-hosted environment requires creating an airtable account and changing the environment variables of your Formbricks instance.
+
+
+ If your Airtable app is in development use, please ensure that the email used in the Airtable integration matches the email used in the Airtable OAuth app. To use other email addresses, you need to fill this information in your OAuth app settings again:
+
+ 
+
+
+* Go to the [Airtable](https://airtable.com) and create a new account if you dont already have one.
+
+* Click on user icon on top left and open to **Developer hub**
+
+
+
+* Navigate to OAuth integrations and click on **Register an OAuth integrations**
+
+
+
+* Select a name for your integration and also add a redirect URL which will be `/api/v1/integrations/airtable/callback`
+ 
+
+* . Now fill some basic details about your integrations and then go to scope section. You need to **enable** 5 scopes:
+
+ * data.records:read
+
+ * data.records:write
+
+ * schema.bases:read
+
+ * schema.bases:write
+
+ * user.email:read
+
+
+
+* Click on the "Save" button and you are done
+
+* Now just copy **Client ID** for your integration & add it to your **Formbricks environment variables** as in the docker compose file:
+
+* `AIRTABLE_CLIENT_ID`
+
+Voila! You have successfully enabled the Airtable integration in your self-hosted Formbricks instance. Now you can follow the steps mentioned in [Airtable Integration with Formbricks](/developer-docs/integrations/airtable) section to link an Airtable with Formbricks.
+
+Still struggling or something not working as expected? [Join our Github Discussions](https://github.com/formbricks/formbricks/discussions) and we'd be glad to assist you!
diff --git a/docs/self-hosting/configuration/integrations/google-sheets.mdx b/docs/self-hosting/configuration/integrations/google-sheets.mdx
new file mode 100644
index 0000000000..5ec422603b
--- /dev/null
+++ b/docs/self-hosting/configuration/integrations/google-sheets.mdx
@@ -0,0 +1,92 @@
+export const metadata = {
+ title: "Google Sheets (On Premise)",
+ description: "Instantly populate your Google Sheet table with survey data",
+};
+
+#### On Premise: Integrations
+
+# Google Sheets (On Premise)
+
+The Google Sheets integration allows you to automatically send responses to an Google Sheets of your choice.
+
+
+ If you are using Formbricks Cloud, you will need to configure this
+ integration differently. Please follow this guide
+ [here](/xm-and-surveys/core-features/integrations/google-sheets) to set it up.
+
+
+## Setup
+
+Integrating Google Sheets with a self-hosted Formbricks instance requires configuring Google Cloud and updating your environment variables.
+
+
+ If your Google Cloud Console project has a publishing status of "Testing" your refresh token will expire after 7 days. To avoid that, you need to change the publishing status to "Production". [Google OAuth 2.0 documentation](https://developers.google.com/identity/protocols/oauth2?hl=en#expiration)
+
+
+* Go to the [Google Cloud Console](https://console.cloud.google.com/) and **create a new project**.
+
+* Enable necessary APIs:
+
+ * Now select the project you just created and go to the **APIs & Services** section.
+
+ * Click on the **Enable APIs and Services** button and search for **Google Sheets API** and enable it.
+
+* Configure OAuth Consent Screen:
+
+ * Go to **OAuth Consent screen** and select the appropriate User Type (External or Internal). Select **Internal** if you want only the users of your Google Workspace to be able to use the integration.
+
+ * Fill the required details:
+
+ * App name: Name displayed during OAuth authentication.
+
+ * User support email and Developer contact information: Your contact details for support.
+
+ * Click on **Save and Continue**.
+
+* Add required Scopes:
+
+* Click on the **Add or Remove Scopes** button and add the scopes:
+
+ * [`https://www.googleapis.com/auth/userinfo.email`](https://www.googleapis.com/auth/userinfo.email)
+
+ * [`https://www.googleapis.com/auth/spreadsheets`](https://www.googleapis.com/auth/spreadsheets)
+
+* Click on the **Update** button. Verify the scopes and click on the **Save and Continue** button.
+
+* Skip the **Test Users** section and click on the **Save and Continue** button.
+
+* View the OAuth Consent Screen summary and click on the **Back to Dashboard** button.
+
+* Register OAuth Client:
+
+* Navigate to **Credentials** > **Create Credentials** > **OAuth Client ID**.
+
+* Select **Web Application** and set:
+
+ * Name: Name of the OAuth Client ID.
+
+ * Authorized JavaScript Origins: `https://`
+
+ * Authorized redirect URIs: `https:///api/google-sheet/callback`
+
+* Save and note the Client ID and Client Secret.
+
+* Copy the Client ID and Client Secret and set them as environment variables in your Formbricks instance:
+
+ * `GOOGLE_SHEETS_CLIENT_ID`
+
+ * `GOOGLE_SHEETS_CLIENT_SECRET`
+
+ * `GOOGLE_SHEETS_REDIRECT_URL`
+
+Now just copy **GOOGLE\_SHEETS\_CLIENT\_ID**, **GOOGLE\_SHEETS\_CLIENT\_SECRET** and **GOOGLE\_SHEETS\_REDIRECT\_URL** for your integration & add it to your **Formbricks environment variables** as in the docker compose file:
+
+* `GOOGLE_SHEETS_CLIENT_ID`
+
+* `GOOGLE_SHEETS_CLIENT_SECRET`
+
+* `GOOGLE_SHEETS_REDIRECT_URL`
+
+Voila! You have successfully enabled the Google Sheets integration in your self-hosted Formbricks instance. Now you can follow the steps mentioned in [Google Sheets Integration with Formbricks](/developer-docs/integrations/google-sheets) section to link a Google Sheet with Formbricks.
+
+Still struggling or something not working as expected? [Join our Github Discussions](https://github.com/formbricks/formbricks/discussions) and we'd be glad to assist you!
diff --git a/docs/self-hosting/configuration/integrations/n8n.mdx b/docs/self-hosting/configuration/integrations/n8n.mdx
new file mode 100644
index 0000000000..c27c326de5
--- /dev/null
+++ b/docs/self-hosting/configuration/integrations/n8n.mdx
@@ -0,0 +1,84 @@
+export const metadata = {
+ title: "n8n (On Premise)",
+ description: "Set up automations with your self-hosted n8n instance.",
+};
+
+#### On Premise: Integrations
+
+# n8n (On Premise)
+
+The n8n integration allows you to create automations based on survey responses.
+
+
+ If you are using Formbricks Cloud, you will need to configure this
+ integration differently. Please follow this guide
+ [here](/xm-and-surveys/core-features/integrations/n8n) to set it up.
+
+
+## Setup
+
+
+Enabling the n8n integration in a self-hosted environment requires a new workflow setup using n8n and changing the environment variables of your Formbricks instance.
+
+* Setup your n8n workflow: Go to [n8n.io](https://n8n.io) and create a new workflow. Search for “Formbricks” to get started:
+
+
+
+* **Connect Formbricks with n8n**: Now, you have to connect n8n with Formbricks via an API Key:
+
+
+
+* Click on Create New Credentail button to add your host and API Key
+
+
+
+Now you need an API key. Please refer to the [API Key Setup](/additional-features/api#how-to-generate-an-api-key) page to learn how to create one.
+
+Once you copied it in the API Key field, hit Save button to test the connection and save the credentials.
+
+
+
+* Select Event: Next, you can choose the event you want to trigger the node on. You can select multiple events:
+
+
+
+Here, we are adding `Response Finished` as an event, which will trigger when the survey has been filled out.
+
+* Select Survey: Next, you can choose from all the surveys you have created in this environment. You can select multiple surveys:
+
+
+
+Here, we are selecting two surveys.
+
+
+
+* Test your trigger: In order to set up n8n you'll need a test response in the selected survey. This allows you to select the individual values of each response in your workflow. If you have Formbricks running locally and you want to set up an app survey, you can use our [Demo App](/contributing/demo) to trigger a survey and submit a response.
+
+
+
+Next, click on Listen for event button.
+
+
+
+Then, go to the survey which you selected. Fill it out, and wait for the particular event to trigger (in this case it's `Response Finished`). Once the event is triggered you will see the response that you filled out in the survey.
+
+
+
+Now you have all the data you need at hand. The next steps depend on what you want to do with it. In this tutorial, we will send submissions to a discord channel:
+
+1. Add Discord to your workflow: Click on the plus and search `Discord`.
+
+
+
+Fill in the `Webhook URL` and the `Content` that you want to receive in the respective discord channel. Next, click on `Execute Node` button to test the node.
+
+
+
+Once the execution is successful, you'll receive the content in the discord channel.
+
+
+
+Voila! You have successfully enabled the n8n integration in your self-hosted Formbricks instance. Now you can follow the steps mentioned in the [Formbricks](/developer-docs/integrations/n8n) Integrations section to know more about the capabilities with Formbricks with n8n.
+
+
+Still struggling or something not working as expected? [Join our Github Discussions](https://github.com/formbricks/formbricks/discussions) and we'd be glad to assist you!
diff --git a/docs/self-hosting/configuration/integrations/notion.mdx b/docs/self-hosting/configuration/integrations/notion.mdx
new file mode 100644
index 0000000000..ad852684bd
--- /dev/null
+++ b/docs/self-hosting/configuration/integrations/notion.mdx
@@ -0,0 +1,47 @@
+export const metadata = {
+ title: "Notion (On Premise)",
+ description: "Instantly populate a Notion database with survey data",
+};
+
+#### On Premise: Integrations
+
+# Notion (On Premise)
+
+The Notion integration allows you to automatically send responses to a Notion database of your choice.
+
+
+ If you are using Formbricks Cloud, you will need to configure this
+ integration differently. Please follow this guide
+ [here](/xm-and-surveys/core-features/integrations/notion) to set it up.
+
+
+## Setup
+
+Enabling the Notion Integration in a self-hosted environment requires a setup using Notion account and changing the environment variables of your Formbricks instance.
+
+* Sign up for a [Notion](https://www.notion.so/) account, if you don't have one already.
+
+* Go to the [my integrations](https://www.notion.so/my-integrations) page and click on **New integration**.
+
+* Fill up the basic information like **Name**, **Logo** and click on **Submit**.
+
+* Now, click on **Distribution** tab on the sidebar. A text will appear which will ask you to make the integration public. Click on that toggle button. A form will appear below the text.
+
+* Now provide it the details such as requested. Under **Redirect URIs** field:
+
+ * If you are running formbricks locally, you can enter `http://localhost:3000/api/v1/integrations/notion/callback`.
+
+ * Or, you can enter `https:///api/v1/integrations/notion/callback`
+
+* Once you've filled all the necessary details, click on **Submit**.
+
+* Now just copy from the screen the **Client ID** and **Client secret** for your integration & add it to your **Formbricks environment variables** as in the docker compose file:
+
+ * `NOTION_OAUTH_CLIENT_ID` - OAuth Client ID
+
+ * `NOTION_OAUTH_CLIENT_SECRET` - OAuth Client Secret
+
+Voila! You have successfully enabled the Notion integration in your self-hosted Formbricks instance. Now you can follow the steps mentioned in [Notion Integration with Formbricks](/developer-docs/integrations/notion) section to link your Notion with Formbricks.
+
+
+Still struggling or something not working as expected? [Join our Github Discussions](https://github.com/formbricks/formbricks/discussions) and we'd be glad to assist you!
diff --git a/docs/self-hosting/configuration/integrations/slack.mdx b/docs/self-hosting/configuration/integrations/slack.mdx
new file mode 100644
index 0000000000..1607d20916
--- /dev/null
+++ b/docs/self-hosting/configuration/integrations/slack.mdx
@@ -0,0 +1,64 @@
+export const metadata = {
+ title: "Slack (On Premise)",
+ description: "Send survey responses automatically to Slack workspace.",
+};
+
+#### On Premise: Integrations
+
+# Slack (On Premise)
+
+Send survey responses automatically to Slack workspace.
+
+
+ If you are using Formbricks Cloud, you will need to configure this
+ integration differently. Please follow this guide
+ [here](/xm-and-surveys/core-features/integrations/slack) to set it up.
+
+
+## Setup
+
+Enabling the Slack Integration in a self-hosted environment requires a setup using slack workspace account and changing the environment variables of your Formbricks instance.
+
+Make sure your self-hosted Formbricks instance works with SSL as Slack requires it.
+
+* Create a Slack workspace if you don't have one already.
+
+* Go to the [Your apps](https://api.slack.com/apps) page and **Create New App**.
+
+* Click on **From Scratch** and provide the **App Name** and select your workspace in **Pick a workspace to develop your app in:** dropdown. Click on **Create App**.
+
+* Go to the **OAuth & Permissions** tab on the sidebar and add the following **Bot Token Scopes**:
+
+ * `channels:read`
+
+ * `groups:read`
+
+ * `chat:write`
+
+ * `chat:write.public`
+
+ * `chat:write.customize`
+
+* Add the **Redirect URLs** under **OAuth & Permissions** tab. You can add the following URLs:
+
+ * If you are running formbricks locally, you can enter `https://localhost:3000/api/v1/integrations/slack/callback`.
+
+ * Or, you can enter `https:///api/v1/integrations/slack/callback`
+
+* Now, click on **Install to Workspace** and **Allow** the permissions.
+
+* Go to the **Basic Information** tab on the sidebar and copy the **Client ID** and **Client Secret**. Copy them & add it to your **Formbricks environment variables** as in the docker compose file:
+
+* `SLACK_CLIENT_ID` - OAuth Client ID
+
+* `SLACK_CLIENT_SECRET` - OAuth Client Secret
+
+* Now, you need to enable the public distribution of your app. Go to the **Basic Information** tab and click on the **Manage distribution** button and click on the "Distribute App".
+
+* Scroll down to the **Share your app with other workspaces** section, complete the checklist and click on the **Activate public distribution** button.
+
+Voila! You have successfully enabled the Slack integration in your self-hosted Formbricks instance. Now you can follow the steps mentioned in the [Slack Integration](/developer-docs/integrations/slack) section to link a Slack workspace with Formbricks.
+
+
+
+Still struggling or something not working as expected? [Join our Github Discussions](https://github.com/formbricks/formbricks/discussions) and we'd be glad to assist you!
diff --git a/docs/self-hosting/configuration/integrations/zapier.mdx b/docs/self-hosting/configuration/integrations/zapier.mdx
new file mode 100644
index 0000000000..30b9e22c80
--- /dev/null
+++ b/docs/self-hosting/configuration/integrations/zapier.mdx
@@ -0,0 +1,42 @@
+export const metadata = {
+ title: "Zapier (On Premise)",
+ description: "Set up automations with your self-hosted Zapier instance.",
+};
+
+#### On Premise: Integrations
+
+# Zapier (On Premise)
+
+The Zapier integration allows you to create automations based on survey responses.
+
+
+ If you are using Formbricks Cloud, you will need to configure this
+ integration differently. Please follow this guide
+ [here](/xm-and-surveys/core-features/integrations/zapier) to set it up.
+
+
+## Setup
+
+Setup your Zap: Go to [zapier.com](https://zapier.com/) and create a new Zap. Search for “Formbricks” to get started:
+
+
+
+Then, choose the event you want to trigger the Zap on:
+
+
+
+Connect Formbricks with Zapier: You have to connect Zapier with Formbricks via an API Key:
+
+
+
+
+
+Now you need an API key. Please refer to the [API Key Setup](/developer-docs/rest-api##how-to-generate-an-api-key) page to learn how to create one.
+
+Once you copied it in the newly opened Zapier window, you will be connected:
+
+
+
+Voila! You have successfully configured Zapier to work with your self-hosted Formbricks instance. Now, you can follow the steps mentioned in the [Zapier Integration](https://formbricks.com/docs/developer-docs/integrations/zapier) section to connect it with your Formbricks app and see it live.
+
+Still struggling or something not working as expected? [Join our Github Discussions](https://github.com/formbricks/formbricks/discussions) and we'd be glad to assist you!
diff --git a/docs/self-hosting/configuration/oauth.mdx b/docs/self-hosting/configuration/oauth.mdx
new file mode 100644
index 0000000000..27047c63fb
--- /dev/null
+++ b/docs/self-hosting/configuration/oauth.mdx
@@ -0,0 +1,216 @@
+---
+title: OAuth
+description: "OAuth for Formbricks"
+icon: "key"
+---
+
+
+ Single Sign-On (SSO) functionality, including OAuth integrations with Google,
+ Microsoft Entra ID, Github and OpenID Connect, requires a valid Formbricks
+ Enterprise License.
+
+
+### Google OAuth
+
+Integrating Google OAuth with your Formbricks instance allows users to log in using their Google credentials, ensuring a secure and streamlined user experience. This guide will walk you through the process of setting up Google OAuth for your Formbricks instance.
+
+#### Requirements:
+
+- A Google Cloud Platform (GCP) account.
+
+- A Formbricks instance running and accessible.
+
+#### Steps:
+
+1. **Create a GCP Project**:
+
+ - Navigate to the [GCP Console](https://console.cloud.google.com/).
+
+ - From the projects list, select a project or create a new one.
+
+2. **Setting up OAuth 2.0**:
+
+ - If the **APIs & services** page isn't already open, open the console left side menu and select **APIs & services**.
+
+ - On the left, click **Credentials**.
+
+ - Click **Create Credentials**, then select **OAuth client ID**.
+
+3. **Configure OAuth Consent Screen**:
+
+ - If this is your first time creating a client ID, configure your consent screen by clicking **Consent Screen**.
+
+ - Fill in the necessary details and under **Authorized domains**, add the domain where your Formbricks instance is hosted.
+
+4. **Create OAuth 2.0 Client IDs**:
+
+ - Select the application type **Web application** for your project and enter any additional information required.
+
+ - Ensure to specify authorized JavaScript origins and authorized redirect URIs.
+
+```{{ Redirect & Origin URLs
+Authorized JavaScript origins: {WEBAPP_URL}
+Authorized redirect URIs: {WEBAPP_URL}/api/auth/callback/google
+```
+
+- **Update Environment Variables in Docker**:
+
+ - To integrate the Google OAuth, you have two options: either update the environment variables in the docker-compose file or directly add them to the running container.
+
+ - In your Docker setup directory, open the `.env` file, and add or update the following lines with the `Client ID` and `Client Secret` obtained from Google Cloud Platform:
+
+ - Alternatively, you can add the environment variables directly to the running container using the following commands (replace `container_id` with your actual Docker container ID):
+
+ ```sh Shell commands
+ docker exec -it container_id /bin/bash
+ export GOOGLE_CLIENT_ID=your-client-id-here
+ export GOOGLE_CLIENT_SECRET=your-client-secret-here
+ exit
+ ```
+
+```sh env file
+GOOGLE_CLIENT_ID=your-client-id-here
+GOOGLE_CLIENT_SECRET=your-client-secret-here
+```
+
+1. **Restart Your Formbricks Instance**:
+
+ - **Note:** Restarting your Docker containers may cause a brief period of downtime. Plan accordingly.
+
+ - Once the environment variables have been updated, it's crucial to restart your Docker containers to apply the changes. This ensures that your Formbricks instance can utilize the new Google OAuth configuration for user authentication. Here's how you can do it:
+
+ - Navigate to your Docker setup directory where your `docker-compose.yml` file is located.
+
+ - Run the following command to bring down your current Docker containers and then bring them back up with the updated environment configuration:
+
+### Microsoft Entra ID (Azure Active Directory) SSO OAuth
+
+Do you have a Microsoft Entra ID Tenant? Integrate it with your Formbricks instance to allow users to log in using their existing Microsoft credentials. This guide will walk you through the process of setting up an Application Registration for your Formbricks instance.
+
+#### Requirements
+
+- A Microsoft Entra ID Tenant populated with users. [Create a tenant as per Microsoft's documentation](https://learn.microsoft.com/en-us/entra/fundamentals/create-new-tenant).
+
+- A Formbricks instance running and accessible.
+
+- The callback URI for your Formbricks instance: `{WEBAPP_URL}/api/auth/callback/azure-ad`
+
+#### Creating an App Registration
+
+- Login to the [Microsoft Entra admin center](https://entra.microsoft.com/).
+
+- Go to **Applications** > **App registrations** in the left menu.
+
+
+
+- Click the **New registration** button at the top.
+
+
+
+- Name your application something descriptive, such as `Formbricks SSO`.
+
+
+
+- If you have multiple tenants/organizations, choose the appropriate **Supported account types** option. Otherwise, leave the default option for _Single Tenant_.
+
+
+
+- Under **Redirect URI**, select **Web** for the platform and paste your Formbricks callback URI (see Requirements above).
+
+
+
+- Click **Register** to create the App registration. You will be redirected to your new app's _Overview_ page after it is created.
+
+- On the _Overview_ page, under **Essentials**:
+
+- Copy the entry for **Application (client) ID** to populate the `AZUREAD_CLIENT_ID` variable.
+
+- Copy the entry for **Directory (tenant) ID** to populate the `AZUREAD_TENANT_ID` variable.
+
+
+
+- From your App registration's _Overview_ page, go to **Manage** > **Certificates & secrets**.
+
+
+
+- Make sure you have the **Client secrets** tab active, and click **New client secret**.
+
+
+
+- Enter a **Description**, set an **Expires** period, then click **Add**.
+
+
+ You will need to create a new client secret using these steps whenever your
+ chosen expiry period ends.
+
+
+
+
+- Copy the entry under **Value** to populate the `AZUREAD_CLIENT_SECRET` variable.
+
+
+ Microsoft will only show this value to you immediately after creation, and you
+ will not be able to access it again. If you lose it, simply start from step 9
+ to create a new secret.
+
+
+
+
+- Update these environment variables in your `docker-compose.yml` or pass it like your other environment variables to the Formbricks container.
+
+
+ You must wrap the `AZUREAD_CLIENT_SECRET` value in double quotes (e.g.,
+ "THis~iS4faKe.53CreTvALu3"`) to prevent issues with special characters.
+
+
+An example `.env` for Microsoft Entra ID in Formbricks would look like:
+
+````yml Formbricks Env for Microsoft Entra ID SSO
+AZUREAD_CLIENT_ID=a25cadbd-f049-4690-ada3-56a163a72f4c
+AZUREAD_TENANT_ID=2746c29a-a3a6-4ea1-8762-37816d4b7885
+AZUREAD_CLIENT_SECRET="THis~iS4faKe.53CreTvALu3"
+```
+
+
+- Restart your Formbricks instance.
+
+- You're all set! Users can now sign up & log in using their Microsoft credentials associated with your Entra ID Tenant.
+
+## OpenID Configuration
+
+Integrating your own OIDC (OpenID Connect) instance with your Formbricks instance allows users to log in using their OIDC credentials, ensuring a secure and streamlined user experience. Please follow the steps below to set up OIDC for your Formbricks instance.
+
+- Configure your OIDC provider & get the following variables:
+
+- `OIDC_CLIENT_ID`
+
+- `OIDC_CLIENT_SECRET`
+
+- `OIDC_ISSUER`
+
+- `OIDC_SIGNING_ALGORITHM`
+
+
+Make sure the Redirect URI for your OIDC Client is set to `{WEBAPP_URL}
+/api/auth/callback/openid`.
+
+
+- Update these environment variables in your `docker-compose.yml` or pass it directly to the running container.
+
+An example configuration for a FusionAuth OpenID Connect in Formbricks would look like:
+
+
+```yml Formbricks Env for FusionAuth OIDC
+OIDC_CLIENT_ID=59cada54-56d4-4aa8-a5e7-5823bbe0e5b7
+OIDC_CLIENT_SECRET=4f4dwP0ZoOAqMW8fM9290A7uIS3E8Xg29xe1umhlB_s
+OIDC_ISSUER=http://localhost:9011 OIDC_DISPLAY_NAME=FusionAuth
+OIDC_SIGNING_ALGORITHM=HS256
+```
+
+
+- Set an environment variable `OIDC_DISPLAY_NAME` to the display name of your OIDC provider.
+
+- Restart your Formbricks instance.
+
+- You're all set! Users can now sign up & log in using their OIDC credentials.
+````
diff --git a/docs/self-hosting/overview.mdx b/docs/self-hosting/overview.mdx
new file mode 100644
index 0000000000..e7677926d4
--- /dev/null
+++ b/docs/self-hosting/overview.mdx
@@ -0,0 +1,56 @@
+---
+title: "Self-Hosting"
+description: "Learn how to self-host Formbricks."
+icon: "server"
+---
+
+### System Requirements
+
+
+ **Minimum Setup**: 1 vCPU, 2 GB RAM, 8 GB SSD.
+
+
+
+ **HTTPS Required**: Ensure your server runs with a valid HTTPS certificate.
+
+
+#### **Self-Hosting Options**
+
+* [**One-Click Setup**](/self-hosting/setup/one-click)**:** Set up Formbricks on Ubuntu in minutes with our shell script.
+
+* [**Docker Setup**](/self-hosting/setup/docker)**:** Use our pre-built Docker image for an effortless start.
+
+* [**Migration Guide**](/self-hosting/setup/migration)**:** Upgrade your existing Formbricks instance smoothly.
+
+* [**Configuration**](/self-hosting/configuration)**:** Customize your setup with advanced configurations.
+
+* [**Integrations**](/self-hosting/configuration/integrations)**:** Connect Formbricks to third-party tools.
+
+* [**Licensing**](/self-hosting/advanced/license)**:** Learn more about our AGPL Formbricks Core and its open-source license & Unlock advanced features tailored for larger teams and enterprises with the EE License.
+
+### **Hosting Options**
+
+* **Cloud Hosting:** Hassle-free managed deployment at [app.formbricks.com](https://app.formbricks.com).
+
+* **Self-Hosting Free:** Perfect for personal use or small projects.
+
+* **Self-Hosting with EE License:** Unlock advanced features for large teams or enterprises.
+
+### **Licensing Options Comparison**:
+
+For Self Hosting, our core product is free however certain advanced features are a part of our Enterprise License offering. Please refer this table to understand if you want the features that are a part of it and then we’ll reach out to you!
+
+| **Feature** | Cloud Hosting | Self-Hosting Free | Self-Hosting EE License |
+| ----------------------- | -------------------------- | ----------------- | ----------------------- |
+| Setup & Maintenance | Managed | DIY | DIY |
+| Advanced Functionality | Full (Optional Paid plans) | Most of them | All Advanced Features |
+| Support & Updates | Included | Community | Prioritized |
+| Price | Subscription | Free | Fixed Per month |
+| Customization & Control | Limited | Moderate | Full |
+
+For licensing queries, contact us at [**hola@formbricks.com**]().
+
+Formbricks is designed to be intuitive and accessible, ensuring an easy setup no matter which option you choose. Start using Formbricks today and take your surveys to the next level!
+
+**Need Help?**
+Join the conversation on [**GitHub Discussions**](https://github.com/formbricks/formbricks/discussions).
\ No newline at end of file
diff --git a/docs/self-hosting/setup/cluster-setup.mdx b/docs/self-hosting/setup/cluster-setup.mdx
new file mode 100644
index 0000000000..1f1245a419
--- /dev/null
+++ b/docs/self-hosting/setup/cluster-setup.mdx
@@ -0,0 +1,60 @@
+---
+title: 'Cluster Setup'
+description: "How to set up Formbricks in a cluster"
+icon: "circle-nodes"
+---
+
+
+ Running Formbricks in a multi-instance cluster configuration is an Enterprise Edition feature and requires an enterprise license key.
+
+
+## Overview
+
+Running Formbricks as a cluster of multiple instances offers several key advantages:
+
+* **High Availability**: Ensure your surveys remain accessible even if some instances fail
+
+* **Load Distribution**: Handle higher traffic by distributing requests across multiple instances
+
+* **Scalability**: Easily scale horizontally by adding more instances as your needs grow
+
+* **Zero-Downtime Updates**: Rolling updates without service interruption
+
+## Requirements
+
+To run Formbricks in a cluster setup, you'll need:
+
+* Enterprise Edition license key
+
+* Shared PostgreSQL database
+
+* Shared Redis cache for session management and caching
+
+* Load balancer to distribute traffic
+
+## Redis Configuration
+
+
+ Redis integration is an Enterprise Edition feature and requires an enterprise license key.
+
+
+Configure Redis by adding the following environment variables to your instances:
+
+```sh env
+REDIS_URL=redis://your-redis-host:6379
+REDIS_HTTP_URL=http://your-redis-host:8000
+```
+
+## Coming Soon
+
+We're working on comprehensive Kubernetes deployment instructions to make cluster setup even easier. This will include:
+
+* Kubernetes manifests
+
+* Helm charts
+
+* Detailed scaling configurations
+
+* Production-ready deployment examples
+
+Stay tuned for updates.
\ No newline at end of file
diff --git a/docs/self-hosting/setup/docker.mdx b/docs/self-hosting/setup/docker.mdx
new file mode 100644
index 0000000000..d4bf7219d7
--- /dev/null
+++ b/docs/self-hosting/setup/docker.mdx
@@ -0,0 +1,149 @@
+---
+title: "Docker Setup"
+description: "Set up Formbricks quickly using our ready-to-use Docker image."
+icon: "docker"
+---
+
+The image is pre-built and requires minimal setup—just download it and start the container.
+
+### Requirements
+
+Make sure Docker and Docker Compose are installed on your system. These are usually included in tools like Docker Desktop and Rancher Desktop.
+
+
+ `docker compose` without the hyphen is now the primary method of using docker-compose, according to the Docker documentation.
+
+
+## Start
+
+* **Create a New Directory for Formbricks**
+
+Open a terminal and run the following commands to create and enter a new directory for Formbricks:
+
+```bash
+mkdir formbricks-quickstart && cd formbricks-quickstart
+```
+
+* **Download the Docker-Compose File**
+
+Get the docker-compose file from the Formbricks repository by running:
+
+```bash
+curl -o docker-compose.yml https://raw.githubusercontent.com/formbricks/formbricks/main/docker/docker-compose.yml
+```
+
+* **Generate NextAuth Secret**
+
+You need a NextAuth secret for session signing and encryption. Run the command below to generate a random string using `openssl` and automatically insert it into the `docker-compose.yml` file:
+
+```bash
+sed -i "/NEXTAUTH_SECRET:$/s/NEXTAUTH_SECRET:.*/NEXTAUTH_SECRET: $(openssl rand -hex 32)/" docker-compose.yml
+```
+
+* **Generate Encryption Key**
+
+Next, you need to generate an Encryption Key. This will be used for authenticating and verifying 2 Factor Authentication. The `sed` command below generates a random string using `openssl`, then replaces the `ENCRYPTION_KEY:` placeholder in the `docker-compose.yml` file with this generated secret:
+
+```bash
+sed -i "/ENCRYPTION_KEY:$/s/ENCRYPTION_KEY:.*/ENCRYPTION_KEY: $(openssl rand -hex 32)/" docker-compose.yml
+```
+
+* **Generate Cron Secret**
+
+You require a Cron secret to secure API access for running cron jobs. Run the command below to generate a random string using `openssl` and automatically insert it into the `docker-compose.yml` file:
+
+```bash
+sed -i "/CRON_SECRET:$/s/CRON_SECRET:.*/CRON_SECRET: $(openssl rand -hex 32)/" docker-compose.yml
+```
+
+* **Start the Docker Setup**
+
+Now, you’re ready to run Formbricks with Docker. Use the command below to start Formbricks along with a PostgreSQL database using Docker Compose:
+
+```bash
+ docker compose up -d
+```
+
+The `-d` flag runs the containers in the background, so they keep running even after you close the terminal.
+
+* **Open Formbricks in Your Browser**
+
+Once the setup is running, open [**http://localhost:3000**](http://localhost:3000) in your browser to access Formbricks. The first time you visit, you'll see a setup wizard. Follow the steps to create your first user and start using Formbricks.
+
+## Update
+
+Please take a look at our [migration guide](/migration-guide) for version specific steps to update Formbricks.
+
+* Pull the latest Formbricks image
+
+```bash
+docker compose pull
+```
+
+* Stop the Formbricks stack
+
+```bash
+docker compose down
+```
+
+* Re-start the Formbricks stack with the updated image
+
+```bash
+docker compose up -d
+```
+
+## Debug
+
+If you encounter any issues, you can check the logs of the container with this command:
+
+```bash
+docker compose logs -f
+```
+
+In an ideal case, you should see this:
+
+```bash
+[+] Running 9/16
+⠹ formbricks 15 layers [⣿⣤⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀] 29.78MB/47.76MB Pulling 13.3s
+✔ 7264a8db6415 Already exists 0.0s
+⠋ 751194035c36 Downloading [===============================> ] 29.78MB/47.76... 8.1s
+✔ eff5dce73b38 Download complete 1.7s
+✔ c8ce5be43019 Download complete 1.2s
+✔ a2f33c630af5 Download complete 5.1s
+✔ e3b64e437860 Download complete 3.3s
+✔ a6551ac5f976 Download complete 4.9s
+✔ 4f4fb700ef54 Download complete 6.0s
+✔ 22163889e16b Download complete 6.7s
+✔ dc647bb9eb13 Download complete 7.8s
+⠋ 49c2ad494720 Waiting 8.1s
+⠋ 5c797a842dcb Waiting 8.1s
+⠋ 1f231213db04 Waiting 8.1s
+⠋ e407294bdcda Waiting 8.1s
+⠋ 6fd8358dca47 Pulling fs layer 8.1s
+
+[+] Running 2/2
+✔ Container formbricks-quickstart-postgres-1 Created 0.0s
+✔ Container formbricks-quickstart-formbricks-1 Created 0.0s
+```
+
+And at the tail of the output, you should see this:
+
+```bash
+formbricks-quickstart-formbricks-1 | All migrations have been successfully applied.
+formbricks-quickstart-formbricks-1 |
+formbricks-quickstart-formbricks-1 | - info Loaded env from /home/nextjs/apps/web/.env
+formbricks-quickstart-formbricks-1 | Listening on port 3000 url: http://:3000
+```
+
+You can close the logs again by hitting `CTRL + C`.
+
+## [](https://formbricks.com/docs/self-hosting/docker#customizing-environment-variables)
+
+
+ **Customizing environment variables**
+
+ To edit any of the available environment variables, check out our [Configure](/configuration) section!
+
+
+If you have any questions or require help, feel free to reach out to us on [**GitHub Discussions**](https://github.com/formbricks/formbricks/discussions). 😃[
+](https://formbricks.com/docs/developer-docs/rest-api)
\ No newline at end of file
diff --git a/docs/self-hosting/setup/one-click.mdx b/docs/self-hosting/setup/one-click.mdx
new file mode 100644
index 0000000000..7006e03ac1
--- /dev/null
+++ b/docs/self-hosting/setup/one-click.mdx
@@ -0,0 +1,346 @@
+---
+title: "One-Click Setup"
+description: "How to set up Formbricks instance with a one-click script"
+icon: "rocket"
+---
+
+
+ This only works with an Ubuntu machine, so ensure the underlying OS is verified beforehand!
+
+
+If you’re looking to quickly set up a production instance of Formbricks on an Ubuntu server, this guide is for you. Using a convenient shell script, you can install everything—including Docker, Postgres DB, and an SSL certificate—in just a few steps. The script takes care of all the dependencies and configuration for your server, making the process smooth and simple.
+
+
+ This setup uses **Traefik** as a **reverse proxy**, essential for directing incoming traffic to the correct container and enabling secure internet access to Formbricks. Traefik is chosen for its simplicity and automatic SSL management via Let’s Encrypt.
+
+
+For other operating systems or a more customized installation, please refer to the advanced installation guide with [Docker](/self-hosting/docker).
+
+### Requirements
+
+* An Ubuntu Virtual Machine with SSH access.
+
+* A custom domain with an **A record** pointing to your server.
+
+* Ports **80** and **443** are open in your VM's Security Group, allowing Traefik to create an SSL certificate.
+
+### Deployment
+
+Run this command in your terminal:
+
+```bash
+curl -fsSL https://raw.githubusercontent.com/formbricks/formbricks/main/docker/formbricks.sh -o formbricks.sh && chmod +x formbricks.sh && ./formbricks.sh install
+```
+
+### Script Prompts
+
+During installation, the script will prompt you to provide some details:
+
+* **Overwriting Docker GPG Keys**:
+ If Docker GPG keys already exist, the script will ask whether you want to overwrite them.
+
+```
+🚀 Executing default step of installing Formbricks
+🧱 Welcome to the Formbricks Setup Script
+
+🛸 Fasten your seatbelts! We're setting up your Formbricks environment on your Ubuntu 24.04 LTS server.
+
+🧹 Time to sweep away any old Docker installations.
+🔄 Updating your package list.
+📦 Installing the necessary dependencies.
+🔑 Adding Docker's official GPG key and setting up the stable repository.
+File '/etc/apt/keyrings/docker.gpg' exists. Overwrite? (y/N)
+```
+
+* **Domain Name**:
+ Enter the domain name where you’ll host Formbricks. The domain will be used to generate an SSL certificate. Do not include the protocol (http/https).
+
+```
+🚀 Executing default step of installing Formbricks
+🧱 Welcome to the Formbricks Setup Script
+
+🛸 Fasten your seatbelts! We're setting up your Formbricks environment on your Ubuntu 24.04 LTS server.
+
+🧹 Time to sweep away any old Docker installations.
+🔄 Updating your package list.
+📦 Installing the necessary dependencies.
+🔑 Adding Docker's official GPG key and setting up the stable repository.
+File '/etc/apt/keyrings/docker.gpg' exists. Overwrite? (y/N) y
+🔄 Updating your package list again.
+🐳 Installing Docker.
+🚀 Testing your Docker installation.
+🎉 Docker is installed!
+🐳 Adding your user to the Docker group to avoid using sudo with docker commands.
+🎉 Hooray! Docker is all set and ready to go. You're now ready to run your Formbricks instance!
+📁 Created Formbricks Quickstart directory at ./formbricks.
+🔗 Please enter your domain name for the SSL certificate (🚨 do NOT enter the protocol (http/https/etc)):
+```
+
+* **HTTPS Certificate Setup**:
+ The script will ask if you’d like to create an HTTPS certificate for your domain. Enter `Y` to proceed (highly recommended for secure access).
+
+```
+🚀 Executing default step of installing Formbricks
+🧱 Welcome to the Formbricks Setup Script
+
+🛸 Fasten your seatbelts! We're setting up your Formbricks environment on your Ubuntu 24.04 LTS server.
+
+🧹 Time to sweep away any old Docker installations.
+🔄 Updating your package list.
+📦 Installing the necessary dependencies.
+🔑 Adding Docker's official GPG key and setting up the stable repository.
+File '/etc/apt/keyrings/docker.gpg' exists. Overwrite? (y/N) y
+🔄 Updating your package list again.
+🐳 Installing Docker.
+🚀 Testing your Docker installation.
+🎉 Docker is installed!
+🐳 Adding your user to the Docker group to avoid using sudo with docker commands.
+🎉 Hooray! Docker is all set and ready to go. You're now ready to run your Formbricks instance!
+📁 Created Formbricks Quickstart directory at ./formbricks.
+🔗 Please enter your domain name for the SSL certificate (🚨 do NOT enter the protocol (http/https/etc)):
+my.hosted.url.com
+🔗 Do you want us to set up an HTTPS certificate for you? [Y/n]
+```
+
+* **DNS Setup Prompt**: Ensure that your domain's DNS is correctly configured and ports 80 and 443 are open. Confirm this by entering `Y`. This step is crucial for proper SSL certificate issuance and secure server access.
+
+```
+🚀 Executing default step of installing Formbricks
+🧱 Welcome to the Formbricks Setup Script
+
+🛸 Fasten your seatbelts! We're setting up your Formbricks environment on your Ubuntu 24.04 LTS server.
+
+🧹 Time to sweep away any old Docker installations.
+🔄 Updating your package list.
+📦 Installing the necessary dependencies.
+🔑 Adding Docker's official GPG key and setting up the stable repository.
+File '/etc/apt/keyrings/docker.gpg' exists. Overwrite? (y/N) y
+🔄 Updating your package list again.
+🐳 Installing Docker.
+🚀 Testing your Docker installation.
+🎉 Docker is installed!
+🐳 Adding your user to the Docker group to avoid using sudo with docker commands.
+🎉 Hooray! Docker is all set and ready to go. You're now ready to run your Formbricks instance!
+📁 Created Formbricks Quickstart directory at ./formbricks.
+🔗 Please enter your domain name for the SSL certificate (🚨 do NOT enter the protocol (http/https/etc)):
+my.hosted.url.com
+🔗 Do you want us to set up an HTTPS certificate for you? [Y/n]
+Y
+🔗 Please make sure that the domain points to the server's IP address and that ports 80 & 443 are open in your server's firewall. Is everything set up? [Y/n]
+```
+
+* **Email Address for SSL Certificate**:
+ Provide an email address to register the SSL certificate. Notifications regarding the certificate will be sent to this address.
+
+```
+🚀 Executing default step of installing Formbricks
+🧱 Welcome to the Formbricks Setup Script
+
+🛸 Fasten your seatbelts! We're setting up your Formbricks environment on your Ubuntu 24.04 LTS server.
+
+🧹 Time to sweep away any old Docker installations.
+🔄 Updating your package list.
+📦 Installing the necessary dependencies.
+🔑 Adding Docker's official GPG key and setting up the stable repository.
+File '/etc/apt/keyrings/docker.gpg' exists. Overwrite? (y/N) y
+🔄 Updating your package list again.
+🐳 Installing Docker.
+🚀 Testing your Docker installation.
+🎉 Docker is installed!
+🐳 Adding your user to the Docker group to avoid using sudo with docker commands.
+🎉 Hooray! Docker is all set and ready to go. You're now ready to run your Formbricks instance!
+📁 Created Formbricks Quickstart directory at ./formbricks.
+🔗 Please enter your domain name for the SSL certificate (🚨 do NOT enter the protocol (http/https/etc)):
+my.hosted.url.com
+🔗 Do you want us to set up an HTTPS certificate for you? [Y/n]
+Y
+🔗 Please make sure that the domain points to the server's IP address and that ports 80 & 443 are open in your server's firewall. Is everything set up? [Y/n]
+Y
+💡 Please enter your email address for the SSL certificate:
+```
+
+* **Enforce HTTPS with HSTS**:
+ Enabling HTTP Strict Transport Security (HSTS) ensures all communication with your server is encrypted. It’s a recommended best practice. Enter `Y` to enforce HTTPS.
+
+```
+🚀 Executing default step of installing Formbricks
+🧱 Welcome to the Formbricks Setup Script
+
+🛸 Fasten your seatbelts! We're setting up your Formbricks environment on your Ubuntu 24.04 LTS server.
+
+🧹 Time to sweep away any old Docker installations.
+🔄 Updating your package list.
+📦 Installing the necessary dependencies.
+🔑 Adding Docker's official GPG key and setting up the stable repository.
+File '/etc/apt/keyrings/docker.gpg' exists. Overwrite? (y/N) y
+🔄 Updating your package list again.
+🐳 Installing Docker.
+🚀 Testing your Docker installation.
+🎉 Docker is installed!
+🐳 Adding your user to the Docker group to avoid using sudo with docker commands.
+🎉 Hooray! Docker is all set and ready to go. You're now ready to run your Formbricks instance!
+📁 Created Formbricks Quickstart directory at ./formbricks.
+🔗 Please enter your domain name for the SSL certificate (🚨 do NOT enter the protocol (http/https/etc)):
+my.hosted.url.com
+🔗 Do you want us to set up an HTTPS certificate for you? [Y/n]
+Y
+🔗 Please make sure that the domain points to the server's IP address and that ports 80 & 443 are open in your server's firewall. Is everything set up? [Y/n]
+Y
+💡 Please enter your email address for the SSL certificate:
+docs@formbricks.com
+🔗 Do you want to enforce HTTPS (HSTS)? [Y/n]
+```
+
+* **Email Service Setup Prompt**: The script will ask if you want to set up the email service. Enter `Y` to proceed.(default is `N`). You can skip this step if you don't want to set up the email service. You will still be able to use Formbricks without setting up the email service.
+
+```
+🚀 Executing default step of installing Formbricks
+🧱 Welcome to the Formbricks Setup Script
+
+🛸 Fasten your seatbelts! We're setting up your Formbricks environment on your Ubuntu 24.04 LTS server.
+
+🧹 Time to sweep away any old Docker installations.
+🔄 Updating your package list.
+📦 Installing the necessary dependencies.
+🔑 Adding Docker's official GPG key and setting up the stable repository.
+File '/etc/apt/keyrings/docker.gpg' exists. Overwrite? (y/N) y
+🔄 Updating your package list again.
+🐳 Installing Docker.
+🚀 Testing your Docker installation.
+🎉 Docker is installed!
+🐳 Adding your user to the Docker group to avoid using sudo with docker commands.
+🎉 Hooray! Docker is all set and ready to go. You're now ready to run your Formbricks instance!
+📁 Created Formbricks Quickstart directory at ./formbricks.
+🔗 Please enter your domain name for the SSL certificate (🚨 do NOT enter the protocol (http/https/etc)):
+my.hosted.url.com
+🔗 Do you want us to set up an HTTPS certificate for you? [Y/n]
+Y
+🔗 Please make sure that the domain points to the server's IP address and that ports 80 & 443 are open in your server's firewall. Is everything set up? [Y/n]
+Y
+💡 Please enter your email address for the SSL certificate:
+docs@formbricks.com
+🔗 Do you want to enforce HTTPS (HSTS)? [Y/n]
+Y
+🚗 Configuring Traefik...
+💡 Created traefik.yaml and traefik-dynamic.yaml file.
+💡 Created acme.json file with correct permissions.
+📧 Do you want to set up the email service? You will need SMTP credentials for the same! [y/N]
+
+```
+
+**That's it**! After running the command and providing the required information, visit the domain name you entered, and you should see the Formbricks home wizard!
+
+```
+🚀 Executing default step of installing Formbricks
+🧱 Welcome to the Formbricks Setup Script
+
+🛸 Fasten your seatbelts! We're setting up your Formbricks environment on your Ubuntu 24.04 LTS server.
+
+🧹 Time to sweep away any old Docker installations.
+🔄 Updating your package list.
+📦 Installing the necessary dependencies.
+🔑 Adding Docker's official GPG key and setting up the stable repository.
+File '/etc/apt/keyrings/docker.gpg' exists. Overwrite? (y/N) y
+🔄 Updating your package list again.
+🐳 Installing Docker.
+🚀 Testing your Docker installation.
+🎉 Docker is installed!
+🐳 Adding your user to the Docker group to avoid using sudo with docker commands.
+🎉 Hooray! Docker is all set and ready to go. You're now ready to run your Formbricks instance!
+📁 Created Formbricks Quickstart directory at ./formbricks.
+🔗 Please enter your domain name for the SSL certificate (🚨 do NOT enter the protocol (http/https/etc)):
+my.hosted.url.com
+🔗 Do you want us to set up an HTTPS certificate for you? [Y/n]
+Y
+🔗 Please make sure that the domain points to the server's IP address and that ports 80 & 443 are open in your server's firewall. Is everything set up? [Y/n]
+Y
+💡 Please enter your email address for the SSL certificate:
+docs@formbricks.com
+🔗 Do you want to enforce HTTPS (HSTS)? [Y/n]
+Y
+🚗 Configuring Traefik...
+💡 Created traefik.yaml and traefik-dynamic.yaml file.
+💡 Created acme.json file with correct permissions.
+📧 Do you want to set up the email service? You will need SMTP credentials for the same! [y/N] N
+📥 Downloading docker-compose.yml from Formbricks GitHub repository...
+ % Total % Received % Xferd Average Speed Time Time Time Current
+ Dload Upload Total Spent Left Speed
+100 6632 100 6632 0 0 24280 0 --:--:-- --:--:-- --:--:-- 24382
+🚙 Updating docker-compose.yml with your custom inputs...
+🚗 NEXTAUTH_SECRET updated successfully!
+🚗 ENCRYPTION_KEY updated successfully!
+🚗 CRON_SECRET updated successfully!
+
+[+] Running 4/4
+ ✔ Network formbricks_default Created 0.2s
+ ✔ Container formbricks-postgres-1 Started 1.0s
+ ✔ Container formbricks-formbricks-1 Started 1.6s
+ ✔ Container traefik Started 2.8s
+🔗 To edit more variables and deeper config, go to the formbricks/docker-compose.yml, edit the file, and restart the container!
+🚨 Make sure you have set up the DNS records as well as inbound rules for the domain name and IP address of this instance.
+
+🎉 All done! Please setup your Formbricks instance by visiting your domain at https://my.hosted.url.com. You can check the status of Formbricks & Traefik with 'cd formbricks && sudo docker compose ps.'
+```
+
+## Update
+
+To update Formbricks, simply run the following command:
+
+```
+./formbricks.sh update
+```
+
+The script will automatically pull the latest version of Formbricks from GitHub Container Registry and restart the containers.
+
+## Stop
+
+To stop Formbricks, simply run the following command:
+
+```
+./formbricks.sh stop
+```
+
+The script will automatically stop all the Formbricks related containers and brings the entire stack down.
+
+## Restart
+
+To restart Formbricks, simply run the following command:
+
+```
+./formbricks.sh restart
+```
+
+The script will automatically restart all the Formbricks related containers and brings the entire stack up with the previous configuration.
+
+## Uninstall
+
+To uninstall Formbricks, simply run the following command, but keep in mind that this will delete all your data!
+
+```
+./formbricks.sh uninstall
+```
+
+The script will automatically stop all the Formbricks related containers, remove the Formbricks directory, and delete the Docker network.
+
+## Debug
+
+If you encounter any issues, you can check the logs of the containers with:
+
+```
+./formbricks.sh logs
+```
+
+## Troubleshooting
+
+If you encounter any issues, consider the following steps:
+
+* **Inbound Rules**: Make sure you have added inbound rules for Port 80 and 443 in your VM's Security Group.
+
+* **A Record**: Verify that you have set up an A record for your domain, pointing to your VM's IP address.
+
+* **Check Docker Instances**: Run `docker ps` to check the status of the Docker instances.
+
+* **Check Formbricks Logs**: Run `cd formbricks && docker compose logs` to check the logs of the Formbricks stack.
+
+If you have any questions or require help, feel free to reach out to us on [**GitHub Discussions**](https://github.com/formbricks/formbricks/discussions). 😃[
+](https://formbricks.com/docs/developer-docs/rest-api)
\ No newline at end of file
diff --git a/docs/xm-and-surveys/core-features/email-customization.mdx b/docs/xm-and-surveys/core-features/email-customization.mdx
new file mode 100644
index 0000000000..c33037dc0a
--- /dev/null
+++ b/docs/xm-and-surveys/core-features/email-customization.mdx
@@ -0,0 +1,40 @@
+---
+title: "Email Customization"
+description: "Customize the email that is sent to your users!"
+icon: "envelope"
+---
+
+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.
+
+
+ This feature is a white-label feature. It is only available for users on paid
+ plans or have an enterprise license.
+
+
+## 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.
+
+
+
+3. Upload a logo of your company.
+4. Click on the **Save** button.
+
+
+
+## Viewing the Logo in the Email
+
+You can click on the **Send test email** button to get a test email with the logo.
+
+
+
+
+
+ Only the owner and managers of the organization can modify the logo.
+
+
+## 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.
diff --git a/docs/xm-and-surveys/core-features/integrations/activepieces.mdx b/docs/xm-and-surveys/core-features/integrations/activepieces.mdx
new file mode 100644
index 0000000000..a257e5988a
--- /dev/null
+++ b/docs/xm-and-surveys/core-features/integrations/activepieces.mdx
@@ -0,0 +1,74 @@
+---
+title: "Activepieces"
+description: "A step-by-step guide to integrating Formbricks with Activepieces."
+---
+
+Activepieces is a versatile tool to automate workflows between Formbricks and numerous applications. Here's how to set it up.
+
+
+ Ensure your survey is finalized before setting up Activepieces. Any changes in the survey will require additional adjustments in the workflow.
+
+
+## Step 1: Setup your survey incl. `questionId` for every question
+
+Set up the `questionId`s of your survey questions before publishing.
+
+
+
+_Update the Question ID field in every question card under Advanced Settings._
+
+
+ Already published? Duplicate survey You can only update the questionId before publishing the survey. If already published, simply duplicate it.
+ 
+
+
+## Step 2: Setup Activepieces
+
+Visit [Activepieces](https://activepieces.com) to start a new Flow.
+
+
+
+Search for `Formbricks` and choose the event to trigger the flow, we will choose `Response Finished` here
+
+
+
+## Step 3: Connect Formbricks with Activepieces
+
+Click on `Create connection`:
+
+
+
+Enter the Formbricks API Host and API Key. API Host is by default set to https://app.formbricks.com but can be modified for self-hosting instances. Learn how to get an API Key from the [API Key tutorial](/additional-features/api#how-to-generate-an-api-key).
+
+
+
+## Step 4: Select Survey
+
+Choose from your created surveys:
+
+
+
+## Step 5: Send a test response
+
+You need a test response for Activepieces setup. Click on Test trigger and submit a test response in the connected Formbricks survey to see the data in Activepieces.
+
+
+
+If the test response is successful, you will see the data in Activepieces.
+
+
+
+## Step 6: Set up Google Sheet
+
+Decide on the desired action for the data. Here, we'll send submissions to a Google Sheet. Add Google sheet step to your flow and configure it as follows:
+Choose "Add a Row" for the action. Authenticate with Google and select the spreadsheet you want to add the data to.
+
+
+
+Specify the fields you want to add to the spreadsheet.
+
+
+
+A new row gets added to the spreadsheet for every response:
+
+
diff --git a/docs/xm-and-surveys/core-features/integrations/airtable.mdx b/docs/xm-and-surveys/core-features/integrations/airtable.mdx
new file mode 100644
index 0000000000..80b30069da
--- /dev/null
+++ b/docs/xm-and-surveys/core-features/integrations/airtable.mdx
@@ -0,0 +1,71 @@
+export const metadata = {
+ title: "Airtable Setup",
+ description: "Instantly populate your airtable table with survey data",
+};
+
+#### Integrations
+
+# Airtable
+
+The Airtable integration allows you to automatically send responses to an Airtable of your choice.
+
+
+ If you are on a self-hosted instance, you will need to configure this
+ integration separately. Please follow the guides
+ [here](/self-hosting/configuration/integrations) to configure integrations on your
+ self-hosted instance.
+
+
+## Formbricks Cloud
+
+1. Go to the Integrations tab in your [Formbricks Cloud dashboard](https://app.formbricks.com/) and click on the "Connect" button under Airtable integration.
+
+
+
+2. Now click on the "Connect with Airtable" button to authenticate yourself with Airtable.
+
+
+
+3. You will now be taken to a page where you need to add and grant access to the base you want to use for the integration.
+
+
+
+
+4. Once you add and grant access to your base, you will be taken back to Formbricks Cloud and see the connected status as below:
+
+
+
+
+
+Before the next step, make sure that you have a Formbricks Survey with at least one question and a Airtable base with atleast one table in the Airtable account you integrated.
+
+
+
+6. Now click on the "Link New Table" button to link an Airtable with Formbricks and a modal will open up.
+
+
+
+7. Select the Base and table you want to link with Formbricks and the Survey. On doing so, you will be asked with what questions' responses you want to feed in Airtable. Select the questions and click on the "Save" button.
+
+
+
+8. On submitting, the modal will close and you will see the linked table in the list of linked tables.
+
+
+
+Congratulations! You have successfully linked an Airtable with Formbricks. Now whenever a response is submitted for the linked survey, it will be automatically added to the linked Airtable.
+
+Still struggling or something not working as expected? [Join us on Github Discussions](https://github.com/formbricks/formbricks/discussions) and we'd be glad to assist you!
+
+## Remove Integration with Airtable
+
+To remove the integration with Airtable,
+
+1. Visit the Integrations tab in your Formbricks Cloud dashboard.
+2. Select "Manage" button in the Airtable card.
+3. Click on the "Connected with `" just before the "Link new Table" button.
+4. It will now ask for a confirmation to remove the integration. Click on the "Delete" button to remove the integration. You can always come back and connect again with the same Airtable Account.
+
+
+
+Still struggling or something not working as expected? [Join our Github Discussions](https://github.com/formbricks/formbricks/discussions) and we'd be glad to assist you!
diff --git a/docs/xm-and-surveys/core-features/integrations/google-sheets.mdx b/docs/xm-and-surveys/core-features/integrations/google-sheets.mdx
new file mode 100644
index 0000000000..699f198e5f
--- /dev/null
+++ b/docs/xm-and-surveys/core-features/integrations/google-sheets.mdx
@@ -0,0 +1,80 @@
+---
+title: "Google Sheets"
+description:
+ "The Google Sheets integration allows you to automatically send responses to a Google Sheet of your choice."
+---
+
+#### Integrations
+
+# Google Sheets
+
+The Google Sheets integration allows you to automatically send responses to a Google Sheet of your choice.
+
+
+ If you are on a self-hosted instance, you will need to configure this
+ integration separately. Please follow the guides
+ [here](/self-hosting/configuration/integrations) to configure integrations on your
+ self-hosted instance.
+
+
+## Connect Google Sheets
+
+1. Go to the Integrations tab in your [Formbricks Cloud dashboard](https://app.formbricks.com/) and click on the "Connect" button under Google Sheets integration.
+
+
+
+2. Now click on the "Connect with Google" button to authenticate yourself with Google.
+
+
+
+3. You will now be taken to the Google OAuth page where you can select the Google account you want to use for the integration.
+
+4. Once you have selected the account and completed the authentication process, you will be taken back to Formbricks Cloud and see the connected status as below:
+
+
+
+
+
+Before the next step, make sure that you have a Formbricks Survey with at least one question and a Google Sheet in the Google account you integrated.
+
+
+
+5. Now click on the "Link New Sheet" button to link a Google Sheet with Formbricks and a modal will open up.
+
+
+
+6. Enter the spreadsheet URL for the Google Sheet you want to link with Formbricks and the Survey. On doing so, you will be asked with what questions' responses you want to feed in the Google Sheet. Select the questions and click on the "Link Sheet" button.
+
+
+
+7. On submitting, the modal will close and you will see the linked Google Sheet in the list of linked Google Sheets.
+
+
+
+Congratulations! You have successfully linked a Google Sheet with Formbricks. Now whenever a response is submitted for the linked survey, it will be automatically added to the linked Google Sheet.
+
+## Remove Integration with Google Account
+
+To remove the integration with Google Account,
+
+1. Visit the Integrations tab in your Formbricks Cloud dashboard.
+2. Select **Manage Sheets** button in the Google Sheets card.
+3. Click on the **Delete Integration** button.
+4. It will now ask for a confirmation to remove the integration. Click on the **Delete** button to remove the integration. You can always come back and connect again with the same Google Account.
+
+
+
+## What info do you need?
+
+- Your **Email ID** for authentication (We use this to identify you)
+- Your **Google Sheets Names and IDs** (We fetch this to list and show you the options of choosing a sheet to integrate with)
+- Write access to **selected Google Sheet** (The google sheet you choose to integrate it with, we write survey responses to it)
+
+For the above, we ask for:
+
+1. **User Email**: To identify you (that's it, nothing else, we're opensource, see this in our codebase [here](https://github.com/formbricks/formbricks/blob/main/apps/web/app/api/google-sheet/callback/route.ts#L47C17-L47C25))
+1. **Google Spreadsheet API**: To write to the spreadsheet you select (that's it, nothing else, we're opensource, see this method in our codebase [here](https://github.com/formbricks/formbricks/blob/main/packages/lib/googleSheet/service.ts#L70))
+
+We store as little personal information as possible.
+
+Still struggling or something not working as expected? [Join our Github Discussions](https://github.com/formbricks/formbricks/discussions) and we'd be glad to assist you!
diff --git a/docs/xm-and-surveys/core-features/integrations/make.mdx b/docs/xm-and-surveys/core-features/integrations/make.mdx
new file mode 100644
index 0000000000..0b977154d3
--- /dev/null
+++ b/docs/xm-and-surveys/core-features/integrations/make.mdx
@@ -0,0 +1,86 @@
+---
+title: "Make"
+description:
+ "Discover how to seamlessly integrate Formbricks with Make.com. Dive into our comprehensive guide to set up scenarios, connect with a plethora of apps, and send your survey data to more than 1000 platforms."
+---
+
+#### Integrations
+
+# Make.com Setup
+
+Make is a powerful tool to send information between Formbricks and thousands of apps. Here's how to set it up.
+
+
+ Nailed down your survey?? Any changes in the survey cause additional work in
+ the _Scenario_. It makes sense to first settle on the survey you want to run
+ and then get to setting up Make.
+
+
+## Step 1: Setup your survey incl. `questionId` for every question
+
+Set up the `questionId`s of your survey questions before publishing.
+
+
+
+_Update the Question ID field in every question card under Advanced Settings._
+
+
+ Already published? Duplicate survey You can only update the questionId
+ before publishing the survey. If already published, simply duplicate it.
+ 
+
+
+
+## Step 2: Setup Make.com
+
+Visit [Make.com](https://make.com) to start a new scenario.
+
+
+
+Search for `Formbricks`:
+
+
+
+Choose the event to trigger the Scenario:
+
+
+
+## Step 3: Connect Formbricks with Make
+
+Click "Create a webhook":
+
+
+
+Enter the Formbricks API Host and API Key. API Host is by default set to https://app.formbricks.com but can be modified for self hosting instances. Learn how to get an API Key from the [API Key tutorial](/additional-features/api#how-to-generate-an-api-key).
+
+
+
+## Step 4: Select Survey
+
+Choose from your created surveys:
+
+
+
+## Step 5: Send a test response
+
+You need a test response for Make setup.
+
+
+
+## Step 6: Set up Google Sheet
+
+Decide on the desired action for the data. Here, we'll send submissions to a Google Sheet:
+
+
+
+Choose "Add a Row" for the action:
+
+
+
+Specify the spreadsheet details and match the Formbricks data:
+
+
+
+A new row gets added to the spreadsheet for every response:
+
+
diff --git a/docs/xm-and-surveys/core-features/integrations/n8n.mdx b/docs/xm-and-surveys/core-features/integrations/n8n.mdx
new file mode 100644
index 0000000000..2b46941a31
--- /dev/null
+++ b/docs/xm-and-surveys/core-features/integrations/n8n.mdx
@@ -0,0 +1,108 @@
+---
+title: "n8n"
+description: "Integrate Formbricks with n8n for a streamlined workflow experience."
+---
+
+
+#### Integrations
+
+# n8n Setup
+
+
+ The Formbricks n8n node is currently only available in the n8n self-hosted
+ version as a community node. To install it go to "Settings" -> "Community
+ Nodes" and install @formbricks/n8n-nodes-formbricks.
+
+
+n8n allows you to build flexible workflows focused on deep data integration. And with sharable templates and a user-friendly UI, the less technical people on your team can collaborate on them too. Unlike other tools, complexity is not a limitation. So you can build whatever you want — without stressing over budget. Hook up Formbricks with n8n and you can send your data to 350+ other apps. Here is how to do it.
+
+## Step 1: Setup your survey incl. `questionId` for every question
+
+
+ Nailed down your survey? Any changes in the survey cause additional work in
+ the n8n node. It makes sense to first settle on the survey you want to run and
+ then get to setting up n8n.
+
+
+When setting up the node your life will be easier when you change the `questionId`s of your survey questions. You can only do so **before** you publish your survey.
+
+
+
+_In every question card in the Advanced Settings you find the Question ID field. Update it so that you'll recognize the response tied to this question._
+
+
+ Already published? Duplicate survey You can only update the questionId
+ when the survey was not yet published. Already published it? Just **duplicate
+ it** to update the questionIds.
+ 
+
+
+## Step 2: Setup your n8n workflow
+
+Go to [n8n.io](https://n8n.io) and create a new workflow. Search for “Formbricks” to get started:
+
+
+
+## Step 3: Connect Formbricks with n8n
+
+Now, you have to connect n8n with Formbricks via an API Key:
+
+
+
+Click on Create New Credentail button to add your host and API Key
+
+
+
+Now you need an API key. Please refer to the [API Key Setup](/additional-features/api#how-to-generate-an-api-key) page to learn how to create one.
+
+Once you copied it in the API Key field, hit Save button to test the connection and save the credentials.
+
+
+
+## Step 4: Select Event
+
+Next, you can choose the event you want to trigger the node on. You can select multiple events:
+
+
+
+Here, we are adding `Response Finished` as an event, which will trigger when the survey has been filled out.
+
+## Step 5: Select Survey
+
+Next, you can choose from all the surveys you have created in this environment. You can select multiple surveys:
+
+
+
+Here, we are selecting two surveys.
+
+
+
+## Step 6: Test your trigger
+
+In order to set up n8n you'll need a test response in the selected survey. This allows you to select the individual values of each response in your workflow. If you have Formbricks running locally and you want to set up an an app or a website survey, you can use our [Demo App](/contributing/demo) to trigger a survey and submit a response.
+
+
+
+Next, click on Listen for event button.
+
+
+
+Then, go to the survey which you selected. Fill it out, and wait for the particular event to trigger (in this case it's `Response Finished`). Once the event is triggered you will see the response that you filled out in the survey.
+
+
+
+Now you have all the data you need at hand. The next steps depend on what you want to do with it. In this tutorial, we will send submissions to a discord channel:
+
+## Step 7: Add discord to your workflow
+
+Click on the plus and search `Discord`.
+
+
+
+Fill in the `Webhook URL` and the `Content` that you want to receive in the respective discord channel. Next, click on `Execute Node` button to test the node.
+
+
+
+Once the execution is successful, you'll receive the content in the discord channel.
+
+
diff --git a/docs/xm-and-surveys/core-features/integrations/notion.mdx b/docs/xm-and-surveys/core-features/integrations/notion.mdx
new file mode 100644
index 0000000000..2cbf3bf250
--- /dev/null
+++ b/docs/xm-and-surveys/core-features/integrations/notion.mdx
@@ -0,0 +1,80 @@
+---
+title: "Notion"
+description:
+ "The notion integration allows you to automatically send responses to a Notion database of your choice."
+---
+
+The notion integration allows you to automatically send responses to a Notion database of your choice.
+
+
+ If you are on a self-hosted instance, you will need to configure this
+ integration separately. Please follow the guides
+ [here](/self-hosting/configuration/integrations) to configure integrations on your
+ self-hosted instance.
+
+
+## Formbricks Cloud
+
+1. Go to the Integrations tab in your [Formbricks Cloud dashboard](https://app.formbricks.com/) and click on the "Connect" button under Notion integration.
+
+
+
+2. Now click on the "Connect with Notion" button to authenticate yourself with Notion.
+
+
+
+3. You will now be taken to the Notion OAuth page where you can select the Notion account you want to use for the integration
+
+4. Once you have selected the account and databases and completed the authentication and authorization process, you will be taken back to Formbricks Cloud and see the connected status as below:
+
+
+
+
+ Before the next step, make sure that you have a Formbricks Survey with at
+ least one question and a Notion database in the Notion account you integrated.
+
+
+5. Now click on the "Link New Database" button to link a Notion database with Formbricks and a modal will open up.
+
+
+
+6. Select the Notion database you want to link with Formbricks and the Survey. On doing so, you will be asked to map formbricks' survey questions with selected databases' column. Complete the mapping and click on the "Link Database" button.
+
+
+
+7. On submitting, the modal will close and you will see the linked Notion database in the list of linked Notion databases.
+
+
+
+Congratulations! You have successfully linked a Notion database with Formbricks. Now whenever a response is submitted for the linked survey, it will be automatically added to the linked Notion database.
+
+## Setup in self-hosted Formbricks
+
+Enabling the Notion Integration in a self-hosted environment requires a setup using Notion account and changing the environment variables of your Formbricks instance.
+
+1. Sign up for a [Notion](https://www.notion.so/) account, if you don't have one already.
+2. Go to the [my integrations](https://www.notion.so/my-integrations) page and click on **New integration**.
+3. Fill up the basic information like **Name**, **Logo** and click on **Submit**.
+4. Now, click on **Distribution** tab on the sidebar. A text will appear which will ask you to make the integration public. Click on that toggle button. A form will appear below the text.
+5. Now provide it the details such as requested. Under **Redirect URIs** field:
+ - If you are running formbricks locally, you can enter `http://localhost:3000/api/v1/integrations/notion/callback`.
+ - Or, you can enter `https:///api/v1/integrations/notion/callback`
+6. Once you've filled all the necessary details, click on **Submit**.
+7. A screen will appear which will have **Client ID** and **Client secret**. Copy them and set them as the environment variables in your Formbricks instance as:
+ - `NOTION_OAUTH_CLIENT_ID` - OAuth Client ID
+ - `NOTION_OAUTH_CLIENT_SECRET` - OAuth Client Secret
+
+Voila! You have successfully enabled the Notion integration in your self-hosted Formbricks instance. Now you can follow the steps mentioned in the [Formbricks Cloud](#formbricks-cloud) section to link a Notion database with Formbricks.
+
+## Remove Integration with Notion Account
+
+To remove the integration with Slack Workspace,
+
+1. Visit the Integrations tab in your Formbricks Cloud dashboard.
+2. Select "Manage" button in the Slack card.
+3. Click on the "Delete Integration" button.
+4. It will now ask for a confirmation to remove the integration. Click on the "Delete" button to remove the integration. You can always come back and connect again with the same Notion Account.
+
+
+
+Still struggling or something not working as expected? [Join our Github Discussions](https://github.com/formbricks/formbricks/discussions) and we'd be glad to assist you!
diff --git a/docs/xm-and-surveys/core-features/integrations/overview.mdx b/docs/xm-and-surveys/core-features/integrations/overview.mdx
new file mode 100644
index 0000000000..4250e658cb
--- /dev/null
+++ b/docs/xm-and-surveys/core-features/integrations/overview.mdx
@@ -0,0 +1,27 @@
+---
+title: "Overview"
+description: "Configure third-party integrations with a Formbricks instance."
+---
+
+At Formbricks, we understand the importance of integrating with third-party applications. We have step-by-step guides to configure our third-party integrations with a your Formbricks instance. We currently support the below integrations, click on them to see their individual guides:
+
+
+ If you are on a self-hosted instance, you will need to configure these
+ integrations manually. Please follow the guides
+ [here](/self-hosting/configuration/integrations) to configure integrations on your
+ self-hosted instance.
+
+
+- [ActivePieces](/xm-and-surveys/core-features/integrations/activepieces) (Open Source): Automate workflows with ActivePieces no-code automation tool
+- [Airtable](/xm-and-surveys/core-features/integrations/airtable): Automatically send responses to an Airtable of your choice.
+- [Google Sheets](/xm-and-surveys/core-features/integrations/google-sheets): Automatically send responses to a Google Sheet of your choice.
+- [Make](/xm-and-surveys/core-features/integrations/make): Leverage Make's powerful automation capabilities to automate your workflows.
+- [n8n](/xm-and-surveys/core-features/integrations/n8n)(Open Source): Automate workflows with n8n's no-code automation tool
+- [Notion](/xm-and-surveys/core-features/integrations/notion): Automatically send responses to a Notion database of your choice.
+- [Slack](/xm-and-surveys/core-features/integrations/slack): Automatically send responses to a Slack channel of your choice on response events.
+- [Wordpress](/xm-and-surveys/core-features/integrations/wordpress)(Open Source): Automatically integrate your Formbricks surveys with your Wordpress website.
+- [Zapier](/xm-and-surveys/core-features/integrations/zapier): Connect Formbricks with 2000+ apps on Zapier.
+
+---
+
+If you have any questions or need help with any of the integrations or even want a new integration, please reach out to us on [Github Discussions](https://github.com/formbricks/formbricks/discussions).
diff --git a/docs/xm-and-surveys/core-features/integrations/slack.mdx b/docs/xm-and-surveys/core-features/integrations/slack.mdx
new file mode 100644
index 0000000000..a97338d4e9
--- /dev/null
+++ b/docs/xm-and-surveys/core-features/integrations/slack.mdx
@@ -0,0 +1,128 @@
+---
+title: "Slack"
+description:
+ "The slack integration allows you to automatically send responses to a Slack channel of your choice."
+---
+
+The slack integration allows you to automatically send responses to a Slack channel of your choice.
+
+
+ If you are on a self-hosted instance, you will need to configure this
+ integration separately. Please follow the guides
+ [here](/self-hosting/configuration/integrations) to configure integrations on your
+ self-hosted instance.
+
+
+## Formbricks Cloud
+
+1. Go to the Integrations tab in your [Formbricks Cloud dashboard](https://app.formbricks.com/) and click on the "Connect" button under Slack integration.
+
+
+
+2. Now click on the "Connect with Slack" button to authenticate yourself with Slack.
+
+
+
+3. You will now be taken to the Slack OAuth page where you can select the Slack channel you want to link with Formbricks and click on the "Allow" button.
+
+
+
+4. Once you have selected the account and completed the authentication process, you will be taken back to Formbricks Cloud and see the connected status as below:
+
+
+
+
+ Before the next step, make sure that you have a Formbricks Survey with at
+ least one question and a Slack channel in the Slack workspace you integrated.
+
+
+5. In order to make your channel available in channel dropdown, you need to add formbricks integration bot to the channel you want to link. You can do this by going to channel settings -> Integrations -> Add apps -> Search for "Formbricks" -> Select the bot -> Add.
+
+
+
+
+
+
+
+
+
+6. Now click on the "Link channel" button to link a Slack channel with Formbricks and a modal will open up.
+
+
+
+
+7. Select the channel you want to link with Formbricks and the Survey. On doing so, you will be asked to select the questions' responses you want to feed in the Slack channel. Select the questions and click on the "Link Channel" button.
+
+
+
+8. On submitting, the modal will close and you will see the linked Slack channel in the list of linked Slack channels.
+
+
+
+
+Congratulations! You have successfully linked a Slack channel with Formbricks. Now whenever a response is submitted for the linked survey, it will be automatically sent to the linked Slack channel.
+
+## Setup in self-hosted Formbricks
+
+Enabling the Slack Integration in a self-hosted environment requires a setup using slack workspace account and changing the environment variables of your Formbricks instance.
+
+
+ If you are running Formbricks locally:
+
+ You need to use `https` instead of `http` for the redirect URI.
+ - You can update the `go` script in your `apps/web/package.json` to include the `--experimental-https` flag. The
+ command will look like:
+ ```bash
+ "go": next dev --experimental-https -p 3000
+ ```
+
+- You also need to update the .env file in the `apps/web` directory to include the `WEBAPP_URL` as `https://localhost:3000` instead of `http://localhost:3000`.
+
+- You also need to run the terminal in admin mode to run the `go` script(to acquire the SSL certificate). You can do this by running the terminal as an administrator or using the `sudo` command in Unix-based systems.
+
+
+
+1. Create a Slack workspace if you don't have one already.
+2. Go to the [Your apps](https://api.slack.com/apps) page and **Create New App**.
+3. Click on **From Scratch** and provide the **App Name** and select your workspace in **Pick a workspace to develop your app in:** dropdown. Click on **Create App**.
+4. Go to the **OAuth & Permissions** tab on the sidebar and add the following **Bot Token Scopes**:
+
+ - `channels:read`
+ - `groups:read`
+ - `chat:write`
+ - `chat:write.public`
+ - `chat:write.customize`
+
+5. Add the **Redirect URLs** under **OAuth & Permissions** tab. You can add the following URLs:
+
+ - If you are running formbricks locally, you can enter `https://localhost:3000/api/v1/integrations/slack/callback`.
+ - Or, you can enter `https:///api/v1/integrations/slack/callback`
+
+6. Now, click on **Install to Workspace** and **Allow** the permissions.
+7. Go to the **Basic Information** tab on the sidebar and copy the **Client ID** and **Client Secret**. Copy them and set them as the environment variables in your Formbricks instance as:
+
+- `SLACK_CLIENT_ID` - OAuth Client ID
+- `SLACK_CLIENT_SECRET` - OAuth Client Secret
+
+8. Now, you need to enable the public distribution of your app. Go to the **Basic Information** tab and click on the **Manage distribution** button and click on the "Distribute App".
+9. Scroll down to the **Share your app with other workspaces** section, complete the checklist and click on the **Activate public distribution** button.
+
+### By now, your environment variables should include the below ones:
+
+- `SLACK_CLIENT_ID`
+- `SLACK_CLIENT_SECRET`
+
+Voila! You have successfully enabled the Slack integration in your self-hosted Formbricks instance. Now you can follow the steps mentioned in the [Formbricks Cloud](#formbricks-cloud) section to link a Slack workspace with Formbricks.
+
+## Remove Integration with Slack Workspace
+
+To remove the integration with Slack Workspace,
+
+1. Visit the Integrations tab in your Formbricks Cloud dashboard.
+2. Select "Manage" button in the Slack card.
+3. Click on the "Delete Integration" button.
+4. It will now ask for a confirmation to remove the integration. Click on the "Delete" button to remove the integration. You can always come back and connect again with the same Slack Workspace.
+
+
+
+Still struggling or something not working as expected? [Join our Github Discussions](https://github.com/formbricks/formbricks/discussions) and we'd be glad to assist you!
diff --git a/docs/xm-and-surveys/core-features/integrations/webhooks.mdx b/docs/xm-and-surveys/core-features/integrations/webhooks.mdx
new file mode 100644
index 0000000000..c5823ec224
--- /dev/null
+++ b/docs/xm-and-surveys/core-features/integrations/webhooks.mdx
@@ -0,0 +1,44 @@
+---
+title: "Webhooks"
+---
+
+With webhooks, you can receive real-time HTTP notifications when specific objects change in your Formbricks environment. This allows you to stay updated and trigger automated actions based on these events.
+
+### **Webhook Triggers**
+
+Webhooks are configured to send notifications based on trigger events. The available triggers include:
+
+* **`responseCreated`**
+
+* **`responseUpdated`**
+
+* **`responseFinished`**
+
+***
+
+### **Creating Webhooks**
+
+You can create webhooks either through the **Formbricks App UI** or programmatically via the **Webhook API**.
+
+#### **Creating Webhooks via UI**
+
+* **Log in to Formbricks**
+ Navigate to the **Integrations** Tab after logging in.
+
+
+
+* Click on **Manage Webhooks** & then **Add Webhook** button:
+
+
+
+* Add your webhook listener endpoint & test it to make sure it can receive the test endpoint otherwise you will not be able to save it.
+
+
+
+* Now add the triggers you want to listen to and the surveys!
+
+* That’s it! Your webhooks will not start receiving data as soon as it arrives!
+
+**API**: Use our documented methods on the **Creation**, **List**, and **Deletion** endpoints of the Webhook API mentioned in the [Postman Documenter](https://documenter.getpostman.com/view/11026000/2sA3Bq5XEh#62e6ec65-021b-42a4-ac93-d1434b393c6c).
+
+If you encounter any issues or need help setting up webhooks, feel free to reach out to us on [**GitHub Discussions**](https://github.com/formbricks/formbricks/discussions). 😃
\ No newline at end of file
diff --git a/docs/xm-and-surveys/core-features/integrations/wordpress.mdx b/docs/xm-and-surveys/core-features/integrations/wordpress.mdx
new file mode 100644
index 0000000000..0591f0b9e3
--- /dev/null
+++ b/docs/xm-and-surveys/core-features/integrations/wordpress.mdx
@@ -0,0 +1,84 @@
+---
+title: "Wordpress"
+description:
+ "Target specific visitors with a survey on your WordPress page using Formbricks for free. Show survey on specific page or on button click."
+---
+
+# Connect Formbricks with your WordPress page
+
+If you want to run a targeted survey on your WordPress website, Formbricks is the way to go! With our generous free plan and open source tech, you get everything you need to get started and keep full control over your data.
+
+## TLDR
+
+1. Install the Formbricks WordPress plugin
+2. Create a [free Formbricks account](https://app.formbricks.com/auth/signup)
+3. Find and copy the `environment id`
+4. Copy the environment id into the right field in the plugin settings
+5. Create survey on trigger “New Session” to test it
+
+## Step 1: Install the Formbricks WordPress plugin
+
+As long as the Formbricks plugin is in review, please download it from our [GitHub repository directly.](https://github.com/formbricks/wordpress)
+
+
+
+## Step 2: Create a Formbricks Account
+
+This is super straight forward: Go to [app.formbricks.com/auth/signup](https://app.formbricks.com/auth/signup), create the account, verify your email and you’re in!
+
+When you see this screen, you’re there:
+
+
+
+
+## Step 3: Find and copy the environmentId
+
+Go to Settings > Setup Checklist where you’ll find your environmentId:
+
+
+
+## Step 4: Copy the environmentId to the WordPress Plugin Settings
+
+In your WordPress instance, go to the Formbricks Plugin settings and copy the environmentId in the correct field:
+
+
+
+Then click the button at the bottom to see if the connection worked.
+
+If you don’t use our Cloud, you also have to update the API Host
+
+Great!
+
+## Step 5: Create survey on trigger “New Session”
+
+Now that all is setup, we create a survey to display an example survey. Pick any template here:
+
+
+
+
+Keep the content for now, click on the Settings tab:
+
+
+
+
+Here we do three things:
+
+1. Change survey type to **App Survey** or **Website Survey**(for public facing)
+2. Select trigger “New Session”
+3. Publish
+
+
+
+
+When you see this page, you did it!
+
+
+
+
+## Step 6: Reload your page to check out your survey 🤓
+
+You did it! Reload the WordPress page and your survey should appear!
+
+## Doesn't work?
+
+If you have any questions or need help, feel free to reach out to us on **[Github Discussions](https://github.com/formbricks/formbricks/discussions)**
diff --git a/docs/xm-and-surveys/core-features/integrations/zapier.mdx b/docs/xm-and-surveys/core-features/integrations/zapier.mdx
new file mode 100644
index 0000000000..64b082efa5
--- /dev/null
+++ b/docs/xm-and-surveys/core-features/integrations/zapier.mdx
@@ -0,0 +1,88 @@
+---
+title: "Zapier"
+description:
+ "Master the integration of Formbricks with Zapier using our detailed guide. Seamlessly connect your surveys to 5000+ apps, automate data transfers, and enhance feedback management. Start optimizing your workflow today."
+---
+
+Zapier is a powerful ally. Hook up Formbricks with Zapier and you can send your data to 5000+ other apps. Here is how to do it.
+
+
+ ### Nail down your survey first? Any changes in the survey cause additional
+ work in the Zap. It makes sense to first settle on the survey you want to run
+ and then get to setting up Zapier.
+
+
+## Step 1: Setup your survey incl. `questionId` for every question
+
+When setting up the Zap your life will be easier when you change the `questionId`s of your survey questions. You can only do so **before** you publish your survey.
+
+
+
+_In every question card in the Advanced Settings you find the Question ID field. Update it so that you’ll recognize the response tied to this question._
+
+
+ Already published? Duplicate survey You can only update the questionId
+ when the survey was not yet published. Already published it? Just **duplicate
+ it** to update the questionIds.
+ 
+
+
+## Step 2: Send a test response
+
+In order to set up Zapier you’ll need a test response. This allows you to select the individual values of each response in your Zap. If you have Formbricks running locally and you want to set up an app or a website survey, you can use our [Demo App](/contributing/demo) to trigger a survey and submit a response.
+
+
+
+## Step 3: Setup your Zap
+
+Go to [zapier.com](https://zapier.com) and create a new Zap. Search for “Formbricks” to get started:
+
+
+
+Then, choose the event you want to trigger the Zap on:
+
+
+
+## Step 4: Connect Formbricks with Zapier
+
+Now, you have to connect Zapier with Formbricks via an API Key:
+
+
+
+
+
+
+Now you need an API key. Please refer to the [API Key Setup](/additional-features/api#how-to-generate-an-api-key) page to learn how to create one.
+
+Once you copied it in the newly opened Zapier window, you will be connected:
+
+
+
+## Step 5: Select Survey
+
+Next, you can choose from all the surveys you have created in this environment:
+
+
+
+## Step 6: Test your trigger
+
+Once you hit “Test” you will see the three most recent submissions for this survey. If you don’t have any submissions in the survey, submit one to continue setting up your Zap:
+
+
+
+_Now you're happy that you updated the questionId's_
+
+## Step 7: Set up your Zap
+
+Now you have all the data you need at hand. The next steps depend on what you want to do with it. In this tutorial, we will send submissions to a Slack channel:
+
+
+
+In the action itself we can determine the data and layout of the message. Here, we only choose the submission data. You can also refer to the meta data of the submission and the [attributes](/app-surveys/user-identification) of the person who submitted the survey.
+
+
+
+We now receive a notifcation in our Slack channel whenever a Churn survey is completed:
+
+
+
diff --git a/docs/xm-and-surveys/core-features/question-type/address.mdx b/docs/xm-and-surveys/core-features/question-type/address.mdx
new file mode 100644
index 0000000000..c47fead0be
--- /dev/null
+++ b/docs/xm-and-surveys/core-features/question-type/address.mdx
@@ -0,0 +1,42 @@
+---
+title: "Address"
+description: "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."
+icon: "map-pin"
+---
+
+
+
+## Elements
+
+
+
+### 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
diff --git a/docs/xm-and-surveys/core-features/question-type/consent.mdx b/docs/xm-and-surveys/core-features/question-type/consent.mdx
new file mode 100644
index 0000000000..b923b6e855
--- /dev/null
+++ b/docs/xm-and-surveys/core-features/question-type/consent.mdx
@@ -0,0 +1,35 @@
+---
+title: "Consent"
+description: "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."
+icon: "check"
+---
+
+
+
+## Elements
+
+
+
+### 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.
diff --git a/docs/xm-and-surveys/core-features/question-type/contact-info.mdx b/docs/xm-and-surveys/core-features/question-type/contact-info.mdx
new file mode 100644
index 0000000000..1690c84a97
--- /dev/null
+++ b/docs/xm-and-surveys/core-features/question-type/contact-info.mdx
@@ -0,0 +1,41 @@
+---
+title: "Contact Info"
+description: "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."
+icon: "address-book"
+---
+
+
+
+## Elements
+
+
+
+### 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
diff --git a/docs/xm-and-surveys/core-features/question-type/date.mdx b/docs/xm-and-surveys/core-features/question-type/date.mdx
new file mode 100644
index 0000000000..8d0538ac93
--- /dev/null
+++ b/docs/xm-and-surveys/core-features/question-type/date.mdx
@@ -0,0 +1,39 @@
+---
+title: "Date"
+description: "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."
+icon: "calendar"
+---
+
+
+
+## Elements
+
+
+
+### 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
diff --git a/docs/xm-and-surveys/core-features/question-type/file-upload.mdx b/docs/xm-and-surveys/core-features/question-type/file-upload.mdx
new file mode 100644
index 0000000000..4ac4e7b049
--- /dev/null
+++ b/docs/xm-and-surveys/core-features/question-type/file-upload.mdx
@@ -0,0 +1,43 @@
+---
+title: "File Upload"
+description: "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."
+icon: "upload"
+---
+
+
+
+## Elements
+
+
+
+### 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.
diff --git a/docs/xm-and-surveys/core-features/question-type/free-text.mdx b/docs/xm-and-surveys/core-features/question-type/free-text.mdx
new file mode 100644
index 0000000000..b2a7b8457c
--- /dev/null
+++ b/docs/xm-and-surveys/core-features/question-type/free-text.mdx
@@ -0,0 +1,49 @@
+---
+title: "Free Text"
+description:
+ "Free text questions allow respondents to enter a custom answer."
+icon: "text"
+---
+
+Free text questions allow respondents to enter a custom answer. Displays a title and an input field for the respondent to type in.
+
+
+
+## Elements
+
+
+
+
+### 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.
diff --git a/docs/xm-and-surveys/core-features/question-type/matrix.mdx b/docs/xm-and-surveys/core-features/question-type/matrix.mdx
new file mode 100644
index 0000000000..ead991b44a
--- /dev/null
+++ b/docs/xm-and-surveys/core-features/question-type/matrix.mdx
@@ -0,0 +1,46 @@
+---
+title: "Matrix"
+description: "Matrix questions allow respondents to select a value for each option presented in rows."
+icon: "table"
+---
+
+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.
+
+
+
+## Elements
+
+
+
+### 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.
diff --git a/docs/xm-and-surveys/core-features/question-type/net-promoter-score.mdx b/docs/xm-and-surveys/core-features/question-type/net-promoter-score.mdx
new file mode 100644
index 0000000000..f54c62fa4b
--- /dev/null
+++ b/docs/xm-and-surveys/core-features/question-type/net-promoter-score.mdx
@@ -0,0 +1,40 @@
+---
+title: "Net Promoter Score"
+description: "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."
+icon: "presentation-screen"
+---
+
+
+
+
+## Elements
+
+
+
+### 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.
diff --git a/docs/xm-and-surveys/core-features/question-type/ranking.mdx b/docs/xm-and-surveys/core-features/question-type/ranking.mdx
new file mode 100644
index 0000000000..130baea251
--- /dev/null
+++ b/docs/xm-and-surveys/core-features/question-type/ranking.mdx
@@ -0,0 +1,40 @@
+---
+title: "Ranking"
+description: "Ranking questions let respondents select options in order from 1 to the total number of options. As they make their choices, the list is automatically rearranged in numerical order."
+icon: "ranking-star"
+---
+
+
+
+## Elements
+
+
+
+### Title
+
+Add a clear title to inform the respondent what information you are asking for.
+
+### Description
+
+Provide an optional description with further instructions.
+
+### Options
+
+You need to add at least two options so that users can rearrange them in numerical order based on their selection.
+
+### 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.
diff --git a/docs/xm-and-surveys/core-features/question-type/rating.mdx b/docs/xm-and-surveys/core-features/question-type/rating.mdx
new file mode 100644
index 0000000000..5c1e665bc2
--- /dev/null
+++ b/docs/xm-and-surveys/core-features/question-type/rating.mdx
@@ -0,0 +1,45 @@
+---
+title: "Rating"
+description: "Rating questions allow respondents to rate questions on a scale"
+icon: "star"
+---
+
+Rating questions allow respondents to rate questions on a scale. Displays a title and a rating scale consisting of a number of images and labels for the lower and upper ends of the scale.
+
+
+
+## Elements
+
+
+
+### Title
+
+Add a clear title to inform the respondent what information you are asking for.
+
+### Description
+
+Provide an optional description with further instructions.
+
+### Scale
+
+Select the icon to be used for the rating scale. The options include: stars, numbers or smileys. The default is stars.
+
+### Range
+
+Select the range of the rating scale. the options include: 3, 4, 5, 7 or 10. The default is 5.
+
+### Labels
+
+Add labels for the lower and upper bounds of the rating scale. The default is "Not good" and "Very good".
diff --git a/docs/xm-and-surveys/core-features/question-type/schedule-a-meeting.mdx b/docs/xm-and-surveys/core-features/question-type/schedule-a-meeting.mdx
new file mode 100644
index 0000000000..6f3310f151
--- /dev/null
+++ b/docs/xm-and-surveys/core-features/question-type/schedule-a-meeting.mdx
@@ -0,0 +1,39 @@
+---
+title: "Schedule A Meeting"
+description: "The Schedule A Meeting question type allows respondents to book a meeting by selecting a date and time. It includes a title to guide the respondent, along with an optional description to provide additional context for the meeting setup."
+icon: "calendar-check"
+---
+
+
+
+## Elements
+
+
+
+### Title
+
+Add a clear title to inform the respondent what information you are asking for.
+
+### Description
+
+Provide an optional description with further instructions.
+
+### Cal.com Username/Event
+
+Add an input box where users can enter their [`cal.com`](https://cal.com/) username and event URL (e.g., `username/event`).
+
+### Custom Hostname (Optional)
+
+Enable an input box for adding a custom hostname, which is necessary if using a self-hosted instance of [`cal.com`](https://cal.com/docs/self-hosting/installation).
diff --git a/docs/xm-and-surveys/core-features/question-type/select-multiple.mdx b/docs/xm-and-surveys/core-features/question-type/select-multiple.mdx
new file mode 100644
index 0000000000..80c6e5ae78
--- /dev/null
+++ b/docs/xm-and-surveys/core-features/question-type/select-multiple.mdx
@@ -0,0 +1,40 @@
+---
+title: "Multi Select"
+description:
+ "Multi select questions allow respondents to select several answers from a list"
+icon: "list"
+---
+
+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.
+
+
+
+## Elements
+
+
+
+### 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](/xm-and-surveys/core-features/question-type/select-single) questions.
diff --git a/docs/xm-and-surveys/core-features/question-type/select-picture.mdx b/docs/xm-and-surveys/core-features/question-type/select-picture.mdx
new file mode 100644
index 0000000000..da3982ece8
--- /dev/null
+++ b/docs/xm-and-surveys/core-features/question-type/select-picture.mdx
@@ -0,0 +1,43 @@
+---
+title: "Picture Selection"
+description:
+ "Picture selection questions allow respondents to select one or more images from a list"
+icon: "image"
+---
+
+Picture selection questions allow respondents to select one or more images from a list. Displays a title and a list of images for the respondent to choose from.
+
+
+
+## Elements
+
+
+### Title
+
+Add a clear title to inform the respondent what information you are asking for.
+
+### Description
+
+Provide an optional description with further instructions.
+
+### Images
+
+Images can be uploaded via click or drag and drop. At least two images are required.
+
+### Allow Multi Select
+
+This option allows user to select more than one image.import { img } from "@/components/mdx-image";
+
+// import PictureSelection from "./images/picture-selection.webp";
diff --git a/docs/xm-and-surveys/core-features/question-type/select-single.mdx b/docs/xm-and-surveys/core-features/question-type/select-single.mdx
new file mode 100644
index 0000000000..e8bc625764
--- /dev/null
+++ b/docs/xm-and-surveys/core-features/question-type/select-single.mdx
@@ -0,0 +1,49 @@
+---
+title: "Single Select"
+description:
+ "Single select questions allow respondents to select one answer from a list"
+icon: "list"
+---
+
+Single select questions allow respondents to select one answer from a list. Displays a title and a list of radio buttons for the respondent to choose from.
+
+
+
+## Elements
+
+
+
+### Title
+
+Add a clear title to inform the respondent what information you are asking for.
+
+### Description
+
+Provide an optional description with further instructions.
+
+### Options
+
+The list of answers the respondent can choose from.
+
+### Additional Actions
+
+- Add "Other": Adds an "Other" option to allow respondents to enter a custom answer. This will show two inputs, one for the label text and one for the placeholder.
+
+- Convert to Multiple Select: Converts the question to a multiple select question. This will show checkboxes instead of radio buttons.
+
+- Order dropdown: Allows you to choose the order in which the options are displayed.
+ - Keep current order: Options will be displayed in the order you added them.
+ - Randomize all: Options will be displayed in a random order.
+ - Randomize all except last option: Options will be displayed in a random order, except for the last one.
diff --git a/docs/xm-and-surveys/core-features/question-type/statement-cta.mdx b/docs/xm-and-surveys/core-features/question-type/statement-cta.mdx
new file mode 100644
index 0000000000..a09708dadf
--- /dev/null
+++ b/docs/xm-and-surveys/core-features/question-type/statement-cta.mdx
@@ -0,0 +1,38 @@
+---
+title: "Statement (Call to Action)"
+icon: "arrow-right"
+description: "The Statement question type allows you to display descriptive information in your survey, such as a message or instruction. "
+---
+
+It consists of a title (can be Question or Short Note) and a description, which can be a brief note(realted to CTA) or guideline. Instead of collecting input, this type includes a call to action button for further steps, such as booking an interview call.
+
+
+
+## Elements
+
+
+
+### Title
+
+This is the main question or heading that appears at the top of the card.
+
+### Description
+
+A brief note or instruction displayed under the title, typically used to provide context or instructions for the next step.
+
+### Button Options
+
+- Button to continue in survey: This will continue respondent with the survey, form or fillups.
+- Button to link to external URL: Selecting this option will open-up URL input box below when us set URL the button will redirect to your setted link.
diff --git a/docs/xm-and-surveys/core-features/styling-theme.mdx b/docs/xm-and-surveys/core-features/styling-theme.mdx
new file mode 100644
index 0000000000..dd43c6e547
--- /dev/null
+++ b/docs/xm-and-surveys/core-features/styling-theme.mdx
@@ -0,0 +1,87 @@
+---
+title: "Styling Theme"
+description:
+ "Keep the survey styling consistent over all surveys with a Styling Theme. Customize the colors, fonts, and other styling options to match your brand's aesthetic."
+icon: "palette"
+---
+
+Keep the survey styling consistent over all surveys with a Styling Theme. Customize the colors, fonts, and other styling options to match your brand's aesthetic.
+
+## Configuration
+
+In the left side bar, you find the `Configuration` page. On this page you find the `Look & Feel` section:
+
+
+/>
+
+## **Styling Options**
+
+1. **Form Styling:** Customize the survey card using the following settings
+
+
+
+
+- **Brand Color**: Sets the primary color tone of the survey.
+- **Text Color**: This is a single color scheme that will be used across to display all the text on your survey. Ensures all text is readable against the background.
+- **Input Color:** Alters the border color of input fields.
+- **Input Border Color**: This is the color of the border of the form input field.
+
+2. **Card Styling:** Adjust the look of the survey card
+
+
+
+- **Roundness**: Adjusts the corner roundness of the survey card and its components (including input boxes, buttons).
+- **Card Background Color**: Sets the card's main background color.
+- **Card Border Color**: Changes the border color of the card
+- **Card Shadow Color**: Adds a shadow effect for depth
+- **Hide Progress Bar**: Optionally remove the progress bar to simplify the survey experience
+- **Add Highlight Border**: Adds a distinct border for emphasis.
+
+3. **Background Styling**: Customize the survey background with static colors, animations, or images (upload your own or get from Unsplash)
+
+This is only available for Link Surveys
+
+
+
+- **Color**: Pick any color for the background
+- **Animation**: Add dynamic animations to enhance user experience..
+- **Upload**: Use a custom uploaded image for a personalized touch
+- Image: Choose from Unsplash's extensive gallery. Note that these images will have a link and mention of the author & Unsplash on the bottom right to give them the credit for their awesome work!
+- **Background Overlay**: Adjust the background's opacity
+
+## Add Brand Logo
+
+Customize your survey with your brand's logo.
+
+Brand logos are only visible on Link Survey pages.
+
+1. In the Look & Feel page itself in Project settings, scroll down to see the Logo Upload box.
+
+
+
+2. Upload your logo
+
+
+
+
+3. Add a background color: If you’ve uploaded a transparent image and want to add background to it, enable this toggle and select the color of your choice.
+
+
+
+
+4. Remember to save your changes!
+
+
+
+
+The logo settings apply across all Link Surveys pages.
+
+## Overwrite Styling Theme
+
+You can allow to overwrite the styling theme for individual surveys to create unique styles for each survey:
+
+
+
+In the survey editor, a tab called `Styling` will appear. Here you can overwrite the default styling theme.
+
+---
diff --git a/docs/xm-and-surveys/core-features/user-management.mdx b/docs/xm-and-surveys/core-features/user-management.mdx
new file mode 100644
index 0000000000..f62b5612af
--- /dev/null
+++ b/docs/xm-and-surveys/core-features/user-management.mdx
@@ -0,0 +1,144 @@
+---
+title: "User Management"
+description:
+ "Assign different roles to organization members to grant them specific rights like creating surveys, viewing responses, or managing organization members."
+icon: "user"
+---
+
+# 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.
+
+
+ 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`.
+
+
+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:
+
+
+
+2. Click on the `Add member` button:
+
+
+
+
+3. In the modal, add the Name, Email and Role of the organization member you want to invite:
+
+
+
+
+
+ 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`.
+
+
+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:
+
+
+
+
+2. Click on the `Add member` button:
+
+
+
+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:
+
+
+
+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.
+
+---
diff --git a/docs/xm-and-surveys/overview.mdx b/docs/xm-and-surveys/overview.mdx
new file mode 100644
index 0000000000..f732859e68
--- /dev/null
+++ b/docs/xm-and-surveys/overview.mdx
@@ -0,0 +1,39 @@
+---
+title: "XM & Surveys"
+description: "Learn how Formbricks helps you gather, analyse, and report experience data."
+icon: "tablet-screen"
+---
+
+Experience Management is the practice of measuring and managing how a stakeholder group of an organization (customers, employees, patients, citizens, etc...) experience the products or services of the organization.
+
+Historically, Experience Management has three steps:
+
+1. **Gather**
+
+ data
+
+2. **Analyze**
+
+ and report on the data
+
+3. **Integrate**
+
+ and automate to measure experiences at scale
+
+## Gather data
+
+The heart of Formbricks data gathering is a powerful yet user-friendly survey builder. With a simple drag-and-drop interface, you can add questions, set response options, handle variables, set up complex logic and manage quotas. Our surveys have a modern look & feel, can be fully customized to match your brand - all while keeping respondent data safe.
+
+## Analytics & Report
+
+Formbricks gives you clear analytics and insights to understand user responses. It organizes survey results into easy-to-read formats, helping you spot trends, identify issues, and find opportunities for improvement. You can export your data to .csv or .xlsx or pipe it to your data lake via API.
+
+We're working on a fully compliant way to leverage AI to harvest insights from unstructured data as well as a comprehensive reporting feature.
+
+## Integrate & Automate
+
+Experience Management scales best, when it is automated. Webhooks and the comprehensive REST API make it fast and easy to build integrations into your existing tech stack. Formbricks also powers integrations for n8n, ActivePieces, Zapier and Make.com to build any flow that you need.
+
+
+
+
\ No newline at end of file
diff --git a/docs/xm-and-surveys/surveys/general-features/add-image-or-video-question.mdx b/docs/xm-and-surveys/surveys/general-features/add-image-or-video-question.mdx
new file mode 100644
index 0000000000..f68677906e
--- /dev/null
+++ b/docs/xm-and-surveys/surveys/general-features/add-image-or-video-question.mdx
@@ -0,0 +1,30 @@
+---
+title: "Add Image / Video"
+description: "Enhance your questions by adding images or videos. This makes instructions clearer and the survey more engaging."
+icon: "image"
+---
+
+## How to Add Images
+
+Click the icon on the right side of the question to add an image or video:
+
+
+
+Upload an image by clicking the upload icon or dragging the file:
+
+
+
+## How to Add Videos
+
+Toggle to add a video via link:
+
+
+
+### Supported Video Platforms
+
+We support YouTube, Vimeo, and Loom URLs.
+
+
+ **YouTube Privacy Mode**: This option reduces tracking by converting YouTube
+ URLs to no-cookie URLs. It only works with YouTube.
+
diff --git a/docs/xm-and-surveys/surveys/general-features/conditional-logic.mdx b/docs/xm-and-surveys/surveys/general-features/conditional-logic.mdx
new file mode 100644
index 0000000000..eb1b71b77e
--- /dev/null
+++ b/docs/xm-and-surveys/surveys/general-features/conditional-logic.mdx
@@ -0,0 +1,100 @@
+---
+title: "Conditional Logic"
+description: "Create complex survey logic with the Logic Editor. Use conditions, actions, and variables to create a personalized survey experience."
+icon: "code-branch"
+---
+
+
+
+
+## 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**
+
+* **Add a Logic Block**: Click the `Add logic +` button to add a new logic block.
+
+
+
+
+ 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.
+
+
+* **Add Conditions**: Add conditions to the logic block. Conditions are rules that determine when an action should be executed.
+
+
+
+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.
+
+
+
+* **Condition Operators**: Choose an operator to compare the condition value.
+
+
+
+* \*\* 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.
+
+
+
+
+ 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.
+
+
+
+
+* **Add Actions**: Add actions to the logic block. Actions are tasks that are executed when a condition is met.
+
+
+ You can add multiple actions to a logic block. Actions are executed in the
+ order they are added.
+
+
+* **Action Options**: Choose from a list of available actions.
+
+
+
+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.
+
+ 
+
+ 
+
+ 
+
+ 
+
+ * **Require Answer**: Make a question required. Only the optional questions can be marked as required while filling the survey.
+
+ 
+
+ * **Jump to Question**: Skip to a specific question. The user will be redirected to the specified question based on the condition.
+
+ 
+
+* **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.
+
+
\ No newline at end of file
diff --git a/docs/xm-and-surveys/surveys/general-features/hidden-fields.mdx b/docs/xm-and-surveys/surveys/general-features/hidden-fields.mdx
new file mode 100644
index 0000000000..3825332687
--- /dev/null
+++ b/docs/xm-and-surveys/surveys/general-features/hidden-fields.mdx
@@ -0,0 +1,70 @@
+---
+title: "Hidden Fields"
+description: "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`)."
+icon: "eye-slash"
+---
+
+## 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.
+
+
+
+### Add Hidden Field IDs
+
+1. Now click on it to add a new hidden field ID. You can add as many hidden fields as you want.
+
+
+
+
+
+
+
+## Set Hidden Field in Responses
+
+### Link Surveys
+
+Single Hidden Field:
+
+```
+ sh https://formbricks.com/clin3dxja02k8l80hpwmx4bjy?screen=pricing
+```
+
+Multiple Hidden Fields:
+
+```
+ sh https://formbricks.com/clin3dxja02k8l80hpwmx4bjy?screen=landing_page&job=Founder
+```
+
+### App & Website Surveys
+
+For in-product surveys, you can set hidden fields in the response by adding them to the `formbricks.track` call:
+
+
+
+ ```sh
+ formbricks.track("my event", {
+ hiddenFields: {
+ screen: "landing_page",
+ job: "Founder"
+ },
+ });
+ ```
+
+
+
+## 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.
+
+
+
+## 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](/xm-and-surveys/surveys/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.
diff --git a/docs/xm-and-surveys/surveys/general-features/limit-submissions.mdx b/docs/xm-and-surveys/surveys/general-features/limit-submissions.mdx
new file mode 100644
index 0000000000..47e32a0e6f
--- /dev/null
+++ b/docs/xm-and-surveys/surveys/general-features/limit-submissions.mdx
@@ -0,0 +1,13 @@
+---
+title: "Limit Submissions"
+description: "Automatically close your survey after reaching a set number of responses in Formbricks. This is useful for limited offers, exclusive surveys, or when you need a specific sample size."
+icon: "lock"
+---
+
+- **How to**: Open the Survey Editor, switch to the Settings tab. Scroll down to **Response Options**, and toggle the **“Close survey on response limit”**.
+
+
+
+- **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.
diff --git a/docs/xm-and-surveys/surveys/general-features/metadata.mdx b/docs/xm-and-surveys/surveys/general-features/metadata.mdx
new file mode 100644
index 0000000000..12e1395513
--- /dev/null
+++ b/docs/xm-and-surveys/surveys/general-features/metadata.mdx
@@ -0,0 +1,54 @@
+---
+title: "User Metadata"
+description: "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."
+icon: "user"
+---
+
+
+
+## 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.
+
+
+
+## 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.
+
+
+
+
+1. 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.
+
+---
+
+**Can’t figure it out?**: [Get help in Github Discussions](https://github.com/formbricks/formbricks/discussions)
diff --git a/docs/xm-and-surveys/surveys/general-features/multi-language-surveys.mdx b/docs/xm-and-surveys/surveys/general-features/multi-language-surveys.mdx
new file mode 100644
index 0000000000..1aade23bbd
--- /dev/null
+++ b/docs/xm-and-surveys/surveys/general-features/multi-language-surveys.mdx
@@ -0,0 +1,120 @@
+---
+title: "Multi-language Surveys"
+description: "Create surveys that support multiple languages using translations. This helps you reach a diverse audience without making separate surveys for each language. It also simplifies survey creation, delivery, and analysis for multilingual audiences."
+icon: "language"
+---
+
+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. [Read this guide for App Surveys](#app-surveys-configuration)
+
+- Link survey: Add a `lang` parameter in the survey URL. [Read this guide for Link Surveys](#link-surveys-configuration)
+
+
+
+---
+
+## Creating a Multi-language Survey
+
+- Open the **Survey Languages** page in the Formbricks settings via the top-right menu:
+
+
+
+
+- Click on the **Edit languages** button, to add a new language to your survey
+
+
+
+
+- Select the preferred language from the dropdown and assign an identifier Alias. Click the **Add language** button to add the language to your project.
+
+
+
+
+You can come back to this page anytime to add more languages or remove existing ones.
+
+- Now, return to the dashboard to create a new survey or edit an existing one.
+
+
+
+
+- In the survey editor, scroll down to the **Multiple Languages** section at the bottom and enable the toggle next to it.
+
+
+
+- Choose a **Default Language** for your survey.
+
+
+ Changing the default language will reset all the translations you have made
+ for the survey.
+
+
+1. Now, add the languages from the dropdown that you want to support in your survey.
+
+
+
+1. You can now see the survey in the selected language by clicking on the language dropdown in any of the questions.
+
+
+
+1. You can now translate all survey content, including questions, options, and button placeholders, into the selected language.
+
+
+
+
+1. 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.
+
+```js javascript
+Formbricks.init({
+ environmentId: "",
+ apiHost: "",
+ userId: "",
+ attributes: {
+ language: "de", // ISO identifier or Alias set when creating language
+ },
+});
+```
+
+
+ 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.
+
+
+1. 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`](https://your-survey-url.com?lang=fr)
+
+Here are two examples:
+
+- English: [https://app.Formbricks.com/s/clptfos2i1pj516pvhxqyu3bn?lang=en](https://app.Formbricks.com/s/clptfos2i1pj516pvhxqyu3bn?lang=en)
+
+- German: [https://app.Formbricks.com/s/clptfos2i1pj516pvhxqyu3bn?lang=de](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!
+
+**Can’t figure it out?**: [Get help in Github Discussions](https://github.com/formbricks/formbricks/discussions)
diff --git a/docs/xm-and-surveys/surveys/general-features/overwrite-styling.mdx b/docs/xm-and-surveys/surveys/general-features/overwrite-styling.mdx
new file mode 100644
index 0000000000..a94f0a1cef
--- /dev/null
+++ b/docs/xm-and-surveys/surveys/general-features/overwrite-styling.mdx
@@ -0,0 +1,88 @@
+---
+title: "Custom Styling"
+description: "Overwrite the global styling theme for individual surveys to create unique styles for each survey."
+icon: "palette"
+---
+
+Overwrite the global styling theme for individual surveys to create unique styles for each survey.
+
+
+ To set a styling theme for all surveys, please see the [Styling Theme](/xm-and-surveys/core-features/styling-theme) manual.
+
+
+## Overwrite Styling Theme
+
+1. In the **Survey Editor** of the survey you want to style, navigate to the **Styling** tab:
+
+ 
+
+2. Activate the **Add Custom Styles** toggle to override the default project styling:
+
+ 
+ />
+
+3. Customize your survey's style as needed:
+
+ 
+
+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 app and website surveys by adding the following CSS to your global CSS file (e.g., `globals.css`):
+
+**Do not** change the CSS variable names, as Formbricks uses them to identify styling elements. You can adjust the values to fit your design. Below are sample values for reference:
+
+```css
+/* Overwrite Formbricks default styles */
+--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;
+```
+
+Check out an example in our Demo project.
+
+Funky Survey Examples
+Super Mario
+"I guess he won't let himself be limited by radio buttons and do all three things!"
+
+
+
+Hipster Living
+"Does your monstera get enough water?"
+
+
+
+Windows XP
+"Hach, nostalgia. It made us want to play Mafia."
+
+
+
+Who's a Good Boy?
+"Things you've likely said to your dog."
+
+
+
+### Fixes & Improvements:
+- **Numbered list formatting**: Fixed numbering issues.
+- **Consistent image alt text**: Updated descriptions for clarity.
+- **CSS syntax correction**: Removed unnecessary text before code block.
+- **Grammar & punctuation fixes**: Ensured clarity and smooth readability.
+
+This should now display correctly on Mintlify! Let me know if you need further tweaks.
\ No newline at end of file
diff --git a/docs/xm-and-surveys/surveys/general-features/partial-submissions.mdx b/docs/xm-and-surveys/surveys/general-features/partial-submissions.mdx
new file mode 100644
index 0000000000..6b45edc19c
--- /dev/null
+++ b/docs/xm-and-surveys/surveys/general-features/partial-submissions.mdx
@@ -0,0 +1,73 @@
+---
+title: "Partial Submissions"
+description: "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."
+icon: "circle-half"
+---
+
+## **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.
+
+
+
+### **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.
diff --git a/docs/xm-and-surveys/surveys/general-features/recall.mdx b/docs/xm-and-surveys/surveys/general-features/recall.mdx
new file mode 100644
index 0000000000..672f133937
--- /dev/null
+++ b/docs/xm-and-surveys/surveys/general-features/recall.mdx
@@ -0,0 +1,79 @@
+---
+title: "Recall Data"
+description: "Personalize your surveys by dynamically inserting data from URL parameters or previous answers into questions and descriptions. The Recall Data feature helps create engaging, adaptive survey experiences tailored to each respondent."
+icon: "rotate-right"
+---
+
+## Recall Sources
+
+You can recall data from the following sources:
+
+- From a previous question
+
+- From a [Hidden Field](/xm-and-surveys/surveys/general-features/hidden-fields)
+
+- From a [Variable](/xm-and-surveys/surveys/general-features/variables)
+
+## Recalling from a previous question
+
+
+ The recall functionality is disabled on the first question of the survey since
+ there’s no preceding question to recall data from.
+
+
+### **Pre-requisite**
+
+Ensure the answer you wish to recall precedes the question in which it will be recalled. Here’s an example of setting up the first question:
+
+
+
+### **Step 1: Recall Data**
+
+Type **`@`** in the question or description field where you want to insert a recall. This triggers a dropdown menu listing all preceding questions. Select the question you want to recall data from.
+
+
+
+### **Step 2: Set a Fallback**
+
+To ensure the survey remains coherent when a response is missing (or the question is optional), you should set a fallback option.
+
+
+
+
+## Recalling from the URL
+
+1. Create a hidden field, [here is how →](/xm-and-surveys/surveys/general-features/hidden-fields)
+
+2. Use the `@` symbol in a question or description to recall the value of the hidden field
+
+3. Set a fallback in case the hidden field is not being filled by a URL parameter
+
+4. Use [Data Prefilling](/xm-and-surveys/surveys/link-surveys/data-prefilling) to set the hidden field value when the survey is accessed
+
+## Recalling from a Variable
+
+1. Create a variable, [here is how →](/xm-and-surveys/surveys/general-features/variables)
+
+2. Use the `@` symbol in a question or description to recall the value of the variable
+
+3. Set a fallback in case the variable is not being filled by a URL parameter
+
+## Live Demo
+
+
+
+## **Conclusion**
+
+Recall Data in Formbricks surveys allows for a conversational and customized survey experience that enhances engagement and improves the quality of feedback. By integrating previous responses into new questions, you create a more interactive and relevant environment for respondents.
diff --git a/docs/xm-and-surveys/surveys/general-features/schedule-start-end-dates.mdx b/docs/xm-and-surveys/surveys/general-features/schedule-start-end-dates.mdx
new file mode 100644
index 0000000000..e360dbb257
--- /dev/null
+++ b/docs/xm-and-surveys/surveys/general-features/schedule-start-end-dates.mdx
@@ -0,0 +1,34 @@
+---
+title: "Schedule Start & End Dates"
+description: "Optimize your survey management with custom Start & End Conditions in Formbricks. This feature allows you to control exactly when your survey is available for responses and when it should close, making it ideal for time-sensitive or number-of-response-limited surveys."
+icon: "calendar-days"
+---
+
+Configure your surveys to open and close based on specific criteria. Here’s how to set up these conditions:
+
+## **Schedule a Survey Release**
+
+- **How to**: Open the Survey Editor, switch to the Settings tab. Scroll down to Response Options, Toggle the “Release Survey on Date”.
+
+
+
+- **Details**: Choose the date and time when the survey should become available to respondents. All times follow UTC timezone.
+
+- **Use Case**: This is useful for launching surveys in alignment with events, product releases, or specific marketing campaigns.
+
+## **Automatically Closing a Survey**
+
+- **How to**: Open the Survey Editor, switch to the Settings tab. Scroll down to Response Options, Toggle the “Close survey on date”.
+
+
+
+- **Details**: Define a specific date and time for the survey to close. This also follows UTC timezone.
+
+- **Use Case**: Essential for surveys linked to time-bound events or studies where data collection needs to end
+ at a specific point.
+
+### **Summary**
+
+Setting up Start & End Dates in Formbricks allows you to control the availability and duration of your surveys with precision. Whether you are conducting academic research, market analysis, or gathering event feedback, these settings help ensure that your data collection aligns perfectly with your objectives.
+
+---
diff --git a/docs/xm-and-surveys/surveys/general-features/shareable-dashboards.mdx b/docs/xm-and-surveys/surveys/general-features/shareable-dashboards.mdx
new file mode 100644
index 0000000000..6dc1fecfa2
--- /dev/null
+++ b/docs/xm-and-surveys/surveys/general-features/shareable-dashboards.mdx
@@ -0,0 +1,51 @@
+---
+title: "Shareable Dashboards"
+description: "Create public, shareable versions of your survey results dashboards. This feature enables you to easily share survey results with stakeholders, team members, or the public without granting access to your Formbricks account."
+icon: "table-columns"
+---
+
+## How To Publish Survey Results
+
+1. **Go to survey summary**: Choose the survey for which you want to create a shareable dashboard and go to its summary page.
+
+2. **Share results**: Click the "Share results" and then "Publish to web".
+
+
+
+1. **Confirm**: Click "Publish to public web" (it's public).
+
+
+
+
+1. **Share link**: Formbricks has generated a unique URL for your public dashboard. Share it around.
+
+
+
+Whoever has access to the link can access the survey results.
+
+## How To Unpublish Survey Results
+
+Unpublish is very simple: Go to "Share results" -> "Unpublish from web" -> "Unpublish".
+
+
+## Key Features
+
+- **Read-only access**: Viewers can see survey results but cannot modify data or settings.
+
+- **Real-time updates**: The shared dashboard reflects current survey data in real-time.
+
+- **Filters included**: Visitors can access all filters to dissect the data.
+
+- **Revocable access**: You can disable the shared link at any time to restrict access.
+
+## Use Cases
+
+- Share results with clients or stakeholders
+
+- Publish survey findings to your website or blog
+
+- Collaborate with team members without sharing account credentials
+
+- Create transparency by making certain survey results public
+
+Shareable dashboards provide a simple yet powerful way to disseminate survey insights while maintaining control over your Formbricks account and data.
diff --git a/docs/xm-and-surveys/surveys/general-features/show-survey-to-percent-of-users.mdx b/docs/xm-and-surveys/surveys/general-features/show-survey-to-percent-of-users.mdx
new file mode 100644
index 0000000000..bccc9bd615
--- /dev/null
+++ b/docs/xm-and-surveys/surveys/general-features/show-survey-to-percent-of-users.mdx
@@ -0,0 +1,62 @@
+---
+title: "Show Survey to % of Users"
+description: "Formbricks allows you to display surveys to only a percentage of your targeted users."
+icon: "percent"
+---
+
+To target specific segments of your audience or manage survey exposure, Formbricks allows you to display surveys to only a percentage of your targeted users.
+
+
+ This feature is applicable for website surveys and app surveys, where managing
+ participant engagement and response volume is crucial.
+
+
+## **Enabling Percentage-Based Visibility**
+
+Set up this feature to control how many users see your survey, using a simple slider to specify the percentage of your targeted audience that should be prompted to participate.
+
+### **Steps to Set Up Percentage-Based Visibility**
+
+1. **Open Survey Editor**: Navigate to the survey where you wish to configure visibility settings & click on Edit.
+
+2. **Access Settings**: In the Survey Editor, click on the **`Settings`** tab
+
+3. **Navigate to Survey Trigger Options**:
+
+
+
+ - Select **`Survey Trigger`** from the menu options.
+
+ - Choose **`Survey Display Settings`** to access visibility controls.
+
+4. **Adjust User Visibility Percentage**:
+
+ - Find the **`Show Survey to % of Users`** toggle. Enable it.
+
+ - Enter the desired percentage (from 0.01% to 100%) of users to whom the survey will be shown.
+
+
+
+
+ Please note that this feature operates based on mathematical probabilistic
+ functions, which may result in slight variations in the exact percentage of
+ users who see the survey.
+
+
+### **Example Usage**
+
+For instance, if you want to expose your survey to only half of your targeted user base, simply adjust the slider to show the survey to 50% of your users. This functionality allows you to conduct A/B testing or control the rollout of new surveys to gauge initial reactions before a wider release.
+
+### **Application**
+
+It's effective for:
+
+- **A/B Testing**: Compare different user experiences by showing different surveys or survey variations to different segments of your audience.
+
+- **Gradual Rollouts**: Gradually introduce a new survey to a portion of your users to monitor initial responses and adjust based on feedback before full deployment.
+
+- **Load Management**: Manage server load and response processing by limiting the number of responses collected at any given time.
+
+## **Conclusion**
+
+Using the **Show Survey to % of Users** feature allows for precise control over who sees your Formbricks surveys, making it an invaluable feature for targeted data collection and user experience management. By adjusting survey visibility settings, you can strategically engage segments of your audience, enhance survey testing phases, and optimize overall survey effectiveness.
diff --git a/docs/xm-and-surveys/surveys/general-features/variables.mdx b/docs/xm-and-surveys/surveys/general-features/variables.mdx
new file mode 100644
index 0000000000..b4911d050d
--- /dev/null
+++ b/docs/xm-and-surveys/surveys/general-features/variables.mdx
@@ -0,0 +1,59 @@
+---
+title: "Variables"
+description: "Variables are a powerful feature in Formbricks that allows you to keep track of data variables when user fills a form. This feature is especially useful when you want to use your survey as a quiz."
+icon: "x"
+---
+
+## Types of Variables
+
+There are two types of variables you can add to your survey:
+
+1. **Text**: You can add text variables to your survey to capture text data.
+
+2. **Number**: You can add number variables to your survey to capture number data.
+
+## How to Add Variables
+
+1. Edit the survey you want to add variables to & switch to the Questions tab and scroll down to the bottom of the page. You will see a section called **Variables**.
+
+
+
+
+1. Now click on it to add a new variable ID. You can add as many variables as you want. You can also choose the type of variable you want to add along with the default value.
+
+
+
+
+
+
+## Use case:
+
+- **Quiz**: You can use variables to create a quiz. For example, you can add a variable `score` and update it every time a user answers a question. You can also use the variable for recall to show the final score to the user.
+
+- **Personalisation**: You can use variables to store user data and personalise the survey experience. For example, you can add a variable `full_name` and update it every time a user fills in their first name and last name. You can use the variable to personalise the survey experience by addressing the user with their full name.
+
+## How is it different from Hidden Fields?
+
+Variables are different from hidden fields in the following ways:
+
+1. **Setting**: Hidden fields can be set through query parameters or `formbricks.init`, but the variables can only be set either during creation or dynamically by using logic actions.
+
+2. **Updating**: Hidden fields cannot be set again, but the value of variables can be updated while the user fills the survey.
+
+3. **Type**: Hidden fields can only store text data, but variables can store both text and number data.
+
+## How to use Variables
+
+1. Once you have added the variables to your survey, you'll be able to access them in the logic editor. You can use the variables to create logic actions and conditions.
+
+
+
+1. You can create logic based on the variables and questions in your survey and can update the variables based on the user's response.
+
+
+
+
+
+ To know more about how to use logic in Formbricks, check out the [Conditional
+ Logic](/xm-and-surveys/surveys/general-features/conditional-logic).
+
diff --git a/docs/xm-and-surveys/surveys/link-surveys/data-prefilling.mdx b/docs/xm-and-surveys/surveys/link-surveys/data-prefilling.mdx
new file mode 100644
index 0000000000..69a2b0f1f2
--- /dev/null
+++ b/docs/xm-and-surveys/surveys/link-surveys/data-prefilling.mdx
@@ -0,0 +1,132 @@
+---
+title: "Data Prefilling"
+description:
+ "URL Data Prefilling for Link Surveys in Formbricks"
+icon: "fill"
+---
+
+Data prefilling via the URL allows you to increase completion rate by prefilling data you already have in a different system. Formbricks allows you to prefill multiple questions in a survey.
+
+## Purpose
+
+Data prefilling via URL comes in handy when you:
+
+- Have data for some of the respondents, but not all
+- Have data you want the respondent to confirm or update
+- Have data in a different system (e.g. your database) and want to add it to the user profile in Formbricks
+- Want to embed a survey in an email and increase completion by prefilling the choice selected in the email
+
+## Quick Example
+
+```sh Example URL
+https://app.formbricks.com/s/clin3dxja02k8l80hpwmx4bjy?question_id_1=answer_1&question_id_2=answer_2
+```
+
+## How it works
+
+To prefill survey questions, add query parameters to the survey URL using the format `questionId=answer`. The answer must match the question’s expected type to pass [validation](/xm-and-surveys/surveys/link-surveys/data-prefilling#validation).
+
+
+ Please make sure the answer is [URL encoded](https://www.urlencoder.org/).
+
+
+## Prefilling Customisation
+
+You can customise the prefilling behaviour using the `skipPrefilled` parameter in the URL. To skip prefilled questions and show the next available question, add `skipPrefilled=true` to the URL. By default, `skipPrefilled` is set to `false`.
+
+## Prefilling multiple values
+
+Formbricks lets you prefill as many values as you want. Combine multiple values in the URL using `&`, for example: `name=Bernadette&age=18`. The order of query parameters doesn’t matter, so you can move questions around or add new ones without worrying about the parameter order.
+
+## Where do I find my question Id?
+
+You can find the `questionId` in the **Advanced Settings** at the bottom of each question card in the Survey Editor. You can update the `questionId` to any string you like. However, once you publish your survey, the `questionId` cannot be changed.
+
+
+
+## Examples
+
+Here are a few examples to get you started:
+
+### Rating Question
+
+Translates to 5 stars / points / emojis:
+
+```sh Rating Question
+https://app.formbricks.com/s/clin3yxja52k8l80hpwmx4bjy?rating_question_id=5
+```
+
+### NPS Question
+
+Translates to an NPS rating of 10:
+
+```sh NPS Questions
+https://app.formbricks.com/s/clin3yxja52k8l80hpwmx4bjy?nps_question_id=10
+```
+
+### Single Select Question (Radio)
+
+Chooses the option 'Very disappointed' in the single select question. The string has to be identical to the option in your question:
+
+```sh Single-select Question
+https://app.formbricks.com/s/clin3yxja52k8l80hpwmx4bjy?single_select_question_id=Very%20disappointed
+```
+
+### Multi Select Question (Checkbox)
+
+Selects three options 'Sun, Palms and Beach' in the multi select question. The strings have to be identical to the options in your question:
+
+```sh Multi-select Question
+https://app.formbricks.com/s/clin3yxja52k8l80hpwmx4bjy?multi_select_question_id=Sun%2CPalms%2CBeach
+```
+
+### Open Text Question
+
+Adds 'I love Formbricks' as the answer to the open text question:
+
+```sh Open Text Question
+https://app.formbricks.com/s/clin3yxja52k8l80hpwmx4bjy?openText_question_id=I%20love%20Formbricks
+```
+
+### CTA Question
+
+Adds 'clicked' as the answer to the CTA question. Alternatively, you can set it to 'dismissed' to skip the question:
+
+```txt CTA Question
+https://app.formbricks.com/s/clin3yxja52k8l80hpwmx4bjy?cta_question_id=clicked
+```
+
+### Consent Question
+
+Adds 'accepted' as the answer to the Consent question. Alternatively, you can set it to 'dismissed' to skip the question.
+
+```txt Consent Question
+https://app.formbricks.com/s/clin3yxja52k8l80hpwmx4bjy?consent_question_id=accepted
+```
+
+### Picture Selection Question
+
+Adds index of the selected image(s) as the answer to the Picture Selection question. The index starts from 1
+
+```txt Picture Selection Question.
+https://app.formbricks.com/s/clin3yxja52k8l80hpwmx4bjy?pictureSelection_question_id=1%2C2%2C3
+```
+
+All other question types, you currently cannot prefill via the URL.
+
+## Validation
+
+Make sure that the answer in the URL matches the expected type for the questions.
+
+The URL validation works as follows:
+
+- For Rating or NPS questions, the response is parsed as a number and verified if it's accepted by the schema.
+- For CTA type questions, the valid values are "clicked" (main CTA) and "dismissed" (skip CTA).
+- For Consent type questions, the valid values are "accepted" (consent given) and "dismissed" (consent not given).
+- For Picture Selection type questions, the response is parsed as an array of numbers and verified if it's accepted by the schema.
+- All other question types are strings.
+
+
+ If an answer is invalid, the prefilling will be ignored and the question is
+ presented as if not prefilled.
+
diff --git a/docs/xm-and-surveys/surveys/link-surveys/embed-surveys.mdx b/docs/xm-and-surveys/surveys/link-surveys/embed-surveys.mdx
new file mode 100644
index 0000000000..ce02ca79d5
--- /dev/null
+++ b/docs/xm-and-surveys/surveys/link-surveys/embed-surveys.mdx
@@ -0,0 +1,200 @@
+---
+title: "Embed Surveys"
+description:
+ "Embed Formbricks surveys seamlessly into your website using an iframe & Email using code snippets."
+icon: "code"
+---
+
+# Embed Surveys in Your Web Page & Emails
+
+Embedding Formbricks surveys directly into your web pages & emails allows you to integrate interactive surveys without redirecting users to a separate survey site. This method ensures a seamless integration and maintains the aesthetic continuity of your website or application and your email marketing campaigns.
+
+## Embedding Surveys in Web Pages
+
+
+
+1. Create and publish a link survey.
+
+2. Open survey summary page and click on **share** button on the top right.
+
+3. In the survey share modal, click on **Embed survey** button.
+
+4. Navigate to **Embed in a Web Page** tab and click on Copy code
+
+5. Paste the copied iframe code into the HTML of your web page where you want the survey to appear.
+
+### Example of Embedding a Survey on a Web Page
+
+```html Example Embedding Code
+
+
+
+```
+
+## Iframe Events
+
+The iframe fires a **formbricksSurveyCompleted** event when a user finishes a survey within the embedded iframe. This event can be captured through a message listener in your webpage's JavaScript
+
+### How to Use it?
+
+1. Embed the Formbricks survey on your webpage using the iframe method as described above.
+
+2. Add an event listener to your webpage’s JavaScript that listens for `message` events from the iframe.
+
+3. Check if the received message indicates that the survey is completed by comparing the `event.data` with the value `formbricksSurveyCompleted`.
+
+
+ It is important to verify the origin of the message to ensure it comes from
+ the iframe containing your survey, enhancing the security of your event
+ handling.
+
+
+4. Implement your custom actions within the callback function based on the survey completion.
+
+### Example of Handling Survey Completion Events
+
+```javascript Example Code for Event Listener
+window.addEventListener("message", (event) => {
+ // Replace 'https://app.formbricks.com' with the actual web app url
+ if (
+ event.origin === "https://app.formbricks.com" &&
+ event.data === "formbricksSurveyCompleted"
+ ) {
+ console.log("Survey completed!");
+ // Implement your custom actions here
+ }
+});
+```
+
+## Emebd Mode
+
+Embed your survey with a minimalist design, disregarding padding and background.
+
+### How to enable it?
+
+It can be enabled by simply appending **?embed=true** to your survey link or from UI
+
+1. Open Embed survey tab in survey share modal
+
+2. Toggle **Embed mode**
+
+
+
+### With Embed mode enabled
+
+
+
+### With Embed mode disabled
+
+
+
+
+## Embedding Surveys in Emails
+
+Embedding Formbricks surveys directly into your emails allows you to collect valuable feedback from your users at every touchpoint. Seamlessly integrate interactive surveys into your email campaigns to gather insights and improve user experience.
+
+## Generate an Embed Code
+
+To embed a Formbricks survey in an email, first, create a survey and publish it. Follow these steps to generate the embed code:
+
+1. **Create and Publish a Survey**: Start by creating a link survey and publish it once ready.
+2. **Access the Share Options**: Go to the survey summary page and click the Share button (see below).
+3. **Get the Embed Code**: Click on Embed Survey at the bottom of the share modal, navigate to the `Embed in an Email` tab, and click `Copy Code`.
+4. **Preview and Test**: Before sending it to your users, click on Send Preview to receive a test email. This helps ensure the survey appears correctly.
+
+
+
+## Embedding the Survey in Emails
+
+Different email clients have different support for HTML and CSS. We recommend testing the email in different email clients to ensure the survey looks good in all of them.
+
+Below are some of the methods and services that we know that allows HTML embedding and how you can use them:
+
+
+ Please use the below methods at your own discretion. We do not officially
+ endorse any of the services mentioned below.
+
+
+### 1. Gmail
+
+Gmail does not support HTML embedding natively. It's a WYSIWYG (What You See Is What You Get) editor. However, you can use a free plugin like [HTML Editor for Gmail by cloudHQ](https://chromewebstore.google.com/detail/free-html-editor-for-gmai/ioinaaeeacahcmbgfmeaaofhfkijpdeb) to embed HTML in your emails.
+
+- Install the plugin from the Chrome Web Store.
+- Open Gmail and compose a new email.
+- Write your email content after which you want to embed the survey.
+
+
+
+- Right next to the Send button you will see a new button called **HTML Editor**. Click on it.
+- This will open a new window with the **Design** tab active. Switch to the **Source** tab.
+
+
+
+
+- Now paste the copied HTML code from Formbricks into this window. On the right, you will see a preview of how the email will look.
+
+
+
+- Click on the **Close Editor** button to save the changes & close the editor.
+
+
+
+
+- Voila! You have successfully embedded the survey in your email.
+
+### 2. Sendgrid
+
+Sendgrid supports HTML content in emails directly:
+
+- Compose Your Email: Use Sendgrid's email composition tools to embed the HTML directly into your email body.
+- Reference: For detailed steps, refer to Sendgrid's official documentation [here](https://sendgrid.com/en-us/solutions/email-marketing/email-design) or API docs [here](https://sendgrid.com/docs/for-developers/sending-email/api-getting-started/)
+
+### 3. Mailchimp
+
+Available in their Standard plan and above, Mailchimp allows HTML content embedding:
+
+- Use the Code Block: Drag a code block into your email template and paste the HTML code for the survey.
+- Reference: Check out Mailchimp's guide on pasting in custom HTML [here](https://mailchimp.com/help/paste-in-html-to-create-an-email/)
+
+### 4. Notemailer
+
+Nodemailer is a Node.js module that allows you to send emails with HTML content.
+
+- If you use Node.js to send emails, just attach the `html` parameter in your email message.
+- Reference: Take a look at Nodemailer's official message documentation [here](https://nodemailer.com/message/)
+
+
+ Please note that the above methods are not exhaustive and there are many other
+ ways to embed HTML in emails.
+
+
+## Example: Email Footer Survey
+
+Embed a survey link in your email signature to collect feedback subtly yet effectively. Here’s how:
+
+
+
+1. Create a Survey: Adjust an existing survey or create a new one.
+2. Scroll down & enable the **Hidden Fields** option.
+3. Add a new hidden field with the name **helpful**.
+4. Now Publish the survey as a Link Survey & copy the link.
+5. Embed in Your Signature: Add this HTML snippet to your email signature in your email client settings.
+
+```html Embed this in your Email
+Was our conversation helpful?
+Yes 👍 |
+No 👎
+```
+
+Replace `YOUR_SURVEY_LINK` with the actual survey link.
+
+PS: If you do not see any signature settings, just use one of the methods we've mentioned above to embed the HTML code in your email.
+
+---
+
+**Can’t figure it out?**: [Get help in Github Discussions](https://github.com/formbricks/formbricks/discussions)
diff --git a/docs/xm-and-surveys/surveys/link-surveys/market-research-panel.mdx b/docs/xm-and-surveys/surveys/link-surveys/market-research-panel.mdx
new file mode 100644
index 0000000000..6ec3ee3924
--- /dev/null
+++ b/docs/xm-and-surveys/surveys/link-surveys/market-research-panel.mdx
@@ -0,0 +1,95 @@
+---
+title: "Market Research Panel"
+description:
+ "Formbricks surveys can be integrated with Prolifics participant panel easily. This tutorial walks you through the steps on how to access a pool of over 200.000 participants for your research."
+icon: "users"
+---
+
+# Creating a Research Panel with Prolific
+
+You need a lot of research participants that match your target audience fast?
+
+Formbricks integrates well with Prolific. Prolific provides a pool of over 200.000 research participants you can choose from. Run market research with Formbricks within hours, not days.
+
+
+ Prolific is a paid service. You need to fund your account to access the pool
+ of participants. The cost depends on the number of participants you want to
+ reach and the demographics you're targeting. You can get an estimate of the
+ cost with the [Prolific price calculator](https://www.prolific.com/calculator)
+
+
+## Purpose
+
+External research panels are useful when:
+
+- You don't have access to enough people who match your target audience
+- You want to reach a specific demographic
+- You want to reach a large number of people quickly
+
+## Steps to Follow
+
+### Step 1: Add hidden fields to the Formbricks survey
+
+To be able to attribute a completed answer to a research participant, you need to add hidden fields to your Formbricks survey. To do so, edit your survey and scroll down to the Hidden Fields card.
+
+Add three fields with the IDs `PROLIFIC_PID`, `STUDY_ID`, and `SESSION_ID`.
+
+
+
+### Step 2: Create an account on Prolific
+
+Go to [Prolific](https://app.prolific.co/) and create an account.
+
+### Step 3: Create a study on Prolific
+
+Once you're logged in to Prolific, create a new study.
+
+
+
+### Step 4: Copy the Formbricks survey link to the Prolific study
+
+We connect the Formbricks survey with the Prolific study by copying the survey link from Formbricks and pasting it into the Prolific study:
+
+
+
+
+### Step 5: Choose URL parameters for attribution
+
+To attribute responses to the correct participant, you need to add URL parameters to the Formbricks survey link. The parameters are `PROLIFIC_PID`, `STUDY_ID`, and `SESSION_ID`, exactly like the hidden fields you added.
+
+
+
+### Step 6: Update the Formbricks Redirect URL
+
+To ensure that participants are redirected back to Prolific after completing the survey, add the redirect URL provided in the Prolific study setup (e.g. `https://app.prolific.co/submissions/complete?cc=I2PWSFRG`)
+
+Copy from Prolific:
+
+
+
+Set it up as Redirect URL in the Response Options in Formbricks:
+
+
+
+### Step 7: Preview the study
+
+Preview the study using Prolific's [Preview-functionality](https://researcher-help.prolific.com/hc/en-gb/articles/360009222853-Previewing-your-study)
+
+
+
+Got to the success screen? Then you're ready to publish your study!
+
+
+
+### Step 8: Publish the study
+
+After you've published the study, you'll get the first responses within a few hours.
+
+
+ Prolific is a paid service. You need to fund your account to publish your
+ study.
+
+
+### That's it! 🎉
+
+Once you've published the survey, you can sit back and watch the responses come in. Prolific will take care of the rest.
diff --git a/docs/xm-and-surveys/surveys/link-surveys/pin-protected-surveys.mdx b/docs/xm-and-surveys/surveys/link-surveys/pin-protected-surveys.mdx
new file mode 100644
index 0000000000..43dd5c057f
--- /dev/null
+++ b/docs/xm-and-surveys/surveys/link-surveys/pin-protected-surveys.mdx
@@ -0,0 +1,68 @@
+---
+title: "PIN Protected Surveys"
+description:
+ "Enhance the security and exclusivity of your surveys by requiring respondents to enter a secure 4 digit PIN to access your survey. Learn how to enable PIN protection and the benefits it offers."
+icon: "lock"
+---
+
+## **Enabling PIN Protection**
+
+PIN protection can be applied to your surveys easily through the survey editor. This setup allows you to control access effectively, ensuring that only authorized users can participate.
+
+### **Steps to Set Up PIN Protection**
+
+1. **Open Settings in Survey Editor**: Navigate to your survey in the survey editor where you wish to enable PIN protection & click on Settings Tab.
+
+2. **Select Response Options**: Find and select **`Response Options`** to access settings related to survey responses.
+
+
+
+1. **Enable PIN Protection**: Find the option for "Protect Survey with a PIN" and
+ activate it. You will be prompted to enter a PIN that respondents must use to access
+ the survey.
+
+### **Setting the PIN**
+
+
+
+Enter the PIN you wish to use for your survey. Once set, this PIN will need to be
+entered by participants to access the survey. Note that this can be changed anytime
+from here in the future.
+
+### **User Experience Upon Accessing the Survey**
+
+When a respondent attempts to access the survey, they are prompted to enter the PIN:
+
+- **PIN Entry Prompt**: A screen will appear asking the respondent to enter the PIN to proceed. This acts as the first gatekeeping step before survey access is granted.
+
+
+
+- **Incorrect PIN Handling**: If an incorrect PIN is entered, the respondent will be informed and asked to try again, ensuring secure access to the survey.
+
+
+
+- **Correct PIN**: On entering the correct PIN, the user access the survey & can fill it accordingly.
+
+
+
+### **Benefits of PIN Protection**
+
+- **Enhanced Security**: Protects the survey from unauthorized access, ensuring that only participants with the PIN can enter.
+
+- **Controlled Participation**: Enables you to restrict survey participation to a specific group, such as during a closed testing phase or confidential feedback gathering.
+
+- **Prevents Unwanted Access**: Deters casual browsing and unauthorized attempts to view or complete the survey.
+
+## **Use Cases**
+
+PIN protection is particularly useful in situations where:
+
+- Confidential surveys are being conducted, such as internal company feedback or sensitive research studies.
+
+- Surveys are designed for a specific event or group, and access needs to be controlled.
+
+- You want to limit survey responses to participants who have been explicitly invited or have registered in advance.
+
+## **Conclusion**
+
+Setting up PIN protection for your Formbricks surveys is a straightforward and effective way to ensure that only authorized respondents can access and complete your surveys. This feature adds an additional layer of security and control, making it ideal for managing access to sensitive or exclusive surveys.
diff --git a/docs/xm-and-surveys/surveys/link-surveys/quickstart.mdx b/docs/xm-and-surveys/surveys/link-surveys/quickstart.mdx
new file mode 100644
index 0000000000..c1e689523d
--- /dev/null
+++ b/docs/xm-and-surveys/surveys/link-surveys/quickstart.mdx
@@ -0,0 +1,45 @@
+---
+title: "Quickstart"
+description: "Create your first link survey in under 5 minutes."
+icon: "rocket"
+---
+
+Link Surveys make it easy for your users to give you feedback. They are a great way to get feedback from your users, without interrupting their workflow. This quickstart guide will show you how to create your first link survey in under 5 minutes.
+
+## Create a free Formbricks Cloud account
+
+While you can [self-host](/self-hosting/overview) Formbricks, the quickest and easiest way to get started is with the free Cloud plan. Just [sign up here](https://app.formbricks.com/auth/signup) and click through the onboarding.
+
+Choose one of the pre-created templates to get started. We’ll choose the **Product Market Fit** template for this quickstart guide.
+
+## Create your first survey
+
+When you click the template, you'll be taken to the survey editor. Here, you can edit the survey questions and settings. To keep it simple, we'll leave the questions as they are and go to the survey settings.
+
+Click on the **Settings** tab to edit the survey settings.
+
+## Configure your survey settings
+
+Formbricks packs a lot of useful functionality out of the box. You can:
+
+- Close the survey on a specidic date
+
+- After a number of response
+
+- Redirect users to a URL after they completed the survey
+
+- Protect survey with a Pin
+
+- ... and much more!
+
+## Style your survey
+
+Style your survey to your need. You can keep it simplistic or use animated backgrounds. You can change the main color and soon you'll be able to fully control the appearance of the survey.
+
+## Publish your survey
+
+Once you’re happy with the survey settings, hit **Publish** and you’ll be forwarded to the Summary Page. This is where you’ll find the responses to this survey.
+
+## Share your survey
+
+Congratulations! Your survey is now published and ready to be shared with your users. You can share the survey link via email, SMS, or any other channel.
diff --git a/docs/xm-and-surveys/surveys/link-surveys/single-use-links.mdx b/docs/xm-and-surveys/surveys/link-surveys/single-use-links.mdx
new file mode 100644
index 0000000000..b37fefde57
--- /dev/null
+++ b/docs/xm-and-surveys/surveys/link-surveys/single-use-links.mdx
@@ -0,0 +1,53 @@
+---
+title: "Single Use Links"
+description:
+ "Make sure that each respondent only replies once with single use links."
+icon: "link"
+---
+
+This guide will help you understand how to generate and use single-use links within our application.
+
+## Purpose
+
+- Single-use links (or one-time / disposable links) are URLs that grant access to a survey only once.
+
+- The primary purpose of single-use links is to assure that no respondent submits a survey twice.
+
+
+ Want to create up to 5,000 single-use links? Use our [API endpoint for
+ that.](https://documenter.getpostman.com/view/11026000/2sA3Bq5XEh#c49ef758-a78a-4ef4-a282-262621151f08)
+
+
+## Using Single-Use Links with Formbricks
+
+Using single-use links with Formbricks is quite straight-forward:
+
+1. In the survey settings, toggle "Single Use Link" on:
+
+
+
+
+2. When you publish your survey, the following modal will open:
+
+
+
+Here, you can copy and generate as many single-use links as you need.
+
+## URL Encryption
+
+You can encrypt single use URLs to assure information to be protected. To enable it, you have to set the correct environment variable:
+
+
+
+## Check suId of a submission
+
+You can find the suId of each submission in the submission meta data. To view it, simple hover over the Avatar:
+
+
+
+
+### 'Link used' message
+
+You can customize the 'link used' messaging in the Survey Editor settings:
+
+
diff --git a/docs/xm-and-surveys/surveys/link-surveys/source-tracking.mdx b/docs/xm-and-surveys/surveys/link-surveys/source-tracking.mdx
new file mode 100644
index 0000000000..324428b5ba
--- /dev/null
+++ b/docs/xm-and-surveys/surveys/link-surveys/source-tracking.mdx
@@ -0,0 +1,46 @@
+---
+title: "Source Tracking"
+description: "Track the source of your users in an easy & compliant way!"
+icon: "display-chart-up"
+---
+
+Understand the source a survey respondent comes from when responding to your survey – all while keeping data privacy standards high!
+
+Check out this video to learn more about source tracking in link surveys:
+
+
+
+
+## Purpose
+
+Source tracking for link surveys is essential when you:
+
+- Want to analyze the origin of your survey respondents.
+- Aim to ensure compliance with tracking and data collection regulations.
+
+## Code Example
+
+```sh Example Source as Google
+https://formbricks.com/clin3dxja02k8l80hpwmx4bjy?source=Google
+```
+
+## How it Works
+
+To track the source of users in your link surveys effectively, follow these steps:
+
+1. **Generate Survey URL**: Create a Link Survey and get the sharable link. Append `?source=YourSouce` to the link to reference it with your campaigns and sources.
+
+```sh Example Source as Google
+https://formbricks.com/clin3dxja02k8l80hpwmx4bjy?source=Google
+```
+
+2. **Collect Data**: When users access the survey through these links, the URL parameters will capture the source information from which they were shared.
+
+3. **View Responses**: Use the collected source data to analyze where your survey respondents are coming from. You can hover over the user icon in the responses tab to see the source of the user.
+
+
+
+
+4. **Analyse Data**: Download all the responses as a CSV/Excel and get access to the source information. This can provide valuable insights into your audience.
+
+Source tracking allows you to make informed decisions based on the origin of your survey participants, helping you tailor your surveys and marketing strategies accordingly.
diff --git a/docs/xm-and-surveys/surveys/link-surveys/start-at-question.mdx b/docs/xm-and-surveys/surveys/link-surveys/start-at-question.mdx
new file mode 100644
index 0000000000..5044b9882d
--- /dev/null
+++ b/docs/xm-and-surveys/surveys/link-surveys/start-at-question.mdx
@@ -0,0 +1,36 @@
+---
+title: "Start At Specific Question"
+description:
+ "Start a survey at a specific question using the URL to skip the initial questions."
+icon: "arrow-right"
+---
+
+You can start a survey at a specific question from the survey using the URL to skip the initial questions. This is useful when you want to link to a specific question from an external source or want to use the same survey in different parts of the user journey.
+
+## How to Use it?
+
+1. In the Survey Editor, open the Questions Tab and ensure the survey is set as a **Link Survey**.
+
+2. Find the question you want to start at, click on **Show Advanced Settings**, and copy the **Question ID**.
+
+
+ Each question has a unique Question ID, which is used to identify it in the
+ survey. You can use different Question IDs for multiple **startAt** points in
+ the URL.
+
+
+3. Append `?startAt=question_id` to your survey's URL, replacing `question_id` with the copied Question ID.
+
+4. Share this modified URL with your users to start the survey at the specified question.
+
+### Sample Link Survey URL with `startAt`
+
+```sh Example Link Survey URL with startAt configured
+https://formbricks.com/clny997dj087ho30fdzyf4nkl?startAt=bqd29m94l9k0hnc3azbrexl8
+```
+
+## Use Cases
+
+- **Link to a specific question from an external source:** Use this feature to direct users to a specific question in your survey from emails, chatbots, or web pages, providing a seamless experience.
+- **Use the same survey in different parts of the user journey:** Employ the same survey at various stages of the user journey, starting at different questions to gather comprehensive insights.
+- **Create a personalized survey experience:** Tailor the survey experience by starting at a particular question based on the user's past interactions or preferences, enhancing engagement.
diff --git a/docs/xm-and-surveys/surveys/link-surveys/verify-email-before-survey.mdx b/docs/xm-and-surveys/surveys/link-surveys/verify-email-before-survey.mdx
new file mode 100644
index 0000000000..2a7747431d
--- /dev/null
+++ b/docs/xm-and-surveys/surveys/link-surveys/verify-email-before-survey.mdx
@@ -0,0 +1,70 @@
+---
+title: "Verify Email"
+description:
+ "Verify email before accessing surveys"
+icon: "envelope"
+---
+
+To ensure the credibility of your survey participants and maintain high-quality data, you can require respondents to verify their email before they can view and respond to your Formbricks link surveys. This verification process helps confirm that only participants with valid email addresses can access the survey, enhancing data integrity.
+
+## **Enabling Email Verification**
+
+This feature, designed for link surveys, can be enabled or disabled directly from the survey editor. Here’s how to activate it:
+
+### **Steps to Enable Email Verification**
+
+1. **Open Survey Editor**: Navigate to your link survey in the survey editor where you wish to enable email verification.
+2. **Access Settings**: Click on the **`Settings`** tab next to the Questions & Styling tab.
+3. **Select Response Options**: Find and select **`Response Options`** to access settings related to survey responses.
+
+
+
+4. **Activate Email Verification**: Find the "Verify Email Before Accessing Survey" option and use the toggle to activate email verification. Specify what details should be visible to the public when they access the survey.
+
+
+
+
+### **User Experience Upon Accessing the Survey**
+
+When email verification is enabled, the following process unfolds for the user:
+
+1. **Email Entry Prompt**: Upon accessing the survey link, the user is prompted to verify their email before they can proceed.
+
+
+
+2. **Preview Option**: A "Preview survey questions" option is available for those who are just browsing or curious about the survey content without completing it. This allows a non-interactive view of the survey.
+
+
+
+3. **Verification Process**: After entering their email, respondents receive an email containing a survey link, which they can use to access the survey.
+
+
+
+
+**4. Survey Access**: After verifying their email, respondents can access and respond to the survey.
+
+
+
+### **Benefits of Email Verification**
+
+- **Authenticity of Respondents**: Ensures that each respondent is verified, adding an extra layer of authenticity to your data collection.
+- **Reduction in Spam and Fraudulent Responses**: Helps reduce unwanted or spam entries by confirming the legitimacy of each respondent’s email address.
+- **Enhanced Data Quality**: Increases the reliability and quality of the data collected by confirming the identity of participants.
+
+### **Visibility of Verified Emails**
+
+In the Formbricks dashboard, the survey response card displays the verified email along with the responses attached to it, ensuring traceability and authenticity of the data collected.
+
+
+
+## **Use Cases**
+
+Email verification is particularly beneficial in scenarios where:
+
+- Market research requires verified responses from specific demographics.
+- Surveys are intended for a selected audience with gated content.
+- Academic or professional studies necessitate authenticated data for accuracy.
+
+## **Conclusion**
+
+Implementing the Email Verification feature is an effective strategy to ensure the authenticity of your survey respondents. By requiring email verification before survey access, you safeguard the integrity of your survey data and ensure that only verified individuals can contribute responses.
diff --git a/docs/xm-and-surveys/surveys/website-app-surveys/actions.mdx b/docs/xm-and-surveys/surveys/website-app-surveys/actions.mdx
new file mode 100644
index 0000000000..d5a76f8cc1
--- /dev/null
+++ b/docs/xm-and-surveys/surveys/website-app-surveys/actions.mdx
@@ -0,0 +1,96 @@
+---
+title: "Actions"
+description: "Actions are predefined events within your app that prompt Formbricks to display a survey when triggered. These are detected by the Formbricks widget, which then presents the appropriate survey based on your predefined settings."
+icon: "code"
+---
+
+## **How Do Actions Work?**
+
+Actions in Formbricks App Surveys are deeply integrated with user activities within your app. When a user performs a specified action, the Formbricks widget detects this activity and can present a survey to that specific user if the trigger conditions match for that survey. This capability ensures that surveys are triggered at the right time. You can set up these actions through a user-friendly No-Code interface within the Formbricks dashboard.
+
+## **Why Are Actions Useful?**
+
+Actions are invaluable for enhancing survey relevance and effectiveness:
+
+- **Personalized Engagement**: Surveys triggered by user actions ensure content is highly relevant and engaging, matching each user’s current context.
+
+- **User Attributes**: By tying surveys to specific user attributes, such as activity levels or feature usage, you can customize the survey experience to reflect individual user profiles.
+
+- **User Targeting**: Precise targeting based on user attributes ensures that surveys are shown only to users who meet certain criteria, enhancing the relevance and effectiveness of each survey.
+
+## **Setting Up No-Code Actions**
+
+Formbricks offers an intuitive No-Code interface that allows you to configure actions without needing to write any code.
+
+To add a No-Code Action:
+
+1. Visit the Formbricks Dashboard & switch to the Actions tab:
+
+
+
+1. Now click on “Add Action”
+
+
+
+Here are four types of No-Code actions you can set up:
+
+### **1. Click Action**
+
+Click Action is triggered when a user clicks on a specific element within your application. You can define the element's inner text or CSS selector to trigger the survey.
+
+- **Inner Text**: Checks if the innerText of a clicked HTML element, like a button label, matches a specific text. This action allows you to display a survey based on text interactions within your application.
+
+- **CSS Selector**: Verifies if a clicked HTML element matches a provided CSS selector, such as a class, ID, or any other CSS selector used in your website. It enables survey triggers based on element interactions.
+
+### **2. Page view Action**
+
+This action is triggered when a user visits a page within your application.
+
+### **3. Exit Intent Action**
+
+This action is triggered when a user is about to leave your application. It helps capture user feedback before they exit, providing valuable insights into user experiences and potential improvements.
+
+### **4. 50% Scroll Action**
+
+This action is triggered when a user scrolls through 50% of a page within your application. It helps capture user feedback at a specific point in their journey, enabling you to gather insights based on user interactions.
+
+This action is triggered when a user visits a specific page within your application. You can define the URL match conditions as follows:
+
+You can combine the url filters with any of the no-code actions to trigger the survey based on the URL match conditions.
+
+### **URL Match Conditions**
+
+- **exactMatch**: Triggers the action when the URL exactly matches the specified string.
+
+- **contains**: Activates when the URL contains the specified substring.
+
+- **startsWith**: Fires when the URL starts with the specified string.
+
+- **endsWith**: Executes when the URL ends with the specified string.
+
+- **notMatch**: Triggers when the URL does not match the specified condition.
+
+- **notContains**: Activates when the URL does not contain the specified substring.
+
+## **Setting Up Code Actions**
+
+For more granular control, you can implement actions directly in your codebase:
+
+1. **Configure the Action**: First, add the action via the Formbricks web interface to make it available for survey configuration.
+ After that you can fire an action using `formbricks.track()`
+
+2. **Track an Action**: Use formbricks.track() to send an action event to Formbricks.
+
+```javascript Track an action formbricks.track("Action Name");
+
+```
+
+Here is an example of how to fire an action when a user clicks a button:
+
+```javascript Track Button Click
+const handleClick = () => {
+ formbricks.track("Button Clicked");
+};
+
+return ;
+```
diff --git a/docs/xm-and-surveys/surveys/website-app-surveys/advanced-targeting.mdx b/docs/xm-and-surveys/surveys/website-app-surveys/advanced-targeting.mdx
new file mode 100644
index 0000000000..46d6c35766
--- /dev/null
+++ b/docs/xm-and-surveys/surveys/website-app-surveys/advanced-targeting.mdx
@@ -0,0 +1,28 @@
+---
+title: "Advanced Targeting"
+description: "Advanced Targeting allows you to show surveys to the right group of people. You can target surveys based on user attributes, device type, and more instead of spraying and praying. This helps you get more relevant feedback and make data-driven decisions. All of this without writing a single line of code."
+icon: "bullseye"
+---
+
+
+## How to setup Advanced Targeting
+
+
+ Advanced Targeting is only available on the Pro plan!
+
+
+* On the Formbricks dashboard, click on **People** tab from the top navigation bar.
+
+* Switch to the **Segments** tab & click on **Create Segment**.
+
+* Give your segment a title & a description to help you remember what this segment is about.
+
+* Now click on the **Add Filter** button to add a filter. You can filter based on user attributes, other segments, devices, and more.
+
+* To group a set of filters together, click on the Three Dots icon on the right side of the filter and click on **Create Group**.
+
+* Try playing around with different filters & conditions that we have provided to see how the segment size changes.
+
+* Once you are happy with the segment, click on **Save Segment**.
+
+* Now, when you create a survey, you can select this segment to target your survey to.
\ No newline at end of file
diff --git a/docs/xm-and-surveys/surveys/website-app-surveys/framework-guides.mdx b/docs/xm-and-surveys/surveys/website-app-surveys/framework-guides.mdx
new file mode 100644
index 0000000000..d08e0753b5
--- /dev/null
+++ b/docs/xm-and-surveys/surveys/website-app-surveys/framework-guides.mdx
@@ -0,0 +1,378 @@
+---
+title: "Framework Guides"
+icon: "book"
+---
+
+Integrate the **Formbricks App Survey SDK** into your app using multiple options. Explore the available choices below. If you need something else, open a [**GitHub Discussion**](https://github.com/formbricks/formbricks/discussions), and we’ll be happy to help!
+
+
+
+ [All you need to do is add three lines of code to your HTML script, and that's it!](https://formbricks.com/docs/app-surveys/framework-guides#html)
+
+
+
+ [Load our JavaScript library with your environment ID, and you're ready to
+ go!](https://formbricks.com/docs/app-surveys/framework-guides#react-js)
+
+
+
+ [Natively add us to your Next.js project, with support for both App and Pages
+ project
+ structure.](https://formbricks.com/docs/app-surveys/framework-guides#next-js)
+
+
+
+ Learn how to use Formbricks' React Native SDK to integrate your surveys into
+ React Native applications.
+
+
+
+ [Easily integrate our SDK with your React Native app for seamless survey support.](https://formbricks.com/docs/app-surveys/framework-guides#react-native)
+
+
+
+## Prerequisites
+
+Before getting started, make sure you have:
+
+- A running web application with user authentication in your chosen framework.
+
+- A Formbricks account with your **environment ID** and **API host**, available in the **Setup Checklist** under **Settings**.
+
+## HTML
+
+All you need to do is copy a `
+
+```
+
+### Required Customizations
+
+| Name | Type | Description |
+| -------------- | ------ | -------------------------------------- |
+| environment-id | string | Formbricks Environment ID. |
+| api-host | string | URL of the hosted Formbricks instance. |
+
+Now, visit the [Validate Your Setup](#validate-your-setup) section to verify your setup!
+
+## React.js
+
+Install the Formbricks SDK using one of the following package managers: `npm`, `pnpm`, or `yarn`.
+Note that **`zod`** is required as a peer dependency and must also be installed in your project.
+
+```javascript npm
+npm install @formbricks/js zod
+```
+
+```bash pnpm
+pnpm add @formbricks/js zod
+```
+
+```bash yarn
+yarn add @formbricks/js zod
+```
+
+Update your `App.js/ts` file to initialize Formbricks.
+
+```javascript src/App.js
+// other imports
+import formbricks from "@formbricks/js";
+
+if (typeof window !== "undefined") {
+ formbricks.init({
+ environmentId: "",
+ apiHost: "",
+ userId: "", //optional
+ });
+}
+
+function App() {
+ // your own app
+}
+
+export default App;
+```
+
+## Required Customizations
+
+| Name | Type | Description |
+| -------------- | ------ | -------------------------------------- |
+| environment-id | string | Formbricks Environment ID. |
+| api-host | string | URL of the hosted Formbricks instance. |
+
+Now, visit the [Validate Your Setup](#validate-your-setup) section to verify your setup!
+
+## Next.js
+
+Next.js projects use either the **App Directory** or the **Pages Directory**. Since the Formbricks SDK runs on the client side, follow these steps based on your setup:
+
+- **App Directory**: Create a new component in `app/formbricks.tsx` and call it in `app/layout.tsx`.
+
+- **Pages Directory**: Initialize Formbricks directly in `_app.tsx`.
+
+Code snippets for the integration for both conventions are provided to further assist you.
+
+```bash npm
+npm install @formbricks/js zod
+```
+
+```bash pnpm
+pnpm add @formbricks/js zod
+```
+
+```bash yarn
+yarn add @formbricks/js zod
+```
+
+### App directory
+
+```typescript app/formbricks.tsx
+"use client";
+
+import { usePathname, useSearchParams } from "next/navigation";
+import { useEffect } from "react";
+import formbricks from "@formbricks/js";
+
+export default function FormbricksProvider() {
+ const pathname = usePathname();
+ const searchParams = useSearchParams();
+
+ useEffect(() => {
+ formbricks.init({
+ environmentId: "",
+ apiHost: "",
+ userId: "", //optional
+ });
+ }, []);
+
+ useEffect(() => {
+ formbricks?.registerRouteChange();
+ }, [pathname, searchParams]);
+
+ return null;
+}
+```
+
+```typescript app/layout.tsx
+// other imports
+import FormbricksProvider from "./formbricks";
+
+export default function RootLayout({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ return (
+
+
+ {children}
+
+ );
+}
+```
+
+### Pages directory
+
+```javascript src/pages/_app.tsx
+// other import
+import { useRouter } from "next/router";
+import { useEffect } from "react";
+import formbricks from "@formbricks/js";
+
+if (typeof window !== "undefined") {
+ formbricks.init({
+ environmentId: "",
+ apiHost: "",
+ userId: "", //optional
+ });
+}
+
+export default function App({ Component, pageProps }: AppProps) {
+ const router = useRouter();
+
+ useEffect(() => {
+ // Connect next.js router to Formbricks
+ const handleRouteChange = formbricks?.registerRouteChange;
+ router.events.on("routeChangeComplete", handleRouteChange);
+
+ return () => {
+ router.events.off("routeChangeComplete", handleRouteChange);
+ };
+ }, []);
+ return ;
+}
+```
+
+### Required Customizations
+
+| Name | Type | Description |
+| -------------- | ------ | -------------------------------------- |
+| environment-id | string | Formbricks Environment ID. |
+| api-host | string | URL of the hosted Formbricks instance. |
+
+First, initialize the Formbricks SDK to run only on the client side. To track page changes, register the route change event with the Next.js router.
+
+Next, go to the [**Validate Your Setup**](#validate-your-setup) section to verify your setup!
+
+## Vue.js
+
+Integrating the Formbricks SDK with Vue.js is easy. We’ll ensure the SDK is only loaded and used on the client side, as it’s not meant for server-side use.
+
+```bash npm
+npm install @formbricks/js
+```
+
+```bash pnpm
+pnpm add @formbricks/js
+```
+
+```bash yarn
+yarn add @formbricks/js
+```
+
+```javascript src/formbricks.js
+import formbricks from "@formbricks/js";
+
+if (typeof window !== "undefined") {
+ formbricks.init({
+ environmentId: "",
+ apiHost: "",
+ userId: "", //optional
+ });
+}
+
+export default formbricks;
+```
+
+```javascript src/main.js
+// other imports
+import formbricks from "@/formbricks";
+
+const app = createApp(App);
+
+app.use(router);
+
+app.mount("#app");
+
+router.afterEach((to, from) => {
+ if (typeof formbricks !== "undefined") {
+ formbricks.registerRouteChange();
+ }
+});
+```
+
+### Required Customizations
+
+| Name | Type | Description |
+| -------------- | ------ | -------------------------------------- |
+| environment-id | string | Formbricks Environment ID. |
+| api-host | string | URL of the hosted Formbricks instance. |
+
+Now, visit the [Validate Your Setup](#validate-your-setup) section to verify your setup!
+
+## React Native
+
+Install the Formbricks React Native SDK using one of the package managers, i.e., npm, pnpm, or yarn.
+
+```bash npm
+npm install @formbricks/react-native
+```
+
+```bash pnpm
+pnpm add @formbricks/react-native
+```
+
+```bash yarn
+yarn add @formbricks/react-native
+```
+
+Now, update your `App.js/App.tsx` file to initialize Formbricks:
+
+```javascript src/App.js
+// other imports
+import Formbricks from "@formbricks/react-native";
+
+const config = {
+ environmentId: "",
+ apiHost: "",
+ userId: "", // optional
+};
+
+export default function App() {
+ return (
+ <>
+ {/* Your app content */}
+
+ >
+ );
+}
+```
+
+## Required Customizations
+
+| Name | Type | Description |
+| -------------- | ------ | -------------------------------------- |
+| environment-id | string | Formbricks Environment ID. |
+| api-host | string | URL of the hosted Formbricks instance. |
+
+## Validate your setup
+
+Once you’ve completed the steps above, validate your setup by checking the Setup Checklist in the Settings. The widget status indicator should change from this:
+
+
+To this:
+
+
+
+## Debugging Formbricks Integration
+
+Enabling debug mode in your browser can help troubleshoot issues with Formbricks. Here’s how to activate it and what to look for in the logs.
+
+### Activate Debug Mode
+
+To enable debug mode, add `?formbricksDebug=true` to your app’s URL (e.g., [`https://example.com?formbricksDebug=true)`]().
+
+#### View Debug Logs
+
+1. Open your browser’s developer tools:
+
+- **Google Chrome/Edge**: Press `F12` or right-click and select "**Inspect" > "Console**".
+
+- **Firefox**: Press `F12` or right-click and select "**Inspect Element" > "Console**".
+
+- **Safari**: Press `Option + Command + C` to open developer tools and go to the "**Console**" tab.
+
+#### Common Use Cases
+
+Debug mode is helpful for:
+
+- Verifying Formbricks initialization.
+
+- Identifying issues with survey triggers.
+
+- Troubleshooting unexpected behavior.
+
+#### Debug Log Messages
+
+Logs provide insights into:
+
+- API calls and responses.
+
+- Survey triggers and form interactions.
+
+- Initialization errors.
+
+If you're stuck, visit [**GitHub Discussions**](https://github.com/formbricks/formbricks/discussions) for assistance.
+
+```
+
+```
diff --git a/docs/xm-and-surveys/surveys/website-app-surveys/quickstart.mdx b/docs/xm-and-surveys/surveys/website-app-surveys/quickstart.mdx
new file mode 100644
index 0000000000..09ba407551
--- /dev/null
+++ b/docs/xm-and-surveys/surveys/website-app-surveys/quickstart.mdx
@@ -0,0 +1,46 @@
+---
+title: "Quickstart"
+description: "App surveys deliver 6–10x higher conversion rates compared to email surveys. If you are new to Formbricks, follow the steps in this guide to launch a survey in your web or mobile app (React Native) within 10–15 minutes."
+icon: "rocket"
+---
+
+* **Create a Formbricks Cloud Account**: While you can [self-host](/self-hosting) Formbricks, the fastest and easiest way to get started is with the free Cloud plan. Simply [sign up](https://app.formbricks.com/auth/signup) here, follow the onboarding steps, and choose the "Formbricks Surveys” option.
+
+* **Choose your project channel**: Select the channel where you want to create your project. You can create both app and link surveys from any channel, but for onboarding, select between app surveys or the public website option. Once selected, you'll be prompted to connect your app/website to Formbricks.
+
+
+
+* **Connect your App/Website**: During onboarding, you'll be prompted to connect your app or website. You'll receive a code snippet for HTML and an npm package to embed in your app.
+
+
+
+* Paste the code snippet in your app and reload the page. You should now see a message being displayed that your app or website is now connected with Formbricks.
+
+
+Onboarding is complete! Now let’s create our first survey as you should see templates to choose from after clicking on **Next**:
+
+
+
+* **Create your first survey**: To be able to see a survey in your app, you need to create one. We’ll choose one of the templates and head over to the survey settings:
+
+Pick the Survey Type as **App Survey**.
+
+
+
+* **Set Trigger for the Survey**: Scroll to **Survey Trigger**, click **+ Add Action**, and select **New Session**. This ensures the survey appears when the Formbricks Widget detects a new user session.
+
+
+
+* **Set Recontact Options for Debugging**: Adjust the **Recontact Options** to test the survey more easily. By default, surveys appear only once per user to prevent fatigue.
+
+
+ Please change this setting after testing your survey to avoid user fatigue.
+
+
+
+
+* Click **Publish** to proceed to the **Summary Page**, where you can view survey responses.
+
+We offer framework guides for various frontend technologies. Check out the [**App Survey Framework Guides**](/xm-and-surveys/surveys/website-app-surveys/framework-guides) to set up your app survey.
+
+Need help? Join us in [**GitHub Discussions**](https://github.com/formbricks/formbricks/discussions), and we’ll be happy to assist!
\ No newline at end of file
diff --git a/docs/xm-and-surveys/surveys/website-app-surveys/recontact.mdx b/docs/xm-and-surveys/surveys/website-app-surveys/recontact.mdx
new file mode 100644
index 0000000000..197a6ac495
--- /dev/null
+++ b/docs/xm-and-surveys/surveys/website-app-surveys/recontact.mdx
@@ -0,0 +1,91 @@
+---
+title: "Recontact Options"
+description: "Recontact options in Formbricks enable you to manage how often and under what conditions a survey is shown to a user. This feature is crucial for balancing effective feedback collection with a positive user experience by preventing survey fatigue."
+icon: "user-check"
+---
+
+## When do Recontact Options come into play?
+
+Recontact options are the last layer of the logic that determines if a survey is shown to the current user. The logic goes as follows:
+
+1. Targeting: Does the current user targeted to fill out this survey? If yes...
+
+2. Trigger: Is the survey triggered? If yes...
+
+3. **Recontact Options:** Should the survey be shown (again) to this user? That's dependent on:
+
+- Did the user see any survey recently (meaning, has Global Waiting Time passed)?
+
+- Did the user see this specific survey already?
+
+- How many times did the user see this specific survey already?
+
+- Has the user already responded to this survey?
+
+As you can see, there are a lot of different cases to cover. Let's have a closer look 👇
+
+## Recontact Options
+
+By default, a survey is shown to each user only once.
+
+You can adjust the default behavior by modifying the Recontact Options for each survey in the settings:
+
+1. Open the Survey Editor for the survey you want to see & modify the Recontact Options for.
+
+2. Select the Settings Tab.
+
+3. Ensure your Survey type is set to **App Survey**.
+
+
+
+1. Scroll down to the Recontact Options section.
+
+Available Recontact Options include:
+
+- **Show only once**: (default) Displays the survey a single time, regardless of whether it was completed.
+
+- **Until they Submit a Response**: If tareting matches and trigger fires, Formbricks keeps showing the survey until the user submits a response.
+
+- **Keep Showing while Conditions Match**: Always shows the survey while specific conditions are met. Useful for continuous feedback collection, such as in [Docs Feedback Survey](/xm-and-surveys/xm/best-practices/docs-feedback) or the [Feedback Box](/xm-and-surveys/xm/best-practices/feedback-box).
+
+
+
+## Project-wide Global Waiting Time
+
+The Global Waiting Time is a universal blocker to make sure that no user sees too many surveys. This is particularly helpful when several teams of large organisations use Formbricks at the same time.
+
+The default Global Waiting Time is set to 7 days.
+
+To adjust the Global Waiting Time:
+
+1. Visit Formbricks Settings
+
+2. Go to Project Settings
+
+3. Find the **Recontact Waiting Time** section
+
+4. Modify the interval (in days) as needed.
+
+
+
+## Overriding Global Waiting Time for a Specific Survey
+
+For specific surveys, you may need to override the default waiting time. Below is how you can do that:
+
+1. In the Survey Editor, access the Settings Tab.
+
+2. Find the Ignore Waiting Time between Surveys toggle under Recontact Options.
+
+3. Enable this toggle to bypass the global setting.
+
+4. Set a custom recontact period:
+
+ - **Always Show Survey**: Displays the survey whenever triggered, ignoring the waiting time.
+
+ - **Wait `X` days before showing this survey again**: Sets a specific interval before the survey can be shown again.
+
+
+
+---
+
+Still struggling or is something not working as expected? [Join us in Github Discussions](https://github.com/formbricks/formbricks/discussions) and we'd be glad to assist you!
diff --git a/docs/xm-and-surveys/surveys/website-app-surveys/user-identification.mdx b/docs/xm-and-surveys/surveys/website-app-surveys/user-identification.mdx
new file mode 100644
index 0000000000..7c6bc0898f
--- /dev/null
+++ b/docs/xm-and-surveys/surveys/website-app-surveys/user-identification.mdx
@@ -0,0 +1,83 @@
+---
+title: "User Identification"
+description: "User Identification helps you to not only segment your users but also to see more information about the user who responded to a survey. This helps you to target surveys to specific user segments and see more information about the user who responded to a survey."
+icon: "user"
+---
+
+### Understanding Identified vs Unidentified Users
+
+In Formbricks, understanding the difference between identified and unidentified users is crucial for effective survey segmentation and targeted feedback collection.
+
+| Feature | Unidentified Users | Identified Users |
+| -------------------------------------------------------- | ------------------ | ---------------- |
+| Show surveys based on **trigger** actions | ✅ | ✅ |
+| Set **recontact details** to avoid survey fatique | ✅ | ✅ |
+| Target a subset of users using **attributes & segments** | ❌ | ✅ |
+| Collect **user information** in Formbricks | ❌ | ✅ |
+| Track **custom attributes** | ❌ | ✅ |
+| Counts towards your **monthly tacked user (MTU)** limit | ❌ | ✅ |
+| Recommended for **public-facing websites** | ✅ | ❌ |
+| Recommended for **web apps after login** | ❌ | ✅ |
+
+## Identified Users
+
+Identified users are those for whom specific information has been set, notably the userId. This identification allows for more precise targeting of surveys and a deeper understanding of the feedback provided. When enabled, all information specified by you and all actions are sent to Formbricks.
+
+This method is recommended for applications where users are required to log in and will often return.
+
+### Setting User ID
+
+To enable user identification, set the `userId` in the `init()` call of Formbricks. The user will show up in the Formbricks dashboard only if the `userId` is set. Use a unique string, like a database ID or a unique email address. You can also anonymize the identifier, as long as it is unique for each user.
+
+```javascript
+formbricks.init({
+ environmentId: "",
+ apiHost: "",
+ userId: "",
+});
+```
+
+### Enhanced Initialization with User Attributes
+
+Set user attributes in Formbricks during initialization along with the `userId`.
+
+ ```javascript Enhanced Initialization with User Attributes
+ formbricks.init({
+ environmentId: "",
+ apiHost: "",
+ userId: "",
+ attributes: {
+ // your custom attributes
+ Plan: "premium",
+ },
+ });
+ ```
+
+## Setting Custom User Attributes
+
+Use the `setAttribute` function to set custom attributes for the user (e.g., name, plan).
+
+
+ **Note**: the number of different attribute classes (e.g., "Plan,"
+ "First Name," etc.) is currently limited to 150 attributes per environment.
+
+
+```javascript Setting Custom Attributes
+formbricks.setAttribute("Plan","free");
+ ```
+
+The `setAttribute` function works like this:
+
+
+```javascript Setting Custom Attributes
+formbricks.setAttribute("attribute_key", "attribute_value");
+```
+
+
+### Logging Out Users
+
+When a user logs out of your webpage, also log them out of Formbricks to prevent activity from being linked to the wrong user. Use the logout function:
+
+```javascript Logging out User
+formbricks.logout();
+```
diff --git a/docs/xm-and-surveys/xm/best-practices/cancel-subscription.mdx b/docs/xm-and-surveys/xm/best-practices/cancel-subscription.mdx
new file mode 100644
index 0000000000..ee14d3aa7b
--- /dev/null
+++ b/docs/xm-and-surveys/xm/best-practices/cancel-subscription.mdx
@@ -0,0 +1,112 @@
+---
+title: "Learn from Churn"
+description: "Mastering Churn Surveys with Formbricks | Essential Tips & Steps"
+icon: "chart-line-down"
+---
+
+Churn is hard, but can teach you a lot. Whenever a user decides that your product isn’t worth it anymore, you have a unique opportunity to get deep insights. These insights are pure gold to reduce churn.
+
+## Purpose
+
+The Churn Survey is among the most effective ways to identify weaknesses in your offering. People were willing to pay but now are not anymore: What changed? Let’s find out!
+
+## Formbricks Approach
+
+* Ask at exactly the right point in time
+
+* Follow-up to prevent bad reviews
+
+* Coming soon: Make survey mandatory
+
+## Overview
+
+To run the Churn Survey in your app you want to proceed as follows:
+
+1. Create new Churn Survey at [app.formbricks.com](https://app.formbricks.com/)
+
+2. Set up the user action to display survey at right point in time
+
+3. Choose correct recontact options to never miss a feedback
+
+4. Prevent that churn!
+
+
+ ### Formbricks Widget running? We assume that you have already installed the
+
+ Formbricks Widget in your web app. It’s required to display messages and
+ surveys in your app. If not, please follow the [Quick Start Guide (takes
+ 15mins max.)](/app-surveys/quickstart)
+
+
+### 1. Create new Churn Survey
+
+If you don't have an account yet, create one at [app.formbricks.com](https://app.formbricks.com/auth/signup)
+
+Click on "Create Survey" and choose the template “Churn Survey”:
+
+
+
+### 2. Update questions (if you like)
+
+You’re free to update the question and answer options. However, based on our experience, we suggest giving the provided template a go 😊
+
+
+
+*Want to change the button color? You can do so in the project settings.*
+
+Save, and move over to the “Audience” tab.
+
+### 3. Pre-segment your audience
+
+In this case, you don’t really need to pre-segment your audience. You likely want to ask everyone who hits the “Cancel subscription” button.
+
+### 4. Set up a trigger
+
+To create the trigger for your Churn Survey, you have three options to choose from:
+
+* **Trigger by Inner Text:** You likely have a “Cancel Subscription” button in your app. You can setup a user Action with the according `Inner Text` to trigger the survey, like so:
+
+
+
+* **Trigger by CSS Selector:** In case you have more than one button saying “Cancel Subscription” in your app and only want to display the survey when one of them is clicked, you want to be more specific. The best way to do that is to give this button the HTML `id=“cancel-subscription”` and set your user action up like so:
+
+
+
+* **Trigger by page view filters:** Lastly, you could also display your survey on a subpage “/subscription-cancelled” where you forward users once they cancelled the trial subscription. You can then create a user Action with the type `Page View` and add select `Limit to specific pages` to add url filters, with the following settings:
+
+
+
+Whenever a user visits this page, matches the filter conditions above and the recontact options (below) the survey will be displayed ✅
+
+Here is our complete [Actions manual](/app-surveys/actions/) covering [No-Code](/app-surveys/actions#setting-up-no-code-actions) and [Code](/app-surveys/actions#setting-up-code-actions) Actions.
+
+
+ Pre-churn flow coming soon We’re currently building full-screen survey
+ pop-ups. You’ll be able to prevent users from closing the survey unless they
+ respond to it. It’s certainly debatable if you want that but you could force
+ them to click through the survey before letting them cancel 🤷
+
+
+### 5. Select Action in the “When to ask” card
+
+
+
+### 6. Last step: Set Recontact Options correctly
+
+Lastly, scroll down to “Recontact Options”. Here you have to choose the correct settings to make sure you milk these super valuable insights. You want to make sure that this survey is always displayed, no matter if the user has already seen a survey in the past days:
+
+
+
+These settings make sure the survey is always displayed, when a user wants to Cancel their subscription.
+
+### 7. Congrats! You’re ready to publish your survey 💃
+
+
+
+
+ Formbricks Widget running? You need to have the Formbricks Widget installed
+ to display the Churn Survey in your app. Please follow [this tutorial (Step 4
+ onwards)](/xm-and-surveys/surveys/website-app-surveys/quickstart) to install the widget.
+
+
+### **Get those insights! 🎉**
\ No newline at end of file
diff --git a/docs/xm-and-surveys/xm/best-practices/contact-form.mdx b/docs/xm-and-surveys/xm/best-practices/contact-form.mdx
new file mode 100644
index 0000000000..88e8f5953a
--- /dev/null
+++ b/docs/xm-and-surveys/xm/best-practices/contact-form.mdx
@@ -0,0 +1,157 @@
+---
+title: "Contact form"
+icon: "address-book"
+description: "A step-by-step guide to creating a contact form using Formbricks."
+---
+
+Welcome to this comprehensive guide on creating a contact form using Formbricks. Whether you're just starting out or you're a seasoned developer, this tutorial will walk you through every step of building an engaging and effective contact form.
+
+## What We’ll Build
+
+By the end of this tutorial, you'll have created a simple contact form featuring:
+
+- A welcoming introduction.
+
+- Fields for collecting the user's name and email.
+
+- A question to find out why they’re contacting you.
+
+- A message field for users to share their queries.
+
+### Setting Up Your Form
+
+First, let's lay the groundwork for your form:
+
+- Head to the Surveys page and click on **New Survey**.
+
+- Select **Start from Scratch** to create a new form.
+
+- In the form editor, click the three dots next to a question, then select **Change Question Type** and choose **Statement (Call to Action)**.
+
+
+
+- Add a welcoming statement to greet your users and explain the form's purpose.
+
+- Personalize the greeting to make it inviting and encourage engagement.
+
+
+ A warm welcome sets the tone for your form. Make it friendly to encourage
+ users to participate.
+
+
+### Adding the Name Field
+
+Next, let's capture the user's name:
+
+- Click **Add Question**.
+
+
+
+- Enter the prompts for the name field.
+
+- Turn off the **Long Answer** option at the bottom right.
+
+- Adjust any **settings**, such as making the field required.
+
+
+
+### Adding the Email Field
+
+Now, let’s add a field to collect the user's email address:
+
+- Click **Add Question** again.
+
+- Select Email as the input type.
+
+- Enter a prompt for the email field.
+
+
+
+### Adding a Reason for Contact
+
+Let’s now understand why the user is contacting you:
+
+- Click **Add Question** once again.
+
+- Select **Change Question** Type and choose **Single Select**.
+
+- Add the question "Why are you contacting us today?"
+
+
+
+
+ Predefined options help categorize inquiries, making it easier for you to
+ respond appropriately.
+
+
+- Add options like "General Inquiry," "Support," and "Feedback."
+
+
+
+### Adding a Message Field
+
+Finally, let’s provide a space for the user’s message:
+
+- Click **Add Question** for the last time.
+
+- Add the question: "Your Message."
+
+- Set the placeholder text to something like "Please write your message here."
+
+
+
+- Consider setting a minimum character count to ensure detailed messages.
+
+### Finalizing Your Form
+
+Once your form is complete, follow these final steps:
+
+- Review and rearrange the questions if necessary.
+
+- Test the form by filling it out as a user.
+
+- Customize the **Thank You** message for submissions.
+
+- Publish the form to get a shareable link.
+
+- Enable submission notifications:
+
+ * Go to your Formbricks account settings.
+
+ * Verify your email address.
+
+ * Ensure that **Survey** notifications are enabled.
+
+### Integrating the Contact Form into Your Website
+
+After publishing the form, follow these steps to integrate it into your site:
+
+- **Copy the Shareable Link**
+
+
+
+ * Find your form in the Formbricks dashboard, and click Share.
+
+ * Select Embed in a Web Page.
+
+- **Embed the Code**
+
+ * Copy the provided code and paste it into your website where you want the form to appear.
+
+
+ Note: There is an options toggle button called "Embed Mode." When enabled, it
+ updates the `src` to `"?embed=true"` and displays your survey in a minimalist
+ design, removing padding and background for a cleaner look.
+
+
+- **Test the Integration**
+
+ * Check if the form displays correctly on your site.
+
+ * Submit a test entry to ensure everything works and notifications are received.
+
+## Conclusion
+
+Congratulations! You’ve successfully created and integrated a professional contact form using Formbricks. This form will help you collect valuable information from your visitors in an efficient, user-friendly way.
+
+A great contact form strikes the balance between collecting necessary details and being simple enough to encourage submissions. **You’ve achieved just that!**
\ No newline at end of file
diff --git a/docs/xm-and-surveys/xm/best-practices/docs-feedback.mdx b/docs/xm-and-surveys/xm/best-practices/docs-feedback.mdx
new file mode 100644
index 0000000000..2f83c615d8
--- /dev/null
+++ b/docs/xm-and-surveys/xm/best-practices/docs-feedback.mdx
@@ -0,0 +1,378 @@
+---
+title: "Docs Feedback"
+icon: "comment"
+description: "A step-by-step guide to getting feedback on your Documentation with Formbricks"
+---
+
+
+Docs Feedback allows you to measure how clear your documentation is.
+
+## Purpose
+
+Your users don’t spend as much time thinking about your product as you do. To fight the "Curse of Knowledge" you have to measure how clear your docs are.
+
+## Installation
+
+To get this running, you'll need a bit of time. Here are the steps we're going through:
+
+- Set up Formbricks Cloud
+
+- Build the frontend
+
+- Connect to API
+
+- Test
+
+## 1. Setting up Formbricks Cloud
+
+- Create a [Formbricks Cloud](https://app.formbricks.com/auth/signup) account.
+
+- In the top-right menu, you can switch between “Development” and “Production” environments. These are separate, so your test data won’t affect real insights. Switch to “Development”:
+
+
+
+- Then, create a survey using the template “Docs Feedback”:
+
+
+
+- Change the Internal Question ID of the first question to **“isHelpful”** to make your life easier 😉
+
+
+
+- Similarly, you can change the Internal Question ID of the *Please elaborate* question to **“additionalFeedback”** and the one of the *Page URL* question to **“pageUrl”**.
+
+
+ The answers must be identical. If you want different options than "Yes 👍" and "No 👎", you need to update the choices accordingly. They must match the frontend we’re building in the next step.
+
+
+- Click on “Continue to Settings or select the audience tab manually. Scroll down to “Survey Trigger” and create a new Action:
+
+
+
+- Our goal is to create an event that never triggers. This might seem odd, but it's a necessary workaround. Fill out the action as shown in the screenshot:
+
+
+
+- Select the Non-Event in the dropdown. Now you see that the “Publish survey” button is active. Publish your survey 🤝
+
+
+
+**You’re all setup in Formbricks Cloud for now 👍**
+
+## 2. Build the frontend
+
+
+ Your frontend might work differently Your frontend likely looks and works
+ differently. This is an example specific to our tech stack. We want to
+ illustrate what you should consider building yours.
+
+
+Before we start, lets talk about the widget. It works like this:
+
+* Once the user selects yes/no, a partial response is sent to the Formbricks API. It includes the feedback and the current page url.
+
+* Then the user is presented with an additional open text field to further explain their choice. Once it's submitted, the previous response is updated with the additional feedback.
+
+This allows us to capture and analyze partial feedback where the user is not willing to provide additional information.
+
+**Let's do this 👇**
+
+- Open the code editor where you handle your docs page.
+
+- Likely, you have a template file or similar which renders the navigation at the bottom of the page:
+
+
+
+Locate that file. We are using the [Tailwind Template “Syntax”](https://tailwindui.com/templates/syntax) in this case.
+
+- Write the frontend code for the widget. Here is the full component (we break it down right below):
+
+```tsx Entire Widget
+import { Button } from "@/modules/ui/components/Button";
+import { Popover, PopoverContent, PopoverTrigger } from "@/modules/ui/popover";
+import { useRouter } from "next/router";
+import { useState } from "react";
+import {
+ handleFeedbackSubmit,
+ updateFeedback,
+} from "../../lib/handleFeedbackSubmit";
+
+export const DocsFeedback = () => {
+ const router = useRouter();
+ const [isOpen, setIsOpen] = useState(false);
+ const [sharedFeedback, setSharedFeedback] = useState(false);
+ const [responseId, setResponseId] = useState(null);
+ const [freeText, setFreeText] = useState("");
+
+ if (
+ !process.env.NEXT_PUBLIC_FORMBRICKS_COM_DOCS_FEEDBACK_SURVEY_ID ||
+ !process.env.NEXT_PUBLIC_FORMBRICKS_COM_API_HOST ||
+ !process.env.NEXT_PUBLIC_FORMBRICKS_COM_ENVIRONMENT_ID
+ ) {
+ return null;
+ }
+
+ return (
+
+ );
+};
+```
+
+**Let’s break it down!**
+
+Setting the local states and getting the current URL:
+
+```tsx State Management
+const router = useRouter(); // to get the URL of the current docs page
+const [isOpen, setIsOpen] = useState(false); // to close Popover after
+const [sharedFeedback, setSharedFeedback] = useState(false); // to display Thank You message
+const [responseId, setResponseId] = useState(null); // to store responseID (will explain more)
+const [freeText, setFreeText] = useState(""); // to locally store the additional info provided by user
+```
+
+Disabling feedback if config environment variables are not set properly:
+
+```tsx Disable feedback if incorrect config env vars
+if (
+ !process.env.NEXT_PUBLIC_FORMBRICKS_COM_DOCS_FEEDBACK_SURVEY_ID ||
+ !process.env.NEXT_PUBLIC_FORMBRICKS_COM_API_HOST ||
+ !process.env.NEXT_PUBLIC_FORMBRICKS_COM_ENVIRONMENT_ID
+) {
+ return null;
+}
+```
+
+The actual frontend (read comments):
+
+```tsx Actual Frontend
+return (
+
+ {!sharedFeedback ? ( // displays Feedback buttons or Thank You message
+
+ Was this page helpful?
+
+
+ {["Yes 👍", " No 👎"].map((option) => ( // Popup Trigger is a button as well. This is a workaround to open the same form but send a different response to the API
+ {
+ const id = await handleFeedbackSubmit(option, router.asPath); // handleFeedbackSubmit sends the Yes / No choice as well as the current URL to Formbricks and returns the responseId
+ setResponseId(id); // add responseId to local state so we can use it if user decides to add more feedback in free text field
+ }}>
+ {option} // "Yes 👍" or "No 👎" - they have to be identical with the choices in the survey on app.formbricks.com for it to work (!)
+
+ ))}
+
+
+
+
+
+
+ ) : (
+
Thanks a lot, boss! 🤝
// Thank You message
+ )}
+
+ );
+}
+```
+
+## 3. Connecting to the Formbricks API
+
+The last step is to hook up your new frontend to the Formbricks API. To achieve that, we followed the “[Create Response](/api/client/responses#create-a-response)” and “[Update Response](/api/client/responses#update-a-response)” pages in our docs.
+
+Here is the code for the `handleFeedbackSubmit` function with comments:
+
+```tsx handleFeedbackSubmit() function definition
+export const handleFeedbackSubmit = async (YesNo, pageUrl) => {
+ const response_data = {
+ data: {
+ isHelpful: YesNo, // the "Yes 👍" or "No 👎" response. Remember: They have to be identical with the choices in the survey on app.formbricks.com for it to work.
+ pageUrl: pageUrl, // So you know which page the user gives feedback about.
+ },
+ };
+
+ const payload = {
+ response: response_data,
+ surveyId: process.env.NEXT_PUBLIC_FORMBRICKS_COM_DOCS_FEEDBACK_SURVEY_ID, // For testing, replace this with the survey ID of your survey (more info below)
+ };
+
+ try {
+ const res = await fetch(
+ `${process.env.NEXT_PUBLIC_FORMBRICKS_COM_API_HOST}/api/v1/client/environments/${process.env.NEXT_PUBLIC_FORMBRICKS_COM_ENVIRONMENT_ID}/responses`, // For testing, replace this with the API host and environemnt ID of your Development environment on app.formbricks.com
+ };
+ {
+ method: "POST",
+ headers: {
+ "Content-Type": "application/json",
+ },
+ body: JSON.stringify(payload),
+ }
+ );
+
+ if (res.ok) {
+ const responseJson = await res.json();
+ return responseJson.id; // Returns the response ID
+ } else {
+ console.error("Error submitting form");
+ }
+ } catch (error) {
+ console.error("Error submitting form:", error);
+ }
+};
+```
+
+And this is the `updateFeedback` function with comments:
+
+```tsx updateFeedback() function definition
+export const updateFeedback = async (freeText, responseId) => {
+ if (!responseId) {
+ console.error("No response ID available"); // If there is not response ID, no response can be updated.
+ return;
+ }
+
+ const payload = {
+ response: {
+ data: {
+ additionalInfo: freeText,
+ },
+ finished: true, // Lets Formbricks calculate Completion Rate
+ },
+ };
+
+ try {
+ const res = await fetch(
+ `${process.env.NEXT_PUBLIC_FORMBRICKS_COM_API_HOST}/api/v1/client/environments/${process.env.NEXT_PUBLIC_FORMBRICKS_COM_ENVIRONMENT_ID}/responses/${responseId}`,
+ {
+ method: "PUT",
+ headers: {
+ "Content-Type": "application/json",
+ },
+ body: JSON.stringify(payload),
+ }
+ );
+
+ if (!res.ok) {
+ console.error("Error updating response");
+ }
+ } catch (error) {
+ console.error("Error updating response:", error);
+ }
+};
+```
+
+We're almosr there! 🤸
+
+## 4. Setting it up for testing
+
+Before you roll it out in production, you want to test it. To do so, you need two things:
+
+- Environment ID (1) of the development environment on app.formbricks.com
+
+- Survey ID (2) of your test survey
+
+When you are on the survey detail page, you’ll find both of them in the URL:
+
+
+
+Now, you have to replace the IDs and the API host accordingly in your `handleFeedbackSubmit`:
+
+```tsx Replace the ID and API accordingly
+ const payload = {
+ response: response_data,
+ surveyId: clgwfv4a7002el50ihyuss38x, // This is an example, replace with yours
+ };
+
+ try {
+ const res = await fetch(
+ // Note that we also updated the API host to 'https://app.formbricks.com/'
+ `https:app.formbricks.com/api/v1/client/environments/clgwcwp4z000lpf0hur7uxbuv/responses`,
+ };
+```
+
+And lastly, in the `updateFeedback` function
+
+```tsx Replace the ID and API here as well
+ try {
+ const res = await fetch(
+ // Note that we also updated the API host to 'https://app.formbricks.com/'
+ `https:app.formbricks.com/api/v1/client/environments/clgwcwp4z000lpf0hur7uxbuv/responses/${responseId}`, // Note that we also updated the API host to 'https://app.formbricks.com/'
+}
+```
+
+### You’re good to go! 🎉
+
+Something doesn’t work? Check your browser console for the error.
+
+**Can’t figure it out?**: [Get help in GitHub Discussions](https://github.com/formbricks/formbricks/discussions)
\ No newline at end of file
diff --git a/docs/xm-and-surveys/xm/best-practices/feature-chaser.mdx b/docs/xm-and-surveys/xm/best-practices/feature-chaser.mdx
new file mode 100644
index 0000000000..e53e5563cb
--- /dev/null
+++ b/docs/xm-and-surveys/xm/best-practices/feature-chaser.mdx
@@ -0,0 +1,86 @@
+---
+title: "Feature Chaser"
+description: "Learn how to harness the power of Formbricks to gather targeted user feedback on specific features. Dive deep into creating, triggering, and publishing the Feature Chaser survey to enhance your product with actionable insights for specific users."
+icon: "wrench"
+---
+
+
+Following up on specific features only makes sense with very targeted surveys. Formbricks is built for that.
+
+## Purpose
+
+Product analytics never tell you why a feature is used - and why not. Following up on specific features with highly relevant questions is a great way to gather feedback and improve your product.
+
+## Formbricks Approach
+
+* Trigger survey at exactly the right point in the user journey
+
+* Never ask twice, keep your data clean
+
+* Prevent survey fatigue with global waiting period
+
+## Overview
+
+To run the Feature Chaser survey in your app you want to proceed as follows:
+
+- Create new Feature Chaser survey at [app.formbricks.com](https://app.formbricks.com/)
+
+- Setup a user action to display survey at the right point in time
+
+
+ Formbricks Widget running? We assume that you have already installed the Formbricks Widget in your web app. It’s required to display messages and surveys in your app. If not, please follow the [Quick Start Guide (takes 15mins max.)](/xm-and-surveys/surveys/website-app-surveys/quickstart)
+
+
+### 1. Create new Feature Chaser
+
+If you don't have an account yet, create one at [app.formbricks.com](https://app.formbricks.com/auth/signup)
+
+Click on "Create Survey" and choose the template “Feature Chaser”:
+
+
+
+### 2. Update questions
+
+The questions you want to ask are dependent on your feature and can be very specific. In the template, we suggest a high-level check on how easy it was for the user to achieve their goal. We also add an opportunity to provide context:
+
+
+
+Save, and move over to where the magic happens: The “Audience” tab.
+
+### 3. Set up a trigger for the Feature Chaser survey:
+
+Before setting the right trigger, you need to identify a user action in your app which signals, that they have just used the feature you want to understand better. In most cases, it is clicking a specific button in your product.
+
+You can create [Code Actions](/xm-and-surveys/surveys/website-app-surveys/actions#setting-up-code-actions) and [No Code Actions](/xm-and-surveys/surveys/website-app-surveys/actions#setting-up-no-code-actions) to follow users through your app. In this example, we will create a No Code Action.
+
+There are two ways to track a button:
+
+1. **Trigger by Inner Text:** You might have a button with a unique text at the end of your feature e.g. "Export Report". You can setup a user Action with the according `Inner Text` to trigger the survey, like so:
+
+
+
+1. **Trigger by CSS Selector:** In case you have more than one button saying “Export Report” in your app and only want to display the survey when one of them is clicked, you want to be more specific. The best way to do that is to give this button the HTML `id=“export-report-featurename”` and set your user action up like so:
+
+
+
+Please follow our [Actions manual](/xm-and-surveys/surveys/website-app-surveys/actions) for an in-depth description of how Actions work.
+
+### 4. Select Action in the “When to ask” card
+
+
+
+### 5. Last step: Set Recontact Options correctly
+
+Lastly, scroll down to “Recontact Options”. Here you have full freedom to decide who you want to ask. Generally, you only want to ask every user once and prevent survey fatigue. It's up to you to decide if you want to ask again, when the user did not yet reply:
+
+
+
+### 7. Congrats! You’re ready to publish your survey 💃
+
+
+
+
+ Formbricks Widget running? You need to have the Formbricks Widget installed
+ to display the Feature Chaser in your app. Please follow [this tutorial (Step
+ 4 onwards)](/xm-and-surveys/surveys/website-app-surveys/quickstart) to install the widget.
+
diff --git a/docs/xm-and-surveys/xm/best-practices/feedback-box.mdx b/docs/xm-and-surveys/xm/best-practices/feedback-box.mdx
new file mode 100644
index 0000000000..0356b3b6b8
--- /dev/null
+++ b/docs/xm-and-surveys/xm/best-practices/feedback-box.mdx
@@ -0,0 +1,75 @@
+---
+title: "Feedback Box"
+description: "A step-by-step guide to creating a feedback box using Formbricks."
+icon: "box"
+---
+
+The Feedback Box gives your users a direct channel to share their feedback and feel heard.
+
+## Purpose
+
+A low friction way to gather feedback helps catching even the smallest points of frustration in user experiences. Use automations to react rapidly and make users feel heard.
+
+## Formbricks Approach
+
+* Make it easy: 2 clicks to share feedback
+
+* Pipe insights where team can see them and react quickly
+
+## Installation
+
+To add the Feedback Box to your app, you need to perform these steps:
+
+1. Create new Feedback Box at app.formbricks.com
+
+2. Add user action to trigger Feedback Box
+
+3. Update recontact settings to display correctly
+
+### 1. Create new Feedback Box
+
+If you don't have an account yet, create one at [app.formbricks.com](https://app.formbricks.com/auth/signup)
+
+Then, create a new survey and look for the "Feedback Box" template:
+
+
+
+### 2. Update question content
+
+Change the questions and answer options according to your preference:
+
+
+
+### 3. Create user action to trigger Feedback Box:
+
+Go to the “Audience” tab, find the “When to send” card and choose “Add Action”. We will now use our super cool User Action Tracker:
+
+
+
+We have two options to track the Feedback Button in your application: innerText and CSS-Selector:
+
+1. **Inner Text:** This means that whenever a user clicks any HTML item in your app which has an `Inner Text` of `Feedback` the Feedback Box will be displayed.
+
+
+
+2. **CSS Selector:** This means that when an element with a specific CSS-Selector like `#feedback-button` is clicked, your Feedback Box is triggered.
+
+
+
+### 4. Select action in the “When to ask” card
+
+
+
+### 5. Set Recontact Options correctly
+
+Scroll down to “Recontact Options”. Here you have to choose the right settings so that the Feedback Box pops up every time the user action is performed. (Our default is that every user sees every survey only once):
+
+
+
+### 6. You’re ready publish your survey!
+
+
+
+## Setting up the Widget
+
+Formbricks Widget running? You need to have the Formbricks Widget installed to display the Feedback Box in your app. Please follow [this tutorial (Step 4 onwards)](/xm-and-surveys/surveys/website-app-surveys/quickstart) to install the widget.
\ No newline at end of file
diff --git a/docs/xm-and-surveys/xm/best-practices/improve-email-content.mdx b/docs/xm-and-surveys/xm/best-practices/improve-email-content.mdx
new file mode 100644
index 0000000000..29ed039618
--- /dev/null
+++ b/docs/xm-and-surveys/xm/best-practices/improve-email-content.mdx
@@ -0,0 +1,72 @@
+---
+title: "Improve Email Content"
+description: "Measure email content quality with Formbricks"
+icon: "envelope"
+---
+
+
+Email remains the predominant way to communicate with your customers. Measure the effectiveness to improve your offering.
+
+## Purpose
+
+Measuring the content quality of both transactional and marketing emails is a key element for improving customer communication.
+
+## Formbricks Approach
+
+* Embed the survey into your email so it’s part of the newsletter.
+
+* Use link prefilling to store the answer users clicked on in the email.
+
+* Dynamic user identification to append reader's email for personalized profiles and follow ups.
+
+## Installation
+
+To embed the newsletter survey into your email, follow these steps:
+
+1. Create new 'Improve Newsletter Content' survey at [app.formbricks.com](https://app.formbricks.com/)
+
+2. Select how you where you want to display the survey.
+
+3. Copy the embed code anywhere you want in your newsletter.
+
+### 1. Create new 'Improve Newsletter Content' Survey
+
+If you don't have an account yet, create one at [app.formbricks.com](https://app.formbricks.com/auth/signup)
+
+Then, create a new survey and look for the "Improve Newsletter Content" template:
+
+
+
+### 2. Customize Survey questions
+
+Customize survey questions, emojis or stars however you like:
+
+
+
+### 3. Configure Survey Settings
+
+Navigate to the **Settings** tab and choose the type of survey you want. After that, choose **Link Survey**:
+
+
+
+### 4. Choose how you want to embed your survey
+
+After publishing your survey, a modal that prompts you to embed your survey will pop up.
+
+
+
+Select the Embed Survey card and you will be directed to another modal.
+
+### 5. Copy code to embed the survey in your newsletter
+
+Click the button with the “View Embed Code” text at the top right corner of the modal and simply paste the HTML code for your survey anywhere you want it in your newsletter:
+
+
+
+Send a test email to yourself and try it out 🤓
+
+### Learn about data prefilling
+
+
+How does data prefilling work? Learn about how link prefilling and user identification maximize your insights in [this guide](/blog/how-smart-writers-use-formbricks-open-source-tool-to-measure-the-quality-of-their-newsletter-content).
+
\ No newline at end of file
diff --git a/docs/xm-and-surveys/xm/best-practices/improve-trial-cr.mdx b/docs/xm-and-surveys/xm/best-practices/improve-trial-cr.mdx
new file mode 100644
index 0000000000..77780d2106
--- /dev/null
+++ b/docs/xm-and-surveys/xm/best-practices/improve-trial-cr.mdx
@@ -0,0 +1,91 @@
+---
+title: "Improve Trial Conversion"
+description: "Improve Trial Conversion with Formbricks"
+icon: "chart-line-up"
+---
+
+When a user doesn't convert, you want to know why. A micro-survey displayed at exactly the right time gives you a window into understanding the most relevant question: To pay or not to pay?
+
+## Purpose
+
+Understanding why free users don’t convert to paid users helps boost revenue. This insight allows you to adjust your offering to encourage more users to upgrade.
+
+## Formbricks Approach
+
+- Ask at exactly the right point in time.
+- Ask to understand the problem, don’t ask for solutions.
+
+## Installation
+
+To display the Trial Conversion Survey in your app you want to proceed as follows:
+
+- Create new Trial Conversion Survey at [app.formbricks.com](https://app.formbricks.com/).
+- Set up the user action to display survey at right point in time.
+- Print it.
+
+
+ ### Is the Formbricks Widget Running?
+ We assume you’ve already installed the Formbricks Widget in your web app, as it’s required to display messages and surveys. If not, follow the [Quick Start Guide (takes 15 mins max.)](/app-surveys/quickstart).
+
+
+### 1. Create new Trial Conversion Survey
+
+If you don't have an account yet, create one at [app.formbricks.com](https://app.formbricks.com/auth/signup)
+
+Click on **Create Survey** and select the template, **Improve Trial Conversion**:
+
+
+
+### 2. Optional: Update questions
+
+You can update the questions and answer options.
+
+
+
+_Want to change the button color? Adjust it in the project settings!_
+
+Save, and move over to the **Audience** tab.
+
+### 3. Pre-segment your audience (coming soon)
+
+
+### Filter by Attribute Coming Soon
+
+We're working on pre-segmenting users by attributes. This manual will be updated in the coming days.
+
+
+Pre-segmentation isn't needed for this survey since you likely want to target all users who cancel their trial. You can use a specific user action, like clicking **Cancel Trial**, to show the survey only to users trying your product.
+
+### 4. Set up a trigger for the Trial Conversion Survey:
+
+How you trigger your survey depends on your product. There are two options:
+
+- **Trigger by Page view:** If you have a page like `/trial-cancelled` for users who cancel their trial subscription, create a user action with the type "Page View." Select "Limit to specific pages" and apply URL filters with these settings:
+
+
+
+Whenever a user visits this page, the survey will be displayed ✅
+
+- **Trigger by Button Click:** In a different case, you have a “Cancel Trial" button in your app. You can setup a user Action with the `Inner Text`:
+
+
+
+Please have a look at our complete [Actions manual](/product/website-app-surveys/actions) if you have questions.
+
+### 5. Select Action in the “When to ask” card
+
+
+
+### 6. Last step: Set Recontact Options correctly
+
+Finally, scroll down to "Recontact Options" and select the appropriate settings to gather the most insights. Ensure the survey is always displayed, even if the user has seen it in the past few days.
+
+
+
+### 7. Congrats! You’re ready to publish your survey 🥳
+
+
+
+
+ Formbricks Widget running? You need to have the Formbricks Widget installed to display the Feedback Box in your app. Please follow [this tutorial (Step 4 onwards)](/xm-and-surveys/surveys/website-app-surveys/quickstart) to install the widget.
+
\ No newline at end of file
diff --git a/docs/xm-and-surveys/xm/best-practices/interview-prompt.mdx b/docs/xm-and-surveys/xm/best-practices/interview-prompt.mdx
new file mode 100644
index 0000000000..f9a4647541
--- /dev/null
+++ b/docs/xm-and-surveys/xm/best-practices/interview-prompt.mdx
@@ -0,0 +1,105 @@
+---
+title: "App Interview Prompt"
+description: "Maximize User Interview Participation with App Interview Prompts"
+icon: "comment"
+---
+
+The Interview Prompt allows you to pick a specific user segment (e.g. Power Users) and invite them to a user interview. Bye, bye spammy email invites, benefit from up to 6x more respondents.
+
+## Purpose
+
+Product analytics and app surveys are incomplete without user interviews. Set the scheduling on autopilot for a continuous stream of interviews.
+
+## Formbricks Approach
+
+* Pre-segment users with custom attributes. Only invite highly relevant users.
+
+* In-app prompts (app surveys or website surveys) have a 6x higher conversion rate than email invites.
+
+* Set scheduling user interviews on auto pilot.
+
+* Soon: Integrate directly with your [Cal.com](http://Cal.com) account.
+
+## Installation
+
+To display an Interview Prompt in your app you want to proceed as follows:
+
+1. Create new Interview Prompt at [app.formbricks.com](https://app.formbricks.com/)
+
+2. Adjust content and settings
+
+3. That’s it! 🎉
+
+
+ Formbricks Widget running? We assume that you have already installed the Formbricks Widget in your web app. It’s required to display messages and surveys in your app. If not, please follow the [Quick Start Guide (15mins)](/xm-and-surveys/surveys/website-app-surveys/quickstart)
+
+
+### 1. Create new Interview Prompt
+
+If you don't have an account yet, create one at [app.formbricks.com](https://app.formbricks.com/auth/signup)
+
+Click on "Create Survey" and choose the template “Interview Prompt”:
+
+
+
+### 2. Update prompt and CTA
+
+Update the prompt, description and button text to match your products tonality. You can also update the button color in the Project Settings.
+
+
+
+In the button settings you have to make sure it is set to “External URL”. In the URL field, copy your booking link (e.g. [https://cal.com/company/user-interview).](https://cal.com/company/user-interview\).) If you don’t have a booking link yet, head over to [cal.com](http://cal.com) and get one - they have the best free plan out there!
+
+
+
+Save, and move over to the “Audience” tab.
+
+### 3. Pre-segment your audience (coming soon)
+
+
+ ## Filter by attribute coming soon. We're working on pre-segmenting users by
+
+ attributes. We will update this manual in the next few days.
+
+
+Once you clicked over to the “Audience” tab you can change the settings. In the **Who To Send** card, select “Filter audience by attribute”. This allows you to only show the prompt to a specific segment of your user base.
+
+In our case, we want to select users who we have assigned the attribute “Power User”. To learn how to assign attributes to your users, please [follow this guide](/app-surveys/user-identification).
+
+Great, now only the “Power User” segment will see our Interview Prompt. But when will they see it?
+
+### 4. Set up a trigger for the Interview Prompt:
+
+To create the trigger to show your Interview Prompt, go to the “Audience” tab, find the “When to send” card and choose “Add Action”. We will now use our super cool User Action Tracker:
+
+
+
+Generally, we have two types of user actions: Page views and clicks. The Interview Prompt, you’ll likely want to display it on a page visit since you already filter who sees the prompt by attributes.
+
+1. **Page view:** Whenever a user visits a page the survey will be displayed, as long as the other conditions match. Other conditions are pre-segmentation, if this user has seen a survey in the past 2 weeks, etc.
+
+
+
+1. **Click(Inner Text & CSS Selector):** When a user clicks an element (like a button) with a specific text content or CSS selector, the prompt will be displayed as long as the other conditions also match.
+
+
+
+
+
+### 5. Select action in the “When to ask” card
+
+
+
+### 6. Set Recontact Options correctly
+
+Scroll down to “Recontact Options”. Here you have to choose the correct settings to strike the right balance between asking for user feedback and preventing survey fatigue. Your settings also depend on the size of your user base or segment. If you e.g. have thousands of “Power Users” you can easily afford to only display the prompt once. If you have a smaller user base you might want to ask twice to get a sufficient amount of bookings:
+
+
+
+### 7. Congrats! You’re ready to publish your survey 💃 🤸
+
+
+
+
+ Formbricks Widget running? You need to have the Formbricks Widget installed to display the Feedback Box in your app. Please follow [this tutorial (Step 4 onwards)](/app-surveys/quickstart) to install the widget.
+
\ No newline at end of file
diff --git a/docs/xm-and-surveys/xm/best-practices/pmf-survey.mdx b/docs/xm-and-surveys/xm/best-practices/pmf-survey.mdx
new file mode 100644
index 0000000000..b0d39a045f
--- /dev/null
+++ b/docs/xm-and-surveys/xm/best-practices/pmf-survey.mdx
@@ -0,0 +1,80 @@
+---
+title: "Product-Market Fit"
+description: "How to Set Up a Product-Market Fit Survey Using Formbricks - Step-by-Step Guide"
+icon: "chart-line-up"
+---
+
+## Purpose
+
+
+Measuring and understanding your PMF is crucial for building a successful business. It helps you identify what users like, what’s missing, and what to build next. This survey is ideal for measuring PMF, similar to [Superhuman](https://review.firstround.com/how-superhuman-built-an-engine-to-find-product-market-fit).
+
+## Formbricks Approach
+
+- Pre-segment users to only survey users who have experienced your products value.
+- Never ask twice, keep your data clean.
+- Run on autopilot: Set up once, keep surveying users continuously.
+
+## Overview
+
+To display the Product-Market Fit survey in your app you want to proceed as follows:
+
+1. Create new Product-Market Fit survey at [app.formbricks.com](https://app.formbricks.com/)
+2. Setup pre-segmentation to assure high data quality
+3. Setup the user action to display survey at good point in time
+
+
+ Formbricks Widget running? You need to have the Formbricks Widget installed to display the Feedback Box in your app. Please follow [this tutorial (Step 4 onwards)](/website-app-surveys/quickstart) to install the widget.
+
+
+### 1. Create new PMF survey
+
+If you don't have an account yet, create one at [app.formbricks.com](https://app.formbricks.com/auth/signup)
+
+Click on "Create Survey" and choose a PMF survey template. The first one is short, while the second builds on the ["Product-Market Fit Engine"](https://review.firstround.com/how-superhuman-built-an-engine-to-find-product-market-fit) developed by Superhuman.
+
+
+/>
+
+### Optional: Update questions
+
+You can update the questions and answer options, but based on our experience, we recommend starting with the provided template. For a detailed guide on how to use the data you're collecting, check out this [guide](https://coda.io/@rahulvohra/superhuman-product-market-fit-engine).
+
+
+/>
+
+_Want to change the button color? You can do so in the project settings!_
+
+Save, and move over to where the magic happens: The “Audience” tab.
+
+### 3. Pre-segment your audience
+
+To run this survey effectively, pre-segment your user base. As mentioned earlier, asking all users can lead to misleading opinions. Focus on gathering feedback from users who have invested time in getting to know and use your product.
+
+**Filter by attribute**: You can keep the logic to decide if a user has (or has not) experienced value in your application. This makes most sense if you want to use historic usage data to decide if a user qualifies or not. Create your logic and if it applies, send an attribute to Formbricks by e.g. `formbricks.setAttribute("Loyalty", "Experienced Value");` Here is the full manual on how to [set attributes](/app-surveys/user-identification).
+
+### 4. Set up a trigger for the Product-Market Fit survey:
+
+You need a trigger to display the survey but in this case, the filtering does all the work. It’s up to you to decide to display the survey after the user viewed a specific subpage (pageURL) or after clicking an element. Have a look at the [Actions manual](/app-surveys/actions/) if you are not sure how to set them up:
+
+
+
+
+
+### 5. Select Action in the “When to ask” card
+
+
+
+### 6. Last step: Set Recontact Options correctly
+
+Lastly, scroll down to “Recontact Options”. Here you have to choose the correct settings to make sure your data remains of high quality. You want to make sure that this survey is only responded to once per user. It is up to you to decide if you want to display it several times until the user responds:
+
+
+
+### 7. Congrats! You’re ready to publish your survey 💃
+
+
+
+
+ Formbricks Widget running? You need to have the Formbricks Widget installed to display the Feedback Box in your app. Please follow [this tutorial (Step 4 onwards)](/xm-and-surveys/surveys/website-app-surveys/quickstart) to install the widget.
+
\ No newline at end of file
diff --git a/docs/xm-and-surveys/xm/best-practices/quiz-time.mdx b/docs/xm-and-surveys/xm/best-practices/quiz-time.mdx
new file mode 100644
index 0000000000..ae1fd80bd7
--- /dev/null
+++ b/docs/xm-and-surveys/xm/best-practices/quiz-time.mdx
@@ -0,0 +1,92 @@
+---
+title: "Quiz Time"
+icon: "brain"
+description: "How to Create a Quiz Using Formbricks - Step-by-Step Guide"
+---
+
+# Creating a quiz with Formbricks - Step-by-step Guide
+
+Welcome to this guide on creating engaging quizzes with Formbricks! Quizzes help you capture customer insights, explore user personalities, or simply add fun for your team. With Formbricks, you can personalize quizzes in minutes add scores, customize backgrounds, and more, all without any technical skills!
+
+## What we'll build
+
+By the end of this tutorial, you'll have created a simple trivia Quiz featuring:
+
+1. Score calculations.
+2. Multiple endings depending on the score.
+
+## Setting up the form
+
+First, make sure you have a Formbricks account. If not, you can create one [here](https://app.formbricks.com):
+
+1. Head to the Surveys page and click on **New Survey**.
+2. Select Start from Scratch to create a new form.
+3. Go to the settings and select form type as **Link Survey**
+4. In the form editor, click the three dots next to a question, then select Change Question Type and choose **Single-Select**.
+
+
+
+5. Add a welcoming statement to greet your users and explain the Quiz's purpose.
+6. Personalize the greeting to make it inviting and encourage engagement.
+
+**Note:** While we’re creating a Link Survey here, the process is similar for Web and App surveys.
+
+## Adding the questions
+
+Next, let's create a question for example with multiple options:
+
+What country has the longest coastline in the world?
+A) Canada
+B) Japan
+C) India
+D) Nepal
+
+
+
+## Calculate Score
+
+Now that we have our question ready, let’s add the logic to calculate scores.
+
+1. Scroll down in the editor and click on variables.
+2. Create a new variable named `score` with a default value of 0
+
+
+
+3. Now go back to the question and expand the advanced settings by clicking on `> Show Advanced Settings`.
+4. Under the conditional logic you should see the option to `Add Logic`. Click on that.
+
+
+
+
+5. Now you should see conditional logic. Customize the logic to match your needs for example:
+
+**When** `question` equals `YOUR_ANSWER_HERE` **Then** `Calculate` `score` `Add +` `01`. So it should look something like this.
+
+
+
+6. Let's duplicate and customize these questions. Click on the duplicate icon at the top of the question.
+7. Now edit the questions, options, and answers in the **conditional logic**
+
+## Creating Multiple Endings Based on Scores
+
+Once you have all the questions and the calculation logic in place, it’s time to customize the endings. Scroll down to the Ending Card section. We will create two cards for this quiz: one for when the user fails the quiz and another for when the user passes.
+
+1. Customize the ending card.
+2. Display the score by typing `@score`. ( You can address all the variables or questions by just typing @ ).
+3. Add logic to the last question. ( this is necessary to redirect the user based on the score ). Kind of like this:
+
+**When** `score` >= `03` **Then** `Jump to` `Pass`. So it should look something like this.
+
+
+
+4. Ensure that the Fail card is positioned above the Pass card. This allows any condition that does not meet the criteria of being greater than or equal to 3 to jump to the Fail card.
+
+
+
+5. That's it! Now you can save and publish the quiz.
+
+# Wrapping Up
+
+Congratulations! You’ve successfully created a Quiz with Formbricks. You can play around with the quiz that we just created [here](https://app.formbricks.com/s/cm2wwt3vu0001ir8o7ys0bezz).
+
+A great quiz can serve as an excellent lead generator, a job fit checker, or just a fun icebreaker for your team. You now have the skills to build that! If you want to read more about building quizzes and how you can create a Job Fit Quiz check this article [here](https://www.harshbhat.me/blog/formbricks-quiz).