From 4a9455cb2f1200631a09c2f109e4f7ee2ff54675 Mon Sep 17 00:00:00 2001 From: Pamela Chia Date: Thu, 5 Mar 2026 17:35:14 +0900 Subject: [PATCH] chore(studio): update downgrade survey to use 'what made you' framing (#43435) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary - Updates exit survey question wording from "why" framing to "what made you" framing across both downgrade and project deletion flows - Based on [Jason Cohen's research](https://www.lennysnewsletter.com/p/why-your-product-stopped-growing) showing this reframing roughly doubles response rates and improves response quality by prompting users to recall a specific trigger event ### Changes | Location | Before | After | |---|---|---| | ExitSurveyModal (downgrade) | "Share with us why you're downgrading your plan." | "What made you decide to downgrade your plan?" | | DeleteProjectModal (delete) | "Help us improve by sharing why you're deleting your project." | "What made you decide to delete your project?" | ### No downstream impact - `CANCELLATION_REASONS` chip values unchanged - API payload fields (`reasons`, `additionalFeedback`, `exitAction`) unaffected - No PostHog event names or properties tied to question wording Closes GROWTH-657 ## Test plan - [ ] Trigger downgrade flow (paid plan → Free) and verify new wording appears - [ ] Trigger project deletion on a paid plan and verify new wording appears - [ ] Confirm survey submission still works end-to-end --- .../BillingSettings/Subscription/DowngradeModal.tsx | 3 +-- .../Subscription/ExitSurveyModal.tsx | 2 +- .../DeleteProjectPanel/DeleteProjectModal.tsx | 13 +++++-------- 3 files changed, 7 insertions(+), 11 deletions(-) diff --git a/apps/studio/components/interfaces/Organization/BillingSettings/Subscription/DowngradeModal.tsx b/apps/studio/components/interfaces/Organization/BillingSettings/Subscription/DowngradeModal.tsx index 198c988faa2..a9decb09b3d 100644 --- a/apps/studio/components/interfaces/Organization/BillingSettings/Subscription/DowngradeModal.tsx +++ b/apps/studio/components/interfaces/Organization/BillingSettings/Subscription/DowngradeModal.tsx @@ -1,7 +1,6 @@ -import { MinusCircle, PauseCircle } from 'lucide-react' - import { getComputeSize, OrgProject } from 'data/projects/org-projects-infinite-query' import type { OrgSubscription, ProjectAddon } from 'data/subscriptions/types' +import { MinusCircle, PauseCircle } from 'lucide-react' import { useMemo } from 'react' import { plans as subscriptionsPlans } from 'shared-data/plans' import { Modal } from 'ui' diff --git a/apps/studio/components/interfaces/Organization/BillingSettings/Subscription/ExitSurveyModal.tsx b/apps/studio/components/interfaces/Organization/BillingSettings/Subscription/ExitSurveyModal.tsx index d1d434d3aa8..fec46b51718 100644 --- a/apps/studio/components/interfaces/Organization/BillingSettings/Subscription/ExitSurveyModal.tsx +++ b/apps/studio/components/interfaces/Organization/BillingSettings/Subscription/ExitSurveyModal.tsx @@ -104,7 +104,7 @@ export const ExitSurveyModal = ({ visible, projects, onClose }: ExitSurveyModalP

- Share with us why you're downgrading your plan. + What made you decide to downgrade your plan?

diff --git a/apps/studio/components/interfaces/Settings/General/DeleteProjectPanel/DeleteProjectModal.tsx b/apps/studio/components/interfaces/Settings/General/DeleteProjectPanel/DeleteProjectModal.tsx index 32b76175d8a..3a54b3e8baa 100644 --- a/apps/studio/components/interfaces/Settings/General/DeleteProjectPanel/DeleteProjectModal.tsx +++ b/apps/studio/components/interfaces/Settings/General/DeleteProjectPanel/DeleteProjectModal.tsx @@ -1,17 +1,16 @@ -import { useRouter } from 'next/router' -import { useEffect, useState } from 'react' -import { toast } from 'sonner' - import { LOCAL_STORAGE_KEYS } from 'common' import { CANCELLATION_REASONS } from 'components/interfaces/Billing/Billing.constants' import { TextConfirmModal } from 'components/ui/TextConfirmModalWrapper' import { useSendDowngradeFeedbackMutation } from 'data/feedback/exit-survey-send' -import { useProjectDeleteMutation } from 'data/projects/project-delete-mutation' import type { OrgProject } from 'data/projects/org-projects-infinite-query' +import { useProjectDeleteMutation } from 'data/projects/project-delete-mutation' import { useOrgSubscriptionQuery } from 'data/subscriptions/org-subscription-query' import { useLocalStorageQuery } from 'hooks/misc/useLocalStorage' import { useSelectedOrganizationQuery } from 'hooks/misc/useSelectedOrganization' import { useSelectedProjectQuery } from 'hooks/misc/useSelectedProject' +import { useRouter } from 'next/router' +import { useEffect, useState } from 'react' +import { toast } from 'sonner' import type { Organization } from 'types' import { Input } from 'ui' @@ -140,9 +139,7 @@ export const DeleteProjectModal = ({ {!isFree && ( <>
-

- Help us improve by sharing why you're deleting your project. -

+

What made you decide to delete your project?