Compare commits

..

101 Commits

Author SHA1 Message Date
pandeymangg
449b56fd40 build fix 2024-06-05 18:44:24 +05:30
pandeymangg
2b1ffa90f9 build fix 2024-06-05 18:20:34 +05:30
pandeymangg
d595794fb6 refactors 2024-06-05 14:08:08 +05:30
pandeymangg
2d3dec7834 fix: somethings 2024-06-05 10:07:33 +05:30
Piyush Gupta
bbfdba7615 feat: Add hiddenFields to app & website surveys (#2628)
Co-authored-by: pandeymangg <anshuman.pandey9999@gmail.com>
2024-06-04 11:19:47 +00:00
Anshuman Pandey
681c559c79 fix: targeting ui dir structure (#2708)
Co-authored-by: Dhruwang <dhruwangjariwala18@gmail.com>
2024-06-04 04:56:38 +00:00
Anshuman Pandey
4e39f45446 fix: settings forms (#2700)
Co-authored-by: Matti Nannt <mail@matthiasnannt.com>
2024-06-03 15:26:30 +00:00
Hicham El Bouaaichi
62c514acf2 feat: rework loading in Settings pages (#2650)
Co-authored-by: Piyush Gupta <piyushguptaa2z123@gmail.com>
Co-authored-by: pandeymangg <anshuman.pandey9999@gmail.com>
2024-06-03 15:10:46 +00:00
Dhruwang Jariwala
48638e8ca2 fix: added support for date, matrix, address and cal question to notion integration (#2726) 2024-06-03 15:06:50 +00:00
Dhruwang Jariwala
cb44b575c2 fix: Question card fixes (#2714) 2024-06-03 14:36:57 +00:00
Matti Nannt
1565fd33f7 docs: add tutorial for custom SSL certificates (#2724) 2024-06-03 12:02:48 +02:00
Anshuman Pandey
2bf04e9818 feat: change question type (#2646)
Co-authored-by: Matthias Nannt <mail@matthiasnannt.com>
2024-06-03 08:53:12 +00:00
Piyush Gupta
a5f6ecb992 docs: adds documentation table for team roles (#2709)
Co-authored-by: Matthias Nannt <mail@matthiasnannt.com>
2024-05-31 08:09:19 +00:00
Anshuman Pandey
a211e64f0e fix: product styling form (#2696) 2024-05-30 12:00:14 +00:00
Piyush Gupta
9d33aa034a feat: Filter Responses by hidden field values (#2662) 2024-05-30 11:00:09 +00:00
Dhruwang Jariwala
a91c9db4e0 chore: optimized survey card animation (#2707) 2024-05-30 08:43:34 +00:00
Dhruwang Jariwala
291f628415 feat: Added recall highlighting to summary header (#2672)
Co-authored-by: Matthias Nannt <mail@matthiasnannt.com>
2024-05-29 12:51:42 +00:00
Piyush Gupta
d53ceaaaac docs: adds skipPrefilled docs (#2705) 2024-05-29 12:47:15 +00:00
Piyush Gupta
aa981fd891 chore: Increase maxDuration for cron functions to 180 seconds (#2706) 2024-05-29 12:44:07 +00:00
kiran alex ch
b50bda8488 feat: Rework the loading.tsx on PRODUCT pages (#2666)
Co-authored-by: Matti Nannt <mail@matthiasnannt.com>
2024-05-28 19:27:18 +00:00
Anshuman Pandey
0d36e11bf4 fix: tootip position single response card (#2702) 2024-05-28 18:18:36 +00:00
Matti Nannt
102cdb4589 chore: update to next 15 rc (#2690) 2024-05-28 13:23:38 +00:00
Dhruwang Jariwala
5b78487b94 feat: recall from hidden fields and attributes (#2601)
Co-authored-by: Johannes <72809645+jobenjada@users.noreply.github.com>
Co-authored-by: Johannes <johannes@formbricks.com>
Co-authored-by: pandeymangg <anshuman.pandey9999@gmail.com>
Co-authored-by: Matthias Nannt <mail@matthiasnannt.com>
2024-05-27 15:28:43 +00:00
Parth Gupta
f917d2171e feat: rework the loading.tsx on Actions page (#2660)
Co-authored-by: Johannes <72809645+jobenjada@users.noreply.github.com>
Co-authored-by: Johannes <johannes@formbricks.com>
2024-05-27 07:27:32 +00:00
Piyush Gupta
295754480e chore: Rename Teams to Organizations (#2656)
Co-authored-by: Matthias Nannt <mail@matthiasnannt.com>
2024-05-27 05:41:21 +00:00
Matti Nannt
db03ce70d2 fix: docker release github action not adding latest tag (#2689) 2024-05-26 08:28:27 +02:00
Johannes
a44198539d docs: update styling, add roles docs (#2686) 2024-05-24 15:30:56 +00:00
Matthias Nannt
7dbac97883 chore: increase formbricks version tag to 2.0.3 2024-05-24 17:26:25 +02:00
Matthias Nannt
df6cf5a1c5 chore: change people page title 2024-05-24 17:01:35 +02:00
Lovish Duggal
ffa774db6a feat: rework-the-loading.tsx-on-people-page (#2668)
Co-authored-by: Johannes <72809645+jobenjada@users.noreply.github.com>
Co-authored-by: Johannes <johannes@formbricks.com>
2024-05-24 13:26:28 +00:00
Anshuman Pandey
6d6a47a5ac fix: adds react hook form to product general settings (#2677) 2024-05-24 13:14:04 +00:00
Dhruwang Jariwala
50e373a98a fix: date picker tweaks (#2685) 2024-05-24 11:57:10 +00:00
Dhruwang Jariwala
b56b2adb54 fix: access token expiration issue in google sheet integration (#2667) 2024-05-24 09:58:42 +00:00
Johannes
af09e315c5 chore: EE license trial info on settings etc. (#2681) 2024-05-24 09:31:02 +00:00
Dhruwang Jariwala
1848e062f1 fix: highlighting for question with cyclic logic (#2669)
Co-authored-by: Johannes <72809645+jobenjada@users.noreply.github.com>
2024-05-24 07:25:46 +00:00
Matti Nannt
c8f2f94361 chore: cache improvements (#2684) 2024-05-23 18:33:54 +02:00
Anshuman Pandey
be52763be4 fix: ee license check (#2661)
Co-authored-by: Matti Nannt <mail@matthiasnannt.com>
2024-05-23 14:55:02 +00:00
Dhruwang Jariwala
5dd5816c34 fix: case insensitive multi langauge check (#2682) 2024-05-23 14:45:40 +00:00
Dhruwang Jariwala
16f5ce40d9 fix: Question -> Note for ty and welcome card labels (#2644)
Co-authored-by: Matti Nannt <mail@matthiasnannt.com>
2024-05-23 14:38:29 +00:00
Anshuman Pandey
223937adcc feat: adds a POST endpoint for response creation in management apis (#2652)
Co-authored-by: Matthias Nannt <mail@matthiasnannt.com>
2024-05-23 14:16:57 +00:00
Piyush Gupta
4544cba858 fix: File Upload currently only supports 10 files (#2642)
Co-authored-by: Matti Nannt <mail@matthiasnannt.com>
2024-05-23 12:09:21 +00:00
Piyush Gupta
1284adf91d feat: Extend Prefilling with an option to auto-skip prefilled values (#2598)
Co-authored-by: pandeymangg <anshuman.pandey9999@gmail.com>
Co-authored-by: Matthias Nannt <mail@matthiasnannt.com>
2024-05-23 11:35:42 +00:00
Piyush Gupta
4b13d19ed9 feat: adds pagination(skip and limit) support in management > response API (#2631)
Co-authored-by: Johannes <72809645+jobenjada@users.noreply.github.com>
2024-05-23 10:48:16 +00:00
Dhruwang Jariwala
12a606a443 fix: modified google sheet integration and minor refactors in other integrations (#2572) 2024-05-23 10:25:48 +00:00
Dhruwang Jariwala
052f86b19f fix: recall issues (#2680) 2024-05-23 06:54:54 +00:00
Matti Nannt
27b37a5f27 fix: convert number attributes to strings automatically (#2679) 2024-05-22 17:48:02 +02:00
Dhruwang Jariwala
c37d3ae0f9 fix: ui issues (#2665) 2024-05-22 14:03:17 +00:00
Matti Nannt
e69bb3501d docs: update advanced docker update steps (#2678) 2024-05-22 15:22:30 +02:00
Matti Nannt
eda9c00548 fix: migration instructions to 2.0 (#2676) 2024-05-22 14:35:11 +02:00
Jonas Höbenreich
6a7e0d3ecb fix: set "desktop" as default device type (#2675) 2024-05-22 12:11:25 +00:00
Anshuman Pandey
48859facf4 fix: formbricks init error (#2633)
Co-authored-by: Matthias Nannt <mail@matthiasnannt.com>
2024-05-22 12:07:17 +00:00
Matti Nannt
732b8b599f fix: docker file shouldn't check npm registry on runtime (#2663) 2024-05-21 13:39:51 +02:00
Johannes
00ad4c3895 fix: fix links to integrations on docs (#2664) 2024-05-21 11:57:24 +02:00
Dhruwang Jariwala
4858bdd838 fix: rating question and updated attribute labels on person page (#2657)
Co-authored-by: Johannes <72809645+jobenjada@users.noreply.github.com>
2024-05-20 15:02:28 +00:00
Shubham Palriwala
eee78a79d9 fix: navbar on mobile docs for grouped features (#2658)
Co-authored-by: Johannes <72809645+jobenjada@users.noreply.github.com>
2024-05-20 14:57:18 +00:00
Johannes
aa890affc9 fix: update links for integrations (#2659) 2024-05-20 16:45:41 +02:00
Anshuman Pandey
10aed2d9d8 fix: UI fixes (#2653)
Co-authored-by: Johannes <johannes@formbricks.com>
2024-05-20 09:11:18 +00:00
Matthias Nannt
4d78b904b8 chore: update formbricks version number 2024-05-17 15:25:00 +02:00
Matti Nannt
473cc7334b chore: upgrade npm dependencies (#2645) 2024-05-17 15:14:45 +02:00
Dhruwang Jariwala
afdcac2465 fix: Shuffled choices issue (#2639) 2024-05-17 09:18:32 +00:00
Piyush Gupta
e539ac82f3 fix: Multiple File Uploads in a row put all the files at the beginning (#2637) 2024-05-17 07:43:18 +00:00
Piyush Gupta
c2fbb20787 fix: survey overview is throwing a server-side error (#2638) 2024-05-17 07:02:40 +00:00
Dhruwang Jariwala
084307bdb2 fix: input color issue on rating questio (#2641) 2024-05-17 06:50:54 +00:00
Shubham Palriwala
fd78cec5ac fix: define postgres super user password for v2 runs (#2623) 2024-05-17 06:37:22 +00:00
Anshuman Pandey
0b87d35877 fix: data migration for styling fixes (#2640) 2024-05-16 18:03:21 +00:00
Anshuman Pandey
9849a96f32 fix: handles error in json input parsing in the management endpoints (#2634) 2024-05-16 15:36:46 +00:00
Anshuman Pandey
b5287f7f01 fix: modal z-index (#2626) 2024-05-15 09:48:07 +00:00
Piyush Gupta
11888f3e38 chore: Replace default exports/imports with module exports (#2617) 2024-05-14 14:17:49 +00:00
Anshuman Pandey
d2b27b046b fix: removes @headless-ui/react and moves modal to radix (#2608)
Co-authored-by: Matti Nannt <mail@matthiasnannt.com>
2024-05-14 13:08:46 +00:00
Johannes
8f4f26c143 chore: add upgrade hint in docs (#2616) 2024-05-14 13:07:57 +00:00
Anshuman Pandey
514d0a9e5a fix: limit the number of attribute classes per environment (#2613)
Co-authored-by: Matthias Nannt <mail@matthiasnannt.com>
2024-05-14 11:57:36 +00:00
Anshuman Pandey
bc99f15094 feat: replaces dnd with dnd-kit (#2564)
Co-authored-by: Johannes <72809645+jobenjada@users.noreply.github.com>
Co-authored-by: Matti Nannt <mail@matthiasnannt.com>
2024-05-14 11:50:53 +00:00
Matti Nannt
ba0b68cbfb fix: update setup instructions in onboarding for formbricks 2.0 (#2615) 2024-05-14 12:55:29 +02:00
Anshuman Pandey
fb33005051 fix: disable formbricks error state in debug mode (#2580)
Co-authored-by: Matti Nannt <mail@matthiasnannt.com>
2024-05-14 08:30:18 +00:00
Anshuman Pandey
5da9091aee fix: multi and single select questions (#2606) 2024-05-14 08:26:26 +00:00
Piyush Gupta
a91a5e7014 docs: adds docs changes due to actions refactoring and inlineTriggers removal (#2593) 2024-05-13 14:56:23 +00:00
Dhruwang Jariwala
87a623a796 fix: zindex issue on respone page (#2611) 2024-05-13 14:42:02 +00:00
Johannes
ed75089ee0 fix: remove white label info from docs (#2610) 2024-05-13 10:21:03 +00:00
Dhruwang Jariwala
a04e031f9e fix: blank preview issue (#2605)
Co-authored-by: Johannes <72809645+jobenjada@users.noreply.github.com>
2024-05-10 13:58:28 +00:00
Dhruwang Jariwala
3c91dd52a0 fix: other option not working in multiSelect multi question (#2607) 2024-05-10 13:54:23 +00:00
Johannes
c282f630c4 fix: docs hover color dark mode (#2604) 2024-05-10 13:53:29 +00:00
Piyush Gupta
49bf9ec8a9 fix: adds search filter for value selection in logic editor (#2584)
Co-authored-by: Johannes <johannes@formbricks.com>
2024-05-10 13:10:11 +00:00
Anshuman Pandey
2b74054f4b fix: svg and links (#2603) 2024-05-10 08:57:33 +00:00
Matthias Nannt
64793132c7 fix: docker release cosign error 2024-05-09 18:59:57 +02:00
Johannes
ed946da338 remove FAQ to fix build error 2024-05-09 18:45:42 +02:00
Jatin
95f8c2b49f feat: added hardownload icon (#2574)
Co-authored-by: Johannes <72809645+jobenjada@users.noreply.github.com>
Co-authored-by: Johannes <johannes@formbricks.com>
2024-05-09 16:23:31 +00:00
Johannes
5fb97008f3 fix: Fix broken links in docs (#2599) 2024-05-09 16:04:50 +00:00
Dhruwang Jariwala
555f5c3ea0 fix: added timeout before response submission for rating and NPS question (#2594)
Co-authored-by: Johannes <72809645+jobenjada@users.noreply.github.com>
2024-05-09 15:46:10 +00:00
Johannes
50407498ec feat: Formbricks App Redesign (#2581)
Co-authored-by: Matthias Nannt <mail@matthiasnannt.com>
Co-authored-by: pandeymangg <anshuman.pandey9999@gmail.com>
2024-05-09 15:30:44 +00:00
Frank Mendez
556ee870b1 fix: incorrect format note in multiple best practices page (#2595) 2024-05-09 14:55:00 +00:00
Matti Nannt
0cad316fca chore: update npm dependencies (#2591) 2024-05-09 12:02:35 +02:00
Dhruwang Jariwala
d98df5ed3b fix: close survey button on centerd app survey (#2587) 2024-05-08 13:06:32 +00:00
Matti Nannt
e718217ec4 chore: add v2.0 data migration (#2589) 2024-05-07 19:45:56 +02:00
Dhruwang Jariwala
d4dea7c2cc fix: logo alignment in email (#2566) 2024-05-07 13:49:14 +00:00
Piyush Gupta
6bfd02794d feat: Refactor Triggers and combine Action Classes and Inline Triggers (#2562)
Co-authored-by: Matthias Nannt <mail@matthiasnannt.com>
Co-authored-by: pandeymangg <anshuman.pandey9999@gmail.com>
Co-authored-by: Johannes <johannes@formbricks.com>
2024-05-07 13:47:41 +00:00
Piyush Gupta
b016d80cb2 feat: adds enterprise license check (#2431)
Co-authored-by: pandeymangg <anshuman.pandey9999@gmail.com>
Co-authored-by: Anshuman Pandey <54475686+pandeymangg@users.noreply.github.com>
Co-authored-by: Matti Nannt <mail@matthiasnannt.com>
2024-05-07 13:36:20 +00:00
Piyush Gupta
f529f5eda3 fix: Adds Thank You card loading (#2585)
Co-authored-by: Matti Nannt <mail@matthiasnannt.com>
2024-05-07 13:15:59 +00:00
Dhruwang Jariwala
3a1683eebd feat: Slick card look (#2531)
Co-authored-by: Johannes <72809645+jobenjada@users.noreply.github.com>
Co-authored-by: Johannes <johannes@formbricks.com>
Co-authored-by: Matti Nannt <mail@matthiasnannt.com>
2024-05-07 12:42:48 +00:00
Shubham Palriwala
2ca38b1918 feat: revamp docker compose with new env vars & formatting (#2583)
Co-authored-by: Matthias Nannt <mail@matthiasnannt.com>
2024-05-07 12:34:35 +00:00
Dhruwang Jariwala
82504e54b1 fix: recall not working on thank you card (#2586) 2024-05-07 12:20:39 +00:00
Matthias Nannt
61d8970420 release formbricks-js 2.0 stable 2024-05-07 12:54:42 +02:00
1327 changed files with 25204 additions and 20733 deletions

View File

@@ -88,7 +88,7 @@ PASSWORD_RESET_DISABLED=1
# Email login. Disable the ability for users to login with email. # Email login. Disable the ability for users to login with email.
# EMAIL_AUTH_DISABLED=1 # EMAIL_AUTH_DISABLED=1
# Team Invite. Disable the ability for invited users to create an account. # Organization Invite. Disable the ability for invited users to create an account.
# INVITE_DISABLED=1 # INVITE_DISABLED=1
########## ##########
@@ -154,11 +154,11 @@ SLACK_CLIENT_SECRET=
# Enterprise License Key # Enterprise License Key
ENTERPRISE_LICENSE_KEY= ENTERPRISE_LICENSE_KEY=
# Automatically assign new users to a specific team and role within that team # Automatically assign new users to a specific organization and role within that organization
# Insert an existing team id or generate a valid CUID for a new one at https://www.getuniqueid.com/cuid (e.g. cjld2cjxh0000qzrmn831i7rn) # Insert an existing organization id or generate a valid CUID for a new one at https://www.getuniqueid.com/cuid (e.g. cjld2cjxh0000qzrmn831i7rn)
# (Role Management is an Enterprise feature) # (Role Management is an Enterprise feature)
# DEFAULT_TEAM_ID= # DEFAULT_ORGANIZATION_ID=
# DEFAULT_TEAM_ROLE=admin # DEFAULT_ORGANIZATION_ROLE=admin
# set to 1 to skip onboarding for new users # set to 1 to skip onboarding for new users
# ONBOARDING_DISABLED=1 # ONBOARDING_DISABLED=1

View File

@@ -16,9 +16,6 @@ runs:
- uses: ./.github/actions/dangerous-git-checkout - uses: ./.github/actions/dangerous-git-checkout
- run: echo "E2E Testing Mode is ${{ inputs.e2e_testing_mode }}"
shell: bash
- name: Cache Build - name: Cache Build
uses: actions/cache@v3 uses: actions/cache@v3
id: cache-build id: cache-build

View File

@@ -1,26 +0,0 @@
name: Build formbricks-com
on:
workflow_call:
jobs:
build:
name: Build Formbricks-com
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- name: Checkout repo
uses: actions/checkout@v3
- name: Setup Node.js 20.x
uses: actions/setup-node@v3
with:
node-version: 20.x
- name: Install pnpm
uses: pnpm/action-setup@v2
- name: Install dependencies
run: pnpm install --config.platform=linux --config.architecture=x64
- name: Build Formbricks-com
run: pnpm build --filter=formbricks-com...

View File

@@ -2,9 +2,6 @@ name: E2E Tests
on: on:
workflow_call: workflow_call:
workflow_dispatch: workflow_dispatch:
push:
branches:
- action-test
jobs: jobs:
build: build:
name: Run E2E Tests name: Run E2E Tests

View File

@@ -56,7 +56,7 @@ jobs:
GOOGLE_SHEETS_REDIRECT_URL: ${{ secrets.GOOGLE_SHEETS_REDIRECT_URL }} GOOGLE_SHEETS_REDIRECT_URL: ${{ secrets.GOOGLE_SHEETS_REDIRECT_URL }}
AIRTABLE_CLIENT_ID: ${{ secrets.AIRTABLE_CLIENT_ID }} AIRTABLE_CLIENT_ID: ${{ secrets.AIRTABLE_CLIENT_ID }}
ENTERPRISE_LICENSE_KEY: ${{ secrets.ENTERPRISE_LICENSE_KEY }} ENTERPRISE_LICENSE_KEY: ${{ secrets.ENTERPRISE_LICENSE_KEY }}
DEFAULT_TEAM_ID: ${{ vars.DEFAULT_TEAM_ID }} DEFAULT_ORGANIZATION_ID: ${{ vars.DEFAULT_ORGANIZATION_ID }}
ONBOARDING_DISABLED: ${{ vars.ONBOARDING_DISABLED }} ONBOARDING_DISABLED: ${{ vars.ONBOARDING_DISABLED }}
CUSTOMER_IO_API_KEY: ${{ secrets.CUSTOMER_IO_API_KEY }} CUSTOMER_IO_API_KEY: ${{ secrets.CUSTOMER_IO_API_KEY }}
CUSTOMER_IO_SITE_ID: ${{ secrets.CUSTOMER_IO_SITE_ID }} CUSTOMER_IO_SITE_ID: ${{ secrets.CUSTOMER_IO_SITE_ID }}

View File

@@ -53,7 +53,7 @@ jobs:
GOOGLE_SHEETS_REDIRECT_URL: ${{ secrets.GOOGLE_SHEETS_REDIRECT_URL }} GOOGLE_SHEETS_REDIRECT_URL: ${{ secrets.GOOGLE_SHEETS_REDIRECT_URL }}
AIRTABLE_CLIENT_ID: ${{ secrets.AIRTABLE_CLIENT_ID }} AIRTABLE_CLIENT_ID: ${{ secrets.AIRTABLE_CLIENT_ID }}
ENTERPRISE_LICENSE_KEY: ${{ secrets.ENTERPRISE_LICENSE_KEY }} ENTERPRISE_LICENSE_KEY: ${{ secrets.ENTERPRISE_LICENSE_KEY }}
DEFAULT_TEAM_ID: ${{ vars.DEFAULT_TEAM_ID }} DEFAULT_ORGANIZATION_ID: ${{ vars.DEFAULT_ORGANIZATION_ID }}
ONBOARDING_DISABLED: ${{ vars.ONBOARDING_DISABLED }} ONBOARDING_DISABLED: ${{ vars.ONBOARDING_DISABLED }}
CUSTOMER_IO_API_KEY: ${{ secrets.CUSTOMER_IO_API_KEY }} CUSTOMER_IO_API_KEY: ${{ secrets.CUSTOMER_IO_API_KEY }}
CUSTOMER_IO_SITE_ID: ${{ secrets.CUSTOMER_IO_SITE_ID }} CUSTOMER_IO_SITE_ID: ${{ secrets.CUSTOMER_IO_SITE_ID }}

View File

@@ -33,9 +33,7 @@ jobs:
- name: Install cosign - name: Install cosign
if: github.event_name != 'pull_request' if: github.event_name != 'pull_request'
uses: sigstore/cosign-installer@6e04d228eb30da1757ee4e1dd75a0ec73a653e06 #v3.1.1 uses: sigstore/cosign-installer@v3.5.0
with:
cosign-release: "v2.1.1"
- name: Log in to GitHub Container Registry - name: Log in to GitHub Container Registry
uses: docker/login-action@v3 uses: docker/login-action@v3

View File

@@ -1,4 +1,4 @@
name: Docker name: Docker Release to Github
# This workflow uses actions that are not certified by GitHub. # This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by # They are provided by a third-party and are governed by
@@ -41,9 +41,7 @@ jobs:
# https://github.com/sigstore/cosign-installer # https://github.com/sigstore/cosign-installer
- name: Install cosign - name: Install cosign
if: github.event_name != 'pull_request' if: github.event_name != 'pull_request'
uses: sigstore/cosign-installer@6e04d228eb30da1757ee4e1dd75a0ec73a653e06 #v3.1.1 uses: sigstore/cosign-installer@v3.5.0
with:
cosign-release: "v2.1.1"
# Login against a Docker registry except on PR # Login against a Docker registry except on PR
# https://github.com/docker/login-action # https://github.com/docker/login-action

View File

@@ -82,7 +82,7 @@ Formbricks is both a free and open source survey platform - and a privacy-first
- 🔗 Create shareable **link surveys**. - 🔗 Create shareable **link surveys**.
- 👨‍👩‍👦 Invite your team members to **collaborate** on your surveys. - 👨‍👩‍👦 Invite your organization members to **collaborate** on your surveys.
- 🔌 Integrate Formbricks with **Slack, Notion, Zapier, n8n and more**. - 🔌 Integrate Formbricks with **Slack, Notion, Zapier, n8n and more**.
@@ -224,7 +224,7 @@ Additional to the AGPL licensed Formbricks core, this repository contains code l
### White-Labeling Formbricks and Other Licensing Needs ### White-Labeling Formbricks and Other Licensing Needs
If you have other licensing requirements such as White-Labeling please [send us an email](mailto:hola@formbricks.com). We currently do not offer Formbricks white-labeled. Any other needs? [Send us an email](mailto:hola@formbricks.com).
### Why charge for Enterprise Features? ### Why charge for Enterprise Features?

View File

@@ -1,6 +1,6 @@
import Sidebar from "./Sidebar"; import { Sidebar } from "./Sidebar";
export default function LayoutApp({ children }: { children: React.ReactNode }) { export const LayoutApp = ({ children }: { children: React.ReactNode }) => {
return ( return (
<div className="min-h-full"> <div className="min-h-full">
{/* Static sidebar for desktop */} {/* Static sidebar for desktop */}
@@ -10,4 +10,4 @@ export default function LayoutApp({ children }: { children: React.ReactNode }) {
<div className="flex flex-1 flex-col lg:pl-64">{children}</div> <div className="flex flex-1 flex-col lg:pl-64">{children}</div>
</div> </div>
); );
} };

View File

@@ -26,7 +26,7 @@ const secondaryNavigation = [
{ name: "Privacy", href: "#", icon: ShieldCheckIcon }, { name: "Privacy", href: "#", icon: ShieldCheckIcon },
]; ];
export default function Sidebar({}) { export const Sidebar = () => {
return ( return (
<div className="flex flex-grow flex-col overflow-y-auto bg-cyan-700 pb-4 pt-5"> <div className="flex flex-grow flex-col overflow-y-auto bg-cyan-700 pb-4 pt-5">
<nav <nav
@@ -63,4 +63,4 @@ export default function Sidebar({}) {
</nav> </nav>
</div> </div>
); );
} };

View File

@@ -1,5 +1,3 @@
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@formbricks/ui/Select";
interface SurveySwitchProps { interface SurveySwitchProps {
value: "website" | "app"; value: "website" | "app";
formbricks: any; formbricks: any;
@@ -7,19 +5,18 @@ interface SurveySwitchProps {
export const SurveySwitch = ({ value, formbricks }: SurveySwitchProps) => { export const SurveySwitch = ({ value, formbricks }: SurveySwitchProps) => {
return ( return (
<Select <select
value={value} value={value}
onValueChange={(v) => { onChange={(v) => {
formbricks.logout(); formbricks.logout();
window.location.href = `/${v}`; window.location.href = `/${v.target.value}`;
}}> }}>
<SelectTrigger className="w-[180px]"> <option value="website" className="h-10 px-4 hover:bg-slate-100">
<SelectValue placeholder="Theme" /> Website Surveys
</SelectTrigger> </option>
<SelectContent> <option value="app" className="hover:bg-slate-10 h-10 px-4">
<SelectItem value="website">Website Surveys</SelectItem> App Surveys
<SelectItem value="app">App Surveys</SelectItem> </option>
</SelectContent> </select>
</Select>
); );
}; };

View File

@@ -1,3 +1,3 @@
export function classNames(...classes: any) { export const classNames = (...classes: any) => {
return classes.filter(Boolean).join(" "); return classes.filter(Boolean).join(" ");
} };

View File

@@ -1,7 +1,6 @@
/** @type {import('next').NextConfig} */ /** @type {import('next').NextConfig} */
const nextConfig = { const nextConfig = {
reactStrictMode: true, reactStrictMode: true,
transpilePackages: ["@formbricks/ui"],
async redirects() { async redirects() {
return [ return [
{ {
@@ -25,4 +24,4 @@ const nextConfig = {
}, },
}; };
module.exports = nextConfig; export default nextConfig;

View File

@@ -13,10 +13,10 @@
"dependencies": { "dependencies": {
"@formbricks/js": "workspace:*", "@formbricks/js": "workspace:*",
"@formbricks/ui": "workspace:*", "@formbricks/ui": "workspace:*",
"lucide-react": "^0.373.0", "lucide-react": "^0.379.0",
"next": "14.2.3", "next": "14.2.3",
"react": "18.2.0", "react": "18.3.1",
"react-dom": "18.2.0" "react-dom": "18.3.1"
}, },
"devDependencies": { "devDependencies": {
"eslint-config-formbricks": "workspace:*", "eslint-config-formbricks": "workspace:*",

View File

@@ -3,7 +3,7 @@ import Head from "next/head";
import "../styles/globals.css"; import "../styles/globals.css";
export default function App({ Component, pageProps }: AppProps) { const App = ({ Component, pageProps }: AppProps) => {
return ( return (
<> <>
<Head> <Head>
@@ -18,4 +18,6 @@ export default function App({ Component, pageProps }: AppProps) {
<Component {...pageProps} /> <Component {...pageProps} />
</> </>
); );
} };
export default App;

View File

@@ -1,6 +1,6 @@
import { Head, Html, Main, NextScript } from "next/document"; import { Head, Html, Main, NextScript } from "next/document";
export default function Document() { const Document = () => {
return ( return (
<Html lang="en" className="h-full bg-slate-50"> <Html lang="en" className="h-full bg-slate-50">
<Head /> <Head />
@@ -10,4 +10,6 @@ export default function Document() {
</body> </body>
</Html> </Html>
); );
} };
export default Document;

View File

@@ -9,7 +9,7 @@ import fbsetup from "../../public/fb-setup.png";
declare const window: any; declare const window: any;
export default function AppPage({}) { const AppPage = ({}) => {
const [darkMode, setDarkMode] = useState(false); const [darkMode, setDarkMode] = useState(false);
const router = useRouter(); const router = useRouter();
@@ -36,7 +36,11 @@ export default function AppPage({}) {
if (process.env.NEXT_PUBLIC_FORMBRICKS_ENVIRONMENT_ID && process.env.NEXT_PUBLIC_FORMBRICKS_API_HOST) { if (process.env.NEXT_PUBLIC_FORMBRICKS_ENVIRONMENT_ID && process.env.NEXT_PUBLIC_FORMBRICKS_API_HOST) {
const userId = "THIS-IS-A-VERY-LONG-USER-ID-FOR-TESTING"; const userId = "THIS-IS-A-VERY-LONG-USER-ID-FOR-TESTING";
const userInitAttributes = { language: "de", "Init Attribute 1": "eight", "Init Attribute 2": "two" }; const userInitAttributes = {
language: "de",
"Init Attribute 1": "eight",
"Init Attribute 2": "two",
};
formbricks.init({ formbricks.init({
environmentId: process.env.NEXT_PUBLIC_FORMBRICKS_ENVIRONMENT_ID, environmentId: process.env.NEXT_PUBLIC_FORMBRICKS_ENVIRONMENT_ID,
@@ -115,7 +119,7 @@ export default function AppPage({}) {
</div> </div>
<div className="md:grid md:grid-cols-3"> <div className="md:grid md:grid-cols-3">
<div className="col-span-3 rounded-lg border border-slate-300 bg-slate-100 p-6 dark:border-slate-600 dark:bg-slate-800"> <div className="col-span-3 self-start rounded-lg border border-slate-300 bg-slate-100 p-6 dark:border-slate-600 dark:bg-slate-800">
<h3 className="text-lg font-semibold dark:text-white"> <h3 className="text-lg font-semibold dark:text-white">
Reset person / pull data from Formbricks app Reset person / pull data from Formbricks app
</h3> </h3>
@@ -136,26 +140,6 @@ export default function AppPage({}) {
</p> </p>
</div> </div>
<div className="p-6">
<div>
<button
className="mb-4 rounded-lg bg-slate-800 px-6 py-3 text-white hover:bg-slate-700 dark:bg-slate-700 dark:hover:bg-slate-600"
onClick={() => {
formbricks.track("Code Action");
}}>
Code Action
</button>
</div>
<div>
<p className="text-xs text-slate-700 dark:text-slate-300">
This button sends a{" "}
<a href="https://formbricks.com/docs/actions/code" className="underline" target="_blank">
Code Action
</a>{" "}
to the Formbricks API called &apos;Code Action&apos;. You will find it in the Actions Tab.
</p>
</div>
</div>
<div className="p-6"> <div className="p-6">
<div> <div>
<button className="mb-4 rounded-lg bg-slate-800 px-6 py-3 text-white hover:bg-slate-700 dark:bg-slate-700 dark:hover:bg-slate-600"> <button className="mb-4 rounded-lg bg-slate-800 px-6 py-3 text-white hover:bg-slate-700 dark:bg-slate-700 dark:hover:bg-slate-600">
@@ -254,4 +238,6 @@ export default function AppPage({}) {
</div> </div>
</div> </div>
); );
} };
export default AppPage;

View File

@@ -9,7 +9,7 @@ import fbsetup from "../../public/fb-setup.png";
declare const window: any; declare const window: any;
export default function AppPage({}) { const AppPage = ({}) => {
const [darkMode, setDarkMode] = useState(false); const [darkMode, setDarkMode] = useState(false);
const router = useRouter(); const router = useRouter();
@@ -115,7 +115,7 @@ export default function AppPage({}) {
</div> </div>
<div className="md:grid md:grid-cols-3"> <div className="md:grid md:grid-cols-3">
<div className="col-span-3 rounded-lg border border-slate-300 bg-slate-100 p-6 dark:border-slate-600 dark:bg-slate-800"> <div className="col-span-3 self-start rounded-lg border border-slate-300 bg-slate-100 p-6 dark:border-slate-600 dark:bg-slate-800">
<h3 className="text-lg font-semibold dark:text-white"> <h3 className="text-lg font-semibold dark:text-white">
Reset person / pull data from Formbricks app Reset person / pull data from Formbricks app
</h3> </h3>
@@ -135,62 +135,10 @@ export default function AppPage({}) {
try again. try again.
</p> </p>
</div> </div>
<div className="pt-6">
<div>
<button
className="mb-4 rounded-lg bg-slate-800 px-6 py-3 text-white hover:bg-slate-700 dark:bg-slate-700 dark:hover:bg-slate-600"
onClick={() => {
formbricks.track("New Session");
}}>
Track New Session
</button>
</div>
<div>
<p className="text-xs text-slate-700 dark:text-slate-300">
This button sends an Action to the Formbricks API called &apos;New Session&apos;. You will
find it in the Actions Tab.
</p>
</div>
</div>
<div className="pt-6">
<div>
<button
className="mb-4 rounded-lg bg-slate-800 px-6 py-3 text-white hover:bg-slate-700 dark:bg-slate-700 dark:hover:bg-slate-600"
onClick={() => {
formbricks.track("Exit Intent");
}}>
Track Exit Intent
</button>
</div>
<div>
<p className="text-xs text-slate-700 dark:text-slate-300">
This button sends an Action to the Formbricks API called &apos;Exit Intent&apos;. You can also
move your mouse to the top of the browser to trigger the exit intent.
</p>
</div>
</div>
<div className="pt-6">
<div>
<button
className="mb-4 rounded-lg bg-slate-800 px-6 py-3 text-white hover:bg-slate-700 dark:bg-slate-700 dark:hover:bg-slate-600"
onClick={() => {
formbricks.track("50% Scroll");
}}>
Track 50% Scroll
</button>
</div>
<div>
<p className="text-xs text-slate-700 dark:text-slate-300">
This button sends an Action to the Formbricks API called &apos;50% Scroll&apos;. You can also
scroll down to trigger the 50% scroll.
</p>
</div>
</div>
</div> </div>
</div> </div>
</div> </div>
); );
} };
export default AppPage;

View File

@@ -35,3 +35,4 @@ yarn-error.log*
next-env.d.ts next-env.d.ts
public/sitemap*.xml public/sitemap*.xml
public/robots.txt

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

View File

@@ -1,12 +1,12 @@
import { MdxImage } from "@/components/MdxImage"; import { MdxImage } from "@/components/MdxImage";
import I1 from "./images/I1.png"; import I1 from "./images/I1.webp";
import I2 from "./images/I2.png"; import I2 from "./images/I2.webp";
export const metadata = { export const metadata = {
title: "Using Actions in Formbricks | Fine-tuning User Moments", title: "Using Actions in Formbricks | Fine-tuning User Moments",
description: description:
"Dive deep into how actions in Formbricks help products and teams to engage users at precise moments in their journey. Discover the power of actions, from coding to no-code setups, to refine user targeting and generate richer, more detailed user insights.", "Dive deep into how actions in Formbricks help products and organizations to engage users at precise moments in their journey. Discover the power of actions, from coding to no-code setups, to refine user targeting and generate richer, more detailed user insights.",
}; };
#### App Surveys #### App Surveys
@@ -22,7 +22,7 @@ Understanding user thoughts and feelings at critical moments in their journey is
## **How Do Actions Work?** ## **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 of that survey, while also recording the event. This capability ensures that surveys are not only triggered at the right time but are also tailored to the users recent interactions within the app. You can set up these actions either programmatically in your code or through a user-friendly No-Code interface within the Formbricks dashboard. 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 of that survey, while also recording the event. This capability ensures that surveys are not only triggered at the right time but are also tailored to the users recent interactions within the app. You can set up these actions through a user-friendly No-Code interface within the Formbricks dashboard.
## **Why Are Actions Useful?** ## **Why Are Actions Useful?**
@@ -33,13 +33,6 @@ Actions are invaluable for enhancing survey relevance and effectiveness:
- **User Segments**: Analyze action data to create detailed user segments, targeting specific groups with surveys that are pertinent to their behaviors or interactions within the app. - **User Segments**: Analyze action data to create detailed user segments, targeting specific groups with surveys that are pertinent to their behaviors or interactions within the app.
- **User Targeting**: Precise targeting based on user actions and attributes ensures that surveys are shown only to users who meet certain criteria, enhancing the relevance and effectiveness of each survey. - **User Targeting**: Precise targeting based on user actions and attributes ensures that surveys are shown only to users who meet certain criteria, enhancing the relevance and effectiveness of each survey.
<Note>
You now have the option to create survey-specific action classes directly within the survey editor. These
actions are exclusive to the individual survey and won't appear in the global action list, helping to keep
it uncluttered. For actions that are needed across multiple surveys, we recommend creating them from the
Actions tab.
</Note>
## **Setting Up No-Code Actions** ## **Setting Up No-Code Actions**
Formbricks offers an intuitive No-Code interface that allows you to configure actions without needing to write any code. Formbricks offers an intuitive No-Code interface that allows you to configure actions without needing to write any code.

View File

@@ -1,4 +1,5 @@
import { MdxImage } from "@/components/MdxImage"; import { MdxImage } from "@/components/MdxImage";
import { ResponsiveVideo } from "@/components/ResponsiveVideo";
import GermansGpt from "./germans-gpt.webp"; import GermansGpt from "./germans-gpt.webp";
import Hni from "./hni.webp"; import Hni from "./hni.webp";
@@ -18,13 +19,9 @@ export const metadata = {
Advanced Targeting allows you to show surveys to the right group of people. You can target surveys based on user attributes, user events, 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. Advanced Targeting allows you to show surveys to the right group of people. You can target surveys based on user attributes, user events, 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.
<iframe <ResponsiveVideo title="Formbricks Multi-language Surveys"
width="700" src="https://www.youtube-nocookie.com/embed/0BQp6N4cXzU?si=KeBM7G7Ch1xtrsOm&amp;controls=0" />
height="450"
src="https://www.youtube.com/embed/0BQp6N4cXzU?si=gyeEZRXZ6Kei1zzm"
title="YouTube video player: Formbricks"
frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"></iframe>
## How to setup Advanced Targeting ## How to setup Advanced Targeting

View File

@@ -33,7 +33,7 @@ const libraries = [
}, },
]; ];
export function Libraries() { export const Libraries = () => {
return ( return (
<div className="my-16 xl:max-w-none"> <div className="my-16 xl:max-w-none">
<div className="not-prose mt-4 grid grid-cols-1 gap-x-6 gap-y-10 border-slate-900/5 sm:grid-cols-2 xl:max-w-none xl:grid-cols-3 dark:border-white/5"> <div className="not-prose mt-4 grid grid-cols-1 gap-x-6 gap-y-10 border-slate-900/5 sm:grid-cols-2 xl:max-w-none xl:grid-cols-3 dark:border-white/5">
@@ -57,4 +57,4 @@ export function Libraries() {
</div> </div>
</div> </div>
); );
} };

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

@@ -2,7 +2,6 @@ import { MdxImage } from "@/components/MdxImage";
import { Libraries } from "./components/Libraries"; import { Libraries } from "./components/Libraries";
import SetupChecklist from "./images/env-id.png";
import ReactApp from "./images/react-in-app-survey-app-popup-form.webp"; import ReactApp from "./images/react-in-app-survey-app-popup-form.webp";
import WidgetConnected from "./images/widget-connected.webp"; import WidgetConnected from "./images/widget-connected.webp";
import WidgetNotConnected from "./images/widget-not-connected.webp"; import WidgetNotConnected from "./images/widget-not-connected.webp";
@@ -27,14 +26,7 @@ for something else, please [join our Discord!](https://formbricks.com/discord) a
Before getting started, make sure you have: Before getting started, make sure you have:
1. A web application (behind your user authentication system) in your desired framework is set up and running. 1. A web application (behind your user authentication system) in your desired framework is set up and running.
2. A Formbricks account with access to your environment ID and API host. You can find these in the **Setup Checklist** in the Settings: 2. A Formbricks account with access to your environment ID and API host. You can find these in the **Setup Checklist** in the Settings.
<MdxImage
src={SetupChecklist}
alt="Step 2 - Setup Checklist"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
--- ---

Binary file not shown.

Before

Width:  |  Height:  |  Size: 207 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 208 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 130 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

View File

@@ -1,14 +1,13 @@
import { MdxImage } from "@/components/MdxImage"; import { MdxImage } from "@/components/MdxImage";
import I1 from "./images/I1.png"; import I1 from "./images/I1.webp";
import I2 from "./images/I2.png"; import I2 from "./images/I2.webp";
import I3 from "./images/I3.png"; import I3 from "./images/I3.webp";
import I4 from "./images/I4.png"; import I4 from "./images/I4.webp";
import I5 from "./images/I5.png"; import I5 from "./images/I5.webp";
import I6 from "./images/I6.png"; import I6 from "./images/I6.webp";
import I7 from "./images/I7.png"; import I7 from "./images/I7.webp";
import I8 from "./images/I8.png"; import I8 from "./images/I8.webp";
export const metadata = { export const metadata = {
title: "Formbricks Quickstart Guide: App Surveys Made Easier & Faster", title: "Formbricks Quickstart Guide: App Surveys Made Easier & Faster",
@@ -17,18 +16,21 @@ export const metadata = {
}; };
#### App Surveys #### App Surveys
# Quickstart # Quickstart
App surveys have 6-10x better conversion rates than emailed out surveys. This tutorial explains how to run an app survey in your web app in 10 to 15 minutes. Lets go! App surveys have 6-10x better conversion rates than emailed out surveys. This tutorial explains how to run an app survey in your web app in 10 to 15 minutes. Lets go!
<Note> <Note>
App Surveys are ideal for websites that **have a user authentication** system. If you are looking to run surveys on your public facing website, head over to the [Website Surveys Quickstart Guide](/website-surveys/quickstart). App Surveys are ideal for websites that **have a user authentication** system. If you are looking to run
surveys on your public facing website, head over to the [Website Surveys Quickstart
Guide](/website-surveys/quickstart).
</Note> </Note>
1. **Create a free Formbricks Cloud account**: While you can [self-host](/self-hosting/deployment) Formbricks, but 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 you'll be guided to our onboarding like below: 1. **Create a free Formbricks Cloud account**: While you can [self-host](/self-hosting/deployment) Formbricks, but 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 you'll be guided to our onboarding like below:
<Note> <Note>
Website & App Surveys have the same integration process. The difference will come when we setup our survey. Website & App Surveys have the same integration process. The difference will come when we setup our survey.
</Note> </Note>
<MdxImage <MdxImage
@@ -70,41 +72,41 @@ Onboarding is complete! Now lets create our first survey as you should see te
Pick the Survey Type as **App Survey**. Pick the Survey Type as **App Survey**.
<MdxImage <MdxImage
src={I5} src={I5}
alt="Survey settings for app survey" alt="Survey settings for app survey"
quality="100" quality="100"
className="max-w-full rounded-lg sm:max-w-3xl" className="max-w-full rounded-lg sm:max-w-3xl"
/> />
4. **Set Trigger for the Survey**: Scroll down to Survey Trigger and inside **When**, choose **New Session**. This will cause this survey to appear when the Formbricks Widget tracks a new user session: 4. **Set Trigger for the Survey**: Scroll down to Survey Trigger and click on **+ Add action**, choose **New Session**. This will cause this survey to appear when the Formbricks Widget tracks a new user session:
<MdxImage <MdxImage
src={I6} src={I6}
alt="Survey trigger settings for app survey" alt="Survey trigger settings for app survey"
quality="100" quality="100"
className="max-w-full rounded-lg sm:max-w-3xl" className="max-w-full rounded-lg sm:max-w-3xl"
/> />
5. **Set Recontact Options for debugging**: In Recontact Options we choose the following settings, so that we can play around with the survey more easily. By default, each survey will be shown only once to each user to prevent survey fatigue: 5. **Set Recontact Options for debugging**: In Recontact Options we choose the following settings, so that we can play around with the survey more easily. By default, each survey will be shown only once to each user to prevent survey fatigue:
<Note> <Note>
Please change this setting later on after testing your survey to prevent survey fatigue for your users. Please change this setting later on after testing your survey to prevent survey fatigue for your users.
</Note> </Note>
<MdxImage <MdxImage
src={I7} src={I7}
alt="Recontact options for app survey" alt="Recontact options for app survey"
quality="100" quality="100"
className="max-w-full rounded-lg sm:max-w-3xl" className="max-w-full rounded-lg sm:max-w-3xl"
/> />
6. **Publish your survey**: Now hit **Publish** and youll be forwarded to the Summary Page. This is where youll find the responses to this survey. 6. **Publish your survey**: Now hit **Publish** and youll be forwarded to the Summary Page. This is where youll find the responses to this survey.
<MdxImage <MdxImage
src={I8} src={I8}
alt="Survey published successfully" alt="Survey published successfully"
quality="100" quality="100"
className="max-w-full rounded-lg sm:max-w-3xl" className="max-w-full rounded-lg sm:max-w-3xl"
/> />
--- ---

View File

@@ -80,6 +80,11 @@ formbricks.init({
You can use the setAttribute function to set any custom attribute for the user (e.g. name, plan, etc.): You can use the setAttribute function to set any custom attribute for the user (e.g. name, plan, etc.):
<Note>
Please note that the number of different attribute classes (e.g., "Plan," "First Name," etc.) is currently
limited to 150 attributes per environment.
</Note>
<Col> <Col>
<CodeGroup title="Setting Custom Attributes"> <CodeGroup title="Setting Custom Attributes">
@@ -115,4 +120,4 @@ formbricks.logout();
``` ```
</CodeGroup> </CodeGroup>
</Col> </Col>

View File

@@ -41,8 +41,8 @@ To run the Churn Survey in your app you want to proceed as follows:
4. Prevent that churn! 4. Prevent that churn!
<Note> <Note>
## Formbricks Widget running? We assume that you have already installed the Formbricks Widget in your web ## Formbricks Widget running?
app. Its required to display messages and surveys in your app. If not, please follow the [Quick Start Guide We assume that you have already installed the Formbricks Widget in your web app. Its required to display messages and surveys in your app. If not, please follow the [Quick Start Guide
(takes 15mins max.)](/app-surveys/quickstart) (takes 15mins max.)](/app-surveys/quickstart)
</Note> </Note>
@@ -152,8 +152,7 @@ These settings make sure the survey is always displayed, when a user wants to Ca
<Note> <Note>
## Formbricks Widget running? You need to have the Formbricks Widget installed to display the Churn 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)](/app-surveys/quickstart) in your app. Please follow [this tutorial (Step 4 onwards)](/app-surveys/quickstart) to install the widget.
to install the widget.
</Note> </Note>
### ###

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.8 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 45 KiB

View File

@@ -5,9 +5,9 @@ import ChangeId from "./change-id.webp";
import CopyIds from "./copy-ids.webp"; import CopyIds from "./copy-ids.webp";
import DocsNavi from "./docs-navi.webp"; import DocsNavi from "./docs-navi.webp";
import DocsTemplate from "./docs-template.webp"; import DocsTemplate from "./docs-template.webp";
import SelectNonevent from "./select-nonevent.webp"; import SelectAction from "./select-action.webp";
import SurveyTrigger from "./survey-trigger.webp";
import SwitchToDev from "./switch-to-dev.webp"; import SwitchToDev from "./switch-to-dev.webp";
import WhenToAsk from "./when-to-ask.webp";
export const metadata = { export const metadata = {
title: title:
@@ -73,10 +73,10 @@ To get this running, you'll need a bit of time. Here are the steps we're going t
choices accordingly. They have to be identical to the frontend we're building in the next step. choices accordingly. They have to be identical to the frontend we're building in the next step.
</Note> </Note>
6. Click on “Continue to Settings or select the audience tab manually. Scroll down to “When to ask” and create a new Action: 6. Click on “Continue to Settings or select the audience tab manually. Scroll down to “Survey Trigger” and create a new Action:
<MdxImage <MdxImage
src={WhenToAsk} src={SurveyTrigger}
alt="set up when to ask card" alt="set up when to ask card"
quality="100" quality="100"
className="max-w-full rounded-lg sm:max-w-3xl" className="max-w-full rounded-lg sm:max-w-3xl"
@@ -89,7 +89,7 @@ To get this running, you'll need a bit of time. Here are the steps we're going t
8. Select the Non-Event in the dropdown. Now you see that the “Publish survey” button is active. Publish your survey 🤝 8. Select the Non-Event in the dropdown. Now you see that the “Publish survey” button is active. Publish your survey 🤝
<MdxImage <MdxImage
src={SelectNonevent} src={SelectAction}
alt="select nonevent" alt="select nonevent"
quality="100" quality="100"
className="max-w-full rounded-lg sm:max-w-3xl" className="max-w-full rounded-lg sm:max-w-3xl"
@@ -135,7 +135,7 @@ import { Popover, PopoverContent, PopoverTrigger } from "@formbricks/ui/Popover"
import { handleFeedbackSubmit, updateFeedback } from "../../lib/handleFeedbackSubmit"; import { handleFeedbackSubmit, updateFeedback } from "../../lib/handleFeedbackSubmit";
export default function DocsFeedback() { export const DocsFeedback = () => {
const router = useRouter(); const router = useRouter();
const [isOpen, setIsOpen] = useState(false); const [isOpen, setIsOpen] = useState(false);
const [sharedFeedback, setSharedFeedback] = useState(false); const [sharedFeedback, setSharedFeedback] = useState(false);
@@ -199,7 +199,7 @@ export default function DocsFeedback() {
)} )}
</div> </div>
); );
} };
``` ```
</CodeGroup> </CodeGroup>

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

View File

@@ -1,7 +1,7 @@
import { MdxImage } from "@/components/MdxImage"; import { MdxImage } from "@/components/MdxImage";
import ActionCSS from "./action-css.webp"; import ActionCSS from "./action-css.webp";
import ActionText from "./action-text.webp"; import ActionText from "./action-innertext.webp";
import ChangeText from "./change-text.webp"; import ChangeText from "./change-text.webp";
import CreateSurvey from "./create-survey.webp"; import CreateSurvey from "./create-survey.webp";
import Publish from "./publish.webp"; import Publish from "./publish.webp";
@@ -38,8 +38,8 @@ To run the Feature Chaser survey in your app you want to proceed as follows:
2. Setup a user action to display survey at the right point in time 2. Setup a user action to display survey at the right point in time
<Note> <Note>
## Formbricks Widget running? We assume that you have already installed the Formbricks Widget in your web ## Formbricks Widget running?
app. Its required to display messages and surveys in your app. If not, please follow the [Quick Start Guide We assume that you have already installed the Formbricks Widget in your web wapp. Its required to display messages and surveys in your app. If not, please follow the [Quick Start Guide
(takes 15mins max.)](/app-surveys/quickstart) (takes 15mins max.)](/app-surveys/quickstart)
</Note> </Note>
@@ -123,8 +123,7 @@ Lastly, scroll down to “Recontact Options”. Here you have full freedom to de
<Note> <Note>
## Formbricks Widget running? You need to have the Formbricks Widget installed to display the Feature Chaser ## 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)](/app-surveys/quickstart) in your app. Please follow [this tutorial (Step 4 onwards)](/app-surveys/quickstart) to install the widget.
to install the widget.
</Note> </Note>
### ###

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.3 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -1,13 +1,13 @@
import { MdxImage } from "@/components/MdxImage"; import { MdxImage } from "@/components/MdxImage";
import Link from "next/link"; import Link from "next/link";
import ActionCSS from "./action-css.webp";
import ActionText from "./action-innertext.webp";
import AddAction from "./add-action.webp"; import AddAction from "./add-action.webp";
import AddCSSAction from "./add-css-action.webp";
import AddHTMLAction from "./add-html-action.webp";
import ChangeTextContent from "./change-text-content.webp"; import ChangeTextContent from "./change-text-content.webp";
import CreateFeedbackBox from "./create-feedback-box-by-template.webp"; import CreateFeedbackBox from "./create-feedback-box-by-template.webp";
import PublishSurvey from "./publish-survey.webp"; import PublishSurvey from "./publish-survey.webp";
import SelectAction from "./select-feedback-button-action.webp"; import SelectAction from "./select-action.webp";
import RecontactOptions from "./set-recontact-options.webp"; import RecontactOptions from "./set-recontact-options.webp";
export const metadata = { export const metadata = {
@@ -69,20 +69,14 @@ Go to the “Audience” tab, find the “When to send” card and choose “Add
<MdxImage src={AddAction} alt="Add action" quality="100" className="max-w-full rounded-lg sm:max-w-3xl" /> <MdxImage src={AddAction} alt="Add action" quality="100" className="max-w-full rounded-lg sm:max-w-3xl" />
<Note>
## You can also add actions in your code You can also create [Code Actions](/actions/code) using
`formbricks.track("Eventname")` - they will automatically appear in your Actions overview as long as the SDK
is embedded.
</Note>
We have two options to track the Feedback Button in your application: innerText and CSS-Selector: We have two options to track the Feedback Button in your application: innerText and CSS-Selector:
1. **innerText:** This means that whenever a user clicks any HTML item in your app which has an `innerText` of `Feedback` the Feedback Box will be displayed. 1. **innerText:** This means that whenever a user clicks any HTML item in your app which has an `innerText` 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. 2. **CSS-Selector:** This means that when an element with a specific CSS-Selector like `#feedback-button` is clicked, your Feedback Box is triggered.
<div className="grid max-w-full grid-cols-2 space-x-2 sm:max-w-3xl"> <div className="grid max-w-full grid-cols-2 space-x-2 sm:max-w-3xl">
<MdxImage src={AddHTMLAction} alt="Add HTML action" quality="100" className="rounded-lg" /> <MdxImage src={ActionText} alt="Add HTML action" quality="100" className="rounded-lg" />
<MdxImage src={AddCSSAction} alt="Add CSS action" quality="100" className="rounded-lg" /> <MdxImage src={ActionCSS} alt="Add CSS action" quality="100" className="rounded-lg" />
</div> </div>
### 4. Select action in the “When to ask” card ### 4. Select action in the “When to ask” card
@@ -118,8 +112,7 @@ Scroll down to “Recontact Options”. Here you have to choose the right settin
<Note> <Note>
## Formbricks Widget running? You need to have the Formbricks Widget installed to display the Feedback Box ## 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) in your app. Please follow [this tutorial (Step 4 onwards)](/app-surveys/quickstart) to install the widget.
to install the widget.
</Note> </Note>
### &nbsp; ### &nbsp;

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 52 KiB

View File

@@ -38,8 +38,8 @@ To display the Trial Conversion Survey in your app you want to proceed as follow
3. Print that 💸 3. Print that 💸
<Note> <Note>
## Formbricks Widget running? We assume that you have already installed the Formbricks Widget in your web ## Formbricks Widget running?
app. Its required to display messages and surveys in your app. If not, please follow the [Quick Start Guide We assume that you have already installed the Formbricks Widget in your web app. Its required to display messages and surveys in your app. If not, please follow the [Quick Start Guide
(takes 15mins max.)](/app-surveys/quickstart) (takes 15mins max.)](/app-surveys/quickstart)
</Note> </Note>
@@ -132,8 +132,7 @@ Lastly, scroll down to “Recontact Options”. Here you have to choose the corr
<Note> <Note>
## Formbricks Widget running? You need to have the Formbricks Widget installed to display the Feedback Box ## 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) in your app. Please follow [this tutorial (Step 4 onwards)](/app-surveys/quickstart) to install the widget.
to install the widget.
</Note> </Note>
### ###

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.8 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.8 KiB

After

Width:  |  Height:  |  Size: 30 KiB

View File

@@ -43,8 +43,8 @@ To display an Interview Prompt in your app you want to proceed as follows:
3. Thats it! 🎉 3. Thats it! 🎉
<Note> <Note>
## Formbricks Widget running? We assume that you have already installed the Formbricks Widget in your web ## Formbricks Widget running?
app. Its required to display messages and surveys in your app. If not, please follow the [Quick Start Guide We assume that you have already installed the Formbricks Widget in your web app. Its required to display messages and surveys in your app. If not, please follow the [Quick Start Guide
(15mins).](/app-surveys/quickstart) (15mins).](/app-surveys/quickstart)
</Note> </Note>
@@ -86,8 +86,9 @@ Save, and move over to the “Audience” tab.
### 3. Pre-segment your audience (coming soon) ### 3. Pre-segment your audience (coming soon)
<Note> <Note>
## Filter by attribute coming soon We're working on pre-segmenting users by attributes. We will update this ## Filter by attribute coming soon.
manual in the next few days. We're working on pre-segmenting users by attributes. We will update this
manual in the next few days.
</Note> </Note>
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. 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.
@@ -102,12 +103,6 @@ To create the trigger to show your Interview Prompt, go to the “Audience” ta
<MdxImage src={AddAction} alt="Add action" quality="100" className="max-w-full rounded-lg sm:max-w-3xl" /> <MdxImage src={AddAction} alt="Add action" quality="100" className="max-w-full rounded-lg sm:max-w-3xl" />
<Note>
## You can also add actions in your code You can also create [Code Actions](/actions/code) using
`formbricks.track("Eventname")` - they will automatically appear in your Actions overview as long as the SDK
is embedded.
</Note>
Generally, we have two types of user actions: Page views and clicks. The Interview Prompt, youll likely want to display it on a page visit since you already filter who sees the prompt by attributes. Generally, we have two types of user actions: Page views and clicks. The Interview Prompt, youll likely want to display it on a page visit since you already filter who sees the prompt by attributes.
1. **pageURL:** 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. **pageURL:** 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.
@@ -121,19 +116,9 @@ Generally, we have two types of user actions: Page views and clicks. The Intervi
2. **innerText & 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. 2. **innerText & 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.
<div className="flex max-w-full flex-col sm:max-w-3xl lg:gap-1"> <div className="grid max-w-full grid-cols-2 space-x-2 sm:max-w-3xl">
<MdxImage <MdxImage src={ActionCSS} alt="Add CSS action" quality="100" className="rounded-lg" />
src={ActionCSS} <MdxImage src={ActionInner} alt="Add inner text action" quality="100" className="rounded-lg" />
alt="Add CSS action"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
<MdxImage
src={ActionInner}
alt="Add inner text action"
quality="100"
className="max-w-full rounded-lg sm:max-w-3xl"
/>
</div> </div>
### 5. Select action in the “When to ask” card ### 5. Select action in the “When to ask” card
@@ -161,9 +146,8 @@ Scroll down to “Recontact Options”. Here you have to choose the correct sett
<MdxImage src={Publish} alt="Publish survey" quality="100" className="max-w-full rounded-lg sm:max-w-3xl" /> <MdxImage src={Publish} alt="Publish survey" quality="100" className="max-w-full rounded-lg sm:max-w-3xl" />
<Note> <Note>
## Formbricks Widget running? You need to have the Formbricks Widget installed to display the Feedback Box ## Formbricks Widget running?
in your app. Please follow [this tutorial (Step 4 onwards)](/app-surveys/quickstart) 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.
to install the widget.
</Note> </Note>
### ###

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.0 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 48 KiB

View File

@@ -37,8 +37,8 @@ To display the Product-Market Fit survey in your app you want to proceed as foll
3. Setup the user action to display survey at good point in time 3. Setup the user action to display survey at good point in time
<Note> <Note>
## Formbricks Widget running? We assume that you have already installed the Formbricks Widget in your web ## Formbricks Widget running?
app. Its required to display messages and surveys in your app. If not, please follow the [Quick Start Guide We assume that you have already installed the Formbricks Widget in your web app. Its required to display messages and surveys in your app. If not, please follow the [Quick Start Guide
(15mins).](/app-surveys/quickstart) (15mins).](/app-surveys/quickstart)
</Note> </Note>
@@ -85,7 +85,7 @@ To run this survey properly, you should pre-segment your user base. As touched u
- Check the time passed since sign-up (e.g. signed up 4 weeks ago) - Check the time passed since sign-up (e.g. signed up 4 weeks ago)
- User has performed a specific action a certain number of times or (e.g. created 5 reports) - User has performed a specific action a certain number of times or (e.g. created 5 reports)
- User has performed a combination of actions (e.g. created a report **and** invited a team member) - User has performed a combination of actions (e.g. created a report **and** invited a organization member)
This way you make sure that you separate potentially misleading opinions from valuable insights. This way you make sure that you separate potentially misleading opinions from valuable insights.
@@ -94,18 +94,19 @@ This way you make sure that you separate potentially misleading opinions from va
You need a trigger to display the survey but in this case, the filtering does all the work. Its 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](/actions/why) if you are not sure how to set them up: You need a trigger to display the survey but in this case, the filtering does all the work. Its 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](/actions/why) if you are not sure how to set them up:
<Col> <Col>
<div>
<div className="grid max-w-full grid-cols-2 space-x-2 sm:max-w-3xl items-end">
<MdxImage <MdxImage
src={ActionCSS} src={ActionCSS}
alt="Add CSS action" alt="Add CSS action"
quality="100" quality="100"
className="max-w-full rounded-lg sm:max-w-3xl" className="rounded-lg"
/> />
<MdxImage <MdxImage
src={ActionPageurl} src={ActionPageurl}
alt="Add inner text action" alt="Add inner text action"
quality="100" quality="100"
className="max-w-full rounded-lg sm:max-w-3xl" className="rounded-lg"
/> />
</div> </div>
</Col> </Col>
@@ -135,8 +136,7 @@ Lastly, scroll down to “Recontact Options”. Here you have to choose the corr
<Note> <Note>
## Formbricks Widget running? You need to have the Formbricks Widget installed to display the Feedback Box ## 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) in your app. Please follow [this tutorial (Step 4 onwards)](/app-surveys/quickstart) to install the widget.
to install the widget.
</Note> </Note>
### ###

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.0 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -1,6 +1,6 @@
import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from "@formbricks/ui/Accordion"; import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from "@formbricks/ui/Accordion";
import FaqJsonLdComponent from "./FAQPageJsonLd"; import { FaqJsonLdComponent } from "./FAQPageJsonLd";
const FAQ_DATA = [ const FAQ_DATA = [
{ {
@@ -62,7 +62,7 @@ export const faqJsonLdData = FAQ_DATA.map((faq) => ({
acceptedAnswerText: faq.answer(), acceptedAnswerText: faq.answer(),
})); }));
export default function FAQ() { export const FAQ = () => {
return ( return (
<> <>
<FaqJsonLdComponent data={faqJsonLdData} /> <FaqJsonLdComponent data={faqJsonLdData} />
@@ -76,4 +76,4 @@ export default function FAQ() {
</Accordion> </Accordion>
</> </>
); );
} };

View File

@@ -2,11 +2,11 @@
import { FAQPageJsonLd } from "next-seo"; import { FAQPageJsonLd } from "next-seo";
export default function FaqJsonLdComponent({ data }) { export const FaqJsonLdComponent = ({ data }) => {
const faqEntities = data.map(({ question, answer }) => ({ const faqEntities = data.map(({ question, answer }) => ({
questionName: question, questionName: question,
acceptedAnswerText: answer, acceptedAnswerText: answer,
})); }));
return <FAQPageJsonLd mainEntity={faqEntities} />; return <FAQPageJsonLd mainEntity={faqEntities} />;
} };

View File

@@ -1,5 +1,4 @@
import { MdxImage } from "@/components/MdxImage"; import { MdxImage } from "@/components/MdxImage";
import FAQ from "./components/FAQ";
import GitpodAuth from "./images/gitpod/auth.webp"; import GitpodAuth from "./images/gitpod/auth.webp";
import GitpodNewWorkspace from "./images/gitpod/new-workspace.webp"; import GitpodNewWorkspace from "./images/gitpod/new-workspace.webp";
@@ -470,10 +469,3 @@ This happens when you're using the Demo App and delete the Person within the For
<MdxImage src={Logout} alt="Logout Person" quality="100" className="max-w-full rounded-lg sm:max-w-3xl" /> <MdxImage src={Logout} alt="Logout Person" quality="100" className="max-w-full rounded-lg sm:max-w-3xl" />
---
# Frequently Asked Questions
Here you'll find help with frequently recurring problems. If you can't find an answer to your question, please join our [Discord server](https://formbricks.com/discord).
<FAQ />

View File

@@ -24,8 +24,7 @@ export const metadata = {
The Airtable integration allows you to automatically send responses to an Airtable of your choice. The Airtable integration allows you to automatically send responses to an Airtable of your choice.
<Note> <Note>
This feature is enabled by default in Formbricks Cloud but needs to be self-configured when running a If you are on a self-hosted instance, you will need to configure this integration separately. Please follow the guides [here](/self-hosting/integrations) to configure integrations on your self-hosted instance.
self-hosted version of Formbricks.
</Note> </Note>
## Formbricks Cloud ## Formbricks Cloud

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 66 KiB

View File

@@ -21,9 +21,8 @@ export const metadata = {
The Google Sheets integration allows you to automatically send responses to a Google Sheet of your choice. The Google Sheets integration allows you to automatically send responses to a Google Sheet of your choice.
<Note> <Note>
This feature is enabled by default in Formbricks Cloud but needs to be self-configured when running a If you are on a self-hosted instance, you will need to configure this integration separately. Please follow
self-hosted version of Formbricks. For self-configuration, see additional setup the guides [here](/self-hosting/integrations) to configure integrations on your self-hosted instance.
[below](#setup-in-self-hosted-formbricks).
</Note> </Note>
## Connect Google Sheets ## Connect Google Sheets
@@ -72,7 +71,7 @@ Before the next step, make sure that you have a Formbricks Survey with at least
className="max-w-full rounded-lg sm:max-w-3xl" className="max-w-full rounded-lg sm:max-w-3xl"
/> />
6. Select 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. 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.
<MdxImage <MdxImage
src={LinkWithQuestions} src={LinkWithQuestions}
@@ -117,7 +116,6 @@ To remove the integration with Google Account,
For the above, we ask for: 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. **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 Drive API**: To list all your google sheets (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#L13))
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)) 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))
<Note>We store as little personal information as possible.</Note> <Note>We store as little personal information as possible.</Note>

View File

@@ -27,7 +27,7 @@ export const metadata = {
Make is a powerful tool to send information between Formbricks and thousands of apps. Here's how to set it up. Make is a powerful tool to send information between Formbricks and thousands of apps. Here's how to set it up.
<Note> <Note>
### Nail down your survey first ? Any changes in the survey cause additional work in the _Scenario_. It 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. makes sense to first settle on the survey you want to run and then get to setting up Make.
</Note> </Note>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

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