Compare commits
27 Commits
fix-docs-d
...
v2.0.2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4d78b904b8 | ||
|
|
473cc7334b | ||
|
|
afdcac2465 | ||
|
|
e539ac82f3 | ||
|
|
c2fbb20787 | ||
|
|
084307bdb2 | ||
|
|
fd78cec5ac | ||
|
|
0b87d35877 | ||
|
|
9849a96f32 | ||
|
|
b5287f7f01 | ||
|
|
11888f3e38 | ||
|
|
d2b27b046b | ||
|
|
8f4f26c143 | ||
|
|
514d0a9e5a | ||
|
|
bc99f15094 | ||
|
|
ba0b68cbfb | ||
|
|
fb33005051 | ||
|
|
5da9091aee | ||
|
|
a91a5e7014 | ||
|
|
87a623a796 | ||
|
|
ed75089ee0 | ||
|
|
a04e031f9e | ||
|
|
3c91dd52a0 | ||
|
|
c282f630c4 | ||
|
|
49bf9ec8a9 | ||
|
|
2b74054f4b | ||
|
|
64793132c7 |
@@ -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
|
||||||
|
|||||||
4
.github/workflows/release-docker-github.yml
vendored
@@ -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
|
||||||
|
|||||||
@@ -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?
|
||||||
|
|
||||||
|
|||||||
@@ -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>
|
||||||
);
|
);
|
||||||
}
|
};
|
||||||
|
|||||||
@@ -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>
|
||||||
);
|
);
|
||||||
}
|
};
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
export function classNames(...classes: any) {
|
export const classNames = (...classes: any) => {
|
||||||
return classes.filter(Boolean).join(" ");
|
return classes.filter(Boolean).join(" ");
|
||||||
}
|
};
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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,
|
||||||
@@ -234,4 +238,6 @@ export default function AppPage({}) {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
};
|
||||||
|
|
||||||
|
export default AppPage;
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|
||||||
@@ -139,4 +139,6 @@ export default function AppPage({}) {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
};
|
||||||
|
|
||||||
|
export default AppPage;
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 56 KiB |
BIN
apps/docs/app/app-surveys/actions/images/I1.webp
Normal file
|
After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 62 KiB |
BIN
apps/docs/app/app-surveys/actions/images/I2.webp
Normal file
|
After Width: | Height: | Size: 34 KiB |
@@ -1,7 +1,7 @@
|
|||||||
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",
|
||||||
@@ -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 user’s 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 user’s 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.
|
||||||
|
|||||||
@@ -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>
|
||||||
);
|
);
|
||||||
}
|
};
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 61 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 207 KiB |
BIN
apps/docs/app/app-surveys/quickstart/images/I1.webp
Normal file
|
After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 75 KiB |
BIN
apps/docs/app/app-surveys/quickstart/images/I2.webp
Normal file
|
After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 208 KiB |
BIN
apps/docs/app/app-surveys/quickstart/images/I3.webp
Normal file
|
After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 106 KiB |
BIN
apps/docs/app/app-surveys/quickstart/images/I4.webp
Normal file
|
After Width: | Height: | Size: 42 KiB |
|
Before Width: | Height: | Size: 130 KiB |
BIN
apps/docs/app/app-surveys/quickstart/images/I5.webp
Normal file
|
After Width: | Height: | Size: 41 KiB |
|
Before Width: | Height: | Size: 52 KiB |
BIN
apps/docs/app/app-surveys/quickstart/images/I6.webp
Normal file
|
After Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 78 KiB |
BIN
apps/docs/app/app-surveys/quickstart/images/I7.webp
Normal file
|
After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 75 KiB |
BIN
apps/docs/app/app-surveys/quickstart/images/I8.webp
Normal file
|
After Width: | Height: | Size: 23 KiB |
@@ -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. Let’s 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. Let’s 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 let’s 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 you’ll be forwarded to the Summary Page. This is where you’ll find the responses to this survey.
|
6. **Publish your survey**: Now hit **Publish** and you’ll be forwarded to the Summary Page. This is where you’ll 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"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|
||||||
###
|
###
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 6.8 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 55 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 44 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 45 KiB |
@@ -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>
|
||||||
|
|||||||
BIN
apps/docs/app/best-practices/docs-feedback/select-action.webp
Normal file
|
After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 5.5 KiB |
BIN
apps/docs/app/best-practices/docs-feedback/survey-trigger.webp
Normal file
|
After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 5.9 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 38 KiB |
|
After Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 13 KiB |
@@ -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";
|
||||||
@@ -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>
|
||||||
|
|
||||||
###
|
###
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 18 KiB |
BIN
apps/docs/app/best-practices/feedback-box/action-css.webp
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
apps/docs/app/best-practices/feedback-box/action-innertext.webp
Normal file
|
After Width: | Height: | Size: 35 KiB |
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 33 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 12 KiB |
@@ -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>
|
||||||
|
|
||||||
###
|
###
|
||||||
|
|||||||
BIN
apps/docs/app/best-practices/feedback-box/select-action.webp
Normal file
|
After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 7.0 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 52 KiB |
@@ -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>
|
||||||
|
|
||||||
###
|
###
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 7.8 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 48 KiB |
|
Before Width: | Height: | Size: 6.8 KiB After Width: | Height: | Size: 30 KiB |
@@ -103,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, you’ll 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, you’ll 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.
|
||||||
@@ -122,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
|
||||||
@@ -162,10 +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?
|
## Formbricks Widget running?
|
||||||
You need to have the Formbricks Widget installed to display the Feedback Box
|
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.
|
||||||
in your app. Please follow [this tutorial (Step 4 onwards)](/app-surveys/quickstart)
|
|
||||||
to install the widget.
|
|
||||||
</Note>
|
</Note>
|
||||||
|
|
||||||
###
|
###
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 7.0 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 48 KiB |
@@ -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. 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](/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. 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](/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>
|
||||||
|
|
||||||
###
|
###
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 7.0 KiB After Width: | Height: | Size: 18 KiB |
@@ -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>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
}
|
};
|
||||||
|
|||||||
@@ -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} />;
|
||||||
}
|
};
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 83 KiB |
BIN
apps/docs/app/developer-docs/integrations/n8n/add-api-key.webp
Normal file
|
After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 105 KiB |
BIN
apps/docs/app/developer-docs/integrations/n8n/add-discord.webp
Normal file
|
After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 70 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 92 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 61 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 4.8 KiB |
|
After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 460 KiB |
|
After Width: | Height: | Size: 98 KiB |
|
Before Width: | Height: | Size: 46 KiB |
|
After Width: | Height: | Size: 6.6 KiB |
@@ -1,20 +1,20 @@
|
|||||||
import { MdxImage } from "@/components/MdxImage";
|
import { MdxImage } from "@/components/MdxImage";
|
||||||
|
|
||||||
import AddApiKey from "./add-api-key.png";
|
import AddApiKey from "./add-api-key.webp";
|
||||||
import AddDiscord from "./add-discord.png";
|
import AddDiscord from "./add-discord.webp";
|
||||||
import AddFormbricksTrigger from "./add-formbricks-trigger.png";
|
import AddFormbricksTrigger from "./add-formbricks-trigger.webp";
|
||||||
import CreateNewCredentialBtn from "./create-new-credential-btn.png";
|
import CreateNewCredentialBtn from "./create-new-credential-btn.webp";
|
||||||
import DiscordResponse from "./discord-response.png";
|
import DiscordResponse from "./discord-response.webp";
|
||||||
import DuplicateSurvey from "./duplicate-survey.png";
|
import DuplicateSurvey from "./duplicate-survey.webp";
|
||||||
import FillDiscordDetails from "./fill-discord-details.png";
|
import FillDiscordDetails from "./fill-discord-details.webp";
|
||||||
import ListenForEvent from "./listen-for-event.png";
|
import ListenForEvent from "./listen-for-event.webp";
|
||||||
import SelectEvent from "./select-event.png";
|
import SelectEvent from "./select-event.webp";
|
||||||
import SelectSurvey from "./select-survey.png";
|
import SelectSurvey from "./select-survey.webp";
|
||||||
import SelectedSurveys from "./selected-surveys.png";
|
import SelectedSurveys from "./selected-surveys.webp";
|
||||||
import SubmitTestResponse from "./submit-test-response.png";
|
import SubmitTestResponse from "./submit-test-response.webp";
|
||||||
import SuccessConnection from "./success-connection.png";
|
import SuccessConnection from "./success-connection.webp";
|
||||||
import TestResponseSuccess from "./test-response-success.png";
|
import TestResponseSuccess from "./test-response-success.webp";
|
||||||
import UpdateQuestionId from "./update-question-id.png";
|
import UpdateQuestionId from "./update-question-id.webp";
|
||||||
|
|
||||||
export const metadata = {
|
export const metadata = {
|
||||||
title: "Comprehensive Guide to Integrating Formbricks with n8n",
|
title: "Comprehensive Guide to Integrating Formbricks with n8n",
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 148 KiB |
BIN
apps/docs/app/developer-docs/integrations/n8n/select-event.webp
Normal file
|
After Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 104 KiB |
BIN
apps/docs/app/developer-docs/integrations/n8n/select-survey.webp
Normal file
|
After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 95 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 29 KiB |