-
-
-
-
Step 1
-
- Copy + Paste
-
-
- Simply copy a <script> tag to your HTML head - that’s about it. Or use NPM to install
- Formbricks for React, Vue, Svelte, etc.
-
-
-
-
-
+
+
+
+
Step 1
+
+ Copy + Paste
+
+
+ Simply copy a <script> tag to your HTML head - that’s about it. Or use NPM to install
+ Formbricks for React, Vue, Svelte, etc.
+
+
+
+
-
-
-
-
-
-
-
Step 2
-
- No-Code: Track User Actions
-
-
- Set up user actions which can trigger your survey without writing a single line of code.
- Surveys can be triggered on specific pages or after an element is clicked.
-
-
-
-
-
-
-
-
-
-
Step 3
-
- Create your survey
-
-
- Start from a template - or from scratch. Ask what you want, in any language. You can also
- adjust the look and feel of your survey.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Step 4
-
- Set segment and trigger
-
-
- Create a custom segment for each survey. Use attributes and past user actions to only survey
- the people who have answers. Trigger your survey on any user action in your app.
-
-
-
-
-
-
-
-
-
-
Step 5
-
- Make better decisions
-
-
- Gather all insights you can - including partial submissions. Build conviction for the next
- product decision. Better data, better business.
-
-
-
-
-
-
-
-
-
-
- >
+
+
+
+
Step 2
+
+ No-Code: Track User Actions
+
+
+ Set up user actions which can trigger your survey without writing a single line of code. Surveys
+ can be triggered on specific pages or after an element is clicked.
+
+
+
+
+
+
+
Step 3
+
+ Create your survey
+
+
+ Start from a template - or from scratch. Ask what you want, in any language. You can also adjust
+ the look and feel of your survey.
+
+
+
+
+
+
+
+
+
+
+
Step 4
+
+ Set segment and trigger
+
+
+ Create a custom segment for each survey. Use attributes and past user actions to only survey the
+ people who have answers. Trigger your survey on any user action in your app.
+
+
+
+
+
+
+
Step 5
+
+ Make better decisions
+
+
+ Gather all insights you can - including partial submissions. Build conviction for the next
+ product decision. Better data, better business.
+
+
+
+
+
+
+
+
+
);
};
diff --git a/apps/formbricks-com/components/salespage/FeatureCard.tsx b/apps/formbricks-com/components/salespage/FeatureCard.tsx
new file mode 100644
index 0000000000..ca7df8a51f
--- /dev/null
+++ b/apps/formbricks-com/components/salespage/FeatureCard.tsx
@@ -0,0 +1,19 @@
+interface TestimonialProps {
+ title: string;
+ text: string;
+ Icon: React.ElementType;
+}
+
+export default function SalesTestimonial({ title, text, Icon }: TestimonialProps) {
+ return (
+
+ );
+}
diff --git a/apps/formbricks-com/components/salespage/HeaderLight.tsx b/apps/formbricks-com/components/salespage/HeaderLight.tsx
new file mode 100644
index 0000000000..d9b3a00190
--- /dev/null
+++ b/apps/formbricks-com/components/salespage/HeaderLight.tsx
@@ -0,0 +1,101 @@
+import { Popover, Transition } from "@headlessui/react";
+import { Menu, X } from "lucide-react";
+import { usePlausible } from "next-plausible";
+import Link from "next/link";
+import { useRouter } from "next/router";
+import { Fragment } from "react";
+
+import { Button } from "@formbricks/ui/Button";
+
+import { FooterLogo } from "../shared/Logo";
+
+const mainNav = [
+ { name: "Link Surveys", href: "/open-source-form-builder", status: true },
+ { name: "Website Surveys", href: "/website-survey", status: true },
+ { name: "In-app Surveys", href: "/in-app-survey", status: true },
+];
+
+export default function HeaderLight() {
+ const plausible = usePlausible();
+ const router = useRouter();
+ return (
+
+ );
+}
diff --git a/apps/formbricks-com/components/demo/LayoutLight.tsx b/apps/formbricks-com/components/salespage/LayoutLight.tsx
similarity index 61%
rename from apps/formbricks-com/components/demo/LayoutLight.tsx
rename to apps/formbricks-com/components/salespage/LayoutLight.tsx
index 8bfe85e840..1ee05e9bbf 100644
--- a/apps/formbricks-com/components/demo/LayoutLight.tsx
+++ b/apps/formbricks-com/components/salespage/LayoutLight.tsx
@@ -8,16 +8,14 @@ interface LayoutProps {
description: string;
}
-export default function Layout({ title, description, children }: LayoutProps) {
+export default function LayoutLight({ title, description, children }: LayoutProps) {
return (
- {
-
- {children}
-
- }
+
+ {children}
+
);
diff --git a/apps/formbricks-com/components/salespage/LogoBar.tsx b/apps/formbricks-com/components/salespage/LogoBar.tsx
new file mode 100644
index 0000000000..180bb9e64b
--- /dev/null
+++ b/apps/formbricks-com/components/salespage/LogoBar.tsx
@@ -0,0 +1,37 @@
+import CalLogoLight from "@/images/clients/cal-logo-light.svg";
+import CrowdLogoLight from "@/images/clients/crowd-logo-light.svg";
+import FlixbusLogo from "@/images/clients/flixbus-white.svg";
+import NILogoDark from "@/images/clients/niLogoDark.svg";
+import OptimoleLogo from "@/images/clients/optimole-logo.svg";
+import ThemeisleLogo from "@/images/clients/themeisle-logo.webp";
+import Image from "next/image";
+
+export default function LogoBar() {
+ return (
+
+
+ 10,000+ teams at the world’s best companies trust Formbricks
+
+
+
+ );
+}
diff --git a/apps/formbricks-com/components/salespage/SalesBreaker.tsx b/apps/formbricks-com/components/salespage/SalesBreaker.tsx
new file mode 100644
index 0000000000..798232f7fe
--- /dev/null
+++ b/apps/formbricks-com/components/salespage/SalesBreaker.tsx
@@ -0,0 +1,25 @@
+import SalesCTA from "@/components/salespage/SalesCTA";
+
+interface Props {
+ headline: string;
+ subheadline: string;
+}
+
+export default function SalesBreaker({ headline, subheadline }: Props) {
+ return (
+
+
+
+
+
+
{headline}
+
+ {subheadline}
+
+
+
+
+
+
+ );
+}
diff --git a/apps/formbricks-com/components/salespage/SalesCTA.tsx b/apps/formbricks-com/components/salespage/SalesCTA.tsx
new file mode 100644
index 0000000000..530ff3b699
--- /dev/null
+++ b/apps/formbricks-com/components/salespage/SalesCTA.tsx
@@ -0,0 +1,20 @@
+import { usePlausible } from "next-plausible";
+import { useRouter } from "next/router";
+
+import { Button } from "@formbricks/ui/Button";
+
+export default function SalesCTA() {
+ const plausible = usePlausible();
+ const router = useRouter();
+ return (
+
{
+ router.push("https://app.formbricks.com/auth/signup");
+ plausible("SalesPage_CTA_GetStartedNow");
+ }}>
+ Get started now
+
+ );
+}
diff --git a/apps/formbricks-com/components/salespage/SalesPageFeature.tsx b/apps/formbricks-com/components/salespage/SalesPageFeature.tsx
new file mode 100644
index 0000000000..8213ef9b8b
--- /dev/null
+++ b/apps/formbricks-com/components/salespage/SalesPageFeature.tsx
@@ -0,0 +1,36 @@
+import SalesCTA from "@/components/salespage/SalesCTA";
+import Image, { StaticImageData } from "next/image";
+
+interface SalesPageFeatureProps {
+ imgSrc: StaticImageData;
+ imgAlt: string;
+ headline: string;
+ subheadline: string;
+ imgLeft?: boolean;
+}
+
+export default function SalesPageFeature({
+ imgSrc,
+ imgAlt,
+ headline,
+ subheadline,
+ imgLeft,
+}: SalesPageFeatureProps) {
+ return (
+
+
+
{headline}
+
{subheadline}
+
+
+
+
+
+
+ );
+}
diff --git a/apps/formbricks-com/components/salespage/SalesPageHero.tsx b/apps/formbricks-com/components/salespage/SalesPageHero.tsx
new file mode 100644
index 0000000000..732f34bdd8
--- /dev/null
+++ b/apps/formbricks-com/components/salespage/SalesPageHero.tsx
@@ -0,0 +1,28 @@
+import SalesCTA from "@/components/salespage/SalesCTA";
+import Image, { StaticImageData } from "next/image";
+
+interface SalesPageHeroProps {
+ imgSrc: StaticImageData;
+ imgAlt: string;
+ headline: React.ReactNode;
+ subheadline: string;
+}
+
+export default function SalesPageHero({ imgSrc, imgAlt, headline, subheadline }: SalesPageHeroProps) {
+ return (
+
+
+
{headline}
+
{subheadline}
+
+
+
+
+
+
+ );
+}
diff --git a/apps/formbricks-com/components/salespage/SalesSteps.tsx b/apps/formbricks-com/components/salespage/SalesSteps.tsx
new file mode 100644
index 0000000000..aa32f34344
--- /dev/null
+++ b/apps/formbricks-com/components/salespage/SalesSteps.tsx
@@ -0,0 +1,32 @@
+interface SalesStepsProps {
+ steps: Array<{ id: string; name: string; description: string }>;
+}
+
+export default function SalesSteps({ steps }: SalesStepsProps) {
+ return (
+
+
+ {steps.map((step) => {
+ return (
+
+
+
+
{step.name}
+
+ Description
+ {step.description}
+
+
+
+ );
+ })}
+
+
+ );
+}
diff --git a/apps/formbricks-com/components/salespage/SalesTestimonial.tsx b/apps/formbricks-com/components/salespage/SalesTestimonial.tsx
new file mode 100644
index 0000000000..c584c33792
--- /dev/null
+++ b/apps/formbricks-com/components/salespage/SalesTestimonial.tsx
@@ -0,0 +1,28 @@
+import Image, { StaticImageData } from "next/image";
+
+interface TestimonialProps {
+ quote: string;
+ author: string;
+ imgSrc: StaticImageData;
+ imgAlt: string;
+ textSize: "base" | "large";
+}
+
+export default function SalesTestimonial({
+ quote,
+ author,
+ imgAlt,
+ imgSrc,
+ textSize = "base",
+}: TestimonialProps) {
+ return (
+
+
+ {quote}
+
+
{author}
+
+
+ );
+}
diff --git a/apps/formbricks-com/components/shared/BestPracticeNavigation.tsx b/apps/formbricks-com/components/shared/BestPracticeNavigation.tsx
index 07adc9617c..636d938871 100644
--- a/apps/formbricks-com/components/shared/BestPracticeNavigation.tsx
+++ b/apps/formbricks-com/components/shared/BestPracticeNavigation.tsx
@@ -79,15 +79,6 @@ export default function BestPracticeNavigation() {
description: "Give users the chance to share feedback in a single click.",
category: "Boost Retention",
},
-
- {
- name: "Improve Newsletter Content",
- href: "/improve-newsletter-content",
- status: true,
- icon: FeedbackIcon,
- description: "Improve your newsletter content by showing this survey to your readers.",
- category: "Boost Retention",
- },
];
return (
diff --git a/apps/formbricks-com/components/shared/BestPractices.tsx b/apps/formbricks-com/components/shared/BestPractices.tsx
index 756cf3883c..f2cd18b543 100644
--- a/apps/formbricks-com/components/shared/BestPractices.tsx
+++ b/apps/formbricks-com/components/shared/BestPractices.tsx
@@ -1,20 +1,14 @@
+import HeadingCentered from "@/components/shared/HeadingCentered";
+
import BestPracticeNavigation from "./BestPracticeNavigation";
export default function InsightOppos() {
return (
-
-
-
- Get started with{" "}
-
- Best Practices
-
-
-
- Run battle-tested approaches for qualitative user research in minutes.
-
-
-
+
+
);
diff --git a/apps/formbricks-com/components/shared/BreakerCTA.tsx b/apps/formbricks-com/components/shared/BreakerCTA.tsx
index 7e58507137..dfbdccad64 100644
--- a/apps/formbricks-com/components/shared/BreakerCTA.tsx
+++ b/apps/formbricks-com/components/shared/BreakerCTA.tsx
@@ -22,7 +22,7 @@ export default function BreakerCTA({ inverted = false, teaser, headline, subhead
inverted
? "from-slate-800 via-slate-800 to-slate-700 dark:from-slate-200 dark:to-slate-300"
: "from-slate-200 to-slate-300 dark:from-slate-800 dark:via-slate-800 dark:to-slate-700",
- "xs:mx-auto xs:w-full mx-4 my-4 mt-28 max-w-6xl rounded-xl bg-gradient-to-br md:mb-0 "
+ "mx-auto w-full max-w-6xl rounded-xl bg-gradient-to-br "
)}>
diff --git a/apps/formbricks-com/components/shared/CTA.tsx b/apps/formbricks-com/components/shared/CTA.tsx
index 7b3439152a..a2068cd98b 100644
--- a/apps/formbricks-com/components/shared/CTA.tsx
+++ b/apps/formbricks-com/components/shared/CTA.tsx
@@ -9,7 +9,7 @@ export default function CTA() {
return (
<>
-
+
diff --git a/apps/formbricks-com/components/shared/Footer.tsx b/apps/formbricks-com/components/shared/Footer.tsx
index 54e237d12b..cf6fb438aa 100644
--- a/apps/formbricks-com/components/shared/Footer.tsx
+++ b/apps/formbricks-com/components/shared/Footer.tsx
@@ -4,13 +4,39 @@ import { FaDiscord, FaGithub, FaXTwitter } from "react-icons/fa6";
import { FooterLogo } from "./Logo";
const navigation = {
- other: [
+ products: [
+ { name: "Link Surveys", href: "/open-source-form-builder", status: true },
+ { name: "Website Surveys", href: "/website-survey", status: true },
+ { name: "In-app Surveys", href: "/in-app-survey", status: true },
+ ],
+ comparisons: [
+ { name: "vs. Google Forms", href: "/vs-google-forms", status: true },
+ { name: "vs. Formspree", href: "/vs-formspree", status: true },
+ { name: "vs. OhMyForm", href: "/vs-ohmyform", status: true },
+ ],
+ footernav: [
{ name: "Community", href: "/community", status: true },
+ { name: "Pricing", href: "/pricing", status: true },
{ name: "Blog", href: "/blog", status: true },
- { name: "OSS Friends", href: "/oss-friends", status: true },
+ { name: "Docs", href: "/blog", status: true },
+ ],
+ legal: [
+ { name: "Imprint", href: "/imprint", status: true },
+ { name: "Privacy Policy", href: "/privacy", status: true },
+ { name: "Terms", href: "/terms", status: true },
{ name: "GDPR FAQ", href: "/gdpr", status: true },
{ name: "GDPR Guide", href: "/gdpr-guide", status: true },
],
+ bestPractices: [
+ { name: "Interview Prompt", href: "/interview-prompt", status: true },
+ { name: "PMF Survey", href: "/measure-product-market-fit", status: true },
+ { name: "Onboarding Segments", href: "/onboarding-segmentation", status: true },
+ { name: "Learn from Churn", href: "/learn-from-churn", status: true },
+ { name: "Improve Trial CR", href: "/improve-trial-conversion", status: true },
+ { name: "Docs Feedback", href: "/docs-feedback", status: true },
+ { name: "Feature Chaser", href: "/feature-chaser", status: true },
+ { name: "Feedback Box", href: "/feedback-box", status: true },
+ ],
social: [
{
name: "Twitter",
@@ -39,27 +65,84 @@ export default function Footer() {
-
-
-
Formbricks
-
-
-
Privacy-first Experience Management
-
-
- Formbricks GmbH © {currentYear}. All rights reserved.
-
- Imprint | Privacy Policy |{" "}
- Terms | OSS Friends
-
+
+
+
+
Formbricks
+
+
+
Privacy-first Experience Management
+
+
+ Formbricks GmbH © {currentYear}. All rights reserved.
+
+ Imprint | Privacy Policy |{" "}
+ Terms | OSS Friends
+
+
+
+ {navigation.social.map((item) => (
+
+ {item.name}
+
+
+ ))}
+
-
- {navigation.social.map((item) => (
-
-
{item.name}
-
-
- ))}
+
+
+
Formbricks
+ {navigation.footernav.map((item) => (
+
+ {item.name}
+
+ ))}
+
+
+
Product
+ {navigation.products.map((item) => (
+
+ {item.name}
+
+ ))}
+ Comparison
+ {navigation.comparisons.map((item) => (
+
+ {item.name}
+
+ ))}
+
+
+
Best Practices
+ {navigation.bestPractices.map((item) => (
+
+ {item.name}
+
+ ))}
+
+
+
Legal
+ {navigation.legal.map((item) => (
+
+ {item.name}
+
+ ))}
+
diff --git a/apps/formbricks-com/components/shared/Header.tsx b/apps/formbricks-com/components/shared/Header.tsx
index c722c85ddc..4157569620 100644
--- a/apps/formbricks-com/components/shared/Header.tsx
+++ b/apps/formbricks-com/components/shared/Header.tsx
@@ -268,12 +268,6 @@ export default function Header() {
>
)}
- {/*
- Community
-
- */}
@@ -294,11 +288,6 @@ export default function Header() {
className="text-sm font-medium text-slate-400 hover:text-slate-700 lg:text-base dark:hover:text-slate-300">
Blog {/*
1
*/}
- {/*
- Careers
1
- */}
- {/*
setVideoModal(true)}>
- setVideoModal(false)} />
-
- */}
-
+
{teaser}
diff --git a/apps/formbricks-com/components/shared/Layout.tsx b/apps/formbricks-com/components/shared/Layout.tsx
index 9a039fadc5..5ae080c336 100644
--- a/apps/formbricks-com/components/shared/Layout.tsx
+++ b/apps/formbricks-com/components/shared/Layout.tsx
@@ -1,5 +1,5 @@
+import HeaderLight from "../salespage/HeaderLight";
import Footer from "./Footer";
-import Header from "./Header";
import MetaInformation from "./MetaInformation";
interface LayoutProps {
@@ -10,11 +10,11 @@ interface LayoutProps {
export default function Layout({ title, description, children }: LayoutProps) {
return (
-
+
-
+
{
-
+
{children}
}
diff --git a/apps/formbricks-com/components/shared/LayoutMdx.tsx b/apps/formbricks-com/components/shared/LayoutMdx.tsx
index 425e8d693c..a90de00f8b 100644
--- a/apps/formbricks-com/components/shared/LayoutMdx.tsx
+++ b/apps/formbricks-com/components/shared/LayoutMdx.tsx
@@ -1,8 +1,8 @@
+import HeaderLight from "@/components/salespage/HeaderLight";
import SlideInBanner from "@/components/shared/SlideInBanner";
import { useEffect } from "react";
import Footer from "./Footer";
-import Header from "./Header";
import MetaInformation from "./MetaInformation";
import { Prose } from "./Prose";
@@ -39,7 +39,7 @@ interface Props {
export default function LayoutMdx({ meta, children }: Props) {
useExternalLinks(".prose a");
return (
-
+
-
+
{meta.title && (
diff --git a/apps/formbricks-com/components/shared/MetaInformation.tsx b/apps/formbricks-com/components/shared/MetaInformation.tsx
index 5fc1910b43..c58e07c184 100644
--- a/apps/formbricks-com/components/shared/MetaInformation.tsx
+++ b/apps/formbricks-com/components/shared/MetaInformation.tsx
@@ -22,8 +22,8 @@ export default function MetaInformation({
}: Props) {
const router = useRouter();
const pageTitle = `${title}`;
- const BASE_URL = `https://${process.env.VERCEL_URL}`;
- const canonicalLink = `${BASE_URL}${router.asPath}`;
+ const BASE_URL = `formbricks.com`;
+ const canonicalLink = `https://${BASE_URL}${router.asPath}`;
return (
{pageTitle}
diff --git a/apps/formbricks-com/components/shared/SEO/SEOFAQ.tsx b/apps/formbricks-com/components/shared/SEO/SEOFAQ.tsx
new file mode 100644
index 0000000000..2cfb78d462
--- /dev/null
+++ b/apps/formbricks-com/components/shared/SEO/SEOFAQ.tsx
@@ -0,0 +1,79 @@
+import Script from "next/script";
+import { FAQPage, WithContext } from "schema-dts";
+
+import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from "@formbricks/ui/Accordion";
+
+interface Answer {
+ "@type": "Answer";
+ text: string;
+}
+
+interface Question {
+ "@type": "Question";
+ name: string;
+ acceptedAnswer: Answer;
+}
+
+interface FAQ {
+ question: string;
+ answer: string;
+}
+
+interface FAQSchemaProps {
+ faqs: FAQ[];
+ headline: string;
+ description: string;
+ datePublished: string;
+ dateModified: string;
+}
+
+const SeoFaq: React.FC = ({ faqs, headline, description, datePublished, dateModified }) => {
+ const FAQMainEntity: Question[] = faqs.map((faq) => ({
+ "@type": "Question",
+ name: faq.question,
+ acceptedAnswer: {
+ "@type": "Answer",
+ text: faq.answer,
+ },
+ }));
+
+ const FAQjsonld: WithContext = {
+ "@context": "https://schema.org",
+ "@type": "FAQPage",
+ name: `Frequently Asked Questions around ${headline}`,
+ mainEntity: FAQMainEntity,
+ headline,
+ description,
+ author: {
+ "@type": "Person",
+ name: "Johannes Dancker",
+ url: "https://formbricks.com",
+ },
+ image: "",
+ datePublished,
+ dateModified,
+ };
+
+ return (
+ <>
+
+
+
+ {faqs.map((faq, index) => (
+
+ {faq.question}
+ {faq.answer}
+
+ ))}
+
+ >
+ );
+};
+
+export default SeoFaq;
diff --git a/apps/formbricks-com/images/SEO/styling-1-google-forms-open-source-alternative.jpeg b/apps/formbricks-com/images/SEO/styling-1-google-forms-open-source-alternative.jpeg
new file mode 100644
index 0000000000..be45d2cd5d
Binary files /dev/null and b/apps/formbricks-com/images/SEO/styling-1-google-forms-open-source-alternative.jpeg differ
diff --git a/apps/formbricks-com/images/SEO/styling-2-google-form-open-source-alternative-form-builder.jpeg b/apps/formbricks-com/images/SEO/styling-2-google-form-open-source-alternative-form-builder.jpeg
new file mode 100644
index 0000000000..e379a3e6bd
Binary files /dev/null and b/apps/formbricks-com/images/SEO/styling-2-google-form-open-source-alternative-form-builder.jpeg differ
diff --git a/apps/formbricks-com/images/clients/headshots/bailey.jpeg b/apps/formbricks-com/images/clients/headshots/bailey.jpeg
new file mode 100644
index 0000000000..70b7bbdd48
Binary files /dev/null and b/apps/formbricks-com/images/clients/headshots/bailey.jpeg differ
diff --git a/apps/formbricks-com/images/clients/headshots/jonathan.png b/apps/formbricks-com/images/clients/headshots/jonathan.png
new file mode 100644
index 0000000000..220c56695a
Binary files /dev/null and b/apps/formbricks-com/images/clients/headshots/jonathan.png differ
diff --git a/apps/formbricks-com/images/clients/headshots/marius.jpeg b/apps/formbricks-com/images/clients/headshots/marius.jpeg
new file mode 100644
index 0000000000..06a5d8019e
Binary files /dev/null and b/apps/formbricks-com/images/clients/headshots/marius.jpeg differ
diff --git a/apps/formbricks-com/images/clients/headshots/peer.jpeg b/apps/formbricks-com/images/clients/headshots/peer.jpeg
new file mode 100644
index 0000000000..28e8401e53
Binary files /dev/null and b/apps/formbricks-com/images/clients/headshots/peer.jpeg differ
diff --git a/apps/formbricks-com/images/clients/headshots/ram.jpeg b/apps/formbricks-com/images/clients/headshots/ram.jpeg
new file mode 100644
index 0000000000..f83ccac6b2
Binary files /dev/null and b/apps/formbricks-com/images/clients/headshots/ram.jpeg differ
diff --git a/apps/formbricks-com/images/clients/headshots/sachin.jpeg b/apps/formbricks-com/images/clients/headshots/sachin.jpeg
new file mode 100644
index 0000000000..75c90b1ad8
Binary files /dev/null and b/apps/formbricks-com/images/clients/headshots/sachin.jpeg differ
diff --git a/apps/formbricks-com/images/clients/headshots/vishnu.jpeg b/apps/formbricks-com/images/clients/headshots/vishnu.jpeg
new file mode 100644
index 0000000000..35a89ffcb7
Binary files /dev/null and b/apps/formbricks-com/images/clients/headshots/vishnu.jpeg differ
diff --git a/apps/formbricks-com/images/placeholder.png b/apps/formbricks-com/images/placeholder.png
new file mode 100644
index 0000000000..dd2fd7388d
Binary files /dev/null and b/apps/formbricks-com/images/placeholder.png differ
diff --git a/apps/formbricks-com/next.config.mjs b/apps/formbricks-com/next.config.mjs
index 9dac9b92fe..8f5e8cd441 100644
--- a/apps/formbricks-com/next.config.mjs
+++ b/apps/formbricks-com/next.config.mjs
@@ -34,6 +34,11 @@ const nextConfig = {
},
async redirects() {
return [
+ {
+ source: "/demo",
+ destination: "/",
+ permanent: false,
+ },
{
source: "/discord",
destination: "https://discord.gg/3YFcABF2Ts",
diff --git a/apps/formbricks-com/package.json b/apps/formbricks-com/package.json
index b948305757..c2a04b3394 100644
--- a/apps/formbricks-com/package.json
+++ b/apps/formbricks-com/package.json
@@ -35,6 +35,7 @@
"flexsearch": "^0.7.43",
"framer-motion": "11.0.13",
"lottie-web": "^5.12.2",
+ "lucide": "^0.350.0",
"mdast-util-to-string": "^4.0.0",
"mdx-annotations": "^0.1.4",
"next": "14.1.3",
@@ -53,8 +54,9 @@
"react-responsive-embed": "^2.1.0",
"remark": "^15.0.1",
"remark-gfm": "^4.0.0",
- "remark-mdx": "^3.0.1",
- "sharp": "^0.33.2",
+ "remark-mdx": "^3.0.0",
+ "schema-dts": "^1.1.2",
+ "sharp": "^0.33.1",
"shiki": "^0.14.7",
"simple-functional-loader": "^1.2.1",
"tailwindcss": "^3.4.1",
diff --git a/apps/formbricks-com/pages/_document.tsx b/apps/formbricks-com/pages/_document.tsx
index ddea5bc014..a6eefeaa8a 100644
--- a/apps/formbricks-com/pages/_document.tsx
+++ b/apps/formbricks-com/pages/_document.tsx
@@ -9,7 +9,6 @@ export default function Document() {
-
diff --git a/apps/formbricks-com/pages/blog/best-feedback-app-and-how-to-use-them/index.mdx b/apps/formbricks-com/pages/blog/best-feedback-app-and-how-to-use-them/index.mdx
index e0a9b175de..9cabe25026 100644
--- a/apps/formbricks-com/pages/blog/best-feedback-app-and-how-to-use-them/index.mdx
+++ b/apps/formbricks-com/pages/blog/best-feedback-app-and-how-to-use-them/index.mdx
@@ -14,7 +14,7 @@ import Userpilot from "./userpilot-best-feedback-in-app-tool.png";
export const meta = {
title: "Feedback App Contest: 6 Candidates, 1 Winner (and how to use it)",
description:
- "We looked at the best in app feedback tools 2024 and found a clear winner. Gather feedback in your app for free with Formbricks.",
+ "We looked at the best in-app feedback tools 2024 and found a clear winner. Gather feedback in your app for free with Formbricks.",
date: "2023-12-21",
publishedTime: "2023-12-21T12:00:00",
authors: ["Olasunkanmi Balogun"],
@@ -22,7 +22,7 @@ export const meta = {
tags: ["Feedback Apps", "Formbricks", "Userpilot", "Pendo", "Appcues", "Survicate", "Qualaroo"],
};
-
+
diff --git a/apps/formbricks-com/pages/blog/best-hotjar-alternatives-2024-incl-open-source/index.mdx b/apps/formbricks-com/pages/blog/best-hotjar-alternatives-2024-incl-open-source/index.mdx
index 54195997ad..29523c91c9 100644
--- a/apps/formbricks-com/pages/blog/best-hotjar-alternatives-2024-incl-open-source/index.mdx
+++ b/apps/formbricks-com/pages/blog/best-hotjar-alternatives-2024-incl-open-source/index.mdx
@@ -64,7 +64,7 @@ Let's have a look at the best HotJar alternatives in 2024, including open source
diff --git a/apps/formbricks-com/pages/blog/best-open-source-survey-software-2023/index.mdx b/apps/formbricks-com/pages/blog/best-open-source-survey-software-2023/index.mdx
index 33c4414d6f..fab8e93587 100644
--- a/apps/formbricks-com/pages/blog/best-open-source-survey-software-2023/index.mdx
+++ b/apps/formbricks-com/pages/blog/best-open-source-survey-software-2023/index.mdx
@@ -30,13 +30,13 @@ _Most open source projects get abandoned after a while. But these 5 open source
Looking for the perfect open source survey tool to help you gather valuable insights and improve your business? Look no further!
-We've compiled a list of the top 5 open source form and survey tools that are still maintained in 2024. In app surveys, conversational bots, AI-generated surveys: These open source tools offer various features that cater to different needs.
+We've compiled a list of the top 5 open source form and survey tools that are still maintained in 2024. In-app surveys, conversational bots, AI-generated surveys: These open source tools offer various features that cater to different needs.
-## 1. Formbricks - In app micro surveys
+## 1. Formbricks - In-app micro surveys
@@ -125,7 +125,7 @@ LimeSurvey has been around for at least a decade. It's a powerful survey tool ma
In this article, we've rounded up the top 5 open source form and survey tools that are still rocking it in 2024. Perfect for devs who are always on the lookout for the latest and greatest!
-1. Formbricks: A game-changer for in app micro surveys, letting you target specific customer segments at any point in their journey. It's still early days, but this bad boy is worth keeping an eye on.
+1. Formbricks: A game-changer for in-app micro surveys, letting you target specific customer segments at any point in their journey. It's still early days, but this bad boy is worth keeping an eye on.
2. SurveyJS: A must-have for DIY enthusiasts, this collection of JavaScript libraries makes building your own form management system a breeze. Just remember, the starting price is $499/year.
diff --git a/apps/formbricks-com/pages/blog/best-website-feedback-tools-2024/index.mdx b/apps/formbricks-com/pages/blog/best-website-feedback-tools-2024/index.mdx
index 461b74e0f2..ed55ee0158 100644
--- a/apps/formbricks-com/pages/blog/best-website-feedback-tools-2024/index.mdx
+++ b/apps/formbricks-com/pages/blog/best-website-feedback-tools-2024/index.mdx
@@ -2,17 +2,17 @@ import AuthorBox from "@/components/shared/AuthorBox";
import LayoutMdx from "@/components/shared/LayoutMdx";
import Image from "next/image";
-import CrazyEgg from './crazy-egg-website-optimization-heatmaps-recordings-surveys.png'
-import CoverImage from './cover-best-feedbackt-tools-2024-open-source-website-surveys-targeted.webp'
-import Formbricks from './formbricks-privacy-first-experience-management.png'
-import Hotjar from './hotjar-website-heatmaps-behavior-analytics-tools.png'
-import IdeaScale from './idea-and-innovation-management-software-ideaScale.png'
-import Mopinion from './mopinion-feedback-for-websites-apps-and-email.png'
-import Sprinklr from './sprinklr-unified-customer-experience-management-platform-sprinklr.png'
-import SurveyMonkey from './surveyMonkey-the-world-most-popular-free-online-survey-tool.png'
-import Qualaroo from './user-research-customer-feedback-software-qualaroo.png'
-import UserReport from './userReport-simple-user-engagement-tools-that-help-you-improve.png'
-import UserSnap from './usersnap-your-number-one-user-feedback-platform.png'
+import CoverImage from './cover-best-feedbackt-tools-2024-open-source-website-surveys-targeted.webp';
+import CrazyEgg from './crazy-egg-website-optimization-heatmaps-recordings-surveys.png';
+import Formbricks from './formbricks-privacy-first-experience-management.png';
+import Hotjar from './hotjar-website-heatmaps-behavior-analytics-tools.png';
+import IdeaScale from './idea-and-innovation-management-software-ideaScale.png';
+import Mopinion from './mopinion-feedback-for-websites-apps-and-email.png';
+import Sprinklr from './sprinklr-unified-customer-experience-management-platform-sprinklr.png';
+import SurveyMonkey from './surveyMonkey-the-world-most-popular-free-online-survey-tool.png';
+import Qualaroo from './user-research-customer-feedback-software-qualaroo.png';
+import UserReport from './userReport-simple-user-engagement-tools-that-help-you-improve.png';
+import UserSnap from './usersnap-your-number-one-user-feedback-platform.png';
export const meta = {
title: "Best Website Feedback Tools in 2024",
@@ -68,7 +68,7 @@ These tools, as we’ll see, are tools that help you collect and analyze the opi
diff --git a/apps/formbricks-com/pages/blog/how-smart-writers-use-formbricks-open-source-tool-to-measure-the-quality-of-their-newsletter-content/index.mdx b/apps/formbricks-com/pages/blog/how-smart-writers-use-formbricks-open-source-tool-to-measure-the-quality-of-their-newsletter-content/index.mdx
index 7aad2d6da6..e064009563 100644
--- a/apps/formbricks-com/pages/blog/how-smart-writers-use-formbricks-open-source-tool-to-measure-the-quality-of-their-newsletter-content/index.mdx
+++ b/apps/formbricks-com/pages/blog/how-smart-writers-use-formbricks-open-source-tool-to-measure-the-quality-of-their-newsletter-content/index.mdx
@@ -19,7 +19,7 @@ export const meta = {
tags: ["Improve Newsletter Content"],
};
-
+
diff --git a/apps/formbricks-com/pages/community/index.tsx b/apps/formbricks-com/pages/community/index.tsx
index 196c920055..14cc8342e8 100644
--- a/apps/formbricks-com/pages/community/index.tsx
+++ b/apps/formbricks-com/pages/community/index.tsx
@@ -202,9 +202,9 @@ const FAQ = [
"The commercial plan is for features who break the OSS WIN-WIN Loop or incur additional cost. We charge 30$ if you want a custom domain, remove Formbricks branding, collect large files in surveys or collect payments. We think that’s fair :)",
},
{
- question: "Are your in app surveys also free forever?",
+ question: "Are your in-app surveys also free forever?",
answer:
- "The in app surveys you can run with Formbricks are not part of this Deal. We offer a generous free plan but keep full control over the pricing in the long run. In app surveys are really powerful for products with thousands of users and something has to bring in the dollars.",
+ "The in-app surveys you can run with Formbricks are not part of this Deal. We offer a generous free plan but keep full control over the pricing in the long run. In-app surveys are really powerful for products with thousands of users and something has to bring in the dollars.",
},
{
diff --git a/apps/formbricks-com/pages/demo/index.tsx b/apps/formbricks-com/pages/demo/index.tsx
deleted file mode 100644
index 0673c8eca6..0000000000
--- a/apps/formbricks-com/pages/demo/index.tsx
+++ /dev/null
@@ -1,12 +0,0 @@
-import Layout from "@/components/demo/LayoutLight";
-import DemoView from "@/components/dummyUI/DemoView";
-
-export default function DemoPage() {
- return (
-
-
-
- );
-}
diff --git a/apps/formbricks-com/pages/in-app-survey/1-in-app-survey-open-source-free-gdpr-compliant-for-in-product-research.png b/apps/formbricks-com/pages/in-app-survey/1-in-app-survey-open-source-free-gdpr-compliant-for-in-product-research.png
new file mode 100644
index 0000000000..22123d1888
Binary files /dev/null and b/apps/formbricks-com/pages/in-app-survey/1-in-app-survey-open-source-free-gdpr-compliant-for-in-product-research.png differ
diff --git a/apps/formbricks-com/pages/in-app-survey/2-in-app-survey-open-source-sprig-alternative.png b/apps/formbricks-com/pages/in-app-survey/2-in-app-survey-open-source-sprig-alternative.png
new file mode 100644
index 0000000000..1a03344b84
Binary files /dev/null and b/apps/formbricks-com/pages/in-app-survey/2-in-app-survey-open-source-sprig-alternative.png differ
diff --git a/apps/formbricks-com/pages/in-app-survey/3-granular-targeting-for-in-app-surveys-open-source.png b/apps/formbricks-com/pages/in-app-survey/3-granular-targeting-for-in-app-surveys-open-source.png
new file mode 100644
index 0000000000..069b6c3e15
Binary files /dev/null and b/apps/formbricks-com/pages/in-app-survey/3-granular-targeting-for-in-app-surveys-open-source.png differ
diff --git a/apps/formbricks-com/pages/in-app-survey/4-multi-language-in-app-survey-translation-rtl-ltr.png b/apps/formbricks-com/pages/in-app-survey/4-multi-language-in-app-survey-translation-rtl-ltr.png
new file mode 100644
index 0000000000..d486cd673c
Binary files /dev/null and b/apps/formbricks-com/pages/in-app-survey/4-multi-language-in-app-survey-translation-rtl-ltr.png differ
diff --git a/apps/formbricks-com/pages/in-app-survey/5-fast-loading-in-product-surveys-for-apps-and-web-apps.png b/apps/formbricks-com/pages/in-app-survey/5-fast-loading-in-product-surveys-for-apps-and-web-apps.png
new file mode 100644
index 0000000000..f95d11fd2b
Binary files /dev/null and b/apps/formbricks-com/pages/in-app-survey/5-fast-loading-in-product-surveys-for-apps-and-web-apps.png differ
diff --git a/apps/formbricks-com/pages/in-app-survey/6-in-app-survey-native-look-and-feel-design-open-source.png b/apps/formbricks-com/pages/in-app-survey/6-in-app-survey-native-look-and-feel-design-open-source.png
new file mode 100644
index 0000000000..9d9a715548
Binary files /dev/null and b/apps/formbricks-com/pages/in-app-survey/6-in-app-survey-native-look-and-feel-design-open-source.png differ
diff --git a/apps/formbricks-com/pages/in-app-survey/7-unlimited-in-product-surveys-seats-team-members-open-source-and-free.png b/apps/formbricks-com/pages/in-app-survey/7-unlimited-in-product-surveys-seats-team-members-open-source-and-free.png
new file mode 100644
index 0000000000..39aa208e3f
Binary files /dev/null and b/apps/formbricks-com/pages/in-app-survey/7-unlimited-in-product-surveys-seats-team-members-open-source-and-free.png differ
diff --git a/apps/formbricks-com/pages/in-app-survey/8-team-roles-micro-surveys-in-app-open-source-and-for-free.png b/apps/formbricks-com/pages/in-app-survey/8-team-roles-micro-surveys-in-app-open-source-and-for-free.png
new file mode 100644
index 0000000000..4e9ebb83b4
Binary files /dev/null and b/apps/formbricks-com/pages/in-app-survey/8-team-roles-micro-surveys-in-app-open-source-and-for-free.png differ
diff --git a/apps/formbricks-com/pages/in-app-survey/9-reusable-segments-open-source-in-product-survey-software.png b/apps/formbricks-com/pages/in-app-survey/9-reusable-segments-open-source-in-product-survey-software.png
new file mode 100644
index 0000000000..75c925dc1b
Binary files /dev/null and b/apps/formbricks-com/pages/in-app-survey/9-reusable-segments-open-source-in-product-survey-software.png differ
diff --git a/apps/formbricks-com/pages/in-app-survey/index.tsx b/apps/formbricks-com/pages/in-app-survey/index.tsx
new file mode 100644
index 0000000000..e31059912f
--- /dev/null
+++ b/apps/formbricks-com/pages/in-app-survey/index.tsx
@@ -0,0 +1,312 @@
+import FeatureCard from "@/components/salespage/FeatureCard";
+import LayoutLight from "@/components/salespage/LayoutLight";
+import LogoBar from "@/components/salespage/LogoBar";
+import SalesBreaker from "@/components/salespage/SalesBreaker";
+import SalesPageFeature from "@/components/salespage/SalesPageFeature";
+import SalesPageHero from "@/components/salespage/SalesPageHero";
+import SalesSteps from "@/components/salespage/SalesSteps";
+import SalesTestimonial from "@/components/salespage/SalesTestimonial";
+import HeadingCentered from "@/components/shared/HeadingCentered";
+import SeoFaq from "@/components/shared/Seo/SeoFaq";
+import Bailey from "@/images/clients/headshots/bailey.jpeg";
+import Ram from "@/images/clients/headshots/ram.jpeg";
+import Sachin from "@/images/clients/headshots/sachin.jpeg";
+import {
+ IoCalendarNumber,
+ IoCaretDownCircle,
+ IoFileTrayFull,
+ IoFilter,
+ IoPlayForward,
+ IoStopwatch,
+} from "react-icons/io5";
+
+import Img1 from "./1-in-app-survey-open-source-free-gdpr-compliant-for-in-product-research.png";
+import Img2 from "./2-in-app-survey-open-source-sprig-alternative.png";
+import Img3 from "./3-granular-targeting-for-in-app-surveys-open-source.png";
+import Img4 from "./4-multi-language-in-app-survey-translation-rtl-ltr.png";
+import Img5 from "./5-fast-loading-in-product-surveys-for-apps-and-web-apps.png";
+import Img6 from "./6-in-app-survey-native-look-and-feel-design-open-source.png";
+import Img7 from "./7-unlimited-in-product-surveys-seats-team-members-open-source-and-free.png";
+import Img8 from "./8-team-roles-micro-surveys-in-app-open-source-and-for-free.png";
+import Img9 from "./9-reusable-segments-open-source-in-product-survey-software.png";
+
+const inAppSurveySteps = [
+ {
+ id: "1",
+ name: "Connect your app",
+ description:
+ "Install the Formbricks SDK with your favorite package manager in seconds. Run native inapp surveys within minutes.",
+ },
+ {
+ id: "2",
+ name: "Pre-segment cohorts",
+ description:
+ "Send attributes and events to Formbricks to create usage-based cohorts. Send out highly targeted app surveys for better insights.",
+ },
+ {
+ id: "3",
+ name: "AI analysis",
+ description:
+ "Analyze insights in Formbricks in a breeze with our AI. Enable everyone in your team to get the most out of your in-product research.",
+ },
+];
+
+const inAppSurveyFeatures = [
+ {
+ headline: "Granular in-app targeting",
+ subheadline:
+ "Combine usage data with custom attributes and device information for fine-grained targeting. Targeted embedded surveys mean better insights for your research team and a better UX for your users.",
+ imgSrc: Img3,
+ imgAlt: "Screenshot of granular targeting feature in an in-app survey tool",
+ imgLeft: false,
+ },
+ {
+ headline: "Multi-language app surveys",
+ subheadline:
+ "For app surveys to fit in smoothly, they should feel like a part of your UI. Matching languages plays a big role for seamless product research. Formbricks lets you handle survey translations easily.",
+ imgSrc: Img4,
+ imgAlt: "Example of a multi-language survey embedded in a mobile app",
+ imgLeft: true,
+ },
+ {
+ headline: "Super fast loading",
+ subheadline:
+ "The Formbricks SDK is tiny (7KB). Keep your app lightning fast and your users engaged. The in-app survey SDK always loads deferred and never slows down your app.",
+ imgSrc: Img5,
+ imgAlt: "Demonstration of super fast loading times for an embedded survey in an app",
+ imgLeft: false,
+ },
+ {
+ headline: "On brand design",
+ subheadline:
+ "Customize your embedded surveys to fit in. Match the look & feel of your embedded surveys with your app. Leverage our no-code design editor or load a custom style sheet - all on the free plan!",
+ imgSrc: Img6,
+ imgAlt: "Preview of an on-brand design survey custom designed to fit within an app",
+ imgLeft: true,
+ },
+ {
+ headline: "Unlimited seats & products included",
+ subheadline:
+ "Embed Formbricks to run surveys in as many apps as you wish, without additional cost. Invite everyone who should work with user insights (hence, everyone). Product survey tools should never limit how far customer insights spread within a company.",
+ imgSrc: Img7,
+ imgAlt: "Illustration of embedding Formbricks surveys across multiple mobile apps",
+ imgLeft: false,
+ },
+];
+
+const linkSurveyFeaturesPt2 = [
+ {
+ headline: "Team roles",
+ subheadline:
+ "Control who can set up app surveys, and who gets to work with the insights gathered by your reserach. Granular access control allows everyone to work with the insights gathered with in-product research.",
+ imgSrc: Img8,
+ imgAlt: "Interface showcasing team roles and access rights for in-app survey setup and insights",
+ imgLeft: true,
+ },
+ {
+ headline: "Reuse segments to target consistently",
+ subheadline:
+ "Compose segments of app users with advanced filters. Reuse these segments to survey the same cohorts consistently. Keeping your targeting consistent allows to measure how much your app experience improves over time.",
+ imgSrc: Img9,
+ imgAlt: "Visualization of creating and reusing segments for targeted surveys inapp",
+ imgLeft: false,
+ },
+];
+
+const allFeaturesList = [
+ {
+ title: "Show survey to % of user",
+ text: "Only show surveys to e.g. 50% of visitors.",
+ icon: IoFilter,
+ },
+ {
+ title: "Add delay before showing",
+ text: "Wait a few seconds before showing the survey",
+ icon: IoStopwatch,
+ },
+ {
+ title: "Auto close in inactivity",
+ text: "Auto close a survey if the visitors does not interact.",
+ icon: IoCaretDownCircle,
+ },
+ {
+ title: "Close survey on response limit",
+ text: "Auto-close a survey after hitting e.g. 50 responses",
+ icon: IoFileTrayFull,
+ },
+ {
+ title: "Close survey on date",
+ text: "Auto-close a survey on a specific date.",
+ icon: IoCalendarNumber,
+ },
+ {
+ title: "Redirect on completion",
+ text: "Redirect visitors after they completed your survey.",
+ icon: IoPlayForward,
+ },
+];
+
+const FAQs = [
+ {
+ question: "Is Formbricks really free for creating embedded or in-app surveys?",
+ answer:
+ "Yes, Formbricks offers both a free Cloud plan and an open source community edition. This makes it an accessible choice for deploying embedded surveys and in-app survey. Advanced features are available for those needing more specialized capabilities.",
+ },
+ {
+ question: "Can I self-host Formbricks for more control over my product research tools?",
+ answer:
+ "Absolutely. Formbricks can be self-hosted with one click via our Docker image. This gives you full control over your product survey tools, while ensuring data privacy and compliance.",
+ },
+ {
+ question:
+ "How does Formbricks compare to other micro survey software in terms of features and flexibility?",
+ answer:
+ "Formbricks offers a comprehensive suite of features for embedded surveys, in-app feedback, and micro surveys. For see the speed development, have a look at the Formbricks repository on GitHub linked in the Footer. In case you're missing something, just let us know and we'll build it.",
+ },
+ {
+ question: "Is Formbricks GDPR-compliant for use as an in-app survey tool and embedded survey platform?",
+ answer:
+ "Yes, Formbricks is fully GDPR and CCPA compliant. It's a reliable choice for businesses seeking an in-app survey tool which handles potentially personalized data. Hosted in Frankfurt, Germany, and developed by a German company, it ensures the highest standards of data protection.",
+ },
+ {
+ question: "Can Formbricks help in conducting micro surveys within a mobile app?",
+ answer: "Currently, we do not offer SDKs for mobile apps yet. However, this is on the roadmap for 2024.",
+ },
+ {
+ question: "What are the best tools for creating an app survey?",
+ answer:
+ "For creating app surveys, Formbricks is among the top tools. As an open source product, we keep developer requirements at heart. However, the UX of Formbricks is designed also support marketers, researchers and sales reps in their work.",
+ },
+ {
+ question: "How can I implement an in-app survey effectively?",
+ answer:
+ "To implement an in-app survey effectively, use Formbricks to embed surveys directly into your application. In-product research has higher conversion and completion rates than any other form of surveying.",
+ },
+ {
+ question: "What is a micro survey and how can I use it with Formbricks?",
+ answer:
+ "A micro survey is a short, focused survey designed to capture quick insights. With Formbricks, you can easily create and embed these micro surveys into your website or app, enhancing the user experience and obtaining precise feedback.",
+ },
+ {
+ question: "Are embedded surveys more effective for user engagement?",
+ answer:
+ "Yes, embedded surveys, like those created with Formbricks, are highly effective for user engagement. They blend naturally with the app or website, encouraging more users to participate and share their insights without leaving the platform.",
+ },
+ {
+ question: "What advantages does Formbricks offer for in-app survey tools?",
+ answer:
+ "Formbricks offers numerous advantages for in-app surveys, including easy integration, real-time analytics, customizable survey templates, and micro survey capabilities. It's a powerful tool for enhancing user engagement and feedback collection.",
+ },
+];
+
+export default function LinkSurveyPage() {
+ return (
+
+
+ In-app Surveys People Want to Fill Out
+
+ }
+ subheadline="In-product user research with a native look and feel. Ask only the right cohort, ask gracefully."
+ imgSrc={Img1}
+ imgAlt="Targeted in-app surveys built on open source technology."
+ />
+
+
+
+
+
+
+
+ {inAppSurveyFeatures.map((feature) => {
+ return (
+
+ );
+ })}
+
+ {linkSurveyFeaturesPt2.map((feature) => {
+ return (
+
+ );
+ })}
+
+
+
+ In-app surveys exactly how you want them
+
+ }
+ teaser="All features backed in"
+ />
+
+ {allFeaturesList.map((feature) => {
+ return (
+
+ );
+ })}
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/apps/formbricks-com/pages/index.tsx b/apps/formbricks-com/pages/index.tsx
index 9fa01c0e6d..437c0e67c3 100644
--- a/apps/formbricks-com/pages/index.tsx
+++ b/apps/formbricks-com/pages/index.tsx
@@ -7,19 +7,19 @@ import Steps from "@/components/home/Steps";
import BestPractices from "@/components/shared/BestPractices";
import BreakerCTA from "@/components/shared/BreakerCTA";
import Layout from "@/components/shared/Layout";
+import AnimationFallback from "@/public/animations/opensource-xm-platform-formbricks-fallback.png";
+
+import HeroAnimation from "../components/home/HeroAnimation";
const IndexPage = () => (
-
+
- {/*
-
-
*/}
(
href="https://app.formbricks.com/auth/signup"
/>
-
-
(
href="https://app.formbricks.com/auth/signup"
inverted
/>
-
+
);
diff --git a/apps/formbricks-com/pages/open-source-form-builder/1-open-source-typeform-alternative-free.png b/apps/formbricks-com/pages/open-source-form-builder/1-open-source-typeform-alternative-free.png
new file mode 100644
index 0000000000..2e57817f9c
Binary files /dev/null and b/apps/formbricks-com/pages/open-source-form-builder/1-open-source-typeform-alternative-free.png differ
diff --git a/apps/formbricks-com/pages/open-source-form-builder/10-multi-language-surveys-free-and-open-source.png b/apps/formbricks-com/pages/open-source-form-builder/10-multi-language-surveys-free-and-open-source.png
new file mode 100644
index 0000000000..597e4ad530
Binary files /dev/null and b/apps/formbricks-com/pages/open-source-form-builder/10-multi-language-surveys-free-and-open-source.png differ
diff --git a/apps/formbricks-com/pages/open-source-form-builder/2-finally-good-open-source-forms-for-free.png b/apps/formbricks-com/pages/open-source-form-builder/2-finally-good-open-source-forms-for-free.png
new file mode 100644
index 0000000000..2b70f3742e
Binary files /dev/null and b/apps/formbricks-com/pages/open-source-form-builder/2-finally-good-open-source-forms-for-free.png differ
diff --git a/apps/formbricks-com/pages/open-source-form-builder/3-free-online-form-builder-unlimited-forms-and-responses.png b/apps/formbricks-com/pages/open-source-form-builder/3-free-online-form-builder-unlimited-forms-and-responses.png
new file mode 100644
index 0000000000..362555fe26
Binary files /dev/null and b/apps/formbricks-com/pages/open-source-form-builder/3-free-online-form-builder-unlimited-forms-and-responses.png differ
diff --git a/apps/formbricks-com/pages/open-source-form-builder/4-all-question-types-an-open-source-form-builder-needs.png b/apps/formbricks-com/pages/open-source-form-builder/4-all-question-types-an-open-source-form-builder-needs.png
new file mode 100644
index 0000000000..8181ab4db2
Binary files /dev/null and b/apps/formbricks-com/pages/open-source-form-builder/4-all-question-types-an-open-source-form-builder-needs.png differ
diff --git a/apps/formbricks-com/pages/open-source-form-builder/5-all-question-types-an-open-source-form-builder-needs.png b/apps/formbricks-com/pages/open-source-form-builder/5-all-question-types-an-open-source-form-builder-needs.png
new file mode 100644
index 0000000000..7dad838f08
Binary files /dev/null and b/apps/formbricks-com/pages/open-source-form-builder/5-all-question-types-an-open-source-form-builder-needs.png differ
diff --git a/apps/formbricks-com/pages/open-source-form-builder/6-slack-zapier-hubspot-integration-for-open-source-form-builder-online.png b/apps/formbricks-com/pages/open-source-form-builder/6-slack-zapier-hubspot-integration-for-open-source-form-builder-online.png
new file mode 100644
index 0000000000..225b1ec11a
Binary files /dev/null and b/apps/formbricks-com/pages/open-source-form-builder/6-slack-zapier-hubspot-integration-for-open-source-form-builder-online.png differ
diff --git a/apps/formbricks-com/pages/open-source-form-builder/7-embed-open-source-form-any-where-you-need-it.png b/apps/formbricks-com/pages/open-source-form-builder/7-embed-open-source-form-any-where-you-need-it.png
new file mode 100644
index 0000000000..7e717b89fc
Binary files /dev/null and b/apps/formbricks-com/pages/open-source-form-builder/7-embed-open-source-form-any-where-you-need-it.png differ
diff --git a/apps/formbricks-com/pages/open-source-form-builder/8-pre-populate-typeform-open-source-alternative.png b/apps/formbricks-com/pages/open-source-form-builder/8-pre-populate-typeform-open-source-alternative.png
new file mode 100644
index 0000000000..068de3f8c0
Binary files /dev/null and b/apps/formbricks-com/pages/open-source-form-builder/8-pre-populate-typeform-open-source-alternative.png differ
diff --git a/apps/formbricks-com/pages/open-source-form-builder/9-conditional-logic-jumps-for-free-open-source-online-form-builder.png b/apps/formbricks-com/pages/open-source-form-builder/9-conditional-logic-jumps-for-free-open-source-online-form-builder.png
new file mode 100644
index 0000000000..3e180a7c06
Binary files /dev/null and b/apps/formbricks-com/pages/open-source-form-builder/9-conditional-logic-jumps-for-free-open-source-online-form-builder.png differ
diff --git a/apps/formbricks-com/pages/open-source-form-builder/index.tsx b/apps/formbricks-com/pages/open-source-form-builder/index.tsx
new file mode 100644
index 0000000000..1dc4860760
--- /dev/null
+++ b/apps/formbricks-com/pages/open-source-form-builder/index.tsx
@@ -0,0 +1,498 @@
+import FeatureCard from "@/components/salespage/FeatureCard";
+import LayoutLight from "@/components/salespage/LayoutLight";
+import LogoBar from "@/components/salespage/LogoBar";
+import SalesBreaker from "@/components/salespage/SalesBreaker";
+import SalesPageFeature from "@/components/salespage/SalesPageFeature";
+import SalesPageHero from "@/components/salespage/SalesPageHero";
+import SalesSteps from "@/components/salespage/SalesSteps";
+import SalesTestimonial from "@/components/salespage/SalesTestimonial";
+import HeadingCentered from "@/components/shared/HeadingCentered";
+import SeoFaq from "@/components/shared/Seo/SeoFaq";
+import Jonathan from "@/images/clients/headshots/jonathan.png";
+import Peer from "@/images/clients/headshots/peer.jpeg";
+import {
+ BadgeCheck,
+ CalendarRange,
+ Check,
+ CreditCard,
+ Gauge,
+ Grid,
+ Hammer,
+ Headset,
+ Home,
+ Image,
+ List,
+ ListTodoIcon,
+ MessageSquareText,
+ MousePointerClick,
+ PencilIcon,
+ Star,
+ Upload,
+} from "lucide-react";
+
+import Img1 from "./1-open-source-typeform-alternative-free.png";
+import Img2 from "./2-finally-good-open-source-forms-for-free.png";
+import Img3 from "./3-free-online-form-builder-unlimited-forms-and-responses.png";
+import Img4 from "./4-all-question-types-an-open-source-form-builder-needs.png";
+import Img5 from "./5-all-question-types-an-open-source-form-builder-needs.png";
+import Img6 from "./6-slack-zapier-hubspot-integration-for-open-source-form-builder-online.png";
+import Img7 from "./7-embed-open-source-form-any-where-you-need-it.png";
+import Img8 from "./8-pre-populate-typeform-open-source-alternative.png";
+import Img9 from "./9-conditional-logic-jumps-for-free-open-source-online-form-builder.png";
+import Img10 from "./10-multi-language-surveys-free-and-open-source.png";
+
+const linkSurveySteps = [
+ {
+ id: "1",
+ name: "Register for free",
+ description: "Sign up for lifelong access to our open source at no cost.",
+ },
+ {
+ id: "2",
+ name: "Design your forms",
+ description: "Build your open source forms in minutes. Style it to match your brand.",
+ },
+ {
+ id: "3",
+ name: "AI insights",
+ description:
+ "Analyze responses right in Formbricks. Or pipe them to where you need them via one of our native integrations.",
+ },
+];
+
+const linkSurveyFeaturesPt1 = [
+ {
+ headline: "Free forms forever, unlimited",
+ subheadline:
+ "Get unlimited forms, responses, team members and workspaces in our open source web forms builder. In the Cloud we only charge for branding removal. Self-host with one click and remove the branding from all forms for free.",
+ imgSrc: Img3,
+ imgAlt: "Unlimited open source web forms displayed on various devices",
+ imgLeft: false,
+ },
+ {
+ headline: "The 'Do everything' forms",
+ subheadline:
+ "Our open source forms builder packs all question types you can think of. As a community-driven project, we build what our community needs: Your feedback makes Formbricks the best free web form builder out there.",
+ imgSrc: Img4,
+ imgAlt: "Versatile form types available in Formbricks open source form builder",
+ imgLeft: true,
+ },
+ {
+ headline: "100% on brand design",
+ subheadline:
+ "Create your open source web surveys in exactly the look & feel of your brand. Change colors or roundness, and set background images or animations to get exactly the look you want. Formbricks open source approach let's you customize your forms as much as you want.",
+ imgSrc: Img5,
+ imgAlt: "Customizable open source survey design matching brand identity",
+ imgLeft: false,
+ },
+ {
+ headline: "Slack, Zapier, Hubspot",
+ subheadline:
+ "Use native integrations into all of your tools. Keep your respondents data safe and your Privacy Policy short. The Formbricks community integrations make our web form builder the most versatile and extendable solution on the internet.",
+ imgSrc: Img6,
+ imgAlt: "Open source form builder integrating with Slack, Zapier, and Hubspot",
+ imgLeft: true,
+ },
+ {
+ headline: "Embed anywhere",
+ subheadline:
+ "Embed forms websites and in emails. Get your open source surveys in front of the right people effortlessly. You want to embed forms on a WordPress page? Our community is working on a free WordPress form plugin as we speak.",
+ imgSrc: Img7,
+ imgAlt: "Embeddable open source form on a website and email",
+ imgLeft: false,
+ },
+ {
+ headline: "Pre-populate form fields",
+ subheadline:
+ "Prefill form fields with data you already have. Enrich your analysis by gathering all data points in one secure place. Versatile link prefilling let's you collect all data on one open source survey platform.",
+ imgSrc: Img8,
+ imgAlt: "Data pre-population feature in an open source forms builder",
+ imgLeft: true,
+ },
+ {
+ headline: "Conditional logic",
+ subheadline:
+ "Jump questions based on previous answers for higher completion rates. Conditional logic let’s you freely personalize the survey experience. Formbricks is the only open source form builder with comprehensive logic capabilities built-in.",
+ imgSrc: Img9,
+ imgAlt: "Open source form with conditional logic for personalized surveys",
+ imgLeft: false,
+ },
+ {
+ headline: "Multi-language surveys",
+ subheadline:
+ "Run the same survey in several languages. Analyse all languages together or filter for specific languages. Not even Typeform has multi-language surveys but our open source forms builder does.",
+ imgSrc: Img10,
+ imgAlt: "Multi-language survey capability in open source form builder",
+ imgLeft: true,
+ },
+];
+const linkSurveyFeaturesPt2 = [
+ {
+ headline: "Pre-populate fields",
+ subheadline:
+ "Prefill fields with data you have already. Enrich your analysis by gathering all data points in one place. Versatile link prefilling lets you collect all data on our open source platform.",
+ imgSrc: Img8,
+ imgAlt: "Pre-populating fields in an open source form builder for enhanced data collection",
+ imgLeft: true,
+ },
+ {
+ headline: "Conditional logic",
+ subheadline:
+ "Jump questions based on previous answers for higher completion rate. Conditional logic lets you personalize the survey experience. Formbricks is the only open source form builder with comprehensive logic capabilities included.",
+ imgSrc: Img9,
+ imgAlt: "Custom survey paths using conditional logic in open source forms builder",
+ imgLeft: false,
+ },
+ {
+ headline: "Multi-language surveys",
+ subheadline:
+ "Run the same survey in several languages. Analyse all languages together or filter out feedback provided in specific languages. Not even Typeform has multi-language surveys, but our open source forms builder can handle it.",
+ imgSrc: Img10,
+ imgAlt: "Multi-language support in open source form builder, showcasing global survey capabilities",
+ imgLeft: true,
+ },
+];
+
+const allFeaturesList = [
+ {
+ title: "Close on response limit",
+ text: "Auto-close a survey after hitting e.g. 50 responses.",
+ icon: Check,
+ },
+ {
+ title: "Close on date",
+ text: "Auto-close a survey on a specific date.",
+ icon: Check,
+ },
+ {
+ title: "Redirect on completion",
+ text: "Redirect visitors after they completed your survey.",
+ icon: Check,
+ },
+ {
+ title: "Custom ‘Survey closed’ message",
+ text: "Adjust how you tell respondents that your survey is closed.",
+ icon: Check,
+ },
+ {
+ title: "Single-use survey links",
+ text: "Generate links which can be used only once.",
+ icon: Check,
+ },
+ {
+ title: "Verify email before response",
+ text: "Ask for a valid email before allowing people to respond.",
+ icon: Check,
+ },
+ {
+ title: "PIN protected forms",
+ text: "Require a PIN before letting people respond.",
+ icon: Check,
+ },
+ {
+ title: "Hidden fields",
+ text: "Add hidden fields you can prepulate via URL.",
+ icon: Check,
+ },
+ {
+ title: "Multi-language surveys",
+ text: "Translate your surveys, analyze responses together.",
+ icon: Check,
+ },
+ {
+ title: "Email notifications",
+ text: "Receive emails when people respond to your surveys",
+ icon: Check,
+ },
+ {
+ title: "Partial submissions",
+ text: "Get all the insights down to the very first answer.",
+ icon: Check,
+ },
+ {
+ title: "Recall information",
+ text: "Pipe answers from previous quesitons for better questions.",
+ icon: Check,
+ },
+ {
+ title: "Add images to questions",
+ text: "Add an image or video to any question.",
+ icon: Check,
+ },
+ {
+ title: "Add videos to questions",
+ text: "Add an image or video to any question.",
+ icon: Hammer,
+ },
+ {
+ title: "Branded surveys",
+ text: "Add your logo at the header of you survey.",
+ icon: Hammer,
+ },
+ {
+ title: "Custom domains",
+ text: "Add your domain for higher brand recognition and trust.",
+ icon: Hammer,
+ },
+ {
+ title: "Calculations & quizzing",
+ text: "Redirect visitors after they completed your survey.",
+ icon: Hammer,
+ },
+ {
+ title: "Auto-email respondents",
+ text: "Auto-close a survey after hitting e.g. 50 responses.",
+ icon: Hammer,
+ },
+ {
+ title: "Dropdowns & Rankings",
+ text: "Auto-close a survey after hitting e.g. 50 responses.",
+ icon: Hammer,
+ },
+ {
+ title: "Question groups",
+ text: "Auto-close a survey on a specific date.",
+ icon: Hammer,
+ },
+];
+
+const allQuestionTypes = [
+ {
+ title: "Address field",
+ text: "Gather addresses",
+ icon: Home,
+ },
+ {
+ title: "File upload",
+ text: "Handle file uploads",
+ icon: Upload,
+ },
+ {
+ title: "Net Promoter Score",
+ text: "NPS",
+ icon: Gauge,
+ },
+ {
+ title: "Picture selection",
+ text: "Find out what resonates",
+ icon: Image,
+ },
+ {
+ title: "Date picker",
+ text: "Ask for specific dates",
+ icon: CalendarRange,
+ },
+ {
+ title: "Schedule a meeting",
+ text: "Powered by Cal.com",
+ icon: Headset,
+ },
+ {
+ title: "Open text",
+ text: "Free text field",
+ icon: MessageSquareText,
+ },
+ {
+ title: "Single select",
+ text: "Radio select field",
+ icon: List,
+ },
+ {
+ title: "Multi select",
+ text: "List of checkboxes",
+ icon: ListTodoIcon,
+ },
+ {
+ title: "Rating",
+ text: "Stars, smiles or numbers",
+ icon: Star,
+ },
+ {
+ title: "Call to action",
+ text: "Prompt users with a CTA",
+ icon: MousePointerClick,
+ },
+ {
+ title: "Consent",
+ text: "Ask for consent.",
+ icon: BadgeCheck,
+ },
+ {
+ title: "Signature (soon)",
+ text: "Powered by Documenso",
+ icon: PencilIcon,
+ },
+ {
+ title: "Collect payments (soon)",
+ text: "Powered by Stripe",
+ icon: CreditCard,
+ },
+ {
+ title: "Matrix question (soon)",
+ text: "Run scientific surveys",
+ icon: Grid,
+ },
+];
+
+const FAQs = [
+ {
+ question: "Is Formbricks truly a free and open source forms builder?",
+ answer:
+ "Absolutely, Formbricks is crafted for the community by the community. It's an open source project to build a free form builder for the web. Our open source license ensures its longevity for as long as the internet exists.",
+ },
+ {
+ question: "Can I self-host Formbricks, the open source web forms builder?",
+ answer:
+ "Certainly. You can easily self-host Formbricks with a single click using our Docker image. We aim to build the most developer-friendly open source forms builder ever.",
+ },
+ {
+ question: "How does Formbricks stack up against other JavaScript form builders?",
+ answer:
+ "We've conducted a detailed side-by-side comparison with other tools, including JavaScript form builders. You find the findings on our blog.",
+ },
+ {
+ question: "Is Formbricks GDPR- and CCPA-compliant?",
+ answer:
+ "Indeed. As a German-developed open source form builder, Formbricks operates under strict GDPR and CCPA compliance. Our Cloud is securely hosted in Frankfurt, Germany.",
+ },
+ {
+ question:
+ "I want to help ship this JavaScript form build, how can I contribute to this open source form project?",
+ answer:
+ "We're thrilled to have more hands on deck! Join our community on Discord and start contributing to Formbricks. This opensource forms project is carried by its community.",
+ },
+ {
+ question: "What sets Formbricks apart from other open source web form builders?",
+ answer:
+ "Unlike other open source forms builders, Formbricks is not a hobby project. We build this free web forms builder as a form of marketing for the wider Formbricks experience management platform. While this open source form builder will always be free, more advanced features for enterprise clients are licensed differently.",
+ },
+ {
+ question: "Can Formbricks handle the nitty-gritty of complex form logic and third-party integrations?",
+ answer:
+ "Absolutely, Formbricks is a beast when it comes to complex scenarios. Whether it's weaving through intricate form logic or knitting together various APIs and services, this platform is all set to empower developers with its robust capabilities as an open source forms builder.",
+ },
+ {
+ question: "How tight is the data security with Formbricks?",
+ answer:
+ "Security isn’t an afterthought here; it’s front and center. As an open source form project, Formbricks is committed to keeping your data locked down with best-in-class security practices, regular updates, and compliance with global data protection laws. Rest easy knowing your form data is in safe hands.",
+ },
+ {
+ question: "What kind of customization can you actually do with Formbricks?",
+ answer:
+ "The sky's the limit when it comes to tweaking your forms. Formbricks hands you the keys to the kingdom with full code access, allowing for total customization. Whether you want to adjust the color scheme or overhaul the entire form layout, it’s all doable if you know how to code!",
+ },
+];
+
+export default function LinkSurveyPage() {
+ return (
+
+
+
+
+
+
+ {linkSurveyFeaturesPt1.map((feature) => {
+ return (
+
+ );
+ })}
+
+ {linkSurveyFeaturesPt2.map((feature) => {
+ return (
+
+ );
+ })}
+
+
+
+
+ {allFeaturesList.map((feature) => {
+ return (
+
+ );
+ })}
+
+
+
+
+
+
+ {allQuestionTypes.map((feature) => {
+ return (
+
+ );
+ })}
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/apps/formbricks-com/pages/vs-formspree.mdx b/apps/formbricks-com/pages/vs-formspree.mdx
index 9e6e8f8897..2bf7d45fbb 100644
--- a/apps/formbricks-com/pages/vs-formspree.mdx
+++ b/apps/formbricks-com/pages/vs-formspree.mdx
@@ -1,8 +1,9 @@
-import LayoutMdx from "@/components/shared/LayoutMdx";
-import Image from "next/image";
import { Callout } from "@/components/shared/Callout";
import HeroAnimation from "@/components/shared/HeroAnimation.tsx";
+import LayoutMdx from "@/components/shared/LayoutMdx";
import MdxCTA from "@/components/shared/MdxCTA.tsx";
+import Image from "next/image";
+import Link from "next/link";
import HeaderImage from "/images/SEO/Formspree open source alternative vs Formbricks FormHQ comparison post for form backend as a service.png";
export const meta = {
@@ -61,22 +62,20 @@ Here a detailed overview of both free plans. It’s pretty obvious:
| Forms | unlimited | unlimited |
| Submission Archive | unlimited | 30 days |
| Linked Emails | unlimited | 2 |
-| Auto Responder | ⚙️ | ❌ |
+| Auto Responder | ❌ | ❌ |
| Multiple Email Recipients | ✅ | ❌ |
-| Custom Email Templates | ⚙️ | ❌ |
+| Custom Email Templates | ❌ | ❌ |
| File Uploads | 10MB | ❌ |
-| Submission Export | CSV | ❌ |
-| Airtable Integration | ⚙️ | ❌ |
-| Google Sheets Integration | ⚙️ | ❌ |
-| Zapier Integration | ⚙️ | ❌ |
+| Submission Export | CSV, Excel | ❌ |
+| Airtable Integration | ✅ | ❌ |
+| Google Sheets Integration | ✅ | ❌ |
+| Zapier Integration | ✅ | ❌ |
+| Airtable Integration | ✅ | ❌ |
+| Notion Integration | ✅ | ❌ |
+| Slack Integration | ✅ | ❌ |
| API Access | ✅ | ❌ |
-| Workflows | ✅ | ❌ |
| Self-hosting | ✅ | ❌ |
-
- The Formbricks HQ is still in development and not yet available. Follow us on
- [Twitter](https://twitter.com/formbricks) to stay uptodate on the release!
-
### Functionality
@@ -87,25 +86,24 @@ Formspree offers a wide range of functionality, a lot of which is only accessibl
| Forward Form Data via Email | ✅ | ✅ |
| Multiple To Emails | ✅ | from 18$ / mo |
| Webhooks | ✅ | ❌ |
-| 3rd Party Integrations | ⚙️ | from 8$ / mo |
-| File Uploads | ⚙️ | from 8$ / mo |
+| 3rd Party Integrations | ✅ | from 8$ / mo |
+| File Uploads | ✅ | from 8$ / mo |
| Export submissions | ✅ | from 8$ / mo |
-| Search submissions | ⚙️ | from 18$ / mo |
-| reCaptcha | ⚙️ | ✅ |
-| Restrict to domain | ⚙️ | ✅ |
-| Custom Redirect | ⚙️ | from 18$ / mo |
+| Search submissions | ✅ | from 18$ / mo |
+| reCaptcha | ❌ | ✅ |
+| Restrict to domain | ❌ | ✅ |
+| Custom Redirect | ✅ | from 18$ / mo |
| Email Auto Response | ⚙️ | from 18$ / mo |
| Custom Email Domain | ⚙️ | from 85$ / mo |
-| Automated Workflows | ⚙️ | from 85$ / mo |
-| Team Functionality | ⚙️ | from 8$/ mo |
+| Team Functionality | ✅ | from 8$/ mo |
-As of today, Formspree is the much more comprehensive solution.
+As of today, Formspree is the more comprehensive solution.
### Data Privacy: Can I legally use Formspree in the EU?
Data ownership is not only important since GDPR, CCPA, HIPAA and other data privacy regulation. But since the Privacy Shield has been removed, many European companies cannot use US-american Software-as-a-Service offerings legally anymore. How do Formbricks and Formspree compare on data privacy?
-### Formbricks
+### Formbricks, the open source Formspree alternative
✅ Offers self-hosting, very easy compliance with all privacy regulation
@@ -121,6 +119,8 @@ Data ownership is not only important since GDPR, CCPA, HIPAA and other data priv
As of now, Formspree offers a more comprehensive set of features. However, for the really useful functionality you have to pay $18 / month. Formbricks on the other hand is the new kid on the blog with many cool features in development. The option to easily self-host makes the difference for many engineers.
-
+
+Did you know that Formbricks can also run targeted surveys on public websites? And hyper-targeted surveys in apps? Find out more!
+
export default ({ children }) => {children} ;
diff --git a/apps/formbricks-com/pages/vs-google-forms.mdx b/apps/formbricks-com/pages/vs-google-forms.mdx
index 8b73eb612d..1ad6119566 100644
--- a/apps/formbricks-com/pages/vs-google-forms.mdx
+++ b/apps/formbricks-com/pages/vs-google-forms.mdx
@@ -1,5 +1,6 @@
import LayoutMdx from "@/components/shared/LayoutMdx";
import Image from "next/image";
+import Link from "next/link";
import { Callout } from "@/components/shared/Callout";
import HeroAnimation from "@/components/shared/HeroAnimation.tsx";
import MdxCTA from "@/components/shared/MdxCTA.tsx";
@@ -9,6 +10,8 @@ import ControllerVsProcessor from "@/images/SEO/Data Controller vs Data Processo
import LemonadeExample from "@/images/SEO/example-lemonade-radio-field-with-image-in-react-library-Oopen-source.png";
import GoogleExample from "@/images/SEO/Google Form Example Customize and make it comply with GDPR CCPA HIPAA open source alternative.png";
import CrownGIF from "@/images/SEO/who gets the crown of open source forms.gif";
+import Styling1 from "@/images/SEO/styling-1-google-forms-open-source-alternative.jpeg";
+import Styling2 from "@/images/SEO/styling-2-google-form-open-source-alternative-form-builder.jpeg";
import HeaderAnimation from "@/components/shared/HeroAnimation.tsx";
export const meta = {
@@ -17,7 +20,7 @@ export const meta = {
"Google Forms is among the most used form and survey solutions out there. However, the lack of data privacy and old-fashioned look and feel have people look for alternatives.",
};
-_Google Forms is among the most used form and survey solutions out there. It’s native integration into Google Sheets makes it an obvious first choice to run surveys. However, the lack of data privacy and old-fashioned look and feel have people look for alternatives._
+_Google Forms is among the most used form and survey solutions out there. It’s native integration into Google Sheets makes it an obvious first choice to run surveys. However, the lack of data privacy and an old-fashioned look and feel have people look for online form builder alternatives._
-On the plus side the Google Forms are very accessible: They’re rich in contrast and can be filled out just with a keyboard easily. Even less tech savy users would know what to do when they see the form. It is a very pragmatic design - if you respondents **have to** fill this out, it’ll get the job done!
+On the plus side the Google Forms are very accessible: They’re rich in contrast and can be filled out just with a keyboard easily. Even less tech savy users would know what to do when they see the form. It is a very pragmatic design - if your respondents **have to** fill this out, it’ll get the job done!
On the flip side this isn’t conversion-optimized. Multi-Step forms are possible to build but don’t have a great UX when you do so. You cannot add images in the options of radio buttons which is proven to drive up conversion significantly. It will always look like Google. It very much _feels_ like a form while it would be beneficial if it would feel more like an app.
@@ -196,37 +203,37 @@ To make your Google Form align more with your Corporate Design, you have a few o
- Main Color
- Header Image
-If you have your logo at hand and know how to place it in a 1200 x 400px image you are able to brand your survey with the header image.
+If you have your logo at hand and know how to place it in a 1200 x 400px image you are able to brand your survey with the header image. That's about it.
-
- As of now, Formbricks only offer the opportunity to create forms with Code (React.js). The No Code builder
- is planned to launch in Feburary 2023.
-
+**Formbricks on the other hand has a comprehensive styling editor.** It lets you change all kinds of colors, roundness, background images and animation and more. If you use Formrbricks for website or in-app surveys, you can even load your own stylesheets.
-Formbricks offers two ways to create forms: Code and No Code. If you are willing and able to code your forms, you have maximum freedom to style them. You can import your own CSS style sheet or use Tailwind CSS to style every pixel of it.
-
-[In our docs you'll find detailed information](/docs) on how to style your forms and surveys.
-## Overall Result: Who gets the form crown?
+
+
+Needless to say that the customizability with Formbricks forms is a lot more powerful.
+
+
+
+## Overall Result: Which form builder is better?
All in all, Google Forms is a good option if you can be sure that no EU citizen will fill out your form and you want to collect data from a group of people which **has to** fill out your form.
-Formbricks on the other hand, at the current state of development, is only an option if you are able to code your own form or survey with React. If this is an option for you, we prepared an [in-depth comparison](/best-react-form-library-2023) of Formbricks React with other popular React libraries.
-
-If need to build your forms visually, we ask you for a little bit of patience. We plan to roll out the No Code editor early 2023.
-
-
- If you are looking for a Typeform alternative, we can highly recommend using Tally. Tally has a generous
- free plan, can be used with GDPR compliance (it’s a Belgium startup) and will most likely server all your
- needs. [Tally is great! 👏](https://tally.so)
+
+Did you know that Formbricks can also run targeted surveys on public websites? And hyper-targeted surveys in apps? Find out more!
-
-
export default ({ children }) => {children} ;
diff --git a/apps/formbricks-com/pages/vs-ohmyform.mdx b/apps/formbricks-com/pages/vs-ohmyform.mdx
index 84cadb8483..571c4d66f5 100644
--- a/apps/formbricks-com/pages/vs-ohmyform.mdx
+++ b/apps/formbricks-com/pages/vs-ohmyform.mdx
@@ -1,51 +1,52 @@
-import LayoutMdx from "@/components/shared/LayoutMdx";
-import Image from "next/image";
import { Callout } from "@/components/shared/Callout";
import HeroAnimation from "@/components/shared/HeroAnimation.tsx";
+import LayoutMdx from "@/components/shared/LayoutMdx";
import MdxCTA from "@/components/shared/MdxCTA.tsx";
+import Image from "next/image";
+import Link from "next/link";
import HeaderImage from "/images/SEO/OhMyForm Typeform Alternative comparison Formbricks open source forms and survey library builder.png";
export const meta = {
- title: "Comparison: OhMyForm Open Source Typeform Alternative vs Formbricks React Library",
+ title: "The best open source Typeform alternative 2024: Formbricks vs. OhMyForm",
description:
- "OhMyForm always pops up when you’re looking for open source forms - it seems like it is the best we have got in terms of open source form and survey libraries. But how good is it? Let’s find out 👇",
+ "OhMyForm always pops up when you’re looking for open source forms - it seems like it is the best we have got in terms of open source online form builders. But how good is it? Let’s find out 👇",
};
-_OhMyForm always pops up when you’re looking for open source forms - it seems like it is the best we have got in terms of open source form and survey libraries. But how good is it? Let’s find out 👇_
+_OhMyForm always pops up when you’re looking for open source forms - it seems like it is the best we have got in terms of open source online form builders. But how good is it? Let’s find out 👇_
-## How good is OhMyForms?
+## How good is OhMyForm, the open source Typeform alternative?
-To answer the question of how good OhMyForms actually is, we tested it extensively. When you get it to run, it does a few things well. Here is an overview of what we liked and what we missed:
+To answer the question of how good OhMyForm actually is, we tested it extensively. When you get it to run, it does a few things well. Here is an overview of what we liked and what we missed:
| | OhMyForm | Formbricks |
| -------------------------- | --------------- | ---------- |
-| Multi-Language Support | ✅ | ❌ |
+| Actively developed | ✅ | ❌ |
+| Multi-Language Support | ✅ | ✅ |
| Modern UI | 🟨 | ✅ |
-| 11 possible question types | 🟨 | 🟨 |
+| 11 possible question types | 🟨 | ✅ |
| Editable start / end pages | 🟨 | ✅ |
-| Export Submissions | XLS, JSON & CSV | CSV |
-| Analytics | 🟨 | ❌ |
-| Embeddable Forms | ✅ | ❌ |
+| Export Submissions | XLS, JSON & CSV | XLS, CSV |
+| Drop-Off Analyzer | ❌ | ✅ |
+| Embeddable Forms | ✅ | ✅ |
| Forms API | 🟨 | ✅ |
-| Customizable Notifications | 🟨 | ⚙️ |
+| Customizable Notifications | 🟨 | ❌ |
| Web Hooks | ✅ | ✅ |
| Modern Tech Stack | 🟨 | ✅ |
-| 3rd party integrations | ❌ | ⚙️ |
+| 3rd party integrations | ❌ | ✅ |
| Email Responder | ❌ | ⚙️ |
-| Custom Mail Server | ❌ | ⚙️ |
-| Conditional Logic | ❌ | ⚙️ |
+| Conditional Logic | ❌ | ✅ |
| Self-hosting | ✅ | ✅ |
| Documentation | ❌ | ✅ |
-| Last Feature shipped | Aug 2020 | Nov 2022 |
+| Last Feature shipped | Aug 2020 | Daily Updates 🔥 |
- OhMyForms is a hobby project and we are thankful for the team to develop and open source it 🤍 We in no way
+ OhMyForm is a hobby project and we are thankful for the team to develop and open source it 🤍 We in no way
want to dunk on OhMyForm.
@@ -79,11 +80,9 @@ OhMyForm is an ok starting point for hosting your own forms. If the Typeform-esq
On the flipside, the lack of documentation and community activity makes it quite difficult to work with. The last feature has been shipped over 2 years ago, which doesn’t make OhMyForm a future-proof option.
-
- OhMyForms is a hobby project and we are thankful for the team to develop and open source it! We in no way
- want to dunk on OhMyForm and appreciate their work 🤍
+
+Did you know that Formbricks can also run targeted surveys on public websites? And hyper-targeted surveys in apps? Find out more!
-
export default ({ children }) => {children} ;
diff --git a/apps/formbricks-com/pages/website-survey/1-website-survey-open-source-free-gdpr-compliant-like-hotjar-ask.png b/apps/formbricks-com/pages/website-survey/1-website-survey-open-source-free-gdpr-compliant-like-hotjar-ask.png
new file mode 100644
index 0000000000..5643bf8019
Binary files /dev/null and b/apps/formbricks-com/pages/website-survey/1-website-survey-open-source-free-gdpr-compliant-like-hotjar-ask.png differ
diff --git a/apps/formbricks-com/pages/website-survey/10-screenshot-of-website-survey-run-open-source-for-data-privacy-gpdr-ccpa.png b/apps/formbricks-com/pages/website-survey/10-screenshot-of-website-survey-run-open-source-for-data-privacy-gpdr-ccpa.png
new file mode 100644
index 0000000000..be785834d4
Binary files /dev/null and b/apps/formbricks-com/pages/website-survey/10-screenshot-of-website-survey-run-open-source-for-data-privacy-gpdr-ccpa.png differ
diff --git a/apps/formbricks-com/pages/website-survey/2-open-source-website-survey-free-hotjar-ask-alternative-gdpr.png b/apps/formbricks-com/pages/website-survey/2-open-source-website-survey-free-hotjar-ask-alternative-gdpr.png
new file mode 100644
index 0000000000..18fd0b7a01
Binary files /dev/null and b/apps/formbricks-com/pages/website-survey/2-open-source-website-survey-free-hotjar-ask-alternative-gdpr.png differ
diff --git a/apps/formbricks-com/pages/website-survey/3-no-code-targeting-website-survey-open-source-survey.png b/apps/formbricks-com/pages/website-survey/3-no-code-targeting-website-survey-open-source-survey.png
new file mode 100644
index 0000000000..8fe8c76b2b
Binary files /dev/null and b/apps/formbricks-com/pages/website-survey/3-no-code-targeting-website-survey-open-source-survey.png differ
diff --git a/apps/formbricks-com/pages/website-survey/4-privacy-first-website-form-survey-on-landing-page-open-source.png b/apps/formbricks-com/pages/website-survey/4-privacy-first-website-form-survey-on-landing-page-open-source.png
new file mode 100644
index 0000000000..6be6c1cb4d
Binary files /dev/null and b/apps/formbricks-com/pages/website-survey/4-privacy-first-website-form-survey-on-landing-page-open-source.png differ
diff --git a/apps/formbricks-com/pages/website-survey/5-fast-loading-website-form-open-source-gdpr-ccpa-hotjar-ask-alternative.png b/apps/formbricks-com/pages/website-survey/5-fast-loading-website-form-open-source-gdpr-ccpa-hotjar-ask-alternative.png
new file mode 100644
index 0000000000..f95d11fd2b
Binary files /dev/null and b/apps/formbricks-com/pages/website-survey/5-fast-loading-website-form-open-source-gdpr-ccpa-hotjar-ask-alternative.png differ
diff --git a/apps/formbricks-com/pages/website-survey/5-multi-language-website-forms-open-source-for-free.png b/apps/formbricks-com/pages/website-survey/5-multi-language-website-forms-open-source-for-free.png
new file mode 100644
index 0000000000..50e19b00c0
Binary files /dev/null and b/apps/formbricks-com/pages/website-survey/5-multi-language-website-forms-open-source-for-free.png differ
diff --git a/apps/formbricks-com/pages/website-survey/7-landing-page-survey-forms-open-source-hotjar-alternative.png b/apps/formbricks-com/pages/website-survey/7-landing-page-survey-forms-open-source-hotjar-alternative.png
new file mode 100644
index 0000000000..efc061aec1
Binary files /dev/null and b/apps/formbricks-com/pages/website-survey/7-landing-page-survey-forms-open-source-hotjar-alternative.png differ
diff --git a/apps/formbricks-com/pages/website-survey/8-targeting-website-surveys-open-source-trigger.png b/apps/formbricks-com/pages/website-survey/8-targeting-website-surveys-open-source-trigger.png
new file mode 100644
index 0000000000..069b6c3e15
Binary files /dev/null and b/apps/formbricks-com/pages/website-survey/8-targeting-website-surveys-open-source-trigger.png differ
diff --git a/apps/formbricks-com/pages/website-survey/9-increase-conversion-rate-website-survey-open-source.png b/apps/formbricks-com/pages/website-survey/9-increase-conversion-rate-website-survey-open-source.png
new file mode 100644
index 0000000000..655a5fbcc9
Binary files /dev/null and b/apps/formbricks-com/pages/website-survey/9-increase-conversion-rate-website-survey-open-source.png differ
diff --git a/apps/formbricks-com/pages/website-survey/index.tsx b/apps/formbricks-com/pages/website-survey/index.tsx
new file mode 100644
index 0000000000..36925c45b3
--- /dev/null
+++ b/apps/formbricks-com/pages/website-survey/index.tsx
@@ -0,0 +1,303 @@
+import FeatureCard from "@/components/salespage/FeatureCard";
+import LayoutLight from "@/components/salespage/LayoutLight";
+import LogoBar from "@/components/salespage/LogoBar";
+import SalesBreaker from "@/components/salespage/SalesBreaker";
+import SalesPageFeature from "@/components/salespage/SalesPageFeature";
+import SalesPageHero from "@/components/salespage/SalesPageHero";
+import SalesSteps from "@/components/salespage/SalesSteps";
+import SalesTestimonial from "@/components/salespage/SalesTestimonial";
+import HeadingCentered from "@/components/shared/HeadingCentered";
+import SeoFaq from "@/components/shared/Seo/SeoFaq";
+import Marius from "@/images/clients/headshots/marius.jpeg";
+import Vishnu from "@/images/clients/headshots/vishnu.jpeg";
+import {
+ IoCalendarNumber,
+ IoCaretDownCircle,
+ IoFileTrayFull,
+ IoFilter,
+ IoPlayForward,
+ IoStopwatch,
+} from "react-icons/io5";
+
+import Img1 from "./1-website-survey-open-source-free-gdpr-compliant-like-hotjar-ask.png";
+import Img2 from "./2-open-source-website-survey-free-hotjar-ask-alternative-gdpr.png";
+import Img3 from "./3-no-code-targeting-website-survey-open-source-survey.png";
+import Img4 from "./4-privacy-first-website-form-survey-on-landing-page-open-source.png";
+import Img5 from "./5-fast-loading-website-form-open-source-gdpr-ccpa-hotjar-ask-alternative.png";
+import Img6 from "./5-multi-language-website-forms-open-source-for-free.png";
+import Img7 from "./7-landing-page-survey-forms-open-source-hotjar-alternative.png";
+import Img8 from "./8-targeting-website-surveys-open-source-trigger.png";
+import Img9 from "./9-increase-conversion-rate-website-survey-open-source.png";
+import Img10 from "./10-screenshot-of-website-survey-run-open-source-for-data-privacy-gpdr-ccpa.png";
+
+const websiteSurveySteps = [
+ {
+ id: "1",
+ name: "Connect your website",
+ description:
+ "Copy a code snippet to the of your website and you're good to go! Works on all types of websites, including WordPress and Shopify.",
+ },
+ {
+ id: "2",
+ name: "Set up trigger",
+ description: "Create a website survey and trigger it at the perfect time. No coding required.",
+ },
+ {
+ id: "3",
+ name: "AI analysis",
+ description:
+ "Analyze insights from your internet survey in Formbricks easily. Our privacy-first AI highlights key insights without leaking any data.",
+ },
+];
+
+const websiteSurveyFeatures = [
+ {
+ headline: "No-code targeting",
+ subheadline:
+ "To set up and run an online survey, no code changes are needed. Use generic triggers like clicks, page views, scroll depth or exit intents to trigger web surveys whenever you want. Enable less technical team mates to run online surveys in minutes.",
+ imgSrc: Img3,
+ imgAlt: "Illustration of no-code online survey targeting",
+ imgLeft: false,
+ },
+ {
+ headline: "100% privacy-first",
+ subheadline:
+ "Formbricks can be self-hosted with one click. Prefer a managed service? We run our Cloud as a German company, hosted in Germany with full GDPR- and CCPA-compliance. Keeping survey data private has never been easier.",
+ imgSrc: Img4,
+ imgAlt: "GDPR and CCPA-compliant privacy-first online survey tool",
+ imgLeft: true,
+ },
+ {
+ headline: "Super fast ⚡",
+ subheadline:
+ "The Formbricks SDK is tiny (7KB). Keep your website lightning fast for better SEO. Formbricks website surveys load deferred so they never slow down your page.",
+ imgSrc: Img5,
+ imgAlt: "Fast loading online web surveys for SEO optimization",
+ imgLeft: false,
+ },
+ {
+ headline: "Multi-language website surveys",
+ subheadline:
+ "You offer your website in several languages? No problem! Display your online surveys in the language your visitor prefers automatically. Easily manage multi-language survey translations with Formbricks.",
+ imgSrc: Img6,
+ imgAlt: "Multi-language online surveys for global audience engagement",
+ imgLeft: true,
+ },
+ {
+ headline: "Fully on brand design",
+ subheadline:
+ "Freely customize the look and feel of your website surveys. Make them match your user interface for better conversion rates. Especially open source surveys provide the deepest level of customizability.",
+ imgSrc: Img7,
+ imgAlt: "Customizable on-brand design for online surveys",
+ imgLeft: false,
+ },
+];
+
+const linkSurveyFeaturesPt2 = [
+ {
+ headline: "Fine-grained targeting with custom attributes",
+ subheadline:
+ "Attach custom attributes to website visitors and target only the ones who match. Targeted online research yields much better insights at a lower cost. Formbricks is built for scale, it can handle millions of visitors smoothly.",
+ imgSrc: Img8,
+ imgAlt: "Custom attribute targeting in online surveys for precise data collection",
+ imgLeft: true,
+ },
+ {
+ headline: "Forget about ad blockers",
+ subheadline:
+ "Many survey tools are considered tracking tools and get blocked by browsers. Formbricks does not track any personal information out of the box. Plus, you can always self-host Formbricks and increase your response rates significantly.",
+ imgSrc: Img9,
+ imgAlt: "Ad-blocker resistant online survey tool for higher response rates",
+ imgLeft: false,
+ },
+ {
+ headline: "Snap a screenshot for more context",
+ subheadline:
+ "Understand the context of users filling in your website surveys with a screenshot. Erase potentially personalized data form your online questionnaire automatically.",
+ imgSrc: Img10,
+ imgAlt: "Context-enhancing screenshots for comprehensive online survey data",
+ imgLeft: true,
+ },
+];
+
+const allFeaturesList = [
+ {
+ title: "Show survey to % of user",
+ text: "Only show surveys to e.g. 50% of visitors.",
+ icon: IoFilter,
+ },
+ {
+ title: "Add delay before showing",
+ text: "Wait a few seconds before showing the survey",
+ icon: IoStopwatch,
+ },
+ {
+ title: "Auto close in inactivity",
+ text: "Auto close a survey if the visitors does not interact.",
+ icon: IoCaretDownCircle,
+ },
+ {
+ title: "Close survey on response limit",
+ text: "Auto-close a survey after hitting e.g. 50 responses",
+ icon: IoFileTrayFull,
+ },
+ {
+ title: "Close survey on date",
+ text: "Auto-close a survey on a specific date.",
+ icon: IoCalendarNumber,
+ },
+ {
+ title: "Redirect on completion",
+ text: "Redirect visitors after they completed your survey.",
+ icon: IoPlayForward,
+ },
+];
+
+const FAQs = [
+ {
+ question: "Is it really free to run website surveys with Formbricks?",
+ answer:
+ "Absolutely! Formbricks offers both a free Cloud plan and a community edition that's open source. If you self-host you can gather unlimited responses. If you use the Formbricks Cloud to run online surveys, we charge a small fee for every response which exceeds the generous free tier. For enterprise customers with advanced feature needs, we have a specific license and volume pricing.",
+ },
+ {
+ question: "Can I host Formbricks myself?",
+ answer:
+ "Certainly! With just a single click, you can self-host Formbricks using our Docker image. This lets you run online questionnaires with total control over your survey data.",
+ },
+ {
+ question: "How does Formbricks stand against other website survey tools on the market?",
+ answer:
+ "Formbricks is the only open source tool specializing in surveying. We pride ourselves to match if not beat existing tools with feature depth and usability. In terms of data privacy and compliance, Formbricks remains unbeaten due to its open source approach.",
+ },
+ {
+ question: "Does Formbricks meet GDPR compliance standards?",
+ answer:
+ "Indeed. As a product developed by a German company and hosted in Frankfurt, Germany, Formbricks ensures full compliance with GDPR and CCPA. We provide everything you need for a swift compliance review.",
+ },
+ {
+ question: "Is Formbricks suitable for mobile surveys?",
+ answer:
+ "Definitely, Formbricks online surveys are fully responsive. Your surveys look great and function perfectly on mobile devices, no matter on which device or browser the online questionnaire is displayed.",
+ },
+ {
+ question: "How customizable are Formbricks surveys?",
+ answer:
+ "Formbricks surveys are highly customizable. The visual editor enables teams to easily match brand design guidelines and existing UIs. Tech-savvy users can load their own stylesheet for maximum flexibilioty. This depth of customization helps improve response rates of website surveys significantly.",
+ },
+ {
+ question: "Does Formbricks support multi-language surveys?",
+ answer:
+ "Yes, Formbricks supports multiple languages. This makes it easy to create and manage online surveys in different languages. The internet is global and audiences diverse so Formbricks let's you display website surveys dynamically.",
+ },
+ {
+ question: "What makes Formbricks different from other website survey tools?",
+ answer:
+ "Formbricks stands out with its open-source nature, privacy-first approach, and flexibility in hosting options. This unique combination ensures you can run beautiful online surveys with full data control and compliance.",
+ },
+ {
+ question: "How quick is the setup process with Formbricks?",
+ answer:
+ "Setting up with Formbricks is swift and straightforward. Whether you're opting for the cloud version or self-hosting, you can get your website surveys up and running in no time, with no coding required.",
+ },
+];
+
+export default function WebsiteSurveyPage() {
+ return (
+
+
+
+
+
+
+
+
+
+ {websiteSurveyFeatures.map((feature) => {
+ return (
+
+ );
+ })}
+
+ {linkSurveyFeaturesPt2.map((feature) => {
+ return (
+
+ );
+ })}
+
+
+
+ Website surveys exactly how you want them
+
+ }
+ teaser="All features you need"
+ />
+
+ {allFeaturesList.map((feature) => {
+ return (
+
+ );
+ })}
+
+
+
+
+
+
+
+ );
+}
diff --git a/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/components/EmptyInAppSurveys.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/components/EmptyInAppSurveys.tsx
index 4932936fec..a67bcf30c3 100644
--- a/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/components/EmptyInAppSurveys.tsx
+++ b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/components/EmptyInAppSurveys.tsx
@@ -18,7 +18,7 @@ export default async function EmptyInAppSurveys({ environment }: TEmptyInAppSurv
You're not plugged in yet!
-
Connect your app with Formbricks to run in app surveys.
+
Connect your app with Formbricks to run in-app surveys.
diff --git a/packages/api/package.json b/packages/api/package.json
index ef95112603..4a739706b1 100644
--- a/packages/api/package.json
+++ b/packages/api/package.json
@@ -35,7 +35,7 @@
"@formbricks/tsconfig": "workspace:*",
"@formbricks/types": "workspace:*",
"eslint-config-prettier": "^9.1.0",
- "eslint-config-turbo": "1.12.5",
+ "eslint-config-turbo": "1.10.12",
"terser": "^5.29.1",
"vite": "^5.1.6",
"vite-plugin-dts": "^3.7.3"
diff --git a/packages/js/package.json b/packages/js/package.json
index 3806a94868..0fd4f4f6d9 100644
--- a/packages/js/package.json
+++ b/packages/js/package.json
@@ -51,7 +51,7 @@
"@typescript-eslint/parser": "^7.2.0",
"cross-env": "^7.0.3",
"eslint-config-prettier": "^9.1.0",
- "eslint-config-turbo": "1.12.5",
+ "eslint-config-turbo": "1.10.12",
"isomorphic-fetch": "^3.0.0",
"terser": "^5.29.1",
"vite": "^5.1.6",
diff --git a/packages/surveys/package.json b/packages/surveys/package.json
index 83d9ac6323..612206003c 100644
--- a/packages/surveys/package.json
+++ b/packages/surveys/package.json
@@ -45,7 +45,7 @@
"autoprefixer": "^10.4.18",
"concurrently": "8.2.2",
"eslint-config-prettier": "^9.1.0",
- "eslint-config-turbo": "1.12.5",
+ "eslint-config-turbo": "1.10.12",
"isomorphic-dompurify": "^2.4.0",
"postcss": "^8.4.35",
"preact": "^10.19.6",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index e058136481..b05a46198d 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -127,6 +127,9 @@ importers:
lottie-web:
specifier: ^5.12.2
version: 5.12.2
+ lucide:
+ specifier: ^0.350.0
+ version: 0.350.0
lucide-react:
specifier: ^0.356.0
version: 0.356.0(react@18.2.0)
@@ -185,10 +188,13 @@ importers:
specifier: ^4.0.0
version: 4.0.0
remark-mdx:
- specifier: ^3.0.1
+ specifier: ^3.0.0
version: 3.0.1
+ schema-dts:
+ specifier: ^1.1.2
+ version: 1.1.2(typescript@5.3.3)
sharp:
- specifier: ^0.33.2
+ specifier: ^0.33.1
version: 0.33.2
shiki:
specifier: ^0.14.7
@@ -464,8 +470,8 @@ importers:
specifier: ^9.1.0
version: 9.1.0(eslint@8.57.0)
eslint-config-turbo:
- specifier: 1.12.5
- version: 1.12.5(eslint@8.57.0)
+ specifier: 1.10.12
+ version: 1.10.12(eslint@8.57.0)
terser:
specifier: ^5.29.1
version: 5.29.1
@@ -607,8 +613,8 @@ importers:
specifier: ^9.1.0
version: 9.1.0(eslint@8.57.0)
eslint-config-turbo:
- specifier: 1.12.5
- version: 1.12.5(eslint@8.57.0)
+ specifier: 1.10.12
+ version: 1.10.12(eslint@8.57.0)
isomorphic-fetch:
specifier: ^3.0.0
version: 3.0.0
@@ -746,8 +752,8 @@ importers:
specifier: ^9.1.0
version: 9.1.0(eslint@8.57.0)
eslint-config-turbo:
- specifier: 1.12.5
- version: 1.12.5(eslint@8.57.0)
+ specifier: 1.10.12
+ version: 1.10.12(eslint@8.57.0)
isomorphic-dompurify:
specifier: ^2.4.0
version: 2.4.0
@@ -12482,15 +12488,6 @@ packages:
eslint: 8.57.0
eslint-plugin-turbo: 1.10.12(eslint@8.57.0)
- /eslint-config-turbo@1.12.5(eslint@8.57.0):
- resolution: {integrity: sha512-wXytbX+vTzQ6rwgM6sIr447tjYJBlRj5V/eBFNGNXw5Xs1R715ppPYhbmxaFbkrWNQSGJsWRrYGAlyq0sT/OsQ==}
- peerDependencies:
- eslint: '>6.6.0'
- dependencies:
- eslint: 8.57.0
- eslint-plugin-turbo: 1.12.5(eslint@8.57.0)
- dev: true
-
/eslint-import-resolver-node@0.3.9:
resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==}
dependencies:
@@ -12680,15 +12677,6 @@ packages:
dotenv: 16.0.3
eslint: 8.57.0
- /eslint-plugin-turbo@1.12.5(eslint@8.57.0):
- resolution: {integrity: sha512-cXy7mCzAdngBTJIWH4DASXHy0vQpujWDBqRTu0YYqCN/QEGsi3HWM+STZEbPYELdjtm5EsN2HshOSSqWnjdRHg==}
- peerDependencies:
- eslint: '>6.6.0'
- dependencies:
- dotenv: 16.0.3
- eslint: 8.57.0
- dev: true
-
/eslint-scope@5.1.1:
resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==}
engines: {node: '>=8.0.0'}
@@ -14931,6 +14919,10 @@ packages:
react: 18.2.0
dev: false
+ /lucide@0.350.0:
+ resolution: {integrity: sha512-etEqxSd0Ls/Jc+4EJsPBnLpvryxa5FkbEE1rISimsL8SfalN0CJABjTt2/pzRDj2PsHodHRIK9MUqufSklEwrQ==}
+ dev: false
+
/lz-string@1.5.0:
resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==}
hasBin: true
@@ -18068,6 +18060,14 @@ packages:
dependencies:
loose-envify: 1.4.0
+ /schema-dts@1.1.2(typescript@5.3.3):
+ resolution: {integrity: sha512-MpNwH0dZJHinVxk9bT8XUdjKTxMYrA5bLtrrGmFA6PTLwlOKnhi67XoRd6/ty+Djt6ZC0slR57qFhZDNMI6DhQ==}
+ peerDependencies:
+ typescript: '>=4.1.0'
+ dependencies:
+ typescript: 5.3.3
+ dev: false
+
/schema-utils@3.3.0:
resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==}
engines: {node: '>= 10.13.0'}