Files
formbricks-formbricks/packages/lib/templates.ts
2024-08-05 12:47:25 +00:00

2595 lines
90 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { createId } from "@paralleldrive/cuid2";
import { TActionClass } from "@formbricks/types/action-classes";
import {
TSurveyCTAQuestion,
TSurveyCreateInput,
TSurveyDisplayOption,
TSurveyEndScreenCard,
TSurveyHiddenFields,
TSurveyLanguage,
TSurveyOpenTextQuestion,
TSurveyQuestionTypeEnum,
TSurveyStatus,
TSurveyType,
TSurveyWelcomeCard,
} from "@formbricks/types/surveys/types";
import { TTemplate } from "@formbricks/types/templates";
import { createI18nString, extractLanguageCodes } from "./i18n/utils";
export const getDefaultEndingCard = (languages: TSurveyLanguage[]): TSurveyEndScreenCard => {
const languageCodes = extractLanguageCodes(languages);
return {
id: createId(),
type: "endScreen",
headline: createI18nString("Thank you!", languageCodes),
subheader: createI18nString("We appreciate your feedback.", languageCodes),
buttonLabel: createI18nString("Create your own Survey", languageCodes),
buttonLink: "https://formbricks.com/signup",
};
};
const hiddenFieldsDefault: TSurveyHiddenFields = {
enabled: true,
fieldIds: [],
};
export const welcomeCardDefault: TSurveyWelcomeCard = {
enabled: false,
headline: { default: "Welcome!" },
html: { default: "Thanks for providing your feedback - let's go!" },
timeToFinish: false,
showResponseCount: false,
};
const surveyDefault: TTemplate["preset"] = {
name: "New Survey",
welcomeCard: welcomeCardDefault,
endings: [getDefaultEndingCard([])],
hiddenFields: hiddenFieldsDefault,
questions: [],
};
export const templates: TTemplate[] = [
{
name: "Cart Abandonment Survey",
role: "productManager",
industries: ["eCommerce"],
channels: ["app", "website", "link"],
description: "Understand the reasons behind cart abandonment in your web shop.",
preset: {
...surveyDefault,
name: "Cart Abandonment Survey",
questions: [
{
id: createId(),
html: {
default:
'<p class="fb-editor-paragraph" dir="ltr"><span>We noticed you left some items in your cart. We would love to understand why.</span></p>',
},
type: TSurveyQuestionTypeEnum.CTA,
logic: [{ condition: "skipped", destination: surveyDefault.endings[0].id }],
headline: { default: "Do you have 2 minutes to help us improve?" },
required: false,
buttonLabel: { default: "Sure!" },
buttonExternal: false,
dismissButtonLabel: { default: "No, thanks." },
},
{
id: createId(),
type: TSurveyQuestionTypeEnum.MultipleChoiceSingle,
headline: { default: "What was the primary reason you didn't complete your purchase?" },
subheader: { default: "Please select one of the following options:" },
required: true,
shuffleOption: "none",
choices: [
{
id: createId(),
label: { default: "High shipping costs" },
},
{
id: createId(),
label: { default: "Found a better price elsewhere" },
},
{
id: createId(),
label: { default: "Just browsing" },
},
{
id: createId(),
label: { default: "Decided not to buy" },
},
{
id: createId(),
label: { default: "Payment issues" },
},
{ id: "other", label: { default: "Other" } },
],
},
{
id: createId(),
type: TSurveyQuestionTypeEnum.OpenText,
headline: {
default: "Please elaborate on your reason for not completing the purchase:",
},
required: false,
inputType: "text",
},
{
id: createId(),
type: TSurveyQuestionTypeEnum.Rating,
headline: { default: "How would you rate your overall shopping experience?" },
required: true,
scale: "number",
range: 5,
lowerLabel: { default: "Very dissatisfied" },
upperLabel: { default: "Very satisfied" },
isColorCodingEnabled: false,
},
{
id: createId(),
type: TSurveyQuestionTypeEnum.MultipleChoiceMulti,
headline: {
default: "What factors would encourage you to complete your purchase in the future?",
},
subheader: { default: "Please select all that apply:" },
required: true,
choices: [
{
id: createId(),
label: { default: "Lower shipping costs" },
},
{
id: createId(),
label: { default: "Discounts or promotions" },
},
{
id: createId(),
label: { default: "More payment options" },
},
{
id: createId(),
label: { default: "Better product descriptions" },
},
{
id: createId(),
label: { default: "Improved website navigation" },
},
{ id: "other", label: { default: "Other" } },
],
},
{
id: createId(),
logic: [{ condition: "skipped", destination: "bxvvhol84ir34q2vsvr5kwl9" }],
type: TSurveyQuestionTypeEnum.Consent,
headline: { default: "Would you like to receive a discount code via email?" },
required: false,
label: { default: "Yes, please reach out." },
},
{
id: createId(),
type: TSurveyQuestionTypeEnum.OpenText,
headline: { default: "Please share your email address:" },
required: true,
inputType: "email",
longAnswer: false,
placeholder: { default: "example@email.com" },
},
{
id: "bxvvhol84ir34q2vsvr5kwl9",
type: TSurveyQuestionTypeEnum.OpenText,
headline: { default: "Any additional comments or suggestions?" },
required: false,
inputType: "text",
},
],
},
},
{
name: "Site Abandonment Survey",
role: "productManager",
industries: ["eCommerce"],
channels: ["app", "website"],
description: "Understand the reasons behind site abandonment in your web shop.",
preset: {
...surveyDefault,
name: "Site Abandonment Survey",
questions: [
{
id: createId(),
html: {
default:
"<p class='fb-editor-paragraph' dir='ltr'><span>We noticed you're leaving our site without making a purchase. We would love to understand why.</span></p>",
},
type: TSurveyQuestionTypeEnum.CTA,
logic: [{ condition: "skipped", destination: surveyDefault.endings[0].id }],
headline: { default: "Do you have a minute?" },
required: false,
buttonLabel: { default: "Sure!" },
buttonExternal: false,
dismissButtonLabel: { default: "No, thanks." },
},
{
id: createId(),
type: TSurveyQuestionTypeEnum.MultipleChoiceSingle,
headline: { default: "What's the primary reason you're leaving our site?" },
subheader: { default: "Please select one of the following options:" },
required: true,
shuffleOption: "none",
choices: [
{
id: createId(),
label: { default: "Can't find what I am looking for" },
},
{
id: createId(),
label: { default: "Site is too slow" },
},
{
id: createId(),
label: { default: "Technical issues" },
},
{
id: createId(),
label: { default: "Just browsing" },
},
{
id: createId(),
label: { default: "Found a better site" },
},
{ id: "other", label: { default: "Other" } },
],
},
{
id: createId(),
type: TSurveyQuestionTypeEnum.OpenText,
headline: {
default: "Please elaborate on your reason for leaving the site:",
},
required: false,
inputType: "text",
},
{
id: createId(),
type: TSurveyQuestionTypeEnum.Rating,
headline: { default: "How would you rate your overall experience on our site?" },
required: true,
scale: "number",
range: 5,
lowerLabel: { default: "Very dissatisfied" },
upperLabel: { default: "Very satisfied" },
isColorCodingEnabled: false,
},
{
id: createId(),
type: TSurveyQuestionTypeEnum.MultipleChoiceMulti,
headline: {
default: "What improvements would encourage you to stay longer on our site?",
},
subheader: { default: "Please select all that apply:" },
required: true,
choices: [
{
id: createId(),
label: { default: "Faster loading times" },
},
{
id: createId(),
label: { default: "Better product search functionality" },
},
{
id: createId(),
label: { default: "More product variety" },
},
{
id: createId(),
label: { default: "Improved site design" },
},
{
id: createId(),
label: { default: "More customer reviews" },
},
{ id: "other", label: { default: "Other" } },
],
},
{
id: createId(),
logic: [{ condition: "skipped", destination: "bxvvhol84ir34q2vsvr5kwl9" }],
type: TSurveyQuestionTypeEnum.Consent,
headline: { default: "Would you like to receive updates about new products and promotions?" },
required: false,
label: { default: "Yes, please reach out." },
},
{
id: createId(),
type: TSurveyQuestionTypeEnum.OpenText,
headline: { default: "Please share your email address:" },
required: true,
inputType: "email",
longAnswer: false,
placeholder: { default: "example@email.com" },
},
{
id: "bxvvhol84ir34q2vsvr5kwl9",
type: TSurveyQuestionTypeEnum.OpenText,
headline: { default: "Any additional comments or suggestions?" },
required: false,
inputType: "text",
},
],
},
},
{
name: "Product Market Fit (Superhuman)",
role: "productManager",
industries: ["saas"],
channels: ["app", "link"],
description: "Measure PMF by assessing how disappointed users would be if your product disappeared.",
preset: {
...surveyDefault,
name: "Product Market Fit (Superhuman)",
questions: [
{
id: createId(),
html: {
default:
'<p class="fb-editor-paragraph" dir="ltr"><span>We would love to understand your user experience better. Sharing your insight helps a lot.</span></p>',
},
type: TSurveyQuestionTypeEnum.CTA,
logic: [{ condition: "skipped", destination: surveyDefault.endings[0].id }],
headline: { default: "You are one of our power users! Do you have 5 minutes?" },
required: false,
buttonLabel: { default: "Happy to help!" },
buttonExternal: false,
dismissButtonLabel: { default: "No, thanks." },
},
{
id: createId(),
type: TSurveyQuestionTypeEnum.MultipleChoiceSingle,
headline: { default: "How disappointed would you be if you could no longer use {{productName}}?" },
subheader: { default: "Please select one of the following options:" },
required: true,
shuffleOption: "none",
choices: [
{
id: createId(),
label: { default: "Not at all disappointed" },
},
{
id: createId(),
label: { default: "Somewhat disappointed" },
},
{
id: createId(),
label: { default: "Very disappointed" },
},
],
},
{
id: createId(),
type: TSurveyQuestionTypeEnum.MultipleChoiceSingle,
headline: { default: "What is your role?" },
subheader: { default: "Please select one of the following options:" },
required: true,
shuffleOption: "none",
choices: [
{
id: createId(),
label: { default: "Founder" },
},
{
id: createId(),
label: { default: "Executive" },
},
{
id: createId(),
label: { default: "Product Manager" },
},
{
id: createId(),
label: { default: "Product Owner" },
},
{
id: createId(),
label: { default: "Software Engineer" },
},
],
},
{
id: createId(),
type: TSurveyQuestionTypeEnum.OpenText,
headline: { default: "What type of people do you think would most benefit from {{productName}}?" },
required: true,
inputType: "text",
},
{
id: createId(),
type: TSurveyQuestionTypeEnum.OpenText,
headline: { default: "What is the main benefit you receive from {{productName}}?" },
required: true,
inputType: "text",
},
{
id: createId(),
type: TSurveyQuestionTypeEnum.OpenText,
headline: { default: "How can we improve {{productName}} for you?" },
subheader: { default: "Please be as specific as possible." },
required: true,
inputType: "text",
},
],
},
},
{
name: "Onboarding Segmentation",
role: "productManager",
industries: ["saas"],
channels: ["app", "link"],
description: "Learn more about who signed up to your product and why.",
preset: {
...surveyDefault,
name: "Onboarding Segmentation",
questions: [
{
id: createId(),
type: TSurveyQuestionTypeEnum.MultipleChoiceSingle,
headline: { default: "What is your role?" },
subheader: { default: "Please select one of the following options:" },
required: true,
shuffleOption: "none",
choices: [
{
id: createId(),
label: { default: "Founder" },
},
{
id: createId(),
label: { default: "Executive" },
},
{
id: createId(),
label: { default: "Product Manager" },
},
{
id: createId(),
label: { default: "Product Owner" },
},
{
id: createId(),
label: { default: "Software Engineer" },
},
],
},
{
id: createId(),
type: TSurveyQuestionTypeEnum.MultipleChoiceSingle,
headline: { default: "What's your company size?" },
subheader: { default: "Please select one of the following options:" },
required: true,
shuffleOption: "none",
choices: [
{
id: createId(),
label: { default: "only me" },
},
{
id: createId(),
label: { default: "1-5 employees" },
},
{
id: createId(),
label: { default: "6-10 employees" },
},
{
id: createId(),
label: { default: "11-100 employees" },
},
{
id: createId(),
label: { default: "over 100 employees" },
},
],
},
{
id: createId(),
type: TSurveyQuestionTypeEnum.MultipleChoiceSingle,
headline: { default: "How did you hear about us first?" },
subheader: { default: "Please select one of the following options:" },
required: true,
shuffleOption: "none",
choices: [
{
id: createId(),
label: { default: "Recommendation" },
},
{
id: createId(),
label: { default: "Social Media" },
},
{
id: createId(),
label: { default: "Ads" },
},
{
id: createId(),
label: { default: "Google Search" },
},
{
id: createId(),
label: { default: "In a Podcast" },
},
],
},
],
},
},
{
name: "Churn Survey",
role: "sales",
industries: ["saas", "eCommerce", "other"],
channels: ["app", "link"],
description: "Find out why people cancel their subscriptions. These insights are pure gold!",
preset: {
...surveyDefault,
name: "Churn Survey",
questions: [
{
id: createId(),
type: TSurveyQuestionTypeEnum.MultipleChoiceSingle,
shuffleOption: "none",
logic: [
{ value: "Difficult to use", condition: "equals", destination: "sxwpskjgzzpmkgfxzi15inif" },
{ value: "It's too expensive", condition: "equals", destination: "mao94214zoo6c1at5rpuz7io" },
{ value: "I am missing features", condition: "equals", destination: "l054desub14syoie7n202vq4" },
{ value: "Poor customer service", condition: "equals", destination: "hdftsos1odzjllr7flj4m3j9" },
{
value: "I just didn't need it anymore",
condition: "equals",
destination: surveyDefault.endings[0].id,
},
],
choices: [
{ id: createId(), label: { default: "Difficult to use" } },
{ id: createId(), label: { default: "It's too expensive" } },
{ id: createId(), label: { default: "I am missing features" } },
{ id: createId(), label: { default: "Poor customer service" } },
{ id: createId(), label: { default: "I just didn't need it anymore" } },
],
headline: { default: "Why did you cancel your subscription?" },
required: true,
subheader: { default: "We're sorry to see you leave. Help us do better:" },
},
{
id: "sxwpskjgzzpmkgfxzi15inif",
type: TSurveyQuestionTypeEnum.OpenText,
logic: [{ condition: "submitted", destination: surveyDefault.endings[0].id }],
headline: { default: "What would have made {{productName}} easier to use?" },
required: true,
buttonLabel: { default: "Send" },
inputType: "text",
},
{
id: "mao94214zoo6c1at5rpuz7io",
html: {
default:
'<p class="fb-editor-paragraph" dir="ltr"><span>We\'d love to keep you as a customer. Happy to offer a 30% discount for the next year.</span></p>',
},
type: TSurveyQuestionTypeEnum.CTA,
logic: [{ condition: "clicked", destination: surveyDefault.endings[0].id }],
headline: { default: "Get 30% off for the next year!" },
required: true,
buttonUrl: "https://formbricks.com",
buttonLabel: { default: "Get 30% off" },
buttonExternal: true,
dismissButtonLabel: { default: "Skip" },
},
{
id: "l054desub14syoie7n202vq4",
type: TSurveyQuestionTypeEnum.OpenText,
logic: [{ condition: "submitted", destination: surveyDefault.endings[0].id }],
headline: { default: "What features are you missing?" },
required: true,
inputType: "text",
},
{
id: "hdftsos1odzjllr7flj4m3j9",
html: {
default:
'<p class="fb-editor-paragraph" dir="ltr"><span>We aim to provide the best possible customer service. Please email our CEO and she will personally handle your issue.</span></p>',
},
type: TSurveyQuestionTypeEnum.CTA,
logic: [{ condition: "clicked", destination: surveyDefault.endings[0].id }],
headline: { default: "So sorry to hear 😔 Talk to our CEO directly!" },
required: true,
buttonUrl: "mailto:ceo@company.com",
buttonLabel: { default: "Send email to CEO" },
buttonExternal: true,
dismissButtonLabel: { default: "Skip" },
},
],
},
},
{
name: "Earned Advocacy Score (EAS)",
role: "customerSuccess",
industries: ["saas", "eCommerce", "other"],
channels: ["app", "link"],
description:
"The EAS is a riff off the NPS but asking for actual past behaviour instead of lofty intentions.",
preset: {
...surveyDefault,
name: "Earned Advocacy Score (EAS)",
questions: [
{
id: createId(),
type: TSurveyQuestionTypeEnum.MultipleChoiceSingle,
logic: [{ value: "No", condition: "equals", destination: "duz2qp8eftix9wty1l221x1h" }],
shuffleOption: "none",
choices: [
{ id: createId(), label: { default: "Yes" } },
{ id: createId(), label: { default: "No" } },
],
headline: { default: "Have you actively recommended {{productName}} to others?" },
required: true,
},
{
id: createId(),
type: TSurveyQuestionTypeEnum.OpenText,
logic: [{ condition: "submitted", destination: "yhfew1j3ng6luy7t7qynwj79" }],
headline: { default: "Great to hear! Why did you recommend us?" },
required: true,
placeholder: { default: "Type your answer here..." },
inputType: "text",
},
{
id: "duz2qp8eftix9wty1l221x1h",
type: TSurveyQuestionTypeEnum.OpenText,
headline: { default: "So sad. Why not?" },
required: true,
placeholder: { default: "Type your answer here..." },
inputType: "text",
},
{
id: "yhfew1j3ng6luy7t7qynwj79",
type: TSurveyQuestionTypeEnum.MultipleChoiceSingle,
logic: [{ value: "No", condition: "equals", destination: surveyDefault.endings[0].id }],
shuffleOption: "none",
choices: [
{ id: createId(), label: { default: "Yes" } },
{ id: createId(), label: { default: "No" } },
],
headline: { default: "Have you actively discouraged others from choosing {{productName}}?" },
required: true,
},
{
id: createId(),
type: TSurveyQuestionTypeEnum.OpenText,
headline: { default: "What made you discourage them?" },
required: true,
placeholder: { default: "Type your answer here..." },
inputType: "text",
},
],
},
},
{
name: "Improve Trial Conversion",
role: "sales",
industries: ["saas"],
channels: ["link", "app"],
description: "Find out why people stopped their trial. These insights help you improve your funnel.",
preset: {
...surveyDefault,
name: "Improve Trial Conversion",
questions: [
{
id: createId(),
type: TSurveyQuestionTypeEnum.MultipleChoiceSingle,
shuffleOption: "none",
logic: [
{
value: "I didn't get much value out of it",
condition: "equals",
destination: "aew2ymg51mffnt9db7duz9t3",
},
{
value: "I expected something else",
condition: "equals",
destination: "rnrfydttavtsf2t2nfx1df7m",
},
{
value: "It's too expensive for what it does",
condition: "equals",
destination: "x760wga1fhtr1i80cpssr7af",
},
{
value: "I am missing a feature",
condition: "equals",
destination: "rbhww1pix03r6sl4xc511wqg",
},
{
value: "I was just looking around",
condition: "equals",
destination: surveyDefault.endings[0].id,
},
],
choices: [
{ id: createId(), label: { default: "I didn't get much value out of it" } },
{ id: createId(), label: { default: "I expected something else" } },
{ id: createId(), label: { default: "It's too expensive for what it does" } },
{ id: createId(), label: { default: "I am missing a feature" } },
{ id: createId(), label: { default: "I was just looking around" } },
],
headline: { default: "Why did you stop your trial?" },
required: true,
subheader: { default: "Help us understand you better:" },
},
{
id: "aew2ymg51mffnt9db7duz9t3",
type: TSurveyQuestionTypeEnum.OpenText,
logic: [{ condition: "submitted", destination: "bqiyml1ym74ggx6htwdo7rlu" }],
headline: { default: "Sorry to hear. What was the biggest problem using {{productName}}?" },
required: true,
buttonLabel: { default: "Next" },
inputType: "text",
},
{
id: "rnrfydttavtsf2t2nfx1df7m",
type: TSurveyQuestionTypeEnum.OpenText,
logic: [{ condition: "submitted", destination: "bqiyml1ym74ggx6htwdo7rlu" }],
headline: { default: "What did you expect {{productName}} would do for you?" },
required: true,
buttonLabel: { default: "Next" },
inputType: "text",
},
{
id: "x760wga1fhtr1i80cpssr7af",
html: {
default:
'<p class="fb-editor-paragraph" dir="ltr"><span>We\'re happy to offer you a 20% discount on a yearly plan.</span></p>',
},
type: TSurveyQuestionTypeEnum.CTA,
logic: [{ condition: "clicked", destination: surveyDefault.endings[0].id }],
headline: { default: "Sorry to hear! Get 20% off the first year." },
required: true,
buttonUrl: "https://formbricks.com/github",
buttonLabel: { default: "Get 20% off" },
buttonExternal: true,
dismissButtonLabel: { default: "Skip" },
},
{
id: "rbhww1pix03r6sl4xc511wqg",
type: TSurveyQuestionTypeEnum.OpenText,
logic: [{ condition: "submitted", destination: "bqiyml1ym74ggx6htwdo7rlu" }],
headline: { default: "Which features are you missing?" },
required: true,
subheader: { default: "What would you like to achieve?" },
buttonLabel: { default: "Next" },
inputType: "text",
},
{
id: "bqiyml1ym74ggx6htwdo7rlu",
type: TSurveyQuestionTypeEnum.OpenText,
logic: [
{ condition: "submitted", destination: surveyDefault.endings[0].id },
{ condition: "skipped", destination: surveyDefault.endings[0].id },
],
headline: { default: "How are you solving your problem now?" },
required: false,
subheader: { default: "Please name alternative solutions:" },
inputType: "text",
},
],
},
},
{
name: "Review Prompt",
role: "marketing",
industries: ["saas", "eCommerce", "other"],
channels: ["link", "app"],
description: "Invite users who love your product to review it publicly.",
preset: {
...surveyDefault,
name: "Review Prompt",
questions: [
{
id: createId(),
type: TSurveyQuestionTypeEnum.Rating,
logic: [{ value: 3, condition: "lessEqual", destination: "tk9wpw2gxgb8fa6pbpp3qq5l" }],
range: 5,
scale: "star",
headline: { default: "How do you like {{productName}}?" },
required: true,
lowerLabel: { default: "Not good" },
upperLabel: { default: "Very satisfied" },
isColorCodingEnabled: false,
},
{
id: createId(),
html: { default: '<p class="fb-editor-paragraph" dir="ltr"><span>This helps us a lot.</span></p>' },
type: TSurveyQuestionTypeEnum.CTA,
logic: [{ condition: "clicked", destination: surveyDefault.endings[0].id }],
headline: { default: "Happy to hear 🙏 Please write a review for us!" },
required: true,
buttonUrl: "https://formbricks.com/github",
buttonLabel: { default: "Write review" },
buttonExternal: true,
},
{
id: "tk9wpw2gxgb8fa6pbpp3qq5l",
type: TSurveyQuestionTypeEnum.OpenText,
headline: { default: "Sorry to hear! What is ONE thing we can do better?" },
required: true,
subheader: { default: "Help us improve your experience." },
buttonLabel: { default: "Send" },
placeholder: { default: "Type your answer here..." },
inputType: "text",
},
],
},
},
{
name: "Interview Prompt",
role: "productManager",
industries: ["saas"],
channels: ["app"],
description: "Invite a specific subset of your users to schedule an interview with your product team.",
preset: {
...surveyDefault,
name: "Interview Prompt",
questions: [
{
id: createId(),
type: TSurveyQuestionTypeEnum.CTA,
headline: { default: "Do you have 15 min to talk to us? 🙏" },
html: { default: "You're one of our power users. We would love to interview you briefly!" },
buttonLabel: { default: "Book slot" },
buttonUrl: "https://cal.com/johannes",
buttonExternal: true,
required: false,
},
],
},
},
{
name: "Improve Activation Rate",
role: "productManager",
industries: ["saas"],
channels: ["link"],
description: "Identify weaknesses in your onboarding flow to increase user activation.",
preset: {
...surveyDefault,
name: "Onboarding Drop-Off Reasons",
questions: [
{
id: createId(),
type: TSurveyQuestionTypeEnum.MultipleChoiceSingle,
shuffleOption: "none",
logic: [
{
value: "Difficult to set up or use",
condition: "equals",
destination: "r0zvi3vburf4hm7qewimzjux",
},
{
value: "Lacked features/functionality",
condition: "equals",
destination: "rbwz3y6y9avzqcfj30nu0qj4",
},
{
value: "Just haven't had the time",
condition: "equals",
destination: "gn6298zogd2ipdz7js17qy5i",
},
{
value: "Something else",
condition: "equals",
destination: "c0exdyri3erugrv0ezkyseh6",
},
],
choices: [
{ id: createId(), label: { default: "Didn't seem useful to me" } },
{ id: createId(), label: { default: "Difficult to set up or use" } },
{ id: createId(), label: { default: "Lacked features/functionality" } },
{ id: createId(), label: { default: "Just haven't had the time" } },
{ id: createId(), label: { default: "Something else" } },
],
headline: {
default: "What's the main reason why you haven't finished setting up {{productName}}?",
},
required: true,
},
{
id: createId(),
type: TSurveyQuestionTypeEnum.OpenText,
logic: [{ condition: "submitted", destination: surveyDefault.endings[0].id }],
headline: { default: "What made you think {{productName}} wouldn't be useful?" },
required: true,
placeholder: { default: "Type your answer here..." },
inputType: "text",
},
{
id: "r0zvi3vburf4hm7qewimzjux",
type: TSurveyQuestionTypeEnum.OpenText,
logic: [{ condition: "submitted", destination: surveyDefault.endings[0].id }],
headline: { default: "What was difficult about setting up or using {{productName}}?" },
required: true,
placeholder: { default: "Type your answer here..." },
inputType: "text",
},
{
id: "rbwz3y6y9avzqcfj30nu0qj4",
type: TSurveyQuestionTypeEnum.OpenText,
logic: [{ condition: "submitted", destination: surveyDefault.endings[0].id }],
headline: { default: "What features or functionality were missing?" },
required: true,
placeholder: { default: "Type your answer here..." },
inputType: "text",
},
{
id: "gn6298zogd2ipdz7js17qy5i",
type: TSurveyQuestionTypeEnum.OpenText,
logic: [{ condition: "submitted", destination: surveyDefault.endings[0].id }],
headline: { default: "How could we make it easier for you to get started?" },
required: true,
placeholder: { default: "Type your answer here..." },
inputType: "text",
},
{
id: "c0exdyri3erugrv0ezkyseh6",
type: TSurveyQuestionTypeEnum.OpenText,
logic: [],
headline: { default: "What was it? Please explain:" },
required: false,
subheader: { default: "We're eager to fix it asap." },
placeholder: { default: "Type your answer here..." },
inputType: "text",
},
],
},
},
{
name: "Uncover Strengths & Weaknesses",
role: "productManager",
industries: ["saas", "other"],
channels: ["app", "link"],
description: "Find out what users like and don't like about your product or offering.",
preset: {
...surveyDefault,
name: "Uncover Strengths & Weaknesses",
questions: [
{
id: createId(),
type: TSurveyQuestionTypeEnum.MultipleChoiceSingle,
shuffleOption: "none",
choices: [
{ id: createId(), label: { default: "Ease of use" } },
{ id: createId(), label: { default: "Good value for money" } },
{ id: createId(), label: { default: "It's open-source" } },
{ id: createId(), label: { default: "The founders are cute" } },
{ id: "other", label: { default: "Other" } },
],
headline: { default: "What do you value most about {{productName}}?" },
required: true,
},
{
id: createId(),
type: TSurveyQuestionTypeEnum.MultipleChoiceSingle,
shuffleOption: "none",
choices: [
{ id: createId(), label: { default: "Documentation" } },
{ id: createId(), label: { default: "Customizability" } },
{ id: createId(), label: { default: "Pricing" } },
{ id: "other", label: { default: "Other" } },
],
headline: { default: "What should we improve on?" },
required: true,
subheader: { default: "Please select one of the following options:" },
},
{
id: createId(),
type: TSurveyQuestionTypeEnum.OpenText,
headline: { default: "Would you like to add something?" },
required: false,
subheader: { default: "Feel free to speak your mind, we do too." },
inputType: "text",
},
],
},
},
{
name: "Product Market Fit Survey (Short)",
role: "productManager",
industries: ["saas"],
channels: ["app", "link"],
description: "Measure PMF by assessing how disappointed users would be if your product disappeared.",
preset: {
...surveyDefault,
name: "Product Market Fit Survey (Short)",
questions: [
{
id: createId(),
type: TSurveyQuestionTypeEnum.MultipleChoiceSingle,
headline: { default: "How disappointed would you be if you could no longer use {{productName}}?" },
subheader: { default: "Please select one of the following options:" },
required: true,
shuffleOption: "none",
choices: [
{
id: createId(),
label: { default: "Not at all disappointed" },
},
{
id: createId(),
label: { default: "Somewhat disappointed" },
},
{
id: createId(),
label: { default: "Very disappointed" },
},
],
},
{
id: createId(),
type: TSurveyQuestionTypeEnum.OpenText,
headline: { default: "How can we improve {{productName}} for you?" },
subheader: { default: "Please be as specific as possible." },
required: true,
inputType: "text",
},
],
},
},
{
name: "Marketing Attribution",
role: "marketing",
industries: ["saas", "eCommerce"],
channels: ["website", "app", "link"],
description: "How did you first hear about us?",
preset: {
...surveyDefault,
name: "Marketing Attribution",
questions: [
{
id: createId(),
type: TSurveyQuestionTypeEnum.MultipleChoiceSingle,
headline: { default: "How did you hear about us first?" },
subheader: { default: "Please select one of the following options:" },
required: true,
shuffleOption: "none",
choices: [
{
id: createId(),
label: { default: "Recommendation" },
},
{
id: createId(),
label: { default: "Social Media" },
},
{
id: createId(),
label: { default: "Ads" },
},
{
id: createId(),
label: { default: "Google Search" },
},
{
id: createId(),
label: { default: "In a Podcast" },
},
],
},
],
},
},
{
name: "Changing Subscription Experience",
role: "productManager",
industries: ["saas"],
channels: ["app"],
description: "Find out what goes through peoples minds when changing their subscriptions.",
preset: {
...surveyDefault,
name: "Changing subscription experience",
questions: [
{
id: createId(),
type: TSurveyQuestionTypeEnum.MultipleChoiceSingle,
headline: { default: "How easy was it to change your plan?" },
required: true,
shuffleOption: "none",
choices: [
{
id: createId(),
label: { default: "Extremely difficult" },
},
{
id: createId(),
label: { default: "It took a while, but I got it" },
},
{
id: createId(),
label: { default: "It was alright" },
},
{
id: createId(),
label: { default: "Quite easy" },
},
{
id: createId(),
label: { default: "Very easy, love it!" },
},
],
},
{
id: createId(),
type: TSurveyQuestionTypeEnum.MultipleChoiceSingle,
headline: { default: "Is the pricing information easy to understand?" },
required: true,
shuffleOption: "none",
choices: [
{
id: createId(),
label: { default: "Yes, very clear." },
},
{
id: createId(),
label: { default: "I was confused at first, but found what I needed." },
},
{
id: createId(),
label: { default: "Quite complicated." },
},
],
},
],
},
},
{
name: "Identify Customer Goals",
role: "productManager",
industries: ["saas", "other"],
channels: ["app", "website"],
description:
"Better understand if your messaging creates the right expectations of the value your product provides.",
preset: {
...surveyDefault,
name: "Identify Customer Goals",
questions: [
{
id: createId(),
type: TSurveyQuestionTypeEnum.MultipleChoiceSingle,
headline: { default: "What's your primary goal for using {{productName}}?" },
required: true,
shuffleOption: "none",
choices: [
{
id: createId(),
label: { default: "Understand my user base deeply" },
},
{
id: createId(),
label: { default: "Identify upselling opportunities" },
},
{
id: createId(),
label: { default: "Build the best possible product" },
},
{
id: createId(),
label: { default: "Rule the world to make everyone breakfast brussels sprouts." },
},
],
},
],
},
},
{
name: "Feature Chaser",
role: "productManager",
industries: ["saas"],
channels: ["app"],
description: "Follow up with users who just used a specific feature.",
preset: {
...surveyDefault,
name: "Feature Chaser",
questions: [
{
id: createId(),
type: TSurveyQuestionTypeEnum.Rating,
range: 5,
scale: "number",
headline: { default: "How important is [ADD FEATURE] for you?" },
required: true,
lowerLabel: { default: "Not important" },
upperLabel: { default: "Very important" },
isColorCodingEnabled: false,
},
{
id: createId(),
type: TSurveyQuestionTypeEnum.MultipleChoiceSingle,
shuffleOption: "none",
choices: [
{ id: createId(), label: { default: "Aspect 1" } },
{ id: createId(), label: { default: "Aspect 2" } },
{ id: createId(), label: { default: "Aspect 3" } },
{ id: createId(), label: { default: "Aspect 4" } },
],
headline: { default: "Which aspect is most important?" },
required: true,
},
],
},
},
{
name: "Fake Door Follow-Up",
role: "productManager",
industries: ["saas", "eCommerce"],
channels: ["app", "website"],
description: "Follow up with users who ran into one of your Fake Door experiments.",
preset: {
...surveyDefault,
name: "Fake Door Follow-Up",
questions: [
{
id: createId(),
type: TSurveyQuestionTypeEnum.Rating,
headline: { default: "How important is this feature for you?" },
required: true,
lowerLabel: { default: "Not important" },
upperLabel: { default: "Very important" },
range: 5,
scale: "number",
isColorCodingEnabled: false,
},
{
id: createId(),
type: TSurveyQuestionTypeEnum.MultipleChoiceMulti,
headline: { default: "What should be definitely include building this?" },
required: false,
shuffleOption: "none",
choices: [
{
id: createId(),
label: { default: "Aspect 1" },
},
{
id: createId(),
label: { default: "Aspect 2" },
},
{
id: createId(),
label: { default: "Aspect 3" },
},
{
id: createId(),
label: { default: "Aspect 4" },
},
],
},
],
},
},
{
name: "Feedback Box",
role: "productManager",
industries: ["saas"],
channels: ["app"],
description: "Give your users the chance to seamlessly share what's on their minds.",
preset: {
...surveyDefault,
name: "Feedback Box",
questions: [
{
id: createId(),
type: TSurveyQuestionTypeEnum.MultipleChoiceSingle,
shuffleOption: "none",
logic: [
{ value: "Bug report 🐞", condition: "equals", destination: "dnbiuq4l33l7jypcf2cg6vhh" },
{ value: "Feature Request 💡", condition: "equals", destination: "en9nuuevbf7g9oa9rzcs1l50" },
],
choices: [
{ id: createId(), label: { default: "Bug report 🐞" } },
{ id: createId(), label: { default: "Feature Request 💡" } },
],
headline: { default: "What's on your mind, boss?" },
required: true,
subheader: { default: "Thanks for sharing. We'll get back to you asap." },
},
{
id: "dnbiuq4l33l7jypcf2cg6vhh",
type: TSurveyQuestionTypeEnum.OpenText,
logic: [{ condition: "submitted", destination: "a6c76m5oocw6xp9agf3d2tam" }],
headline: { default: "What's broken?" },
required: true,
subheader: { default: "The more detail, the better :)" },
inputType: "text",
},
{
id: "a6c76m5oocw6xp9agf3d2tam",
html: {
default:
'<p class="fb-editor-paragraph" dir="ltr"><span>We will fix this as soon as possible. Do you want to be notified when we did?</span></p>',
},
type: TSurveyQuestionTypeEnum.CTA,
logic: [
{ condition: "clicked", destination: surveyDefault.endings[0].id },
{ condition: "skipped", destination: surveyDefault.endings[0].id },
],
headline: { default: "Want to stay in the loop?" },
required: false,
buttonLabel: { default: "Yes, notify me" },
buttonExternal: false,
dismissButtonLabel: { default: "No, thanks" },
},
{
id: "en9nuuevbf7g9oa9rzcs1l50",
type: TSurveyQuestionTypeEnum.OpenText,
headline: { default: "Lovely, tell us more!" },
required: true,
subheader: { default: "What problem do you want us to solve?" },
buttonLabel: { default: "Request feature" },
placeholder: { default: "Type your answer here..." },
inputType: "text",
},
],
},
},
{
name: "Integration Setup Survey",
role: "productManager",
industries: ["saas"],
channels: ["app"],
description: "Evaluate how easily users can add integrations to your product. Find blind spots.",
preset: {
...surveyDefault,
name: "Integration Usage Survey",
questions: [
{
id: "s6ss6znzxdwjod1hv16fow4w",
type: TSurveyQuestionTypeEnum.Rating,
logic: [{ value: 4, condition: "greaterEqual", destination: "ef0qo3l8iisd517ikp078u1p" }],
range: 5,
scale: "number",
headline: { default: "How easy was it to set this integration up?" },
required: true,
lowerLabel: { default: "Not easy" },
upperLabel: { default: "Very easy" },
isColorCodingEnabled: false,
},
{
id: "mko13ptjj6tpi5u2pl7a5drz",
type: TSurveyQuestionTypeEnum.OpenText,
headline: { default: "Why was it hard?" },
required: false,
placeholder: { default: "Type your answer here..." },
inputType: "text",
},
{
id: "ef0qo3l8iisd517ikp078u1p",
type: TSurveyQuestionTypeEnum.OpenText,
headline: { default: "What other tools would you like to use with {{productName}}?" },
required: false,
subheader: { default: "We keep building integrations, yours can be next:" },
inputType: "text",
},
],
},
},
{
name: "New Integration Survey",
role: "productManager",
industries: ["saas"],
channels: ["app"],
description: "Find out which integrations your users would like to see next.",
preset: {
...surveyDefault,
name: "New Integration Survey",
questions: [
{
id: createId(),
type: TSurveyQuestionTypeEnum.MultipleChoiceSingle,
headline: { default: "Which other tools are you using?" },
required: true,
shuffleOption: "none",
choices: [
{
id: createId(),
label: { default: "PostHog" },
},
{
id: createId(),
label: { default: "Segment" },
},
{
id: createId(),
label: { default: "Hubspot" },
},
{
id: createId(),
label: { default: "Twilio" },
},
{
id: "other",
label: { default: "Other" },
},
],
},
],
},
},
{
name: "Docs Feedback",
role: "productManager",
industries: ["saas"],
channels: ["app", "website", "link"],
description: "Measure how clear each page of your developer documentation is.",
preset: {
...surveyDefault,
name: "{{productName}} Docs Feedback",
questions: [
{
id: createId(),
type: TSurveyQuestionTypeEnum.MultipleChoiceSingle,
headline: { default: "Was this page helpful?" },
required: true,
shuffleOption: "none",
choices: [
{
id: createId(),
label: { default: "Yes 👍" },
},
{
id: createId(),
label: { default: "No 👎" },
},
],
},
{
id: createId(),
type: TSurveyQuestionTypeEnum.OpenText,
headline: { default: "Please elaborate:" },
required: false,
inputType: "text",
},
{
id: createId(),
type: TSurveyQuestionTypeEnum.OpenText,
headline: { default: "Page URL" },
required: false,
inputType: "text",
},
],
},
},
{
name: "Net Promoter Score (NPS)",
role: "customerSuccess",
industries: ["saas", "eCommerce", "other"],
channels: ["app", "link", "website"],
description: "Measure the Net Promoter Score of your product or service.",
preset: {
...surveyDefault,
name: "NPS Survey",
questions: [
{
id: createId(),
type: TSurveyQuestionTypeEnum.NPS,
headline: { default: "How likely are you to recommend {{productName}} to a friend or colleague?" },
required: false,
lowerLabel: { default: "Not likely" },
upperLabel: { default: "Very likely" },
isColorCodingEnabled: false,
},
{
id: createId(),
type: TSurveyQuestionTypeEnum.OpenText,
headline: { default: "What made you give that rating?" },
required: false,
inputType: "text",
},
],
},
},
{
name: "Customer Satisfaction Score (CSAT)",
role: "customerSuccess",
industries: ["saas", "eCommerce", "other"],
channels: ["app", "link", "website"],
description: "Measure the Customer Satisfaction Score of your product or service.",
preset: {
...surveyDefault,
name: "{{productName}} CSAT",
questions: [
{
id: createId(),
type: TSurveyQuestionTypeEnum.Rating,
logic: [{ value: 3, condition: "lessEqual", destination: "vyo4mkw4ln95ts4ya7qp2tth" }],
range: 5,
scale: "smiley",
headline: { default: "How satisfied are you with your {{productName}} experience?" },
required: true,
lowerLabel: { default: "Not satisfied" },
upperLabel: { default: "Very satisfied" },
isColorCodingEnabled: false,
},
{
id: createId(),
type: TSurveyQuestionTypeEnum.OpenText,
logic: [{ condition: "submitted", destination: surveyDefault.endings[0].id }],
headline: { default: "Lovely! Is there anything we can do to improve your experience?" },
required: false,
placeholder: { default: "Type your answer here..." },
inputType: "text",
},
{
id: "vyo4mkw4ln95ts4ya7qp2tth",
type: TSurveyQuestionTypeEnum.OpenText,
headline: { default: "Ugh, sorry! Is there anything we can do to improve your experience?" },
required: false,
placeholder: { default: "Type your answer here..." },
inputType: "text",
},
],
},
},
{
name: "Collect Feedback",
role: "productManager",
industries: ["other", "eCommerce"],
channels: ["website", "link"],
description: "Gather comprehensive feedback on your product or service.",
preset: {
...surveyDefault,
name: "Feedback Survey",
questions: [
{
id: createId(),
type: TSurveyQuestionTypeEnum.Rating,
logic: [{ value: "3", condition: "lessEqual", destination: "dlpa0371pe7rphmggy2sgbap" }],
range: 5,
scale: "star",
headline: { default: "How do you rate your overall experience?" },
required: true,
subheader: { default: "Don't worry, be honest." },
lowerLabel: { default: "Not good" },
upperLabel: { default: "Very good" },
isColorCodingEnabled: false,
},
{
id: createId(),
type: TSurveyQuestionTypeEnum.OpenText,
logic: [{ condition: "submitted", destination: "gwo0fq5kug13e83fcour4n1w" }],
headline: { default: "Lovely! What did you like about it?" },
required: true,
longAnswer: true,
placeholder: { default: "Type your answer here..." },
inputType: "text",
},
{
id: "dlpa0371pe7rphmggy2sgbap",
type: TSurveyQuestionTypeEnum.OpenText,
headline: { default: "Thanks for sharing! What did you not like?" },
required: true,
longAnswer: true,
placeholder: { default: "Type your answer here..." },
inputType: "text",
},
{
id: "gwo0fq5kug13e83fcour4n1w",
type: TSurveyQuestionTypeEnum.Rating,
range: 5,
scale: "smiley",
headline: { default: "How do you rate our communication?" },
required: true,
lowerLabel: { default: "Not good" },
upperLabel: { default: "Very good" },
isColorCodingEnabled: false,
},
{
id: createId(),
type: TSurveyQuestionTypeEnum.OpenText,
headline: { default: "Anything else you'd like to share with our team?" },
required: false,
longAnswer: true,
placeholder: { default: "Type your answer here..." },
inputType: "text",
},
{
id: "sjbaghd1bi59pkjun2c97kw9",
type: TSurveyQuestionTypeEnum.MultipleChoiceSingle,
logic: [],
choices: [
{ id: createId(), label: { default: "Google" } },
{ id: createId(), label: { default: "Social Media" } },
{ id: createId(), label: { default: "Friends" } },
{ id: createId(), label: { default: "Podcast" } },
{ id: "other", label: { default: "Other" } },
],
headline: { default: "How did you hear about us?" },
required: true,
shuffleOption: "none",
},
{
id: createId(),
type: TSurveyQuestionTypeEnum.OpenText,
headline: { default: "Lastly, we'd love to respond to your feedback. Please share your email:" },
required: false,
inputType: "email",
longAnswer: false,
placeholder: { default: "example@email.com" },
},
],
},
},
{
name: "Identify Upsell Opportunities",
role: "sales",
industries: ["saas"],
channels: ["app", "link"],
description: "Find out how much time your product saves your user. Use it to upsell.",
preset: {
...surveyDefault,
name: "Identify upsell opportunities",
questions: [
{
id: createId(),
type: TSurveyQuestionTypeEnum.MultipleChoiceSingle,
headline: { default: "How many hours does your team save per week by using {{productName}}?" },
required: true,
shuffleOption: "none",
choices: [
{
id: createId(),
label: { default: "Less than 1 hour" },
},
{
id: createId(),
label: { default: "1 to 2 hours" },
},
{
id: createId(),
label: { default: "3 to 5 hours" },
},
{
id: createId(),
label: { default: "5+ hours" },
},
],
},
],
},
},
{
name: "Prioritize Features",
role: "productManager",
industries: ["saas"],
channels: ["app"],
description: "Identify features your users need most and least.",
preset: {
...surveyDefault,
name: "Feature Prioritization",
questions: [
{
id: createId(),
type: TSurveyQuestionTypeEnum.MultipleChoiceSingle,
logic: [],
shuffleOption: "none",
choices: [
{ id: createId(), label: { default: "Feature 1" } },
{ id: createId(), label: { default: "Feature 2" } },
{ id: createId(), label: { default: "Feature 3" } },
{ id: "other", label: { default: "Other" } },
],
headline: { default: "Which of these features would be MOST valuable to you?" },
required: true,
},
{
id: createId(),
type: TSurveyQuestionTypeEnum.MultipleChoiceSingle,
logic: [],
shuffleOption: "none",
choices: [
{ id: createId(), label: { default: "Feature 1" } },
{ id: createId(), label: { default: "Feature 2" } },
{ id: createId(), label: { default: "Feature 3" } },
],
headline: { default: "Which of these features would be LEAST valuable to you?" },
required: true,
},
{
id: createId(),
type: TSurveyQuestionTypeEnum.OpenText,
headline: { default: "How else could we improve you experience with {{productName}}?" },
required: true,
placeholder: { default: "Type your answer here..." },
inputType: "text",
},
],
},
},
{
name: "Gauge Feature Satisfaction",
role: "productManager",
industries: ["saas"],
channels: ["app"],
description: "Evaluate the satisfaction of specific features of your product.",
preset: {
...surveyDefault,
name: "Gauge Feature Satisfaction",
questions: [
{
id: createId(),
type: TSurveyQuestionTypeEnum.Rating,
headline: { default: "How easy was it to achieve ... ?" },
required: true,
lowerLabel: { default: "Not easy" },
upperLabel: { default: "Very easy" },
scale: "number",
range: 5,
isColorCodingEnabled: false,
},
{
id: createId(),
type: TSurveyQuestionTypeEnum.OpenText,
headline: { default: "What is one thing we could do better?" },
required: false,
inputType: "text",
},
],
endings: [getDefaultEndingCard([])],
hiddenFields: hiddenFieldsDefault,
},
},
{
name: "Marketing Site Clarity",
role: "marketing",
industries: ["saas", "eCommerce", "other"],
channels: ["website"],
description: "Identify users dropping off your marketing site. Improve your messaging.",
preset: {
...surveyDefault,
name: "Marketing Site Clarity",
questions: [
{
id: createId(),
type: TSurveyQuestionTypeEnum.MultipleChoiceSingle,
headline: { default: "Do you have all the info you need to give {{productName}} a try?" },
required: true,
shuffleOption: "none",
choices: [
{
id: createId(),
label: { default: "Yes, totally" },
},
{
id: createId(),
label: { default: "Kind of..." },
},
{
id: createId(),
label: { default: "No, not at all" },
},
],
},
{
id: createId(),
type: TSurveyQuestionTypeEnum.OpenText,
headline: { default: "Whats missing or unclear to you about {{productName}}?" },
required: false,
inputType: "text",
},
{
id: createId(),
type: TSurveyQuestionTypeEnum.CTA,
headline: { default: "Thanks for your answer! Get 25% off your first 6 months:" },
required: false,
buttonLabel: { default: "Get discount" },
buttonUrl: "https://app.formbricks.com/auth/signup",
buttonExternal: true,
},
],
},
},
{
name: "Customer Effort Score (CES)",
role: "productManager",
industries: ["saas"],
channels: ["app"],
description: "Determine how easy it is to use a feature.",
preset: {
...surveyDefault,
name: "Customer Effort Score (CES)",
questions: [
{
id: createId(),
type: TSurveyQuestionTypeEnum.Rating,
range: 5,
scale: "number",
headline: { default: "{{productName}} makes it easy for me to [ADD GOAL]" },
required: true,
lowerLabel: { default: "Disagree strongly" },
upperLabel: { default: "Agree strongly" },
isColorCodingEnabled: false,
},
{
id: createId(),
type: TSurveyQuestionTypeEnum.OpenText,
headline: { default: "Thanks! How could we make it easier for you to [ADD GOAL]?" },
required: true,
placeholder: { default: "Type your answer here..." },
inputType: "text",
},
],
},
},
{
name: "Rate Checkout Experience",
role: "productManager",
industries: ["eCommerce"],
channels: ["website", "app"],
description: "Let customers rate the checkout experience to tweak conversion.",
preset: {
...surveyDefault,
name: "Rate Checkout Experience",
questions: [
{
id: createId(),
type: TSurveyQuestionTypeEnum.Rating,
logic: [{ value: 4, condition: "greaterEqual", destination: "lpof3d9t9hmnqvyjlpksmxd7" }],
range: 5,
scale: "number",
headline: { default: "How easy or difficult was it to complete the checkout?" },
required: true,
lowerLabel: { default: "Very difficult" },
upperLabel: { default: "Very easy" },
isColorCodingEnabled: false,
},
{
id: createId(),
type: TSurveyQuestionTypeEnum.OpenText,
logic: [{ condition: "submitted", destination: surveyDefault.endings[0].id }],
headline: { default: "Sorry about that! What would have made it easier for you?" },
required: true,
placeholder: { default: "Type your answer here..." },
inputType: "text",
},
{
id: "lpof3d9t9hmnqvyjlpksmxd7",
type: TSurveyQuestionTypeEnum.OpenText,
headline: { default: "Lovely! Is there anything we can do to improve your experience?" },
required: true,
placeholder: { default: "Type your answer here..." },
inputType: "text",
},
],
},
},
{
name: "Measure Search Experience",
role: "productManager",
industries: ["saas", "eCommerce"],
channels: ["app", "website"],
description: "Measure how relevant your search results are.",
preset: {
...surveyDefault,
name: "Measure Search Experience",
questions: [
{
id: createId(),
type: TSurveyQuestionTypeEnum.Rating,
logic: [{ value: 4, condition: "greaterEqual", destination: "adcs3d9t9hmnqvyjlpksmxd7" }],
range: 5,
scale: "number",
headline: { default: "How relevant are these search results?" },
required: true,
lowerLabel: { default: "Not at all relevant" },
upperLabel: { default: "Very relevant" },
isColorCodingEnabled: false,
},
{
id: createId(),
type: TSurveyQuestionTypeEnum.OpenText,
logic: [{ condition: "submitted", destination: surveyDefault.endings[0].id }],
headline: { default: "Ugh! What makes the results irrelevant for you?" },
required: true,
placeholder: { default: "Type your answer here..." },
inputType: "text",
},
{
id: "adcs3d9t9hmnqvyjlpksmxd7",
type: TSurveyQuestionTypeEnum.OpenText,
headline: { default: "Lovely! Is there anything we can do to improve your experience?" },
required: true,
placeholder: { default: "Type your answer here..." },
inputType: "text",
},
],
},
},
{
name: "Evaluate Content Quality",
role: "marketing",
industries: ["other"],
channels: ["website"],
description: "Measure if your content marketing pieces hit right.",
preset: {
...surveyDefault,
name: "Evaluate Content Quality",
questions: [
{
id: createId(),
type: TSurveyQuestionTypeEnum.Rating,
logic: [{ value: 4, condition: "greaterEqual", destination: "adcs3d9t9hmnqvyjlpkswi38" }],
range: 5,
scale: "number",
headline: { default: "How well did this article address what you were hoping to learn?" },
required: true,
lowerLabel: { default: "Not at all well" },
upperLabel: { default: "Extremely well" },
isColorCodingEnabled: false,
},
{
id: createId(),
type: TSurveyQuestionTypeEnum.OpenText,
logic: [{ condition: "submitted", destination: surveyDefault.endings[0].id }],
headline: { default: "Hmpft! What were you hoping for?" },
required: true,
placeholder: { default: "Type your answer here..." },
inputType: "text",
},
{
id: "adcs3d9t9hmnqvyjlpkswi38",
type: TSurveyQuestionTypeEnum.OpenText,
headline: { default: "Lovely! Is there anything else you would like us to cover?" },
required: true,
placeholder: { default: "Topics, trends, tutorials..." },
inputType: "text",
},
],
},
},
{
name: "Measure Task Accomplishment",
role: "productManager",
industries: ["saas"],
channels: ["app", "website"],
description: "See if people get their 'Job To Be Done' done. Successful people are better customers.",
preset: {
...surveyDefault,
name: "Measure Task Accomplishment",
questions: [
{
id: createId(),
type: TSurveyQuestionTypeEnum.MultipleChoiceSingle,
shuffleOption: "none",
logic: [
{ value: "Working on it, boss", condition: "equals", destination: "nq88udm0jjtylr16ax87xlyc" },
{ value: "Yes", condition: "equals", destination: "rjeac33gd13h3nnbrbid1fb2" },
{ value: "No", condition: "equals", destination: "u83zhr66knyfozccoqojx7bc" },
],
choices: [
{ id: createId(), label: { default: "Yes" } },
{ id: createId(), label: { default: "Working on it, boss" } },
{ id: createId(), label: { default: "No" } },
],
headline: { default: "Were you able to accomplish what you came here to do today?" },
required: true,
},
{
id: "rjeac33gd13h3nnbrbid1fb2",
type: TSurveyQuestionTypeEnum.Rating,
logic: [{ value: 4, condition: "greaterEqual", destination: "nq88udm0jjtylr16ax87xlyc" }],
range: 5,
scale: "number",
headline: { default: "How easy was it to achieve your goal?" },
required: true,
lowerLabel: { default: "Very difficult" },
upperLabel: { default: "Very easy" },
isColorCodingEnabled: false,
},
{
id: "s0999bhpaz8vgf7ps264piek",
type: TSurveyQuestionTypeEnum.OpenText,
logic: [
{ condition: "submitted", destination: surveyDefault.endings[0].id },
{ condition: "skipped", destination: surveyDefault.endings[0].id },
],
headline: { default: "What made it hard?" },
required: false,
placeholder: { default: "Type your answer here..." },
inputType: "text",
},
{
id: "nq88udm0jjtylr16ax87xlyc",
type: TSurveyQuestionTypeEnum.OpenText,
logic: [
{ condition: "skipped", destination: surveyDefault.endings[0].id },
{ condition: "submitted", destination: surveyDefault.endings[0].id },
],
headline: { default: "Great! What did you come here to do today?" },
required: false,
buttonLabel: { default: "Send" },
inputType: "text",
},
{
id: "u83zhr66knyfozccoqojx7bc",
type: TSurveyQuestionTypeEnum.OpenText,
headline: { default: "What stopped you?" },
required: true,
buttonLabel: { default: "Send" },
placeholder: { default: "Type your answer here..." },
inputType: "text",
},
],
},
},
{
name: "Identify Sign Up Barriers",
role: "marketing",
industries: ["saas", "eCommerce", "other"],
channels: ["website"],
description: "Offer a discount to gather insights about sign up barriers.",
preset: {
...surveyDefault,
name: "{{productName}} Sign Up Barriers",
questions: [
{
id: createId(),
html: {
default:
'<p class="fb-editor-paragraph" dir="ltr"><span>You seem to be considering signing up. Answer four questions and get 10% on any plan.</span></p>',
},
type: TSurveyQuestionTypeEnum.CTA,
logic: [{ condition: "skipped", destination: surveyDefault.endings[0].id }],
headline: { default: "Answer this short survey, get 10% off!" },
required: false,
buttonLabel: { default: "Get 10% discount" },
buttonExternal: false,
dismissButtonLabel: { default: "No, thanks" },
},
{
id: createId(),
type: TSurveyQuestionTypeEnum.Rating,
logic: [{ value: "5", condition: "equals", destination: surveyDefault.endings[0].id }],
range: 5,
scale: "number",
headline: { default: "How likely are you to sign up for {{productName}}?" },
required: true,
lowerLabel: { default: "Not at all likely" },
upperLabel: { default: "Very likely" },
isColorCodingEnabled: false,
},
{
id: createId(),
type: TSurveyQuestionTypeEnum.MultipleChoiceSingle,
shuffleOption: "none",
logic: [
{
value: "May not have what I'm looking for",
condition: "equals",
destination: "atiw0j1oykb77zr0b7q4tixu",
},
{
value: "Still comparing options",
condition: "equals",
destination: "j7jkpolm5xl7u0zt3g0e4z7d",
},
{ value: "Seems complicated", condition: "equals", destination: "t5gvag2d7kq311szz5iyiy79" },
{ value: "Pricing is a concern", condition: "equals", destination: "or0yhhrof753sq9ug4mdavgz" },
{ value: "Something else", condition: "equals", destination: "v0pq1qcnm6ohiry5ywcd91qq" },
],
choices: [
{ id: createId(), label: { default: "May not have what I'm looking for" } },
{ id: createId(), label: { default: "Still comparing options" } },
{ id: createId(), label: { default: "Seems complicated" } },
{ id: createId(), label: { default: "Pricing is a concern" } },
{ id: createId(), label: { default: "Something else" } },
],
headline: { default: "What is holding you back from trying {{productName}}?" },
required: true,
},
{
id: "atiw0j1oykb77zr0b7q4tixu",
type: TSurveyQuestionTypeEnum.OpenText,
logic: [{ condition: "submitted", destination: "k3q0vt1ko0bzbsq076p7lnys" }],
headline: { default: "What do you need but {{productName}} does not offer?" },
required: true,
placeholder: { default: "Type your answer here..." },
inputType: "text",
},
{
id: "j7jkpolm5xl7u0zt3g0e4z7d",
type: TSurveyQuestionTypeEnum.OpenText,
logic: [{ condition: "submitted", destination: "k3q0vt1ko0bzbsq076p7lnys" }],
headline: { default: "What options are you looking at?" },
required: true,
placeholder: { default: "Type your answer here..." },
inputType: "text",
},
{
id: "t5gvag2d7kq311szz5iyiy79",
type: TSurveyQuestionTypeEnum.OpenText,
logic: [{ condition: "submitted", destination: "k3q0vt1ko0bzbsq076p7lnys" }],
headline: { default: "What seems complicated to you?" },
required: true,
placeholder: { default: "Type your answer here..." },
inputType: "text",
},
{
id: "or0yhhrof753sq9ug4mdavgz",
type: TSurveyQuestionTypeEnum.OpenText,
logic: [{ condition: "submitted", destination: "k3q0vt1ko0bzbsq076p7lnys" }],
headline: { default: "What are you concerned about regarding pricing?" },
required: true,
placeholder: { default: "Type your answer here..." },
inputType: "text",
},
{
id: "v0pq1qcnm6ohiry5ywcd91qq",
type: TSurveyQuestionTypeEnum.OpenText,
headline: { default: "Please explain:" },
required: true,
placeholder: { default: "Type your answer here..." },
inputType: "text",
},
{
id: "k3q0vt1ko0bzbsq076p7lnys",
html: {
default:
'<p class="fb-editor-paragraph" dir="ltr"><span>Thanks a lot for taking the time to share feedback 🙏</span></p>',
},
type: TSurveyQuestionTypeEnum.CTA,
headline: { default: "Thanks! Here is your code: SIGNUPNOW10" },
required: false,
buttonUrl: "https://app.formbricks.com/auth/signup",
buttonLabel: { default: "Sign Up" },
buttonExternal: true,
dismissButtonLabel: { default: "Skip for now" },
},
],
},
},
{
name: "Build Product Roadmap",
role: "productManager",
industries: ["saas"],
channels: ["app", "link"],
description: "Identify the ONE thing your users want the most and build it.",
preset: {
...surveyDefault,
name: "{{productName}} Roadmap Input",
questions: [
{
id: createId(),
type: TSurveyQuestionTypeEnum.Rating,
range: 5,
scale: "number",
headline: {
default: "How satisfied are you with the features and functionality of {{productName}}?",
},
required: true,
lowerLabel: { default: "Not at all satisfied" },
upperLabel: { default: "Extremely satisfied" },
isColorCodingEnabled: false,
},
{
id: createId(),
type: TSurveyQuestionTypeEnum.OpenText,
headline: {
default: "What's ONE change we could make to improve your {{productName}} experience most?",
},
required: true,
placeholder: { default: "Type your answer here..." },
inputType: "text",
},
],
},
},
{
name: "Understand Purchase Intention",
role: "sales",
industries: ["eCommerce"],
channels: ["website", "link", "app"],
description: "Find out how close your visitors are to buy or subscribe.",
preset: {
...surveyDefault,
name: "Purchase Intention Survey",
questions: [
{
id: createId(),
type: TSurveyQuestionTypeEnum.Rating,
logic: [
{ value: "2", condition: "lessEqual", destination: "y19mwcmstlc7pi7s4izxk1ll" },
{ value: "3", condition: "equals", destination: "zm1hs8qkeuidh3qm0hx8pnw7" },
{ value: "4", condition: "equals", destination: "zm1hs8qkeuidh3qm0hx8pnw7" },
{ value: "5", condition: "equals", destination: surveyDefault.endings[0].id },
],
range: 5,
scale: "number",
headline: { default: "How likely are you to shop from us today?" },
required: true,
lowerLabel: { default: "Not at all likely" },
upperLabel: { default: "Extremely likely" },
isColorCodingEnabled: false,
},
{
id: "y19mwcmstlc7pi7s4izxk1ll",
type: TSurveyQuestionTypeEnum.OpenText,
logic: [
{ condition: "submitted", destination: surveyDefault.endings[0].id },
{ condition: "skipped", destination: surveyDefault.endings[0].id },
],
headline: { default: "Got it. What's your primary reason for visiting today?" },
required: false,
placeholder: { default: "Type your answer here..." },
inputType: "text",
},
{
id: "zm1hs8qkeuidh3qm0hx8pnw7",
type: TSurveyQuestionTypeEnum.OpenText,
headline: { default: "What, if anything, is holding you back from making a purchase today?" },
required: true,
placeholder: { default: "Type your answer here..." },
inputType: "text",
},
],
},
},
{
name: "Improve Newsletter Content",
role: "marketing",
industries: ["eCommerce", "saas", "other"],
channels: ["link"],
description: "Find out how your subscribers like your newsletter content.",
preset: {
...surveyDefault,
name: "Improve Newsletter Content",
questions: [
{
id: createId(),
type: TSurveyQuestionTypeEnum.Rating,
logic: [
{ value: "5", condition: "equals", destination: "l2q1chqssong8n0xwaagyl8g" },
{ value: "5", condition: "lessThan", destination: "k3s6gm5ivkc5crpycdbpzkpa" },
],
range: 5,
scale: "smiley",
headline: { default: "How would you rate this weeks newsletter?" },
required: true,
lowerLabel: { default: "Meh" },
upperLabel: { default: "Great" },
isColorCodingEnabled: false,
},
{
id: "k3s6gm5ivkc5crpycdbpzkpa",
type: TSurveyQuestionTypeEnum.OpenText,
logic: [
{ condition: "submitted", destination: surveyDefault.endings[0].id },
{ condition: "skipped", destination: surveyDefault.endings[0].id },
],
headline: { default: "What would have made this weeks newsletter more helpful?" },
required: false,
placeholder: { default: "Type your answer here..." },
inputType: "text",
},
{
id: "l2q1chqssong8n0xwaagyl8g",
html: {
default:
'<p class="fb-editor-paragraph" dir="ltr"><span>Who thinks like you? You\'d do us a huge favor if you\'d share this weeks episode with your brain friend!</span></p>',
},
type: TSurveyQuestionTypeEnum.CTA,
headline: { default: "Thanks! ❤️ Spread the love with ONE friend." },
required: false,
buttonUrl: "https://formbricks.com",
buttonLabel: { default: "Happy to help!" },
buttonExternal: true,
dismissButtonLabel: { default: "Find your own friends" },
},
],
},
},
{
name: "Evaluate a Product Idea",
role: "productManager",
industries: ["saas", "other"],
channels: ["link", "app"],
description: "Survey users about product or feature ideas. Get feedback rapidly.",
preset: {
...surveyDefault,
name: "Evaluate a Product Idea",
questions: [
{
id: createId(),
html: {
default:
'<p class="fb-editor-paragraph" dir="ltr"><span>We respect your time and kept it short 🤸</span></p>',
},
type: TSurveyQuestionTypeEnum.CTA,
headline: {
default:
"We love how you use {{productName}}! We'd love to pick your brain on a feature idea. Got a minute?",
},
required: true,
buttonLabel: { default: "Let's do it!" },
buttonExternal: false,
dismissButtonLabel: { default: "Skip" },
},
{
id: createId(),
type: TSurveyQuestionTypeEnum.Rating,
logic: [
{ value: "3", condition: "lessEqual", destination: "ndacjg9lqf5jcpq9w8ote666" },
{ value: "4", condition: "greaterEqual", destination: "jmzgbo73cfjswlvhoynn7o0q" },
],
range: 5,
scale: "number",
headline: { default: "Thanks! How difficult or easy is it for you to [PROBLEM AREA] today?" },
required: true,
lowerLabel: { default: "Very difficult" },
upperLabel: { default: "Very easy" },
isColorCodingEnabled: false,
},
{
id: "ndacjg9lqf5jcpq9w8ote666",
type: TSurveyQuestionTypeEnum.OpenText,
headline: { default: "What's most difficult for you when it comes to [PROBLEM AREA]?" },
required: true,
placeholder: { default: "Type your answer here..." },
inputType: "text",
},
{
id: "jmzgbo73cfjswlvhoynn7o0q",
html: {
default:
'<p class="fb-editor-paragraph"><br></p><p class="fb-editor-paragraph" dir="ltr"><b><strong class="fb-editor-text-bold">Read the text below, then answer 2 questions:</strong></b></p><p class="fb-editor-paragraph"><br></p><p class="fb-editor-paragraph" dir="ltr"><span>Insert concept brief here. Add necessary details but keep it concise and easy to understand.</span></p>',
},
type: TSurveyQuestionTypeEnum.CTA,
headline: { default: "We're working on an idea to help with [PROBLEM AREA]." },
required: true,
buttonLabel: { default: "Next" },
buttonExternal: false,
dismissButtonLabel: { default: "Skip" },
},
{
id: createId(),
type: TSurveyQuestionTypeEnum.Rating,
logic: [
{ value: "3", condition: "lessEqual", destination: "mmiuun3z4e7gk4ufuwh8lq8q" },
{ value: "4", condition: "greaterEqual", destination: "gvzevzw4hkqd6dmlkcly6kd1" },
],
range: 5,
scale: "number",
headline: { default: "How valuable would this feature be to you?" },
required: true,
lowerLabel: { default: "Not valuable" },
upperLabel: { default: "Very valuable" },
isColorCodingEnabled: false,
},
{
id: "mmiuun3z4e7gk4ufuwh8lq8q",
type: TSurveyQuestionTypeEnum.OpenText,
logic: [{ condition: "submitted", destination: "bqmnpyku9etsgbtb322luzb2" }],
headline: { default: "Got it. Why wouldn't this feature be valuable to you?" },
required: true,
placeholder: { default: "Type your answer here..." },
inputType: "text",
},
{
id: "gvzevzw4hkqd6dmlkcly6kd1",
type: TSurveyQuestionTypeEnum.OpenText,
headline: { default: "Got it. What would be most valuable to you in this feature?" },
required: true,
placeholder: { default: "Type your answer here..." },
inputType: "text",
},
{
id: "bqmnpyku9etsgbtb322luzb2",
type: TSurveyQuestionTypeEnum.OpenText,
headline: { default: "Anything else we should keep in mind?" },
required: false,
placeholder: { default: "Type your answer here..." },
inputType: "text",
},
],
},
},
{
name: "Understand Low Engagement",
role: "productManager",
industries: ["saas"],
channels: ["link"],
description: "Identify reasons for low engagement to improve user adoption.",
preset: {
...surveyDefault,
name: "Reasons for Low Engagement",
questions: [
{
id: "aq9dafe9nxe0kpm67b1os2z9",
type: TSurveyQuestionTypeEnum.MultipleChoiceSingle,
shuffleOption: "none",
logic: [
{ value: "Difficult to use", condition: "equals", destination: "r0zvi3vburf4hm7qewimzjux" },
{
value: "Found a better alternative",
condition: "equals",
destination: "g92s5wetp51ps6afmc6y7609",
},
{
value: "Just haven't had the time",
condition: "equals",
destination: "gn6298zogd2ipdz7js17qy5i",
},
{
value: "Lacked features I need",
condition: "equals",
destination: "rbwz3y6y9avzqcfj30nu0qj4",
},
{ value: "Other", condition: "equals", destination: "c0exdyri3erugrv0ezkyseh6" },
],
choices: [
{ id: "xoqb0wjjsk4t0lx0i7jrhx26", label: { default: "Difficult to use" } },
{ id: "p768nlw47ndehtgzx6m82dr6", label: { default: "Found a better alternative" } },
{ id: "izt28ma5ep3s92531owxj1vg", label: { default: "Just haven't had the time" } },
{ id: "dhkp2wb9e1tv7kfu8csjhzbh", label: { default: "Lacked features I need" } },
{ id: "other", label: { default: "Other" } },
],
headline: { default: "What's the main reason you haven't been back to {{productName}} recently?" },
required: true,
},
{
id: "r0zvi3vburf4hm7qewimzjux",
type: TSurveyQuestionTypeEnum.OpenText,
logic: [{ condition: "submitted", destination: surveyDefault.endings[0].id }],
headline: { default: "What's difficult about using {{productName}}?" },
required: true,
placeholder: { default: "Type your answer here..." },
inputType: "text",
},
{
id: "g92s5wetp51ps6afmc6y7609",
type: TSurveyQuestionTypeEnum.OpenText,
logic: [{ condition: "submitted", destination: surveyDefault.endings[0].id }],
headline: { default: "Got it. Which alternative are you using instead?" },
required: true,
placeholder: { default: "Type your answer here..." },
inputType: "text",
},
{
id: "gn6298zogd2ipdz7js17qy5i",
type: TSurveyQuestionTypeEnum.OpenText,
logic: [{ condition: "submitted", destination: surveyDefault.endings[0].id }],
headline: { default: "Got it. How could we make it easier for you to get started?" },
required: true,
placeholder: { default: "Type your answer here..." },
inputType: "text",
},
{
id: "rbwz3y6y9avzqcfj30nu0qj4",
type: TSurveyQuestionTypeEnum.OpenText,
logic: [{ condition: "submitted", destination: surveyDefault.endings[0].id }],
headline: { default: "Got it. What features or functionality were missing?" },
required: true,
placeholder: { default: "Type your answer here..." },
inputType: "text",
},
{
id: "c0exdyri3erugrv0ezkyseh6",
type: TSurveyQuestionTypeEnum.OpenText,
logic: [],
headline: { default: "Please add more details:" },
required: false,
placeholder: { default: "Type your answer here..." },
inputType: "text",
},
],
},
},
];
export const customSurvey = {
name: "Start from scratch",
description: "Create a survey without template.",
preset: {
...surveyDefault,
name: "New Survey",
questions: [
{
id: createId(),
type: TSurveyQuestionTypeEnum.OpenText,
headline: { default: "What would you like to know?" },
subheader: { default: "This is an example survey." },
placeholder: { default: "Type your answer here..." },
required: true,
inputType: "text",
} as TSurveyOpenTextQuestion,
],
},
};
export const getExampleWebsiteSurveyTemplate = (
webAppUrl: string,
trigger: TActionClass
): TSurveyCreateInput => ({
...customSurvey.preset,
questions: customSurvey.preset.questions.map(
(question) =>
({
...question,
type: TSurveyQuestionTypeEnum.CTA,
headline: { default: "Website successfully connected 🎉" },
html: {
default: "You're all set up. Create your own survey for website visitors 👇",
},
buttonLabel: { default: "Let's do it!" },
buttonExternal: true,
imageUrl: `${webAppUrl}/onboarding/meme.png`,
}) as TSurveyCTAQuestion
),
name: "Example website survey",
type: "website" as TSurveyType,
autoComplete: 2,
triggers: [{ actionClass: trigger }],
status: "inProgress" as TSurveyStatus,
displayOption: "respondMultiple" as TSurveyDisplayOption,
recontactDays: 0,
isVerifyEmailEnabled: false,
});
export const getExampleAppSurveyTemplate = (
webAppUrl: string,
trigger: TActionClass
): TSurveyCreateInput => ({
...customSurvey.preset,
questions: customSurvey.preset.questions.map(
(question) =>
({
...question,
type: TSurveyQuestionTypeEnum.CTA,
headline: { default: "App successfully connected 🥳" },
html: {
default: "You're all set up. Create your own survey for your app users 👇",
},
buttonLabel: { default: "Let's do it!" },
buttonExternal: true,
imageUrl: `${webAppUrl}/onboarding/meme.png`,
}) as TSurveyCTAQuestion
),
name: "Example app survey",
type: "app" as TSurveyType,
autoComplete: 2,
triggers: [{ actionClass: trigger }],
status: "inProgress" as TSurveyStatus,
displayOption: "respondMultiple" as TSurveyDisplayOption,
recontactDays: 0,
isVerifyEmailEnabled: false,
});